본문 바로가기

UNIX/etc

linux user and group

사용자 및 그룹 관련
리눅스는 서버 운영체제입니다. 하나의 시스템에서 자원을 여러 사람에게 나눠주는 서비스를 하기 위해서 만들어진 운영체제입니다. 여러 사용자에게 각각의 권한을 주어 자원을 사용하도록 해야 하므로 각 사용자에게 계정을 부여해주어야 합니다. 계정을 부여하는 것은 커널에세 권한을 이임 받은 root라는 사용자만 가능합니다. root 사용자는 일반 사용자를 관리할 수 있는 권한을 가집니다. 사용자가 많은 경우 사용자의 특성이나 기준에 따라 그룹을 나눈다면 좀 더 관리하기가 쉬울 것입니다. 리눅스에서 그룹 별로 사용자를 관리할 수 있도록 되어 있습니다. 그룹으로 관리하게 되면 특정 디렉토리를 특정의 그룹 사용자들에게만 제공할 수 있습니다.


root사용자의 역할
시스템 내의 여러가지 작업을 수행하는 사람을 시스템 관리자라고 합니다. windows nt 계열의 adminstrator와 같습니다. 일반 사용자가 시스템을 사용하는데 도움을 주는 역할을 수행합니다.

간단한 사용자 정보 알기
   현재 로그인되어 있는 사용자 ID 확인 : whoami, who am i, who, id groups
    pts은 콘솔을 가리키는 장치의 이름입니다.
    pts/1은 첫번째 가낭 콘솔을 뜻합니다.

   who : 자기 자신 뿐만 아니라 현재 시스템에 로그인 되어 있는 사용자 출력
    id : 로그인 되어 있는 계정의 uid(userID), gid(groupsID)등을 출력

   관리자인 root는 uid와 gid가 '0'값을 갖습니다.
   gid가 0인 계정은 시스템 관리를 위한 계정입니다.
    groups=0(root), 1(bin), 2(daemon), 3(sys), 4(adm), 6(dsik), 10(wheel)은 root가 속한 그룹을 나타냅니다.

    root 가 아닌 다른 사용자는
    fedora라는 사용자는 502번이라는 사용자 id를 갖고 있습니다. 그리고 fedora라는 등록되어 있는 것을 확인 할 수 있습니다.

    groups : 자신이 속한 그룹을 확인할 때 사용하는 명령입니다.
   



2. 만들어진 사용자 계정 확인 : /etc/passwd 파일
Fedora:x:501:501::/home/Fedora:/bin/bash
사용자이름:비밀번호:UID:GID:설명:홈디렉토리:기본쉘


3. 만들어진 그룹을 확인 : /etc/group 파일


4. 새로운 사용자 계정 만들기 : useradd, adduser
슈퍼유저는 useradd 명령으로 시스템에 새로운 계정을 추가하기 위해서 사용합니다.
발급 받은 ID를 사용하여 시스템에 접속하여 시스템의 자원을 사용할수 있습니다.

option
-c   commend       새로운 사용자의 설명을 추가해준다. 사용자의 전체 이름을 지정해줄 수 있다.
-d   홈디렉토리     사용자 홈 계정 디렉토리 위치를 지정한다. 기본적으로 /home 디렉토리 밑에서 생성
-e   날짜              임시 사용자의 사용기간을 제한, YYYY-MM-DD(년,월,일) 방식으로 지정
-f    남은날짜        임시 사용자 사용 기간을 남은 날짜로 제한
-g   그룹              새로운 사용자의 그룹을 지정한다
-G   그룹,...         새로운 사용자가 포함되는 여러 그룹을 지정할 수 있다.
-u    UserID         새로운 사용자 ID값을 지정한다. 사용자 ID값은 /etc/passwd 파일로 확인
-p    패스워드      새로운 사용자 생성과 함께 패스워드를 지정한다.
-s    shell           새로운 사용자의 쉘을 정한다.
-m   -k skel_dir    skel 디렉토리 지정, 기본적으로 /etc/skel 디렉토리의 내용을 새로운 사용자 디렉토리로 복사

