00 개요
01 사용자 계정 관련 파일
02 사용자 계정 관리 명령
03 그룹 관리 명령
04 사용자 정보 관리 명령
05 디스크 사용량(쿼터) 설정
연습문제
많아지는 passwd 에 대한 정보들을 따로 보관 -> shadow 에서 관리
psswd 에서는 사용자의 기본 정보 저장.
한줄에 하나씩 정보를 저장한다.
/etc/passwd 파일
etc/passwd 파일의 예

/etc/shadow 파일
etc/shadow 파일의 예

/etc/login.defs 파일


/etc/group 파일
/etc/group 파일의 예

/etc/gshadow 파일

useradd 명령으로 사용자 계정 생성하기useradd -u uid # UID를 지정한다.
-o # UID 의 중복을 허용한다.
-g gid # 기본 그룹의 GID 를 지정한다.
-G gid # 2차 그룹의 GID 를 지정한다.
-d 디렉토리명 # 홈 디렉토리를 지정한다.
-s 셸 # 기본 셸을 지정한다.
-c 설명 # 사용자의 이름 등 부가적인 설명을 지정한다.
-D # 기본 값을 설정하거나 출력한다.
-e 유효기간 # EXPIRE 항목을 설정한다. (YYYY-MM-DD)
-f 비활성 일수 # INACTIVE 항목을 설정한다.
-k 디렉토리 # 계정 생성 시 복사할 초기 파일이나 디렉토리를 설정해놓은 디렉토리를 지정한다
-m # 홈 디렉토리를 생성한다.
# 옵션 없이 계정 생성하기
sudo useradd user2 # 홈 디렉토리가 생성되지 않고 기본 셸은 본 셸로 지정
# -> 홈 디렉토리가 없어 / 디렉토리로 로그인 됨
sudo passwd user2 # 사용자 계정을 만들면 암호도 만들어야 로그인이 가능
sudo useradd -m -d /home/user2 user2
sudo useradd -m -d /home/user2 -u 2000 -g 100 -s /bin/ksh user2
# 기본 설정 값 확인하기
useradd -D

/etc/default/useradd 파일에 저장cat /etc/default/useradd
...
SHELL=/bin/sh
(생략)
sudo useradd -D -e 2022-12-31
/etc/skel 디렉토리의 역할ls -a /etc/skel
#[결과]
# . .. .bash_logout .bashrc .profile
# user3 이라는 홈 디렉토리가 만들어진것을 볼 수 있다
sudo useradd -s /bin/bash -m -d /home/user3 -u 2000 -g 1000 -G 3
#
sudo useradd -e 2022-12-31 -f 5 -c "user4 test" user4

# adduser [옵션] [로그인 ID]
adduser --uid UID # UID 를 지정한다.
--gid GID # 기본 그룹의 GID 를 지정한다.
--home DIR # 홈 디렉토리를 지정한다.
--shell 셸 # 기본 셸을 지정한다.
--gecos 설명 # 사용자의 이름 드 부가적인 설명을 지정한다.
adduser user5 # 옵션 없이 사용자 계정 만들기 -> /etc/passwd 파일 확인
adduser --uid 2001 user5 #user5의 uid 를 2001 로 만들기
adduser --home /home/user5 -uid 2001 -gid 2100 --s /bin/sh user5
# 기본 설정 값 확인하기
# -adduser 명령의 기본 설정은 /etc/adduser.conf 에 저장
more /etc/adduser.conf
usermod -u uid #UID 를 수정한다.
-o #UID의 중복을 허용한다.
-g gid #기본 그룹을 수정한다.
-G gid #2차 그룹을 수정한다.
-d 디렉토리명 #홈 디렉토리를 수정한다.
-s 셸 #기본 셸을 수정한다.
-c 설명 #부가적인 설명을 수정한다.
-f inactive #계정 비활성화(INACTIVE) 날짜를 수정한다.
-e expire #게정 만료(EXPIRE) 날짜를 수정한다.
-l #계정 이름을 바꾼다.
# <-- UID 변경하기 -->
sudo usermod -u 1111 user1 #user1 계정의 UID 를 1111번으로 변경
sudo usermod -u 1001 -o user1 #user1 계정의 UID 를 user2 의 UID 1001로 중복 처리
# <-- 홈 디렉토리 변경하기 -->
# user1의 홈 디렉토리가 /home/user111 로 바뀌어 설정되었지만
# 이는 /etc/passwd 파일의 설정 값마 바꾼 것이며 실제로 /home/user111 디렉토리는 생성되지 않음
# 별도의 수작업으로 디렉토리르 만들고 파일을 옮겨야 함.
sudo usermod -d /home/user111 user1 # user1 계정의 홈 디렉토리를 /home/user1 에서 /home/user111로 변경
# <-- 로그인 ID 변경하기 -->
# 로그인 ID 를 바꿀 떄는 홈 디렉토리도 같이 바꿔주는 것이 좋음
# 기존의 홈 디렉토리에 있던 파일이 자동으로 옮겨지지 않으므로 별도로 디렉토티를 생성하고 이동해야 함
sudo usermod -d /home/user44 -l user44 user4 # user4 계정의 로그인 ID를 user44 로 바꾸면서 홈 디렉토리도 같이 변경

