강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

사용자 관리하기

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle05.gif


저 자 : 신영진 / root@enveng.chungbuk.ac.kr
wonshin@trut.chungbuk.ac.kr
 HITEL : rldls

 

리눅스의 특징인 Multiaccess 와 Multitasking을 하기 위한 기본 시스템이 다중 사용자의 지원이다. 이런 특징으로 리눅스에서는 우리가 하이텔이나 나우누리 통신을 사용하듯이 login이라는 사용자 검증 절차를 거쳐서 시스템에 들어가게 됩니다. 이런 이유로 시스템을 사용할 때 특히, 시스템의 관리인으로서는 사용자 관리라는 점은 매우 중요한 업무입니다. 만약에 있을 수 있는 아이디 도용이나, 크랙킹에 대한 방지에 기본이 되는 중요한 일입니다.

 

1. 사용자 만들기

사용자를 만드는 방법에 쓰이는 adduser 와  passwd 명령어의 사용방법에 대해서 간단히 이야기하고자 합니다. 우선은 사용 방법에 대해서 천천히 설명하도록 하겠습니다.

1.1  사용자를 만드는 방법은 아주 간단합니다. 아래와 같이 adduser를 사용합니다.
 

[root@enveng /root]#adduser wonshin[wonshin은 사용자명]

 
Looking for first available UID... 523 <- 유저아이디 번호가 생깁니다.
Looking for first available GID... 523 <- 그룹아이디 번호가 생깁니다.
Adding login : I...done <- login 이 생성됩니다.
Creating home directory : /home/wonshin...done.
                                     <- wonshin 사용자의 디렉토리가 /home/wonshin에 생깁니다.
Creating mailbox : /var/spool/mail/wonshin... done
                           <- 메일 스풀이 생성됩니다.[이것이 있어야 메일을 받아요]
Don't forget to set the password <- 친절하게도 passwd wonshin 이라고 쳐서 패스워드를
                                                    입력하라고 나오는군요.

 

1.2  이제는 사용자의 패스워드를 지정해야 합니다. 명령어는 passwd를 사용하시면 됩니다.
 

[root@enveng /root]# passwd wonshin
New UNIX passward :

 
BAD PASSWORD : it is too short <- 보안상 짧게 패스워드를 입력했다고 경고가 나오는군요
                                                   [참고 : 이런 경우에는 다시 입력을 하셔야 합니다.]
 

Retype new UNIX password :


passwd : all authentication tokens updated successfully
              ->성공적으로 패스워드 입력이 되었다고 나오네요.

 

1.3  중복사용자가 있을 때의 에러 메세지
 

[root@enveng /root]adduser wonshin

 
User wonshin already exists <- 이미 wonshin 이라는 사용자가 있다고 나오지요. 이러한 중복 사용자가 없겠지요?

 

2. /etc/passwd 란?

앞의 내용처럼 adduser 와 passwd를 사용하시면 그 정보의 내용들이 /etc/passwd 파일에 저장이 되게 됩니다. 만드신 아이디로 login을 할 때 /etc/passwd 에 있는 계정의 검증을 거치게 됩니다.

 

2.1  /etc/passwd 파일에 자세히 쓰여진 형식을 살펴보면
 

wonshin : wOp4kzPmabOJM : 523 : 523 : RHS Linux User : /home/wonshin : /bin/bash
사용자명 : 패스워드 : 유저아이디 : 그룹아이디 : 사용자 정보 :    디렉토리명    : 사용하는 쉘


2.1.1  사용자 명

일반적으로 ID 라고 부르는 것으로 사용자의 이름이 됩니다.

login : 프롬프트에서 타이핑하는 것을 말합니다. 그리고 사용자 각각의 이름으로써
          중복된 사용자가 나오면 알아서 에러 메시지를 보내주므로 옛날 유닉스같이
          고민을 할 필요는 없습니다.

2.1.2  패스워드

6자 이상의 패스워드를 적어야 한다. 그렇지 않으면 패스워드 검사프로그램에 의해서 거절을 당하게 됩니다. wOp4kzPmabOJM 은 사용자가 정한 패스워드를 암호화하여서 나타난 문자입니다. 앞의 두 자리는 2자리는 2500개의 조합 중에서 무작위로 조합을 정해서 작성하게 되고 그 나머지 뒤에 있는 것은 사용자가 입력한 암호를 암호화한 것이지요. 하지만 이렇게 하여도 암호를 크랙킹 당하는 경우가 있습니다. wOp4kzPmabOJM을 거꾸로 돌려서 암호를 알아내는 것이지요. 만약 사용자가 일정한 단어나 숫자로 암호를 만들면.. 아주 쉽게 암호를 알아낼 수 가 있지요. 그래서 shadow 시스템을 사용하여서 아래와 같이
 