상용자 계정 이름과 동일한 그룹이 자동 생성 (사용자 계정은 적어도 한 개 그룹에 소속되어 있어야 합니다,)
# tail 1 /etc/passwd            만들어진 계정 정보 확인
# tail 1 /etc/group               그룹에서 새로운 그룹이 생성된 것을 확인 할수 있다.


일시적으로 ID를 생성해야 할 때가 있을 때 -e 옵션으로 날짜를 조정해줘야 합니다.
지정한 날짜가 지나면 만료된 계정의 사용자는 접속할 수 없습니다.
-c에서 보통 사용자 이름을 넣어 구분해서 사용합니다.




5. 사용자 계정 설정 변경하기 : useradd -D
-D 명령 뒤에 옵션 명령 추가

option
-b 홈 디렉토리         홈디렉토리 위치 변경
-e 만료일                사용자의 계정의 만료일 변경
-f  작동일                만료 기간 변경
-g                          그룹변경
-s                          로그인 shell 변경

사용자 계정을 만들기 위한 설정 확인

GROUP    : 기본 그룹의 ID를 지정합니다.
HOME      : 사용자 홈 디렉토리 경로를 지정
INACTIVE : 패스워드 사용기간이 만기된 후 계정 사용이 불가능하게 되는 날 수.
                 0이면 패스워드가 만기되자 마자 계정 사용이 불가능
                 -1이면 이 기능을 사용하지 않겠다는 뜻.
EXPIRE    : 패스워드 만기일 수를 지정합니다.
SHELL     : 사용자가 로그인 할 때 실행되는 쉘
                 일반적으로 리눅스 기본 쉘은 BASH를 사용
SKEL       : 계정이 만들어진 후 사용자 홈 디렉토리에 기본적으로 복사되는 파일을 포함한 디렉토리
INACTIVE 항목에 0을 입력하고 ExPIRE 항목에 일정한 날수를 지정하면 앞으로 추가되는 사용자에 대해 정해진 날이 지나면 계정을 사용할 수 없도록 할 수 있다.

Ex) 계약직 직원인 경우 일정 기간이 지나고 나서 일일 계정을 삭제해야 하나 계정을 만들 때부터 계정의 만기일을 지정해두면 나중에 번거로운 작업을 반복하지 않아도 된다.


useradd -D -b /users
HOME=/home를 HOME=/users로 변경

[참고] 쉘 변경
기본 쉘은 /bin/bash가 된다.
# adduser -D => 쉘 확인
# adduser -D -s /bin/sh => /bin/sh Shell로 변경
# adduser -D => 변경된 쉘 확인

쉘이란 으용 프로그램으로부터 명령을 받아 커널에 전송하는 역할을 수행합니다. 사용자의 키보드 입력을 인식하고 해당 프로그램을 수행하게 됩니다.





6. 사용자 삭제 : userdel
시스템 사용자의 ID를 삭제합니다.
-r 옵션을 사용합니다. 사용자 ID뿐만 아니라 사용자 디렉토리까지 깔끔하게 지워줍니다.
userdel 명령만 사용할 경우 사용자 디렉토리 정보는 지우지 않고 계정만 삭제됩니다.

디렉토리까지 날리기 위해서 다음 같은 명령을 씁니다.



[참고] 사용자 정보 보기 : finger
특정 사용자 정보를 알려주는 기능을 합니다.


[참고] 사용자 정보 변경 : chfn
finger 명령어를 사용할 때 볼 수 있는 사용자 정보를 변경합니다.





7. 패스워드 설정하기 : passwd
생성한 계정은 관리자가 최초 패스워드를 설정해야 합니다.

# passwd user01             [사용자 user01의 패스워드를 변경합니다.]
# vi /etc/passwd              [에서 user01:*:를 user1::로 저장하게 되면 login시 패스워드를 미입력해도 됩니다.]
일반 사용자의 uid값을 0으로 바꿔주면 root 사용자 권한을 갖습니다.





