
일반 운영 관리 에서는 여러 사람이 동시에 사용하는 리눅스 운영체제에서 해당 내용을 관리하는 것을 목표로 한다.
- 사용자들을 관리하는 방법
- 디렉토리 & 파일을 관리하는 방법
- 프로그램을 관리하는 방법( 프로세스 관리 )
리눅스의 사용자는 크게 3종류의 계정으로 접근한다.
- 루트( root ) 계정 -> 리눅스 시스템의 모든 권한을 가진 관리자 계정
- 시스템 계정 -> 프로그램이나 시스템이 특정 작업을 위해 사용하는 계정
- 사용자 계정 -> 사용자가 직접 로그인하여 사용하는 계정, 권한을 부여하여 작업의 범위를 넓힐 수 있다.
사용자의 정보를 저장하는 파일의 내용 확인하려면
cat /etc/passwd
보이는 것처럼 각 필드가 콜론으로 구분되어 있음
순서대로
계정 이름:비밀번호:사용자 번호:그룹번호:설명:사용자의 홈 디렉토리:로그인 쉘 종류

루트사용자( 모든 권한이 있는 사용자 )는 사용자 번호가 '0번' 따라서 UID가 0번인 사용자는 딱 한 사람만 있는지 관리가 필요함
daemon, bin 과 같은 시스템 계정은 리눅스 시스템이 특정 작업을 할 때 사용하는 계정이므로
사용자가 임의로 로그인하여 사용하는 계정이 아니므로 nologin이 붙어있음
일반 계정이나 루트 계정은 사용자가 로그인하여 사용할 수 있는 계정이므로 로그인했을 때 bash 쉘이 실행되게 되어 있음
| 구분 | 파일명 | 설명 |
|---|---|---|
| 계정 및 그룹 설정 파일 | ||
/etc/passwd | 사용자 계정의 아이디, 그룹 정보 등 계정 정보 ( 여기에 예전에 사용하던 비밀번호 필드가 있는데 현재는 'x'표시 - 보안상 이유로 비밀번호를 이곳에 저장하지 않음 ) | |
/etc/shadow | 암호화된 패스워드 및 정책 설정 정보 | |
/etc/group | 사용자 그룹의 기본 정보( 하나의 계정에 여러 그룹을 지정하기 위해 사용 ) | |
/etc/gshadow | 사용자 그룹의 암호화된 패스워드 정보 | |
| 계정 환경설정 파일 | 사용자에게 기본적으로 제공하는 설정 | |
/etc/default/useradd | useradd( 사용자 생성 ) 명령을 사용할 때 기본 설정 | |
/etc/login.defs | 사용자와 관련된 기본 설정들을 정의하는 설정 파일 | |
/etc/skel | 홈 디렉터리 생성 시 기본으로 제공할 파일 |
사용자 계정 관리 명령어
| 구분 | 파일명 | 설명 |
|---|---|---|
| 사용자 계정 관리 | ||
useradd | 사용자 계정 생성 | |
usermod | 사용자 계정 정보 변경 | |
userdel | 사용자 계정 삭제 | |
passwd | 사용자 계정 비밀번호 설정 또는 변경 | |
su | 사용자 로그인 |
디렉토리와 파일들은 파일 시스템에 의해서 관리가 됨
- 하드디스크 어디에 저장이 되어 있는지 확인
- 현재 사용자가 해당 파일에 접근할 수 있는지 확인
ls -l
명령을 하면