=> /etc/passwd
wonshin : *: 523 : 523 : RHS
Linux User : /home/wonshin : /bin/bash

 

/etc/passwd 파일에는 패스워드 자리에 *를 사용하고 대신에 /etc/shadow 에 wOp4kzPmabOJM을 넣어두는 방식을 사용하기도 합니다.

참고 : login 과정을 이해할 필요가 있습니다.
1. 먼저 getty 가 실행이 되어서 login : 이라고 나온다.
2. 사용자명과 패스워드를 입력하면 그것을 받아서 /etc/passwd 파일과 대조한다.
3. 맞으면 shall을 실행한다.

▶ Tip
=> 패스워드 없이 로긴시키려면 아래와 같이 하면 됩니다.
 

wonshin::523:523:RHS Linux User:/home/wonshin:/bin/bash


=> 특정한 사용자의 사용을 잠시 막으려면 아래와 같이 패스워드 자리에 '*' 문자를
     하나 추가하세요.
 

wonshin:wOp4kzPmabOJM*:523:523:RHS Linux User:/home/wonshin :/bin/bash


나중에 허용하려면 *을 빼 버리시면 됩니다.

2.1.3  유저 아이디[UID]

사용자 개개인마다 붙는 고유의 아이디입니다.
이것을 이용하면 사용자 설정에서 아이디를 사용하는 번거로움을 덜 수 있습니다.

2.1.4  그룹 아이디[GID]

유저 아이디와 같은 개념의 방식입니다.

2.1.5  사용자 정보
 

[root@enveng /etc]# chfn wonshin
Changing finger information for wonshin.
Name [] : 신영진


Control characters are not allowed.
<- 허용할 수가 없다는군요. 영어로 쓰면 괜찮습니다.  
 

Name [] : <- 실제이름
Office [] : <- 사무실
Office Phone [] : <- 사무실 전화번호
Home Phone [] : <- 전화번호

Finger information changed.


[root@enveng wonshin]# vi passwd
   <- 즉 한글을 사용하시고 싶으면 한글환경에서 에디터하세요. 한텀같은 것을
        말합니다.
wonshin:wOp4kzPmabOJM:523:523:RHS Linux User:/home/wonshin :/bin/bash
   <- 여기서 커서를 RHS Linux User 에 R 에 멈추고 나서 x 버튼을 누르면 하나씩
        지워집니다.
wonshin:wOp4kzPmabOJM:523:523::/home/wonshin :/bin/bash 
   <- 그럼 여기서 RHS Linux User 까지 지우시고 나서 다시 i 버튼을 누르면 맨 끝에
        -insert- 라는 메시지와 함께 입력이 됩니다.
wonshin:wOp4kzPmabOJM :523:523:신영진:/home/wonshin :/bin/bash 
   <- 원하시는 한글을 쓰세요.
wonshin:wOp4kzPmabOJM:523:523:신영진,사무실,사무실전화번호,집전화번호:/home/wonshin :/bin/bash
   <- 쉼표하시고 위에 보는 바와 같이 입력하시면 됩니다.
   <- 그리고 나서 Shift+: 를 누르시면 아래에 : 라고 나옵니다. 여기에 wq를 하시고
        나오세요.

참고로 제가 root 가 아니더라도 자기 자신의 프로필 정도는 고칠 수 있습니다.
 

[wonshin@enveng]#chfn
Changing finger information for wonshin.
Password : <- 패스워드를 입력하세요.
Name [] : 신영진
Control characters are not allowed.
               <- 허용할 수가 없다는군요. 영어로 쓰면 괜찮습니다.
Name [] : <- 실제이름
Office [] : <- 사무실
Office Phone [] : <- 사무실 전화번호
Home Phone [] : <- 전화번호

Finger information changed.
[wonshin@enveng]# 

 

2.1.6  디렉토리

이것은 사용자가 접속을 하고 나서 바로 보이는 자신만의 디렉토리를 지정해 주는 것입니다. 원한다면 사용자의 디렉토리를 다시 지정해 줄 수도 있습니다. 보통 RedHat 에서는 /home 으로 되어 있습니다. 먼저 vi 에디터를 이용해서 편집을 하세요.

[root@enveng /etc]# vi passwd
   <- 만약 /home/wonshin을 /usr1/wonshin으로 바꾸어 주었다고 하면
wonshin:wOp4kzPmabOJM:523:523:신영진,실험실,211-2345,234-344 :/home/wonshin :/bin/bash
   <- 여기서 커서를 /home/wonshin 에 멈추고 나서 x 버튼을 누르면 하나씩
        지워집니다.