8. 새도우 패스워드 사용 : pwconv
 passwd 파일은 모든 사용자가 읽을 수 있는 파일입니다. 즉, 이 말은 해당 파일에 패스워드를 저장하게 된다면 보안이 취약해진다는 것을 의미하게 됩니다. 이를 해결하기 위해서 /etc/passwd 패스워드 필드에 있는 패스워드를 /etc/shadow 파일에 암호화하여 저장을 하게 되어 있습니다.
 /etc/passwd 암호 필드는 x로 표시되어 있습니다. 기본적으로 pwconv가 설정되어 있어 특별히 설정할 필요는 없습니다.
 /etc/passwd는 위에서 말한 것처럼 일반 사용자도 읽을 수도 있습니다. 즉 보안상 취약점을 가지는 것을 보안하기 위해서 만들진게 /etc/passwd 파일입니다.
 pwconv은 /etc/passwd에 있는 데이터를 변경하고 현재 존재하는 새도우 정보에 포함시킵니다. /etc/shadow의 권한을 보면 root 사용자만 읽기 권한이 있는 것을 알 수 있습니다. 패스워드가 설정되지 않은 사용자는 /etc/shadow에 추가시키지 않습니다.

# cat /etc/passwd | grep root          [passwd 보안 상태를 확인합니다.]
# pwunconv                                  [pwunconv => 새도우 설정 해제되어 있습니다.]
# cat /etc/passwd | grep root          [passwd 파일의 해쉬값이 노출 되어 있습니다.]
# cat /etc/shadow                          ['No such file'그런 파일이 존재하지 않는다라고 출력됩니다.]
# pwconv                                      [다시 shadow 파일을 생성해봅니다.]
# cat /etc/passwd | grep root          [passwd 파일의 해쉬값이 보이지 않습니다.]
# cat /etc/shadow                          [shadow 파일이 내용을 출력합니다.]




9. 패스워드 만기일 지정 : chage
시스템 보안을 위해서 사용자 패스워드 만기일을 설정 빛 변경합니다.
option
-m  [최초    날짜]   패스워드 변경 후 다시 변경할 수 있는 최소 날짜를 지정합니다. 0값은 매번 패스워드를 변경해야 합니다.
-M  [최대    날짜]   패스워드가 유효한 최대 날짜를 지정합니다.
-d   [마지막 날짜]   패스워드의 마지막 변경 날짜 YYYY-MM-DD 형태로 나타냅니다.
-E   [만료    날짜]   사용자 계정이 더 이상 접근이 불가능한 날짜를 지정합니다. 이후에는 패스워드는 잠금 상태가 됩니다.
-l    [잠금    날짜]   계정의 패스워드 만기가 되어 계정을 사용할 수 없게 되는 날짜를 지정합니다.
                          이 후에는 패스워드를 잠금 상태로 만듭니다.
-W  [경고    날짜]   패스워드가 만기 되기 전에 안내 메시지를 날짜로 지정합니다.     
-l user                 사용자의 패스워드 만기 정보를 보여줍니다.

# chage -l 0 user1
-l 옵션에서 0값을 설정하면, 설정한 패스워드 만기 날짜 이후에는 바로 계정을 사용할 수 없게 지정합니다.

# chage -E 2008-12-31 user01
-E 옵션은 user01 계정의 암호를 2008년 12월 31일 이후에 잠김게 설정하게 합니다.

# chage -E 0 user01
user01 계정을 잠금 해제 시킵니다.

# chage -M 7 user1
일주일 후에 잠기에 설정합니다.





10. 계정 전환하기 : su
로그 아웃 없이 임심로 다른 사용자 UID와 GID를 사용할 수 있도록 하는 것입니다.
# su [변환하고자 하는 계정]
# su - [변환하고자 하는 계정]

 시스템 관리자 또는 하나 이상의 계정을 쓰는 사용자가 여러 계정을 이용하여 시스템에서 작업을 행하는데 도움을 줍니다. 또한 원격에서 관리자 권한으로 로그인하지 못하는 경우 자신의 일반 계정으로 원격에서 로그인 한 뒤 su 명령을 사용하여 관리자 권한의 계정으로 전환하여 사용할 수 있습니다.


출처 : http://nicho.tistory.com/439