IT 전용글/Linux

사용자 계정 관리

회상형인간 2008. 11. 27. 18:02

계정관리

linux system에는 크게 세 가지 종류의 계정이 있다

root : super user 계정이라고도 하며 관리자 계정으로 거의 모든 권한을 행사할 수 있는 계정
system 계정 : 일반적으로 login은 안되며 system 운영상 필요한 계정
일반user 계정: 시스템 운영목적이 아닌 일반사용자를 위한 계정

계정관련 파일

/etc/passwd, /etc/shadow, /etc/group
-  이 가운데 한 가지 파일이라도 잘못되면 사용자는 정상적으로 login 하지 못할 수 있다.

ex)
[lee@river lee]$ head -5 /etc/passwd; tail -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash   관리자 계정

bin:x:1:1:bin:/bin:/sbin/nologin   시스템 계정

daemon:x:2:2:daemon:/sbin:/sbin/nologin 시스템 계정

adm:x:3:4:adm:/var/adm:/sbin/nologin 시스템 계정

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 시스템 계정

user1:x:3041:3041::/home/user1:/bin/bash  일반유저계정

user2:x:3042:3042::/home/user2:/bin/csh 일반유저계정

ftp1:x:3043:3043::/home/ftp1:/bin/tcsh 일반유저계정

패스워드 파일 포맷

man -S5 passwd
There is one entry per line, and each line has the
format:  
account:password:UID:GID:GECOS:directory:shell

의미 있는 문자열 및 각 숫자는 콜론 문자로 구분되어 있다.
root : 계정명

x : 패스워드 필드 x 로 표시되어 있으면 패스워드가 /etc/shadow 파일에 저장되어 있다는 의미
패스워드를 shadow 파일에 두면 패스워드를 보호할 수 있다.(shadow file 에 대한 접근은 root 만이 가능하다)

0 : 커널이 참조하는 root 사용자의 식별자.

0 : root 사용자가 속한 첫 번째 그룹(primary group)을 나타낸다

root : 단순히 참고하기위한 용도로 사용되며  이 필드는 비어져 있어도 된다

/root : root 사용자의 홈 디렉토리

/bin/bash : login shell

shadow 파일 포맷

[root@river root]# head -2 /etc/shadow ; tail -2 /etc/shadow
root:$1$0lvCjXwW$JwSLfSuCJGtHebt.0BJGr/:13587:0:99999:7:::
bin:*:13587:0:99999:7:::
user2:!!:13635:0:99999:7:10::
ftp1:$1$xHaNZCYY$kLaYYpY.q7yydEhgxTNum0:13637:0:99999:7:10::

shadow 파일의 각 포맷 역시 도움말 안에 상세한 내용이 나와 있다.

[root@river root]# man -S5 shadow

    SHADOW(5)                                               SHADOW(5)          
NAME                 shadow - encrypted password file          
DESCRIPTION                 shadow  contains  the  encrypted  password information for
                user's accounts and optional the password  aging  information.  
Included is   
Login name                      
Encrypted password
Days since Jan 1, 1970 that password was last changed  
Days before password may be changed  Days after which password must be changed
Days before password is to expire that user is warned                      
Days after password expires that account is disabled 
Days since Jan 1, 1970 that account is disabled
A reserved field

[root@river root]# head -1 /etc/shadow
root:$1$0lvCjXwW$JwSLfSuCJGtHebt.0BJGr/:13587:0:99999:7:::[root@river root]#

root : 계정명

$1$0lvCjXwW$JwSLfSuCJGtHebt.0BJGr : 암호화된 비밀번호

13587 : root 사용자가 패스워드를 마지막으로 변경한 날짜를 1970년 1월 1일 기준으로 계산한 일수이다.

0: 패스워드를 변경할 수 있는 최소한의 일수를 나타낸다. (0 으로 되어 있으면 설정이 되어 있지 않다는 의미로 
패스워드를 변경을 언제든지 할 수 있다)

99999 : 패스워드를 반드시 변경해야만 하는 일수이다. (숫자가 이렇게 되어 있으면 설정이 되어 있지 않다는 의미)

7 : 패스워드 만료일이 되기 전에 언제부터 경고메시지를 보여줄 것인가 하는 필드

: : 유예기간 - 패스워드 만료일까지 사용자가 패스워드를 변경하지 않았다면 계정을 바로 잠그도록 하는 것이 아니라
이 기간 동안은 패스워드를 변경할 수 있도록 하겠다는 것이다. 유예기간동안에도 패스워드를 변경하지 않는다면
그 계정은 잠기게 되므로 사용하지 못한다.

: : 계정이 expire 되는 날을 뜻한다.

* finger 명령으로 passwd 파일을 쉽게 볼 수 있으며 chage 명령으로 shadow 파일을 쉽게 볼 수 있다.

ex)
[root@river root]# finger root
Login: root                             Name: rootDirectory: /root
Shell: /bin/bash
On since Mon Apr 23 21:40 (KST) on tty1    5 days 13 hours idle
Last login Wed Apr 25 17:01 (KST) on pts/0 from 211.54.45.118
New mail received Sun May  6 04:02 2007 (KST)     Unread since Mon Mar 12 11:05 2007 (KST)
No Plan.

[root@river root]# chage -l root
최소:   0

최대:   99999

경고:   7

유효하지 않음:  -1

마지막 변경: 3월 15, 2007

패스워드 만기:  불가

패스워드가 유효하지 않음:

계정 만기:불가

group file

ex
[root@river root]# head -2 /etc/group; tail -2 /etc/group
root:x:0:root,user7,admin
bin:x:1:root,bin,daemon,lee
user2:x:3042:ftp1:x:3043:

 => 분석 =>