# 기존 명령으로 패스워드 에이징 변경하기
sudo grep user3 /etc/shadow #user3 의 현재 설정 확인
sudo usermod -f 10 -e 2022-11-30 user3
sudo passwd -n 2 -x 100 -w 5 user3
# 패스워드 에이징 변경 및 설정 내용 확인하기 : chage
sudo chage -m 2 -M 100 -W 5 -I 10 -E 2022-11-30 user44
# chage 명령으로 user44 게정의 패스워드 에이징을 확인 : -l
sudo chage -l user44
userdel # passwd 와 shadow 파일에서 그 유저에 관한 한 줄만 삭제
userdel -r # 홈 디렉토리를 삭제한다.
-f # 사용자가 로그인 중이여도 강제로 삭제한다.
userdel user4
userdel -r user4
# 사용자 계정만 삭제하기
# - userdel 명령에서 -r 옵션을 지정하지 않으면 사용자 계정만 삭제
sudo userdel user5 # 이렇게 되면 user5의 홈 디렉토리가 남아있게 된다.
# 사용자 계정과 홈 디렉토리 삭제하기 : -r 옵션 사용
sudo userdel -r user6
# 다른 곳에 위치한 사용자 계정 소유의 파일을 찾아 삭제하기
# 만약 유저가 홈 디렉토리가 아닌 다른 디렉토리에 파일을 생성했다면
# 관리자가 그 파일들을 찾아서 삭제해줘야함
# find / -user UID -exec rm -r {} \;
sudo find / -user 2001 -exec rm -r {} \;
# 1) useradd 명령으로 test01, test02 사용자 계정을 생성
# 2) 생성한 사용자 계정을 확인
# 3) test01 사용자에 다음과 같은 패스워드 에이징을 설정
# 4) test03 계정의 UID 를 2010으로, 계정의 이름을 test33 으로 수정
# 5) test03 사용자 계정을 홈 디렉토리까지 삭제
# 옵션 없이 그룹 생성하기
sudo groupadd gtest01
grep gtest /etc/group
[실행결과] gtest01:x:2301: #확인해보면 GID 를 가장 마지막 번호의 다음 번호로 자동 설정해줌
# GID 를 지정하여 그룹 생성하기 : -g 옵션
sudo groupadd -g 3000 gtest02
grep gtest /etc/group
# GID 를 중복하여 지정하기 : -o 옵션
sudo groupadd -g -3000 -o gtest0
grep gtest /etc/group
# 옵션 없이 그룹 생성하기
sudo addgroup gtest04
grep gtest /etc/group
# GID 를 지정하여 그룹 생성하기 : --gid 옵션 사용
sudo addgroup --gid 3001 gtest05
grep gtest /etc/group
# GID 바꾸기
sudo groupmod -g 2500 gtest01
grep gtest /etc/group
# 그룹명 바꾸기 : -n 옵션
sudo groupmod -n gtest11 gtest01
grep gtest /etc/group
# gtest05 그룹 삭제
sudo groupdel gtest05
grep gtest /etc/group
# 그룹에 멤버 추가하기
sudo gpasswd -a test01 gtest11 # 사용자 test01 을 gtest11 그룹에 등록
sudo gpasswd -a test33 gtest11
grep gtest11 /etc/group
[실행결과] gtest11:x:2500:test01,test33
# 그룹의 멤버 삭제하기
sudo gpasswd -d test33 gtest11 # gtest11 그룹의 멤버중 test33 계정 삭제
# 그룹 암호 설정
sudo gpasswd gtest11 # gtest11 그룹의 암호를 바꾸는중
sudo grep gtest11 /etc/gshadow
[실행결과]
gtest11:(~~암호~~)::test01
# 그룹 암호 삭제하기 : -r 옵션
sudo gpasswd -r gtest11
sudo grep gtest11 /etc/gshadow
[실행결과]
gtest11:::test01
# <-- 소속 그룹 변경 예 : user1 -->
id user1 # 현재 소속 그룹 확인
newgrp adm # adm 그룹으로 변경 (2차 그룹이어서 그냥 변경)
newgrp gtest11 # 소속 그룹이 아닌 그룹으로 변경시 암호 필요
# 1) grp01, grp02 그룹을 생성하고 확인
groupadd
# 2) grop02의 GID 를 3100으로 변경
groupmod -g
# 3) grp02 를 grp22 로 변경
groupmod -n
# 4) grp01 그룹에 user1 사용자를, grp22 그룹에 user2 사용자를 추가
gpasswd -a
# 5) grp22 그룹에 암호를 설정
gpasswd
# 6) user1 의 소속 그룹을 grp22 로 변경
newgrp
# 7) grp01, grp22 그룹을 삭제