wonshin:wOp4kzPmabOJM:523:523:신영진,실험실,211-2345,234-344::/bin/bash
   <- 그럼 여기까지 지우시고 나서 다시 i 버튼을 누르면 맨 끝에 -insert- 라는
        메시지와 함께 입력이 됩니다.
wonshin:wOp4kzPmabOJM:523:523:신영진,실험실,211-2345,234-344 :/usr1/wonshin :/bin/bash
   <- 그리고 나서 Shift+: 를 누르시면 아래에 : 라고 나옵니다. 여기에 wq를 하시고
        나오세요.
 

[root@envneg /etc]#mkdir /usr1/wonshin
[root@envneg /etc]#chmod 701 /usr1/wonshin 
[root@envneg /etc]#chown wonshin /usr1/wonshin
[root@envneg /etc]#chgrp wonshin /usr1/wonshin 

 

2.1.7  쉘

이 명령어 자리에 쉘을 정해주는 것 말고도 다른 명령어를 얼마든지 정해 주실 수가 있습니다. 보통 이 명령어를 쉘만 지정하는 것으로 알고 있는 사용자가 많지만 마치 윈도우 95에서 보듯이 프로그램을 시작할 때 시작 프로그램에 등록하면 프로그램이 시작하자마자 뜨는 것과 같은 효과를 합니다. 여기에다가 쉘 명령어 말고도 다른 명령어를 사용하셔서 login 가 동시에 작동하게 할 수가 있습니다. 사실 말이야 바른 말이지 window 제품을 보면 유닉스를 닮은 것이 참 많지요.

하지만 보통 쉘을 쓰니까 설명하자면 쉘은 위에서 같이 /bin/bash를 사용하셔도 무방합니다.

프로그래밍을 할 때나 C 언어에 기초가 있으면 /bin/csh 로 바꾸는 것도 좋지요.
 

[root@envneg /etc]#chsh wonshin
Changing shell for wonshin 
New shell [/bin/csh] : /bin/csh
Shell changed.

 
물론 자신도 바꿀 수 있지요.

 

 2.2  이렇게 사용자에 대한 관리는 /etc/passwd 파일에 저장이 됩니다.

2.2.1  /etc/passwd를 한번 살펴보면 아래와 같습니다.
 

[root@envneg /etc]#cat /etc/passwd
root:yikdldldbUDfMI:0:0:root:/root:/bin/bash
admin:L0J2d;d;qA:0:0:root:/home/admin:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
Ip:*:4:7:Ip:/var/spool/Ipd:
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:halt:/sbin:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:
news:*:9:13:news:/var/spool/news:
uucp:*:10:14:uucp:/var/spool/uucp:
operator:*:11:0:operator:/root:
games:*:12:100:games:/usr/games:
gopher:*:13:30:gopher:/usr/lib/gopher-data:
ftp:*:14:50:FTP User:/home/ftp:
nobody:*:99:99:Nobody:/:
beginend:leddfdTlw4l:500:500:Seoung-cho An:/home/beginend:/bin/bash
sun:/0Hxj2dddOfLo:501:501:최고다:/home/sun:/binbash
smusso33:pGN48585ylc6:504:504:박승국:/home/smusso33:/bin/bash
soil:bH7D3g0493Y/I:505:505:정영도:/home/soil:/bin/bash
js9545:7H15868U.T1lM:506:506:이정식:/home/js9545l:/bin/bash
bsmin:GLn48568aJE:507:507:민병수:/home/bsmin:/bin/bash
king:jjZxtQO2paXCs:508:508:이정민:/home/king:/bin/bash
romeo:VFBJW9BCwVqrE:509:509:신설우:/home/romeol:/bin/bash
mskim:uIJ7oo8ByAJsM:510:510:김만수:/home/mskim:/bin/bash
zeroscan:uzmqbTtRQKgKg:511:511:김인성:/home/zeroscan:/bin/bash
paladin:BUFnA7bzS46f2:512:512:Zippo Brand:/home/paladin:/bin/bash
jhlee:zMRQn0CMy32:513:513:이정훈:/home/jhlee:/bin/bash
jayou:8rEc99D97NQ:514:514:최범식:/home/jayou:/bin/bash
profile:LKw6Gq733FM:515:515:이상우:/home/profile:/bin/bash
jykim:4jVkB13ARCXE:516:516:김재용:/home/jykim:/bin/bash
mummy:XDVIUZQIna6:517:517:한미라:/home/mummy:/bin/bash
event:0EWmxowWMOY:518:518:홍은희:/home/event:/bin/bash
dragon:Eh4Z4mxoRA:519:519:김태열:/home/dragon:/bin/bash
liebe629:hthdddX5Oc1r2:520:520:류인구:/home/liebe629:/bin/bash
pschoi:Po6X06C8HaeHw:521:521:최범식:/home/pschoi:/bin/bash
beb:MaPLT5lhd.UWQ:522:522:변의복:/home/beb:/bin/bash
wonshin:wOp4kzPmabOJM:523:523:RHS Linux User:/home/wonshin:/bin/bash 

 

