2012년 7월 8일 일요일

리눅스 사용자 관리


name
정지현(2002/11/26).. hit : 367
subject
사용자 및 패스워드를 관리하자category : linux
사용자 및 패스워드를 관리하자

시스템을 설치하고 난 뒤 먼저 하는 작업은 새로운 사용자 계정을 만드는 것입니다. Root 계정은 시스템에서 절대적인 위치에 있기 때문에 보안상 일반 사용자 계정을 만든 뒤 suid를 하는것이 바람직합니다. 또한 시스템을 여러 사람들이 Telnet이나 SSH, FTP, Mail 서비스를 사용할 때 사용자 계정을 필요로 하게 됩니다. 이러한 사용자 계정을 만들고 패스워드를 지정하며 그룹을 지정하는 방법에 대해서 알아보겠습니다.


1. 시스템 관리자(Root)의 계정관리

리눅스를 설치할 때 설치 과정중에 Root의 비밀번호와 새로운 사용자 계정을 추가하는 설정 부분이 있습니다. 리눅스 설치가 완료되고 난 다음 시스템 재부팅 후에 콘솔에서 로그인 하기 위해서는 Root의 비밀번호를 반드시 기억하고 있어야 합니다. 또한 비밀번호의 보안 유지를 잘 해야만 안전합니다. 재차 강조하지만 Root의 권한은 절대적입니다.

* Root의 비밀번호를 바꾼다면 다음과 같은 명령어를 이용하면 됩니다.

# passwd root
Changing password for user root
New password:
Retype new password:
passwd: all authentication tokens updated successfully


2. 다른 사용자로 임시적으로 전환할 때는 su 명령어를 이용합니다.

때로는 다른 사용자로 전환해야 할 때가 있습니다. 이때 사용하는 명령어가 바로 su인데, 풀이하자면 Substitute User 라는 뜻으로 로그인을 다시 하지 않고 다른 사용자 ID로 변경하여 그 사용자의 모든 환경을 그대로 사용할 수 있는 명령어입니다.
su는 보통 일반 사용자로 먼저 로그인한 상ㅌ에서, 시스템 관리자인 root로 잠시 로그인하여 root 작업을 할 때 사용합니다.

* 다음은 일반 사용자 계정에서 Root로 전환 할때의 예입니다.

ssh login: galaxias
Password:
[galaxias@meari galaxias]$ id
uid=500(galaxias) gid=500(user) groups=500(user)
[galaxias@meari galaxias]$ su -
Password:
[root@meari root]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@meari root]#

* 다음은 일반 사용자 계정에서 다른 사용자 계정으로 잠시 로그인 하는 예입니다.

[galaxias@meari galaxias]$ id
uid=500(galaxias) gid=500(user) groups=500(user),18(admin)
[galaxias@meari galaxias]$ pwd
/home/galaxias
[galaxias@meari galaxias]$ su - midan
Password:
[midan@meari midan]$ id
uid=501(midan) gid=500(user) groups=500(user)
[midan@meari midan]$ pwd
/home/midan
[midan@meari midan]$

* 작업이 끝난 후 원래 사용자로 돌아갈 때는 exit 명령어를 이용하면 됩니다.


3. 일반 사용자 계정 관리

일반 사용자의 계정은 Root만이 관리 할 수 있습니다. useradd, userdel 명령어를 이용하여 사용자 계정을 추가, 삭제 할수 있죠. 보통 사용자 계정은 사용자의 ID와 사용자가 속해 있는 그룹을 가지고 있습니다. 그룹은 사용자들의 집단으로, 효율적인 사용자 관리를 위해 존재합니다. 먼저 사용자 계정을 추가하는 방법에 대해 알아봅시다.

* 사용자 추가

명령어 : # useradd [-g group_name] [-s /bin/bash] [-e YYY-MM-DD] [-u] user_name