# 옵션 없이 사용
who
# 각 항목의 제목 출력
who -H
# 로그인한 사용자 수와 계정 이름을 출력
who -q
# (중요) 시스템이 마지막으로 부팅한 날짜와 시간 정보를 출력
who -b
# 현재 런레벨을 출력
who -r
# 런레벨 : 서버는 'command' 로 부팅, 일반 사용자는 'gui' 로 부팅하는데 그것들이 runlevel 이라고 한다.
w # 현재 시스템을 사용하는 사용자의 정보와 작업 정보를 출력한다.
w [사용자명]
lasg # 시스템에 로그인하고 로그아웃한 정보를 출력한다.
# user1 으로 로그인한 경우
whoami # 결과 : user1
id
# su 명령을 사용하여 사용자를 user2 로 전환하고 세 가지 명령을 실행
su user2
whoami
who am i
id
who -m # -m 옵션 : 로그인한 내 정보 (정확하진 않음)
# 사용자 계정을 지정하지 않으면 현재 사용자 계정이 속한 그룹 정보 출력
groups
# 사용자 계정을 지정
groups user2
# 내 암호를 수정하고, 관리자는 다른 유저의 암호를 수정할 수 있다
passwd -l 사용자 계정 # 옵션으로 그 사람의 암호를 lock을 걸수있다 -> 그 사람은 로그인 하지 못함
-u 사용자 계정 # unlock -> 암호 잠금 해제
-d 사용자 계정 # 그 사람의 암호를 그냥 삭제
# 암호 잠그고 해제하기 : -l 옵션과 -u 옵션 (lock, unlock)
sudo passwd -l user2
sudo grep user2 /etc/shadow # 암호 앞에 ! 붙음
sudo passwd -u user2
sudo grep user2 /etc/shadow # 암호 앞에 $ 붙음
# 암호 삭제하기 : -d 옵션
sudo passwd -d user2
sudo grep user2 /etc/shadow
# 파일 디렉토리의 소유자와 소유 그룹을 변경한다.
chown
# chown 명령 사용 예
mkdir temp
cp /etc/hosts .
cp /etc/services temp
ls
-> hosts temp
ls -l # 최초 소유자, 그룹 확인
sudo chown user2 hosts # 소유자 변경
sudo chown user1:han01 hosts # 소유자와 그룹 변경 (user1 에서 han01 로 소유자 변경)
sudo chown -R user2:han01 temp # 서브 디렉토리까지 소유자와 그룹 변경
# temp 와 그 하위 디렉토리까지 전부 han01 소유로 변경
chgrp han01 file1 # 그룹만 바꾼다.
chgrp -R user2 temp # 서브 디렉토리까지 그룹 변경
apt install quota# /etc/fstab 을 미리 설정해놓으면 자동 마운트 됨
sudo vi /etc/fstab # usrqiota, grpquota 작성후 :wq!
sudo mount -o remount /home2 # 다시 마운트하고
mount # 속성확인
# 디스크가 어떤 디렉토리가 마운트가 되면, 그 디렉토리 밑에 데이터 베이스 파일 생성
# 텍스트 파일은 아니고 바이너리 파일임
# quotacheck [옵션] [파일 시스템]
quotacheck -a # 전체 파일 시스템을 스캔한다.
-u # 사용자 쿼터를 확인한다.
-g # 그룹 쿼터를 확인한다.
-m # 파일 시스템을 리마운트
-v # 명령 진행 상황을 상세하게 출력한다.
quotacheck -augvm
quotacheck -ugvm /dev/sdb1
aquota.user : 사용자 쿼터 데이터베이스 파일
aquota.group : 그룹 쿼터 데이터 베이스 파일
데이터베이스 파일은 해당 파일 시스템의 최상위 디렉토리 에 생성
앞에서 quotacheck 은 /home2 파일 시스템을 확인할 것이므로 aquota.user 파일이 /home2 디렉토리에 생성
ls -l /home2/a* # 쿼터 데이터베이스 파일 확인
# 쿼터 사용 활성화 on
# quotaon [옵션] [파일 시스템]
quotaon -a # 전체 파일 시스템의 쿼터 기능을 활성화한다.
-u # 사용자 쿼터를 활성화한다.
-g # 그룹 쿼터를 활성화한다.
-v # 명령 진행 상황을 상세하게 출력한다.
quotaon -augv
quotaon -ugv /home
# /home2 파일 시스템의 쿼터 활성화
sudo quotaon -uv /home2
# 쿼터의 비활성화
quotaoff
# edit 쿼터로 쿼터 설정 가능
# 이 명령어를 치면 텍스트(디폴트 나노 에디터)가 열리면서 이 디바이스에 대해서, 이 유저에 대해서 설정 가능
# 블록단위로 16개까지, soft, hard 리미트가 어떻게 되고
# 저장이 되고 나오면 DB 에 저장이 되어서 설정이 됨
edquota [옵션] [사용자 계정 또는 그룹명]
edquota -u # 사용자 쿼터를 설정한다.
-g # 그룹 쿼터를 설정한다.
-p # 쿼터 설정을 복사한다.
edquota -u qtest1 # qtest1 사용자에게 쿼터를 할당 예 : 쿼터는 KB 단위로 할당
# 소프트 리미트를 20, 하드 리미트는 22 로 설정
edquota -g han01
edquota -p qtest1 qtest2
# 설정된 쿼터 정보를 출력한다.
# 유저의 쿼터, 그룹의 쿼터 정보는 어떻게 되는지 확인 가능
# -p 옵션
# quota [옵션] [사용자 계정 또는 그룹명]
quota -u # 사용자 쿼터 정보를 출력한다.
-g # 그룹 쿼터 정보를 출력한다.
quota -u qtest1
quota -g han01
# qtest1 계정에 설정된 쿼터 정보를 확인
sudo quota qtest1
# 할당된 쿼터를 초과하여 디스크를 사용하려고 하면 다음과 같은 메시지가 출력
# qtest1 의 쿼터 설정을 qtest2 로 복사
sudo edquota -p qtest1 qtest2
sudo quota qtest2
# 쿼터 정보 요약하여 출력
# -a 옵션
# repquota [옵션] [사용자 계정 또는 그룹명]
repquota -a # 전체 파일 시스템의 쿼터 정보를 출력한다.
-v # 사용량이 없는 쿼터의 정보도 출력한다.
-u # 사용자 쿼터 정보를 출력한다.
-g # 그룹 쿼터 정보를 출력한다.
sudo repquota -a # 현재 설정된 쿼터 정보 확인 예
repquota -u qtest1
# 1) /etc/fstab 파일에서 /home2 파일 시스템에 그룹 쿼터 속성을 설정
# 2) /home2 파일 시스템을 다시 마운트
# 3) /home2 파일 시스템의 마운트 옵션을 확인
# 4) quotacheck 명령으로 그룹 쿼터 데이터베이스를 생성
# 5) quotaon -g 명령으로 그룹 쿼터를 활성화
# 6) qtest1 그룹의 쿼터를 설정
# 7) qtest1 그룹의 쿼터 설정을 확인