파일의 유형과 권한을 볼 수 있는 10자리가 먼저 등장
10자 중 가장 처음 단어는 파일 유형을 나타냄
'-' -> 일반파일
'd' -> 디렉토리
'l' -> 심볼릭 링크
'b' -> 블록 디바이스
'c' -> 캐릭터 디바이스
'p' -> FIFO
's' -> 소켓
뒤의 9자리는 허가권을 나타내는데 3자리씩 묶어서 소유자( u ), 그룹( g ), 다른 사용자( o ) 허가권으로 나뉨
3자리씩 읽기( r ), 쓰기( w ), 실행( x )
원하는 파일의 허가권의 변경 방법은
# 숫자모드 ( 해당 파일 모든 사용자에게 모든 권한 부여 )
chmod 777 [ 파일 이름 ]
# 기호모드 ( 소유자( u )에게 해당 파일 실행 권한( x ) 부여 )
chmod u+x [ 파일 이름 ]
파일이 생성이 될 때마다 설정되는 기본 허가권은 umask를 이용해서 설정이 가능
# 기본 권한 666을 기준으로 umask 뒤의 숫자를 뺌
# 기본 권한이 666인 이유는 보안상 실행 권한으 부여하지 않기 때문
umask 0022 # 이제부터 기본적으로 생성되는 권한은 644
그 뒤의 숫자는 넘어가고 2단어가 나오는데 소유권을 나타냄
사용자 소유권, 그룹 소유권으로 구분된다.
그런데 chmod는 3자리 였는데 왜 여기서는 0022 하면서 4자리로 나타낼까?
umask 022 해도 정상적으로 기본 권한은 설정이 되지만 가장 앞의 숫자는 특수 권한을 의미
| 8진수 값 | 기호 설정(Symbolic) | 설명 | |
|---|---|---|---|
| SetUID | 4 | chmod u+s [파일명] | 실행 파일이 소유자의 허가권으로 실행되도록 설정 |
| SetGID | 2 | chmod g+s [파일명] | 실행 파일이 그룹의 허가권으로 실행되거나 그룹 소유권 상속 |
| Sticky Bit | 1 | chmod +t [디렉터리명] | 디렉터리 내부의 파일은 소유자만 삭제하거나 이름 변경 가능하도록 제한 |
예를 들어 ) 기존 권한이 755인 파일에 SetUID를 추가하려면 4000 + 755 = 4755
파일 링크는 윈도우의 바로가기 기능과 같음
링크의 종류는 하드링크, 심볼릭 링크
하드링크 -> 원본 파일과 똑같은 링크 파일을 생성하는 것 ( Inode 번호가 일치, 백업용으로 사용 )
심볼릭 링크 -> 원본을 가리키는 링크 파일을 만드는 것 ( 경로 단축을 위해 사용 )
차이점
# ln [원본] [링크]
ln 로그파일.txt 로그파일_backup.txt
# ln -s [원본] [링크]
ln -s /아주아주/복잡한/경로의/파일이나/디렉토리/가능.txt ~/이걸로볼수있음
간혹 파일 시스템이나 디스크가 동작을 하지 않는 경우가 있음
그럴때 사용하는 fsck는 리눅스 시스템의 파일 시스템 무결성을 점검하고 오류를 복구하는 필수 도구 ( 확장형은 e2fsck )
| 옵션 | 사용 예시 | 상세 설명 |
|---|---|---|
-a | fsck -a /dev/sdb1 | 오류 발견 시 사용자 확인 없이 자동으로 복구를 진행 |
-b | fsck -b 32768 /dev/sdb1 | 메인 슈퍼블록 손상 시 백업 슈퍼블록(예: 32768)을 사용하여 복구 ( 슈퍼블록은 mke2fs -n /dev/sdb1 명령으로 확인 ) |
-y | fsck -y /dev/sdb1 | 모든 질문에 "yes"라고 응답하며 복구 |
-n | fsck -n /dev/sdb1 | 실제로 수정하지 않고 오류 여부만 점검 |
-r | fsck -r /dev/sdb1 | 오류 복구 시 사용자에게 일일이 확인을 요청하는 대화형 복구 모드 |
-t | fsck -t ext4 /dev/sdb1 | 특정 파일 시스템 타입(ext4, xfs 등)을 지정하여 검사할 때 사용 |
-V | fsck -V /dev/sdb1 | 점검 및 복구 과정에 대한 상세한 출력 |
물리적 메모리( RAM )는 한정되어 있기 때문에 하드디스크의 프로그램을 동시에 시작하기는 어려움
새로운 프로그램을 시작할 때 용량 문제가 생긴다면 하드디스크에 스왑이라는 공간을 생성해서 프로그램을 잠시 저장해 두기 ( 하드디스크에 생성되는 공간으로 느리다는 단점이 있음 )
스왑은 디스크에 설정하는 것으로 파티션으로 설정할 수도 있고 그냥 파일로도 만들 수 있다.
fdisk /dev/sdb
# 't'를 눌러 타입 변경 -> '82' 입력 -> 'w'로 저장
mkswap /dev/sdb1
swapon /dev/sdb1
/dev/sdb1 swap swap defaults 0 0
파티션을 새로 나누기 어려운 상황( ex: 이미 디스크가 꽉 찼거나 클라우드 환경 )에서 유연하게 사용할 수 있는 방법( 2GB 스왑 파일 생성 예시 )
fallocate -l 2G /swapfile
# 또는
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon -s
/swapfile swap swap defaults 0 0
사용자 별 혹은 그룹 별 제한을 둬서 공간을 낭비하지 않게 하는 방법( 용량이나 파일 개수를 제한 )
sudo cat /etc/fstab
/dev/sdb5 /quota-test ext4 defaults,usrquota,grpquota 1 1
sudo mount quotacheck -mf /quota-test
| 항목 | 의미 | 설명 |
|---|---|---|
| Blocks | 용량 제한 | 현재 사용 중인 용량을 의미( 기본 단위는 KB ) |
| Inodes | 파일 개수 제한 | 현재 생성된 파일 및 디렉터리의 전체 개수 |
| Soft Limit | 경고 한도 | 사용자에게 경고를 보내는 지점, 유예 기간(Grace Period) 동안은 초과가 허용 |
| Hard Limit | 절대 한도 | 절대 넘을 수 없는 최대치, 이 수치에 도달하면 즉시 쓰기 작업이 차단 |
sudo edquota [사용자 이름]
sudo quotaon /quota-test
sudo repquota /quota-test
프로세스란 실행 중인 프로그램을 의미
1) at 명령어로 작업 예약 가능
2) cron 으로 주기를 가지고 특정 명령 실행
# 분 시 일 월 요일 순서로 설정, '*'은 전체를 의미
# 분 : 0 ~ 59
# 시 : 0 ~ 23
# 일 : 1 ~ 31
# 월 : 1 ~ 12 혹은 jan, feb, mar 등의 문자열
# 요일 : 0 ~ 6, 0 : 일요일, 6: 토요일
* * * * * [ 실행할 명령어 ]
# 예약된 작업 확인
crontab -l
# 작업 예약하기( 편집 )
crontab -e
# 예약된 작업 삭제
crontab -r
| 배포판 | 저수준 패키지 도구 | 고수준 패키지 도구 |
|---|---|---|
| 레드햇 계열 | rpm | yum |
| 데비안 계열 | dpkg | apt-get, apt, aptitude |
| openSUSE 계열 | rpm | zipper/YaST |