리눅스 시스템에서 계정을 관리하는 방법에 대하여 알아본다.
현재의 리눅스 배포판들은 계정을 추가하는 명령어인 useradd 와 adduser 의 그 쓰임이 다를수 있다는 것을 인지해야 한다.
일반적인 리눅스 배포판들은 useradd 와 adduser 가 심볼릭 링크로 그 사용법이 같다.
# useradd paul // evan 이라는 사용자 생성
[옵션]
-c : 간단한 사용자설명 코멘트를 등록한다. 주로 이름이나 사무실명등을 입력
-d : 생성하는 계정사용자의 홈디렉토리위치지정 (ex. -d /home/paul)
-e : 생성하는 계정의 사용종료일자 지정 (ex. -e 2013-12-31)
-f : 생성하는 계정의 패스워드 유효일자 지정 (ex. -f -30 , 앞으로 30일동안 유효한 계정)
-g : 생성하는 계정의 로그인 그룹, 지정하지 않을경우 자동으로 사용자명과 같은 그룹생성
-G : 생성하는 걔정의 추가등록 계정의 그룹명, 여러개일경우 , 로 구분. 지정하여도 사용자명과 같은 그룹은 자동으로 생성
-p : 생성하는 계정의 패스워드 지정
-s : 생성하는 계정의 로그인쉘 (기본값 /bin/bash)
-u : 생성하는 계정의 UID 지정 (ex. -u 1000)
Debian / ubuntu 계열에서의 특이점
useradd -D
useradd 로 생성되는 것들의 기본값들을 설정하는 명령어
/etc/default/useradd 에 이 설정값들이 저장되어 있으며 이를 직접 수정해도 된다. useradd -D 는 이 파일의 설정값을 변경한다.
# useradd -D
GROUP=100 // 기본 소속 그룹 GID=users
HOME=/home // 홈디렉토리 경로
INACTIVE=-1 // 패스워드 종료일 이후의 유효(기간)여부 설정 (0, -1, 1 이상의 숫자)
EXPIRE= // 계정 만료기간
SHELL=/bin/bash // 기본쉘
SKEL=/etc/skel // 홈디렉토리 생성시 함께 생성되는 skel 디렉토리 경로
CREATE_MAIL_SPOOL=yes // 계정 생성시 메일함 생성 여부
INACTIVE 의 값
1이상의 숫자 : 10을 지정하면 패스워드 만료기간이 된 이후에 10일 동안은 패스워드가 유효
0 : 패스워드 만료기간이 되자마자 바로 패스워드를 잠궈버림
-1 : 이 기능자체를 비활성화 함
# useradd -D -b /usr // 홈디렉토리를 /usr 로 변경
# useradd -D -s /bin/sh // 기본쉘을 /bin/sh(본쉘)로 변경
# useradd -D -g 510 // 계정이 생성되면 기본적으로 GID가 100인 users라는 그룹에 소속되는데 이를 변경
# useradd -D -e 2013-12-31 // EXPIRE, 계정만료일을 지정
/etc/passwd , /etc/shadow , /etc/group , /home/evan , /var/spool/mail
# grep evan /etc/passwd
paul:x:500:500::/home/paul:/bin/bash
# grep evan /etc/shadow
paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15857:0:99999:7:::
# grep evan/etc/group
evan:x:500:
# ls -la
합계 20
drwx------ 2 evan evan 4096 2013-06-02 07:30 .
drwxr-xr-x. 5 root root 4096 2013-06-02 07:30 ..
-rw-r--r-- 1 evan evan 18 2013-02-22 06:09 .bash_logout
-rw-r--r-- 1 evan evan 176 2013-02-22 06:09 .bash_profile
-rw-r--r-- 1 evan evan 124 2013-02-22 06:09 .bashrc
# ls -la
합계 8
drwxrwxr-x. 2 root mail 4096 2013-06-02 07:30 .
drwxr-xr-x. 8 root root 4096 2013-05-28 01:54 ..
-rw-rw---- 1 paul mail 0 2013-06-02 07:30 paul
root 는 일반계정사용자의 패스워드를 마음대로 변경가능 하고 일반사용자는 자기자신의 패스워드만 변경할 수 있다.
# passwd evan // evan 계정사용자의 패스워드 설정
$ passwd // 자기자신의 패스워드 설정
# passwd -S evan // 패스워드 상태정보 확인
특정사용자의 패스워드에 락(lock)을 걸어서 잠궈버리고 시스템 접속을 차단하는 방법이 있다. 즉, 시스템 root 사용자는 passwd 명령어의 -l 옵션을 사용하여 일반계정사용자의 암호에 lock 을 걸어서 접속을 제한할 수 있다. 호스팅서버에서 일시적으로 계정접속을 제한할 경우에 유용하게 사용할 수 있다.
# passwd -l evan
evan 사용자의 비밀 번호 잠금
passwd: 성공
# grep evan /etc/shadow
evan:!!$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15857:0:99999:7:::
패스워드에 락이 걸리게 되면 /etc/shadow 파일의 evan 패스워드정보 맨앞에 !! 문자가 들어가게 된다. 패스워드자리에 !! 이 설정되어 있다면 어떤 패스워드도 인정되지 않는다.
# passwd -u evan // 락 해제
특정사용자에 대한 패스워드를 아예 삭제해버리면 로그인 자체가 불가능해진다. 어떤 패스워드를 입력하더라도 인정하지 않게 된다. 물론 이 명령어는 root 만이 가능하다.
# passwd -d evan // 패스워드 삭제
삭제한 패스워드는 재설정하면 된다.
# passwd evan
passwd 를 이용해서 특정 계정사용자의 패스워드 aging 정보를 설정할 수 있다. root 만이 가능하다.
-n mindays : 패스워드 최소 수명일 수. 암호를 바꿀수 있는 최소 날짜 수, 0이면 즉시 변경가능. 따로 설정하지 않으면 /etc/login.defs 의 PASS_MIN_DAYS 의 값을 따른다.
# passwd -n 10 evan
# grep evan /etc/shadow
paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:10:99999:7:::
-x maxdays : 패스워드의 최대 수명일 수. 암호를 바꿔야하는 최대 날짜수. 패스워드를 변경하지 않고 현재 패스워드를 지속적으로 사용할 수 있는 최대 날짜 수. 따로 설정하지 않으면 /etc/login.defs 의 PASS_MAX_DAYS 의 값을 따른다.
# passwd -x 1000 evan
# grep paul /etc/shadow
paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15858:10:1000:7:::
-w warndays : 패스워드 종료일 이전 몇일전부터 종료된다는 warning 메시지를 받을 것인가를 결정함. 따로 설정하지 않으면 /etc/login.defs 의 PASS_WARN_DAYS 의 값을 따른다.
# passwd -w 3 evan
# grep evan /etc/shadow
evan:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15858:10:1000:3:::
# usermod -c 에반 evan // 이름 정보 추가
# grep evan /etc/passwd
evan:x:500:500:에반:/home/evanl:/bin/bash
# userdel evan // evan 이라는 사용자 삭제
/etc/passwd 파일 내의 계정정보행이 삭제된다.
/etc/shadow 파일 내의 패스워드정보행이 삭제된다.
/etc/group 파일 내의 그룹정보행이 삭제된다.
# userdel -r evan
/etc/passwd 파일 내의 계정정보행이 삭제된다.
/etc/shadow 파일 내의 패스워드정보행이 삭제된다.
/etc/group 파일 내의 그룹정보행이 삭제된다.
/var/spool/mail 내의 메일파일이 삭제된다.
홈디렉토리의 내용이 모두 삭제된다.
사용자 제거시 체크 리스트
사용자 데이터베이스나 전화번호 목록에서 사용자를 제거한다.
aliases 파일이나 추가된 전송 주소에서 사용자를 제거한다.
사용자 crontab 파일과 대기 중인 작업을 제거한다.
여전히 실행 중인 모든 사용자 프로세스를 중지시킨다.
passwd, shadow, group, gshadow 파일에서 사용자를 제거한다.
사용자 홈 디렉토리를 제거한다.
사용자 메일 스풀을 제거한다.
사용자를 제거하면 사용자 UID가 시스템에서 더 이상 어떤 파일도 소유하지 않게 되므로 고아가 돼버린 파일 경로를 찾으려면 -nouser 매겨변수로 find 명령을 사용한다.
# userdel -f evan
삭제대상 사용자가 현재 로그인 중이라 하더라도 삭제된다. 또한 사용자의 홈디렉토리와 메일파일도 함께 삭제된다. 만약 다른 사용자가 삭제대상 사용자와 동일한 홈디렉토리를 사용하고 있다 하더라도 삭제되며, 삭제 대상 사용자의 소유가 아닌 메일파일 또한 삭제된다.
참고로 /etc/login.defs 파일에 "USERGROUPS_ENAB" 설정 값이 yes 로 설정되어있고 삭제 대상 사용자의 그룹이 존재한다면 그 그룹도 함께 삭제될 것이다.
chage 명령어는 특정 계정들의 패스워드 종료정책에 대한 정보를 확인 및 수정 할 수 있다.
aging 정보는 /etc/shadow 파일에 설정되는 파일이다.
againg 정보 확인
# chage -l nestgoer
Last password change : Jun 02, 2013 // -d 옵션으로 변경
Password expires : never // -M 옵션
Password inactive : never // -I 옵션
Account expires : never // -E 옵션
Minimum number of days between password change : 0 // -m 옵션
Maximum number of days between password change : 99999 // -M 옵션
Number of days of warning before password expires : 7 // -W 옵션
aging 정보 수정
# chage -E 2013-12-31 -m 5 -W 10 -M 30 nestgoer
[옵션]
-d : 1970년 1월 1일부터 패스워드를 마지막으로 변경한 일자
-E : 계정사용 종료일자 ( YYYY-MM-DD 포맷으로 설정함 )
-I(대문자 i) : 패스워드가 유효기간 종료 이후에 계정 비활성화될 일 수
-m : 패스워드를 변경할 수 있는 최소일 수 ( 0 이면 아무때나 변경가능 )
-M : 마지막 변경 이후의 패스워드 유효 일 수
-W : 패스워드 만료기간 몇 일 전에 안내메시지를 보낼 것인가
# chage nestgoer // aging 정보를 대화형으로 하나씩 설정
댓글 없음:
댓글 쓰기