/bin/false : 쉘을 부여하지 않겠다는 의미로 접근 자체가 되지 않음
/sbin/nologin : 해당 계정에 로그인을 할 수 없는 상태
사용자 계정의 비밀번호를 관리할 때 사용하는 명령어
옵션
-l(lock) : 패스워드에 잠금을 걸어 로그인을 막음
-u(unlock) : 패스워드 잠금을 해제해서 다시 로그인을 할 수 있음
/etc/shadow의 날짜 관련 필드 설정을 할 수 있는 명령어
옵션
-m : 패스워드를 변경할 수 있는 최소 날짜
-M : 패스워드를 변경하지 않고 사용할 수 있는 최대 날짜
-I : 패스워드 만료기간 이후에도 사용할 수 있는 유예기간 설정
-E : 패스워드 만료기간 설정
-W : 패스워드를 변경해야하는 경고 날짜 설정
예시) chage -m 7 -M 90 -I 2 -E 2025-12-31 -W 15 testuser
➡️ testuser 계정의 암호를 최소 7일 이후부터 변경이 가능하고, 90일 이후에는 패스워드를 변경해야 한다. 해당 계정은 2025-12-31까지 사용이 가능하며 계정 만료일 15일 이전에는 해당 계정이 만료됨을 알리며 계정이 만료되어도 2일동안은 사용이 가능하다.
새로운 그룹을 추가할 때 사용하는 명령어로 root 사용자만 사용이 가능함
1000번 이상부터 부여가 가능함
(0 - root, 1~999까지는 bin, mail 등 시스템 레벨 계정을 사용하기 위해 설정되어 있음)
옵션
-g : GUI 값을 지정할 수 있는 명령어
예시) groupadd 4gl ➡️ 4gl 이라는 그룹을 생성
예시) groupadd -g 4321 4gl ➡️ GUI값이 4321이며 그룹명이 4gl인 그룹을 생성
r(read) : 읽기 권한
w(wirte) : 쓰기 권한 (편집)
x(exectue) : 실행 권한 (사용여부)
예시) -rwsrw-rw-
소유자 : 읽기, 쓰기, Set-UID 설정 & 실행 권한 있음
그룹 : 읽기, 쓰기가 가능, 실행 권한 없음
기타 사용자 : 읽기, 쓰기가 가능, 실행 권한 없음a.txt 파일의 소유자가 root일 때 내가 testuser1로 해당 파일을 실행하면 실행이 됨 ➡️ 왜냐? Set-UID 설정을 통해서 해당 파일을 실행하는 사람들이 해당 파일에 본인의 계정(testuser1)으로 실행하는게 아니라 root로 실행하는 것이라 실행이 됨
예시) -rwSrwsrw-
소유자 : 읽기, 쓰기, Set-UID 설정 & 실행 권한 없음
그룹 : 읽기, 쓰기, Set-UID 설정 & 실행 권한 있음
기타 사용자 : 읽기, 쓰기가 가능, 실행 권한 없음a.txt 파일의 소유자가 root, 그룹은 test. testuser1(test)로 해당 파일을 실행하면 실행이 됨 ➡️ 왜냐? Set-GID를 통해서 같은 그룹이기에 실행할 수 있음.
예시) drwxrwxrwt
소유자 : 읽기, 쓰기, 실행 가능
그룹 : 읽기, 쓰기, 실행 가능
기타 사용자 : 읽기, 쓰기, 모든 사용자가 디렉터리에 접근이 가능하고 파일을 생성할 수 있지만 삭제는 제한됨
예시) chmod 755 a.txt ➡️ a.txt 파일의 권한을 소유자는 rwx, 그룹은 r-x, 기타 사용자는 r-x로 설정
예시) chmod -R 777 /tmp ➡️ /tmp 디렉터리와 해당 디렉터리 내 하위 모든 디렉터리들의 권한을 모두 777로 바꾼다
예시) chmod g+rx hello.txt ➡️ hello.txt의 그룹 권한에 rx를 추가한다
(ll -> 권한 확인 할 수 있는 명령어로 ls -l 의 줄임)
예시) chmod o-t hello.txt ➡️ hello.txt의 other권한에서 특수권한을 뺀다
예시) chmod a+x hello.txt ➡️ hello.txt에 그룹, 아더 등 모든조건에 x(실행) 권한을 추가
예시) chmod a=wx hello.txt ➡️ hello.txt의 모든 권한은 wx로 설정
소유권을 변경하는 명령어
옵션
-R : 디렉터리 내부의 모든 파일의 소유권한 변경
예시) chmod g+rx hello.txt ➡️ hello.txt의 그룹 권한에 rx를 추가한다
(ll -> 권한 확인 할 수 있는 명령어로 ls -l 의 줄임)
예시) chmod o-t hello.txt ➡️ hello.txt의 other권한에서 특수권한을 뺀다
예시) chmod a+x hello.txt ➡️ hello.txt에 그룹, 아더, 등 모든조건에 x(실행) 권한을 추가
예시) chmod a=wx hello.txt ➡️ 모든
예시) chmod 600 hello.txt = hello.txt에 600(rw-------) 권한을 부여함
예시) chown 4gl hello.txt = hello.txt의 소유권을 4gl로 변경함
예시) chown testuser.testgroup hello.txt ➡️ hello.txt의 소유자는 testuser, 그룹은 testgroup으로 변경하라
예시) chown .rocky hello.txt ➡️ hello.txt의 그룹을 rocky로 변경해라
예시) chown 4gl:developers hello.txt ➡️ hello.txt의 소유자는 4gl, 그룹은 developers로 변경해라라는 의미(:(콜론)은 점 대신 쓸 수 있음)
예시) chgrp rocky hello.txt = hello.txt의 소유권을 rocky 그룹으로 변경함
파일이나 디렉터리 생성 시 부여되는 기본 허가값을 지정하는 명령어
파일 생성에는 기본 666에서 umask 값을 뺀 값을 기본 허가권으로 지정 (666-umask)
디렉터리 생성에는 기본 777에서 umask 값을 뺀 값을 기본 허가권으로 지정 (777-umask)
옵션
-S : umask 값을 문자로 표기 (디렉터리 기준)
umask 연산법 (2진수 and 연산)
파일에만 부여 가능
다른 사용자에 의해 파일이 삭제되어도 하드 링크를 설정했다면 해당 파일을 보존할 수 있음
원본 파일이나 하드 링크 파일을 수정하면 서로 변경되어 있음
원본 파일을 삭제해도 링크 파일은 아무런 영향을 받지 않음
동일한 파일 시스템에서만 사용 가능
- user라는 파일이나 디렉터리가 없음
- a.txt 내용을 확인
- a.txt에 하드링크 user를 설정
- user라는 파일이나 디렉터리를 확인하니 a.txt 내용이 나옴
- user 파일을 변경하니 a.txt 내용도 변경된걸로 확인됨
- ls -i로 확인했을 때 I-node 값이 같은 걸 확인할 수 있음
하나의 파일을 여러 이름으로 가리키게 하는 것
원본 파일과 심볼릭 링크로 생성된 파일은 완전히 다른 파일로 관리
링크이기에 하드링크처럼 원본파일 변경 시 심볼릭 파일도 내용이 변경됨
ls -i 명령어로 확인 시 원본과 링크 파일의 값이 다름
-s : 심볼릭 링크 생성 옵션
: 텍스트 파일을 출력, 리다이렉션 기호와 함께 사용 시 파일을 생성.변경 가능
- 예시) cat > a.txt ➡ 명령어를 실행하면 a.txt의 내용을 입력하고 Ctrl + d를 눌러 입력한 내용을 저장시킨다.
- 예시) cat < a.txt ➡ a.txt 파일 내용을 출력함
<는 생략해서도 쓰이며 우리가 보통 쓰는 cat /etc/passwd와 같음- 예시) cat a.txt >> b.txt ➡ b.txt 생성!
- 예시) cat < a.txt > b.txt ➡ a.txt의 내용을 복사해서 b.txt라는 파일에 넣음. 만약 b.txt가 없다면 a.txt의 내용을 복사하여 b.txt를 생성
- 예시) cat a.txt b.txt ➡ a.txt 내용과 b.txt 내용을 이어서 화면에 출력
- 예시) cat a.txt b.txt > c.txt ➡ a.txt와 b.txt의 내용을 합쳐서 c.txt를 생성
- uid가 2000, gid 1300, 그룹 이름은 rockyusers를 가지는 rocky2 유저를 생성하시오.
cat /etc/group | grep rockyusers : rockyusers가 있는지 확인
groupadd -g 1300 rockyusers
tail -5 /etc/passwd : rocky2 유저가 이미 있는지 확인
useradd -u 2000 -g 1300 rocky2
- 홈 디렉터리는 /linuxuser, /bin/bash 쉘을 가지는 linux2 유저를 생성하시오. 이후 해당 유저가 사용할 수 있는 패스워드의 최소 사용 일수는 일주일, 최대 사용 일수는 3달, 계정의 만료 기간은 2026년 4월 1일로 지정하시오.
ls /linuxuser : 루트에 linuxuser 디렉터리 유무 확인
mkdir /linuxuser
useradd -d /linuxuser linux2
chmod 700 /linuxuser
chown linux2.linux2 /linuxuser
chage -m 7 -M 90 -E 2026-04-01 linux2
(디렉터리를 따로 만든 후에 해당 디렉터리로 유저를 생성하면 해당 그룹의 권한이 root이다. linux2 유저가 아니다. 때문에 mkdir로 만들었다면 해당 디렉터리의 권한을 linux2로 변경해주는 작업을 거쳐야함)
mkdir를 사용하지 않았을 경우
(사실 디렉터리가 1개라면 굳이 미리 안만들어놓아도 useradd할때 없으면 자동 생성됨)
ls /linuxuser
useradd -d /linuxuser linux2
chage -m 7 -M 90 -E 2026-04-01 linux2
- tempuser라는 유저를 생성한 후 해당 유저의 쉘을 변경하여 사용을 불가능하게 만드시오. 생성한 후에 작업할 수 있도록 하시오.
useradd -s /bin/false tempuser
- 임의의 용량을 가진 디스크를 1개 추가한 후 논리 파티션을 2개 생성하시오. 이후 각각의 논리 파티션을 /mydata1, /mydata2에 임의의 파일 시스템으로 마운트하시오. 완료 후 /mydata1, /mydata2는 각각 다음 권한으로 변경하시오.
/mydata1 rw-r-xr--
/mydata2 rwx-w---x
논리 파티션이라는건 확장 파티션이 있어야 쓸 수 있음
확장 파티션이 논리 파티션의 영역이라고 할 수 있음
때문에 확장 파티션을 만들고 논리 파티션을 만들어야함
fdisk /dev/sdb
n(new)
e(extand partition)
-논리 파티션을 생성하기 위해 확장 파티션 2개 생성-
n(new)
l(logical partition)
-2회 반복하여 논리파티션 2개 생성-
mkfs -t xfs /dev/sdb5 (=mkfs.xfs /dev/sdb5)
mkfs -t xfs /dev/sdb6 (=mkfs.xfs /dev/sdb6)
mkdir /mydata1
mkdir /mydata2
mount /dev/sdb5 /mydata1
mount /dev/sdb6 /mydata2
-논리 파티션의 번호는 5번 이후부터 부여됨(1~4번은 주파티션 + 확장파티션 번호)-
chmod 654 /mydata1
chmod 721 /mydata2
- 2번에서 생성한 /linuxuser 디렉터리에 임의의 내용을 가진 원본 파일을 생성한 후 /mydata1에 하드 링크를 추가로 생성하시오.
말이 안돼는 함정 문제임