Option설명
-c사용자에 대한 계정을 만들면서 finger 명령어를 이용하여 검색가능한 사용자 정보를 입력합니다.
-d기본적으로 사용자의 홈 디렉토리는 /home 이지만, 이 옵션을 사용하면 사용자의 홈 디렉토리를 임의로 지정할 수 있습니다.
-e지정된 날짜까지 계정의 사용 기간을 정의합니다. 예) -e 2003-12-25
-f계정의 사용 기간을 정의한 숫자만큼의 날 수만큼 사용하게 합니다. 예) -f -5
-g그룹을 지정할 수 있습니다.
-p계정을 만들면서 바로 패스워드를 지정합니다.
-u사용자 id를 지정합니다. 옵션을 생략하고 바로 사용자 id를 입력해되 됩니다.
-s사용자의 기본 로그인 쉘(Shell)을 지정합니다.
/bin/bash, /bin/false, /sbin/nologin 등등이 있습니다.
-r계정의 UID 즉 id의 번호를 시스템 번호대에서 생성합니다. 이는 시스템 데몬의 실행 권한을 생성할 때 주로 사용합니다. 이 옵션을 주면 계정의 홈 디렉토리를 만들지 않으며, 패스워드 또한 적용되지 않습니다.

그럼 일반 사용자 계정을 추가해 보도록 하겠습니다.

[root@meari /]# groupadd myuser
[root@meari /]# useradd -g myuser jihyun
[root@meari /]# cd /home

[root@meari home]# ls
galaxias jihyun

[root@meari home]# passwd jihyun
Changing password for user jihyun.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@meari home]#

차례대로 설명하자면 먼저 myuser 라는 그룹을 생성합니다.
그 다음 그룹명 myuser 에 소속된 jihyun 이라는 계정을 생성합니다.
/home 디렉토리에 목록을 보면 jihyun 이 추가 된것을 확인 할 수 있습니다.
그 다음에 jihyun 계정의 비밀번호를 변경해줍니다.
비밀번호 변경은 passwd 명령어를 이용하면 되겠죠?

사용자 계정과 그룹은 어떤 파일에 적혀 있을까요?
바로 /etc/passwd 파일과 /etc/group 파일에서 각각 사용자, 그룹을 관리합니다.

[root@meari home]# cd /etc
[root@meari etc]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
: :
named:x:25:25:Named:/var/named:/sbin/nologin
galaxias:x:500:500::/home/galaxias:/bin/bash
jihyun:x:501:501::/home/jihyun:/bin/bash
[root@meari etc]#

다음과 같이 가장 아랫줄에 jihyun 이 등록되어 있는것이 보이시죠? 이 부분에 대한 설명은 뒤에서 다루기로 하고, 다음은 사용자 계정을 삭제 해 봅시다.

* 사용자 계정 삭제

계정의 삭제에는 어떤 명령어가 사용될까요? 사용자 추가 할때는 useradd 였으니 삭제는 userdel 일까요?
네! 정답입니다. userdel 명령어를 사용하죠.

명령어 : # userdel [-r] user_id

-r 옵션을 붙이면 /etc/passwd 파일에서 사용자의 정보를 삭제하는것 뿐 아니라 그 계정의 홈 디렉토리와 메일 까지 모두 지워줍니다. 사용자 계정을 삭제한다면 당연히 -r 옵션을 함께 붙여서 모든 정보를 삭제해야겠죠? 참고로, 서버의 보안을 생각한다면 불필요한 계정은 삭제해주는 것이 바람직 합니다. 아니면 계정의 그룹을 지정해 줘서 그룹의 권한을 조정하는것도 좋습니다.

계정 삭제의 예를 들어볼까요? 아까 만들었던 jihyun 계정을 삭제해봅시다. 물론 Root로 로그인 한 상태에서만 가능하죠.

[root@meari home]# ls
galaxias jihyun
[root@meari home]# userdel -r jihyun
[root@meari home]# ls
galaxias