3. 관리하기

3.1  login 없이 사용자 바꾸기

su 명령어를 사용하여서 보통 이런 일들을 처리하게 됩니다. 일반적으로 리눅스 사용자들의 일반적인 문제들을 보면... 항상 모든 일을 root 로 처리한다는 것입니다. root 라는 계정은 모든 일을 할 수가 있습니다. 시스템을 향상되고 올바르게 할 수도 있지만 시스템을 완전히 고철로 만드는 역할도 할 수 있습니다. 그렇기 때문에 아무리 관리자라도 별도의 개인 아이디를 사용하고 시스템에 특정한 일을 할 때만 su 명령어를 사용하여서 처리해야 합니다.

[wonshin@enveng /wonshin]#su <= root 로 계정을 바꾸어 보겠습니다.
passwd : <= root 의 암호를 입력하세요.
[root@enveng /wonshin# <= 이제 루트가 된 것입니다.
[root@enveng /wonshin]# exit <= 이렇게 하면 다시 wonshin 이 됩니다.

root 가 아닌 다른 사용자로 바꾸려면 su 다음에 이용하고자 하는 사용자 아이디를 입력하면 됩니다. root에서 바꾸면 passwd를 물어보지 않습니다. haremoon 로 계정을 바꾸어 보겠습니다.
 

[wonshin@enveng/wonshin]#su haremoon
passwd
[haremoon@enveng /wonshin]#whoami
haremoon

 
-c 옵션을 이용하면 login 할 필요없이 하고자 하는 일을 처리할 수 있습니다.
 

[wonshin@enveng/wonshin]#su root -c "rm -f /root/howto.txt"

 

3.2  sudo

sudo라는 명령어를 사용하셔도 무방합니다. 이 명령어를 사용하시면 보다 간단하게 여러 가지를 사용할 수가 있다고 합니다. 저는 별로 사용하지 않지만 먼저 설정이 필요합니다.

[root@enveng /root]#vi /etc/sudoers <= root 여야 합니다.
wonshin ALL=/sbin/shutdoun, /sbin/adduser <= 항상 패스명을 다 붙이는 것을 잊지 마세요.
 

[wonshin@enveng/wonshin]#sudo shutdoun

 

4. 그룹

그룹을 만드는 이유는 여러 가지입니다. 메일을 보낼 때, 사용자들을 분리할 때, 보안등급을 정할 때 등등 그룹으로 인해서 여러 가지 일들을 한번에 처리할 수도 있고, 관리에 편함을 추구할 수 있는 잇점이 있습니다. 즉, 89학번, 90학번, 91학번 순으로 그룹을 만들어 사용자들으로 그룹에 속하게 만들어서 여러 번 할 일들을 한번에 효율적으로 처리할 수 있습니다.

 

4.1  그룹 형식

그룹의 형식은 아래와 같습니다.
 

group : password : GID : user_list


그룹명 : 패스워드 : 그룹아이디 : 그룹에 속한 사용자명

만약 패스워드를 정하였다면 newgrp 이라는 명령어를 사용하여 그 그룹의 권한을 얻을 수 있습니다.
 

[root@enveng /root]cat /etc/group
root :: 0 : root
bin :: 1 : root,bin,daemon
daemon :: 2 : root,bin,daemon
sys :: 3 : root,bin,adm
adm :: 4 : root,adm,daemon
tty :: 5 :
disk :: 6 : root
     < 생략 >
dip :: 40 :
ftp :: 50 :
nobody :: 99 :
users :: 100 : beginend,admin,sun,wonshin,haremoon,smusso33,soil, js9545,bsmin,king,romeo,mskim,zeroscan,paladin,jhlee,jayou,profile,jykim, mummy,event,dragon,delpast,liebe629,pschoi,beb,ssnam,won

 

Tip

그리고 또한 root 의 그룹 아이디가 0 이지요? 만약에 시스템 관리자가 여러 명이거나 외부에서 로긴할 수 있는 관리등급을 주고 싶으시면 GID를 root 와 같이 주면 사용자의 패스워드나 보안수준이 비슷해지지요.
 

[root@enveng /root]cat /etc/passwd
root:y/iK0GbbUMI:0:0:/root:/root:/bin/bash
admin:L0J2N3rXihA:0:0:root:/home/admin:/bin/bash


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,076 명
  • 현재 강좌수 :  36,001 개
  • 현재 접속자 :  566 명