22장. 사용자 관리와 비밀번호
학습목표
- 사용자 관리의 방법을 알아본다.
● 리눅스 제공 표준 사용자 및 표준 그룹 (root)
- /etc/passwd, /etc/group
- UID(UserID) : 사용자계정과 대응하는 시스템이 인식하는 고유한 숫자 (root는 0)
- GID(GroupID) : 그룹명과 대응하는 시스템이 인식하는 고유한 숫자
- 사용자 : ID와 Password를 가지고 리눅스 사용권한을 가짐
- 그룹 : 여러 사용자에게 같은 권한을 가질 수 있도록 묶는 역할
● 명령어를 이용한 사용자 관리
- root 관리자가 생성
- 명령어 : useradd new-id [옵션] [변경값] (useradd = adduser)
→ 예) 디렉토리 지정 # useradd woo -d /home/woo
→ 쉘 지정 # useradd woo -s /bin/tcsh
→ 그룹 지정 # useradd woo -g mygroup
- 명령어 : passwd user-id
→ 예) # passwd woo
- 명령어 : userdel [옵션] user-id
→ 예) 디렉토리까지 삭제 # userdel -r woo
- 명령어 : usermod [옵션] [변경값] user-id
→ 예) 그룹변경 # usermod -g user woo
→ 디렉토리 변경 # usermod -d /woo woo
- 명령어 : chage [옵션] [변경값] user-id
→ 예) ID사용 만료일지정 # chage -E 2004/02/01 woo
- 사용자 추가시 기본값 -> /etc/login.defs
- skel 디렉토리 -> /etc/skel/ (사용자가 생성될 때 제공할 기본 파일이
있음)
- 명령어 실행시 작동순서
→ 1. /etc/passwd 에 사용자 추가
→ 2. /etc/group 에 그룹이름 추가
→ 3. /home 디렉토리 밑에 계정이름과 같은 이름의 디렉토리 생성 (계정 공간)
→ 4. /etc/skel 디렉토리의 파일내용을 계정공간으로 복사
→ 5. 패스워드는 나중에 passwd <계정이름> 으로 설정
- root 사용자는 모든 패스워드 변경가능
- 일반 사용자는 자기 패스워드만 변경
- /etc/shadow와 /etc/passwd 차이
→ : passwd는 모든사용자가 읽기 가능,
→ : shadow는 root 만 읽기 가능
- 사용자 계정 변경
→ # su -> root 권한 획득
→ # su - -> root 권한 획득 + root 환경설정
→ # su 사용자명 -> 사용자 권한 획득
- /etc/passwd 파일의 구조
※ account:password:UID:GID:GECOS:directory:shell
☞ account 사용자이름
☞ password 암호(shadows 파일로 대치될 경우 * 표시)
☞ UID, GID 사용자번호, 그룹번호
☞ GECOS 사용자정보(사용자 Full
Name)
☞ directory 사용자의 홈디렉토리
☞
shell 사용자의 기본 shell
→ 계정앞에 "*" 표시하면 계정잠금
→ 첫 User나 Group의 UID, GID는 500번으로 시작
- /etc/shadow 파일구조
※ account:encryptedpassword:last:may:must:warn:expire:disable:reserved
☞ account
계정이름
☞ encrypted password 암호화된 패스워드
☞ last
최근 패스워드 변경일 (1970년 1월 1일 기준의 날짜 수)
☞
may 패스워드 변경 후, 재설정을 위한 대기일 수
☞ must 패스워드
유효기간
☞ warn
패스워드 변경 경고 시간
☞ expire 패스워드
만료시간 이후 계정을 사용할 수 없게 되는 기간
☞ disable 계정 사용 불가능 날짜 (1970년 1월
1일 기준의 날짜 수)
☞ reserved 예약된 영역
- 그룹생성
→ # addgroup -g gid <그룹이름>
- 그룹삭제
→ # delgroup <그룹이름>
- 그룹변경
→ # groupmod -n <new 그룹이름> <old 그룹이름>
- /etc/group 파일구조
※ group_name:password:GID:user-list
→ group_name : 그룹명
→ Password : 그룹 패스워드(필요 시 사용, 일반적으로 사용하지 않음)
→ GID : 그룹 번호
→ User-list : 그룹에 속한 User ID, 콤마(,)로 구분
- 사용자 확인 명령
→ # whoami
→ # who am i
→ # id
→ # groups
[실습]
● 명령어를 이용한 사용자 관리
● X윈도우 환경에서 사용자 관리
< /etc/passwd >
사용자 관리를 위한 기본적인 파일이다.
vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
root : 사용자 이름
x : passwork 암호
0 : UID
0 : GID
root : GECOS 사용자 정보 (딱히 지워도 상관없다)
/root : root 사용자의 홈 디렉토리
/bin/bash : root 사용자의 기본 쉘
각 사용자들의 정보를 확인할 수 있다.
대표적으로 root 사용자에 대한 부분을 확인해보았는데
예를들면 root의 그룹번호는 0이다.
이게 왜 0인지 잘 모르겠다.
어디서 확인할 수 있을까?
vi /etc/group
각각의 그룹들을 확인할 수 있는 /etc/group 파일을 확인해보면
이렇게 기본적으로 시스템이 부여한 그룹 번호들을 확인할 수도 있다.
이번엔 john이라는 사용자를 만들어보도록 하자.
useradd john
치면 아무 변화가 없다.
에러메시지가 뜨지 않으면 성공적으로 만들어진 것이다.
그리고 잘 만들어졌는지 확인해보자.
vi /etc/passwd
맨 아래에 보면 john 사용자에 대한 정보가 있는 것을 볼 수 있다.
잘 만들어 졌다.
john은 일반 사용자 이기 때문에 500번 부터 UID와 GID를 부여 받았다.
그전에 내가 만든 master라는 사용자가 처음 만들어졌기 때문에 500번을 부여받았고
john은 그 다음 501번을 부여받았다.
그렇다면 이러한 정보들은 어디서 직접 지정해주는 걸까?
vi /etc/login.defs
/etc/login.defs 파일을 한번 열어보자.
UID는 500번 부터 60000번까지 생성할 수 있음을 확인할 수 있다.
GID도 UID와 마찬가지이다.
CREATE_HOME이 yes로 되어있는 것은
사용자 홈 디렉토리를 만들것인가인데 이것을 no로 바꾸면 홈 디렉토리를 생성하지 않는다.
< /etc/skel >
사용자를 생성할 때 기본적인 환경설정 파일이 제공되는 폴더이다.
우리는 앞에서 john 사용자를 만들었다.
/home/john 폴더로 한번 가보자.
ls -a를 치면 난 만든적이 없는데
이상한(?) 파일들이 생성되어 있다.
어디서 이런 파일들이 생긴 것일까?
cd /etc/skel
/etc/skel 폴더로 이동하자.
ls -a 하면 기본적으로 새 사용자에게 제공해주는
환경설정 파일들이 여기 있다는 것을 확인할 수가 있다.
이번엔 새 사용자를 만들때 hello.txt 파일을 생성하게 해보자.
cat > hello.txt
Hello...
라고 내용을 입력하고 Ctrl + Z를 눌러 빠져나온다.
/root 폴더로 이동해서
adduser bann
bann 사용자를 새로 생성한다.
cd /home/bann
bann 사용자의 폴더로 이동해서
ls 명령을 쳐보면 hello.txt 파일이 생성되어 있다.
cat hello.txt
내용 역시 /etc/skel 에서 만들었던 것과 같은것을 볼 수 있다.
< 사용자 계정 변경 >
john 사용자를 만들고 password를 지정해주지 않았으니
지정해주자.
passwd john
john 사용자로 계정을 변경해보자.
su john
그럼 john 사용자의 권한만 얻었을 뿐이지
기본 폴더가 /home/john으로 바뀐건 아니다
그래서 현재 /root 폴더에서 ls명령을 쳤을때
허가가 거부된 것이다.
exit 명령으로 john 사용자로부터 빠져나오자.
다시 john 사용자의 권한을 얻는데 이번엔 '-' 를 붙여서 해보자.
su - john
그럼 바로 /home/john 폴더가 기본폴더가 된다.
whoami를 치면 현재 사용자가 나온다.
who am i를 치면 좀 더 자세한 정보가 나온다.
id를 치면 UID나 GID같은 정보들을 확인할 수 있다.
현재 john 사용자인 상태에서 bann 사용자를 한번 지워보자.
userdel bann
john 사용자는 root가 아니기 때문에 이 명령을 실행할 수가 없다.
exit로 john 사용자로부터 빠져나오자.
root 사용자로 bann 사용자를 지운다.
userdel -r bann
-r 옵션은 bann 사용자의 디렉토리까지 지우는 것이다.
ls /home 을 쳐보면 bann 디렉토리가 지워진 것을 확인할 수 있다.
< Group 설정 >
먼저 그룹을 하나 생성해보자.
groupadd bbb
bbb 그룹을 하나 만들었다.
잘 만들어졌는지 확인해보려면
cat /etc/group
※ adduser같은 경우는 반대로 useradd로 해도 되지만 groupadd는 addgroup가 없다.
맨 아래줄에 bbb라는 그룹이 502번의 GID를 부여받았음을 볼 수 있다.
adduser abc -g bbb
abc 사용자를 만듬과 동시에 bbb 그룹으로 넣는다.
그리고 abc 사용자가 잘 생성되었는지 확인해보자.
cat /etc/passwd
맨 아래줄에 abc 사용자가 잘 생성이 되었고
속한 그룹이 502라고 표시되어 있다.
502면 그룹 bbb이다.
잘 설정이 되어 있음을 확인할 수 있다.
< X 윈도우 환경에서 사용자 관리 >
X 윈도우 환경에서 사용자 관리 하는 것을 알아보자.
redhat-config-users
'사용자 추가'를 클릭
def 사용자를 생성해보자
암호를 입력하고 확인
def 사용자가 간단하게 생성이 되었다.
이번엔 bbb 사용자를 생성해보자.
암호를 입력하고
"이 사용자의 개인 그룹 생성"을 체크 해제한 후 확인
bbb 사용자가 잘 만들어졌지만 기본 그룹은 users로 설정이 되어있다.
users는 기본적으로 시스템에서 제공하는 그룹이다.
이 bbb 사용자를 john 그룹에 넣어보자.
bbb 사용자를 더블클릭한다.
[그룹] 탭에서 users 가 체크되어있는 부분을 찾아 체크해제를 한다.
그리고 john 을 찾아서 체크한다.
그리고 확인
그럼 성공적으로 bbb 사용자가 john 그룹에 속하게 되었다.
[정리]
● 사용자 관리 명령어
● X윈도우 환경에서 사용자 관리