개요
구조
로그인ID:x:UID:GID:설명:홈디렉터리:로그인쉘
x : 예전에 비밀번호를 저장하던 영역으로 호환성 문제 때문에 남아있다. UID : 사용자를 구분하기 위한 번호. 일반적으로 0~9999번과 65534는 시스템 사용자를 위한 UID로 예약되어 있고, 일반 사용자는 1000번 부터 할당한다. root가 0번, 시스템 데몬이 1번, 명령어를 위한 관리 계정이 2번GID : 사용자가 속한 그룹의 ID로 사용자를 등록할 때 정해지고 특별히 소속 그룹이 지정하지 않는 경우 로그인 ID가 그룹으로 등록. 그룹에 대한 정보는 /tex/group에 저장설명 : 사용자의 실제 이름이나 부서명 같은 것을 적을 수 있는 부분홈디렉터리 : 로그인을 했을 때 자동으로 로그인 되는 디렉토리의 절대 경로로그인 쉘 : 로그인했을 때 처음 보여지는 쉘MAIL_DIR -> /var/mail : 기본 메일 디렉터리PASS_MAX_DAYS -> 99999PASS_MIN_DAYS -> 0PASS_WARN_AGE -> 7UID_MIN, UID_MAX -> 1000~60000 : 사용자 계정의 UID 범위SYS_UID_MIN, SYS_UID_MAX -> 100~699 : 시스템 계정의 UID 범위GID_MIN, GID_MAX -> 1000~60000 : 사용자 계정의 GID 범위SYS_GID_MIN, SYS_GID_MAX -> 100~699 : 시스템 계정의 GID 범위DEFAULT_HOME -> yes : 사용자 홈 디렉터리 생성 여부UMASK -> 0002 : umask 값 설정USERGROUP_ENAB -> yes: 계정 삭제 시 그룹 삭제 여부ENCRYPT_METHOD -> SHA512: 암호화 기법그룹이름:x:GID:그룹멤버useradd [옵션] [로그인ID]u: UID 지정o: UID 중복 허용g: GID 지정G: 2차 그룹 지정d: 홈 디렉터리 지정s: 기본 쉘c: 부가적인 설명D: 기본값을 설정하거나 출력e: EXPIRE 항목을 설정f: 비활성 설정k: 계정 생성할 때 사용할 초기화 파일을 저장한 디렉토리 설정useradd -D$ useradd -D
GROUP=100 -- 그룹 ID
HOME=/home -- 홈 디렉터리의 생성 위치
INACTIVE=-1 -- 0으로 설정하면 암호가 만료되자마자 바로 계정이 잠김
EXPIRE= -- 계정 종료일
SHELL=/bin/sh -- 기본 로그인 쉘을 설정
SKEL=/etc/skel -- 홈 디렉터리의 복사할 기본 환경 파일의 경로
CREATE_MAIL_SPOOL=no -- 메일 디렉터리 생성 여부
사용자 계정 시 설정된 옵션은 vi를 이용해서 /etc/default/user 파일을 수정해서 변경할 수 있지만 되도록이면 -b, -e, -f, -g, -s 와 같은 옵션을 수정하는 것을 권장
옵션을 이용한 사용자 계정 생성
sudo useradd -s /bin/bash -m -d /home/user3 -u 2000 -g 1000 -G 3 user3
adduser 명령
adduser [옵션] 로그인ID--uid--gid--home--shell--gecos : 설명을 붙여주는 옵션usermod [옵션] [로그인ID]u : UID 수정o : UID 중복 허용g : 기본 그룹 수정G : 2차 그룹 수정d : 홈 디렉토리 수정s : 기본 쉘 수정c : 보충 설명 수정f : 계정 비활성화 날짜를 수정e : 계정 만료날짜 수정i : 계정 이름 변경aging : 시간이 지남에 따라 우선 순위가 높아지는 것
비밀번호의 유효 기간을 설정하는 것을 패스워드 에이징이라고 한다.
관련 명령
| useradd, usermod, passwd 명령 수정 | chage 명령으로 수정 | |
|---|---|---|
| MIN | passwd -n 날짜 | change -m |
| MAX | passwd -x 날짜 | change -M |
| WARNING | passwd -w 날짜 | change -W |
| INACTIVE | useradd -f 날수, usermod -f 날수 | change -I |
| EXPIRE | useradd -e 날짜, usermod -e 날짜 | change -E |
변경
sudo cat /etc/shadow | grep user3sudo usermod -f 10 -e 2-24-12-31 user3sudo cat /etc/shadow | grep user3userdel [옵션] [로그인ID]useradd 명령으로 test01, test02 계정을 생성 : 비밀번호 설정 없이 계정을 생성(원격 접속 불가) 하고 계정이 생성될 때 수행하는 기본 작업을 보여주지 않는다.
| 로그인ID | 로그인쉘 | UID | 2차그룹 | 설명 |
|---|---|---|---|---|
| test01 | sh(본쉘) | 2100 | 3 | test01.user |
| test02 | bash | 2200 | 4 | test02.user |
adduser 명령으로 test03 계정을 생성 : 초기 설정 과정이 화면에 출력되고 비밀번호 설정 메시지가 제공된다.
| 로그인ID | 로그인쉘 | UID | 설명 |
|---|---|---|---|
| test03 | bash | 2300 | test03.user |
패스워드 에이징(유효 기간 수정)
| MIN(m) | MAX(M) | WARNING(W) | INACTIVE(I) | EXPIRE(E) |
|---|---|---|---|---|
| 4 | 200 | 10 | 5 | 2024-12-09 |
chage 명령으로 수정
test03 계정의 UID를 2010으로 계정의 이름을 test33으로 수정. usermode 명령을 이용. uid를 u 옵션을 이용. 계정의 이름 변경은 l 옵션 사용.
test02 계정을 삭제 - 사용자의 홈디렉토리까지 삭제
public cloud 에서 IaaS 서비스로 머신을 제공할 떄 계정을 추가할 수 있도록 하는데 이 경우 계정만 추가하도록 해주는 경우도 있고 /home 디렉토리를 만들어주는 경우도 있다.
groupadd [옵션] [그룹이름]g : 그룹 아이디o : 그룹 아이디 중복 허용groupmod [옵션] [그룹아이디]g : 그룹 아이디를 변경n : 그룹 이름 변경groupdelgpasswd [옵션] [그룹이름]a : 사용자 계정을 그룹에 추가d : 사용자 계정을 그룹에서 삭제r : 그룹 암호를 삭제newgrp [그룹이름]다른 계정으로 전환해서 권한을 사용
계정 별로 특정한 작업을 수행할 수 있도록 권한을 부여
root ALL=(ALL) ALL
처음 로그인 한 유저가 관리자 명령 실행 권한이 없어서 명령을 수행을 못하는 경우 위처럼 sudoers 파일을 수정해서 해도 되고 su를 이용해서 관리자로 로그인 하고 usermod -aG sudo 계정으로 계정에 모든 관리자 명령을 수행할 수 있도록 설정하기도 한다.
파일이나 디렉터리를 생성하고 생성한 사용자의 계정과 그룹이 소유자와 소유 그룹으로 설정
파일이나 디렉터리의 소유자를 변경할 필요가 있을 때 사용하는 명령
파일 소유자를 변경하는 chown
형식
chown [옵션][사용자 계정][파일 or 디렉터리 경로]
옵션
R : 서브 디렉토리까지 적용
예시
chown user2 file -> file1의 소유자를 user2로 변경
chown user2:grp01 file1 -> file1의 소유자를 grp01의 user2로 변경
chown -R user2 file1 -> file1의 소유자를 user2로 변경하는데 하위 디렉터리가 있으면 같이 변경
소유자 변경보다는 권한 변경을 하는 경우가 많음
실습
mkdir -p ~/linux_ex/autoever/tempcp /etc/hosts ~/linux_ex/autoever/tempcp /etc/services ~/linux_ex/autoever/templs -lsudo chown owner1 hostssudo chown owner1.owner1 services파일의 소유 그룹을 변경하는 chgrp
chgrp [옵션][사용자 계정][파일 or 디렉터리 경로] sudo apt update
sudo apt install -y quota
sudo mkdir /home2
sudo mount /dev/sda2 /home2
마운트 - 디렉토리를 어떤 디스크에 생성할 것인가 설정
sudo useradd -m -d /home2/qtest1 qtest1
sudo useradd -m -d /home2/qtest2 qtest2
ls /home2
tail -2 /etc/passwd
-- 현재 파일 시스템 확인
df -TH
파일시스템이름 디렉토리경로 파일시스템종류 defaults,usrquota 1 1/dev/sda2 /home2 ext4 default,usrquota 1 1
sudo mount -o remount /home2mountquotacheck [옵션] [파일 시스템]a : 전체 파일 시스템을 체크u : 사용자 쿼터를 확인g : 그룹 쿼터를 확인m : 파일 시스템을 리마운트하지 않음v : 명령 진행 상황을 상세하게 출력quotacheck -ugvm /homeaquota.user : 사용자 쿼터 데이터베이스 파일aquota.group : 그룹 쿼터 데이터베이스 파일quotaon [옵션][파일시스템]a : 전체 파일 시스템에 적용u : 사용자 쿼터를 활성화g : 그룹 쿼터 활성화v : 명령 진행 상황을 상세하게 출력sudo quotaon -uv /home2edquota [옵션][사용자 계정 or 그룹]u : 사용자 쿼터 설정g : 그룹 쿼터 설정p : 쿼터 설정을 복사quota [옵션][사용자 계정 및 그룹]