[root@meari home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
named:x:25:25:Named:/var/named:/sbin/nologin
: :
galaxias:x:500:500::/home/galaxias:/bin/bash
[root@meari home]# cd /var/mail
[root@meari mail]# ls
galaxias
[root@meari mail]#

보는바와 같이 /etc/passwd 파일의 마지막에 있던 jihyun 에 대한 정보가 없어졌음을 확인할 수 있습니다.


4. 그룹 관리

사용자 계정의 관리는 어떻게 이루어지는 것일까요?

/etc/passwd - 사용자 계정에 대한 정보가 저장됩니다.
/etc/shadow - 사용자 계정에 대한 비밀번호 부분을 암호화해서 저장됩니다.
/etc/group - 그룹에 대한 정보가 저장됩니다.
/etc/skel - 최초로 만들어지는 사용자의 홈 디렉토리에 기본적으로 복사되는 파일들이 저장되어 있습니다.

또한 이러한 파일은 최고 관리자(Root)만이 접근 가능합니다. 일반 사용자들이 이러한 파일을 열거나 수정할 수 있다면 시스템에 심각한 문제가 생기겠죠?

* 그룹관리

그룹 관리에 사용되는 명령어로는 groupadd, groupdel, newgrp 등이 있으며 /etc/group에 설정값이 저장됩니다.

/etc/group 파일을 한번 봐볼까요?

[root@meari mail]# cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
: :
named:x:25:
user:x:500:
myuser:x:501:
[root@meari mail]#

형식은 다음과 같습니다.
형식 : group_name:passwd:GID:user_list

각각은 그룹의 이름, 그룹 패스워드, 그룹ID, 이 그룹에 속한 사용자 계정 목록입니다. 만약 특정 계정을 root 그룹에 포함시키고 싶다면 root 그룹 제일 뒤쪽에 그 계정의 이름을 적어주기만 해도 root 그룹에 포함되게 됩니다. 위에 보면 bin 그룹은 root, bin, daemon 계정이 포함되어 있는것을 볼 수 있습니다.

* 작업 그룹 생성

명령어 : # groupadd [-g GID] [-r] group_name

-g 옵션을 사용하여 그룹의 ID를 지정할 수 있습니다.
-r 옵션은 useradd에서처럼 GID 번호가 시스템 번호(499) 이하로 할당 됩니다. 보통은 500번 이상의 GID를 부여받습니다.

그룹 meari1, meari2 를 생성한 뒤 /etc/group 파일을 보면 이 그룹들이 추가된 것을 확인 할 수 있습니다.

[root@meari mail]# groupadd meari1
[root@meari mail]# groupadd meari2
[root@meari mail]# cat /etc/group |grep meari[1-2]
meari1:x:502:
meari2:x:503:
[root@meari mail]#

-r 옵션을 사용하면 어떻게 되는지 확인해 볼까요?

[root@meari mail]# groupadd -r meari3
[root@meari mail]# cat /etc/group | grep meari[1-3]
meari1:x:502:
meari2:x:503:
meari3:x:11:
[root@meari mail]#

보는바와 같이 meari3의 GID가 500번 이하의 시스템 그룹 번호로 지정된것을 볼 수 있습니다. 왜 이런게 필요하냐구요? 물론 일반 사용자를 위한 계정이나 그룹은 500번 이상의 ID를 부여하는것이 옳습니다. 그러나 apache, named, sshd, proftpd 등의 데몬을 실행할때 실행되는 계정을 만들 때는 500번 이하의 시스템 ID를 부여하는것이 좋습니다. 관리차원에서도 효과적이죠.

* 작업 그룹 바꾸기

먼저 현재 그룹 상황을 보도록 하겠습니다.

[root@meari mail]# cat /etc/group
: :
user:x:500:
myuser:x:501:
meari1:x:502:
meari2:x:503:
meari3:x:11:
[root@meari mail]#

새로운 사용자를 추가하는데, 이전과 다르게 여러 그룹에 동시에 등록시켜보겠습니다.

[root@meari mail]# useradd superman -G user,meari1,meari2
[root@meari mail]# cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
: :
user:x:500:superman
myuser:x:501:
meari1:x:502:superman
meari2:x:503:superman
meari3:x:11:
superman:x:504:
[root@meari mail]# id superman
uid=501(superman) gid=504(superman) groups=504(superman),500(user),502(meari1),503(meari2)
[root@meari mail]#

다음과 같이 superman 계정이 여러 그룹에 속해 있습니다.

* newgrp 를 사용한 작업 그룹 변경

만약 사용자가 두 개 이상의 그룹에 속해 있다면, newgrp 명령어를 사용하여 현재 작업하고 있는 그룹을 변경할 수 있습니다. 사용법은 간단하게 'newgrp group_name' 하면 됩니다.

* 그룹 삭제하기

그룹을 추가했으니, 이제 그룹을 삭제해 볼까요? 그룹삭제는 groupdel 명령어를 사용합니다. 다만 모든 그룹을 다 지울수는 없습니다. 시스템 그룹인 root, bin, daemon, sys, adm 등의 그룹은 시스템에서 사용하는 그룹으로 삭제할 수 없습니다.

명령어 : # groupdel group_name


5. 패스워드 관리

시스템 관리에서 사용자 계정의 관리와 함께 중요한 것이 바로 패스워드 관리입니다. 이 패스워드는 한번 입력하면 Root도 볼 수 없도록 암호화 되어 저장됩니다. 그러므로 암호를 잊어버리면 사용자 입장에서는 로그인을 할 수 없는 매우 곤란한 입장에 처하게 되니, 암호 숙지에 온 힘을 기울여야 합니다.

/etc/passwd 파일은 사용자의 계정및 패스워드에 대한 설정을 담고 있습니다. 일단 어떻게 구성되어 있는지 한번 봅시다.

[root@meari /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
: :
named:x:25:25:Named:/var/named:/sbin/nologin
galaxias:x:500:500::/home/galaxias:/bin/bash
superman:x:501:504::/home/superman:/bin/bash
[root@meari /]#

형식 : user_name:x:UID:GID:comment:Home Directory:Login Shell

위의 /etc/passwd 파일에서 root 계정을 봅시다. 차례대로 설명한다면, root라는 사용자 계정은 패스워드 부분이 암호화 되어 있고 /etc/shadow 파일에서 따로 암호화 되어 저장되어 있습니다. 이 계정의 UID,GID는 각각 0이며 시스템 최고 관리자 root 라는 설명이 되어 있습니다. 그 다음은 /root 가 해당 계정의 홈 디렉토리이며, 로그인 쉘로는 /bin/bash 를 사용합니다.

* passwd 변경하기

사용자 계정을 추가한 다음에 하는 작업은 사용자 계정의 비밀번호를 지정해 주는 것입니다. 이는 사용자 계정을 만들면서 옵션 -p 를 함께 주어 만드는 과정에서 비밀번호를 부여하는것과, passwd 명령어를 이용하여 비밀번호를 변경하는 방법이 있는데, 전자의 경우는 비밀번호가 노출이 되기 때문에 잘 사용하지 않습니다.

명령어 : # passwd user_name

비밀번호는 Redhat 리눅스에서는 기본적으로 최소 6자리 이상을 사용하게 합니다. 6자가 되지 못한다면 it's WAY to short 라는 메세지가 나타납니다만 비밀번호 변경은 가능합니다. 되도록이면 6자리 이상의 비밀번호를 권장합니다.

* 로그인을 못하게 하고싶다?!

/etc/passwd 파일의 패스워드 부분을 * 로 바꾸면 해당 계정은 사용가능하지만, 로그인을 할 수 없게 됩니다. 보통 오랜 휴면기를 가지게 되어 해당 계정으로 오랫동안 시스템에 접속하지 못하게 되었을 경우 사용합니다.


6. 사용자 신분 확인

리눅스 시스템은 멀티유저 OS 이므로 현재 시스템에 로그인한 계정의 다양한 정보를 확인 할 수 있습니다. 우선 쉘 프롬프트에서 whoami 또는 who am i 라고 입력해 보세요. 현재 로그인한 유저가 누구인지 확인 할 수 있습니다.

이 외에도 id, groups, who, finger 등의 명령어를 사용하여 확인 할 수 있습니다.

who 명령어는 현재 시스템에 접속한 모든 계정의 목록을 출력합니다. 이를 통해 write 명령어를 사용하면 메시지도 보낼 수 있습니다. write 명령어는 다음과 같이 사용합니다. '# write user_id' 그 다음 할 말을 계속 치면 되죠.


이상 사용자 계정 관리에 대해 알아보았습니다. 틀린 부분이 있다면 지적 바랍니다. 이 외에도 사용자 관리와 관련된 많은 정보가 있지만 시간 부족으로 다음 기회에 보충하도록 하겠습니다. 사용자 계정의 관리는 보안의 첫걸음입니다. 되도록이면 불필요한 계정은 삭제하는것이 좋습니다. 잘 습득하여 시스템 보안에 활용하시기 바랍니다. 궁금한 점은 질답 게시판을 이용해주시면 감사하겠습니다.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...