root : group 이름

x : 패스워드 필드를 뜻한다. (요즘은 쓰이지 않는다. 의미 없는 필드이다)

0 : root 그룹의 식별자

root,user7,admin : root 그룹에 속해있는 사용자. 그룹에 속해있는 사용자가 하나이상일 경우에는 사용자사이를
콤마로 구분

사용자 계정을 추가
명령어는 useradd 또는 adduser 이다.

[root@river root]# ls -l /usr/sbin/adduser
lrwxrwxrwx    1 root     root            7  3월 11 23:27 /usr/sbin/adduser -> useradd
* adduser 는 단지 링크파일

*.명령을 옵션없이 그냥입력하면 친절하게 사용법이 출력된다.

[root@river root]# useradd
사용법: useradd [-u uid(사용자 아이디) [-o]] [-g 그룹명][-G 그룹,...]
[-d 홈디렉토리][-s 쉘][-c 적요사항][-m [-k template]]
[-f 비활성화] [-e 만기] [-p passwd] [-M] [-n] [-r] name
useradd -D [-g 그룹명][-b 초기디렉토리][-s 쉘][-f 비활성화] [-e 만기]

useradd 명령어 사용법이 두 가지 형식이 있다는 것을 보여준다.useradd 옵션, 그리고 useradd -D 옵션
여기서 useradd -D 옵션은 디폴트값과 관련 있다. 예를 들면
[root@river root]# useradd -D
그룹=100
홈디렉토리=/home
비활성화=10
만기=
쉘=/bin/bash
SKEL=/etc/skel

위에 출력된 것이 useradd 명령의 디폴트 값이다.
사용자 계정을 추가할 때 홈디렉토리를 지정하지 않으면 /home 그리고 login shell을 지정하지 않으면 /bin/bash
가 지정된다는 그런 의미이다.

[root@river root]# useradd kildong
useradd 명령을 옵션 없이 사용하면 아래와 같은 디폴트값이 지정된다.

[root@river root]# finger kildong
Login: kildong                          Name: (null)Directory: /home/kildong                Shell: /bin/bash
Never logged in
No mail.
No Plan.

[root@river root]# groups kildong
kildong : kildong => kildong은 하나의 primary 그룹에만 속해있다.디폴트 값을 쓰기 싫다면

[root@river root]# useradd -u 5555 -G sys,bin -d /var/kildong2 -c "hong kil dong" -s /bin/csh kildong2

[root@river root]# finger kildong2
Login: kildong2                         Name: hong kil dong
Directory: /var/kildong2                Shell: /bin/csh
Never logged in
No mail
No Plan.

[root@river root]# groups kildong2
kildong2 : kildong2 bin sys => kildong2 는 하나의 primary group과 두개의 secondary 그룹에 속해있다.

[root@river root]#

계정삭제

userdel
사용법: userdel [-r] 이름[root@river root]#

-r : 계정 삭제시 홈디렉토리까지 삭제

ex)
[root@river root]# userdel kildong
[root@river root]# finger kildong
finger: kildong: no such user.

[root@river root]# ls -ld /home/kildong
drwx------    5 3044     3044         4096  5월  6 22:53 /home/kildong
=> 계정 삭제시 -r 옵션을 사용하지 않았으므로 홈 디렉토리가 남아있다.

[root@river root]# userdel -r kildong2
[root@river root]# ls -ld /var/kildong2
ls: /var/kildong2: 그런 파일이나 디렉토리가 없음 => 디렉토리까지 삭제되었다.

계정설정 변경

usermod
명령의 사용법은 useradd와 상당히 유사. 단 usermod 명령어로 계정을 생성할 순 없다. 변경만 가능하다.

[root@river root]# useradd kildong
[root@river root]# finger kildong
Login: kildong                          Name: (null)
Directory: /home/kildong           Shell: /bin/bash
Never logged in.
No mail.
No Plan.

[root@river root]# usermod
사용법: usermod [-u uid(사용자 아이디) [-o]] [-g 그룹명][-G 그룹,...]
[-d 홈 디렉토리 [-m]] [-s 쉘] [-c 적요사항] [-l 새_이름]
[-f 비활성화] [-e 만기] [-p 패스워드] -L|-U] 이름

[root@river root]# usermod -s /bin/bash -c "hongkildong" kildong

[root@river root]# finger kildong
Login: kildong                          Name: hongkildong
Directory: /home/kildong                Shell: /bin/bash
Never logged in.
No mail.
No Plan.

=> kildong 사용자 정보가 바뀌었다. login shell 이 변경되었으며 Name이 추가된 것을 알 수 있다.

그룹 추가 및 삭제, 변경

ex)
[root@river root]# groupadd
usage: groupadd [-g gid [-o]] [-r] [-f] group

[root@river root]# groupadd group1

[root@river root]# tail -2 /etc/group
kildong:x:3044:group1:x:3045:

[root@river root]# groupmod -g 4000 group1

[root@river root]# tail -2 /etc/group
kildong:x:3044:group1:x:4000:

[root@river root]# groupdel group1
[root@river root]# tail -2 /etc/groupftp1:x:3043:kildong:x:3044:

[root@river root]#

*. 사용자 계정 생성시 자동으로 만들어지는 파일은 skel  항목과 관련있다.

'IT 전용글 > Linux' 카테고리의 다른 글

Process 관리  (0) 2008.11.27
파일권한(Permission)  (0) 2008.11.27
vi 편집기  (0) 2008.11.27
리눅스 기본 명령어  (0) 2008.11.27
리눅스 사용자 인터페이스 및 명령어  (0) 2008.11.27