안녕하세요. 썬구루입니다. 이 게시물에서는 사용자 계정에 관련된 파일 및 디렉터리에 대해 알아보도록 하겠습니다. 리눅스나 유닉스는 로컬 계정에 대한 정보를 아직 텍스트로 된 데이터베이스 파일에 저장하고 있습니다. 몇 십, 몇 백 개의 계정은 모르겠지만 수만 개의 계정 정보를 관리하기에는 개인적으로 텍스트 파일은 적합하지 않다고 생각합니다. 지극히 저의 개인적인 생각이죠. ㅎㅎ..
계정 생성 테스트를 해보았는데 계정이 수 만개가 되니 계정 만들어지는 속도가 상당히 떨어졌습니다. 계정 하나 만드는데 2~3초 정도 걸렸던 걸로 기억합니다. 그럼 최대 몇 개까지 계정 생성이 가능한가? 2.6 커널 버전에서는 약 42억 개 계정 관리가 가능하다네요.(4.2 Billion이라 되어 있음). 말이야 빵구야? 1억 개 넘어가면 계정하나 만드는데 한 시간 걸리는 거 아닌가? 아무튼 계정에 관련된 파일 및 디렉터리에 대해 알아보도록 하겠습니다.
■ 사용자 계정에 관련된 파일 및 디렉터리
이 파일은 만들어진 사용자 계정에 관련된 정보(UID, GID, 사용자 쉘 등등)를 저장하고 있는 텍스트 데이터베이스 파일입니다. 필드의 구분자는 콜론(:) 기호로 되어 있습니다.
필드(Field) 값
|
설 명
|
Username
| 사용자 계정 이름을 나타낸다. [ Manual Page에는 account로 표기되어 있음] |
Password
| 사용자 계정 암호를 나타낸다. 여기서는 x라 표기되어 있으며 실제 암호는 /etc/shadow 파일의 계정 관련 두 번째 필드에 암호화된 암호(Encrypted password)로 저장되어 있다. [ Manual Page에는 password로 표기되어 있음] |
UID
| 사용자 계정에 대한 식별자 ID 값을 나타낸다. [ Manual Page에는 UID로 표기되어 있음] |
GID
| 사용자 계정의 주 그룹(Primary Group)에 대한 식별자 ID 값을 나타낸다. 부 그룹(Secondary Group 정보는 /etc/group 파일에 저장되어 있다. [ Manual Page에는 GID로 표기되어 있음] 사용자 계정에 대한 식별자 ID 값을 나타낸다. [ Manual Page에는 UID로 표기되어 있음] |
Comment
| 사용자 계정에 대한 간단한 설명이 저장된다. 보통 전체 이름이나 부서명이 들어가 있다. [ Manual Page에는 GECOS로 표기되어 있음] |
Home Directory
| 사용자 계정의 홈 디렉터리 경로가 저장된다. [ Manual Page에는 directory로 표기되어 있음] |
Shell
| 사용자 계정의 기본 쉘 정보가 저장된다. bash, tash, dash 중 하나를 보통 선택한다. [ Manual Page에는 shell로 표기되어 있음] 용자 계정의 홈 디렉터리 경로가 저장된다. [ Manual Page에는 directory로 표기되어 있음] 사용자 계정에 대한 간단한 설명이 저장된다. 보통 전체 이름이나 부서명이 들어가 있다. [ Manual Page에는 GECOS로 표기되어 있음] |
□ /etc/shadow
이 파일은 만들어진 사용자 계정에 관련된 정보(사용자 계정 암호, Expire day, Inactive day 등등)를 저장하고 있는 텍스트 데이터베이스 파일입니다. 필드의 구분자는 콜론(:) 기호로 되어 있습니다.
필드(Field) 값
|
설 명
|
Username
| 사용자 계정 이름(Username)을 나타낸다. [ Manual Page에는 login name로 표기되어 있음] |
Password
| 암호화된 사용자 계정 암호를 나타낸다. [ Manual Page에는 encrypted password로 표기되어 있음] |
Last Change
| 가장 최근에 암호를 변경한 날짜 정보를 가지고 있다. 숫자로 되어 있는데 이것은 1970년 1월 1일부터 암호를 변경한 날짜까지의 누적 일수이다. [ Manual Page에는 date of last password change로 표기되어 있음] |
Min
| 암호 변경 후 그 암호를 사용해야 하는 최소 일수를 나타낸다. 만약 3이라고 되어 있다면 암호를 변경한 이후 3일 동안은 다시 새로운 암호로 변경할 수 없다.. [ Manual Page에는 minimum password age로 표기되어 있음] 예) [user1@centos01 ~]$ passwd Changing password for user user1. Changing password for user1. (current) UNIX password: You must wait longer to change your password passwd: Authentication token manipulation error [user1@centos01 ~]$ |
Max
| 암호 변경 후 그 암호를 사용할 수 있는 최대 일수를 나타낸다. 만약 30이라고 되어 있다면 암호 변경 후 30일 이전에 새로운 암호로 변경해야 한다. 만약 30일이 넘어가면 계정으로 접속할 수 없게 된다. [ Manual Page에는 maximum password age로 표기되어 있음] |
Warn
| 암호 사용 만료 전 사용자가 로그인 시 암호 만료 메시지를 뿌려준다. 만약 Max가 30으로 Warn이 5라고 되어 있다면 암호 변경 후 26일차부터 30일까지 암호 만료 메시지를 뿌린다. [ Manual Page에는 password warning period로 표기되어 있음] 예) login as: user1 user1@192.168.80.3's password: Warning: your password will expire in 2 days Last login: Sun Sep 18 15:42:12 2016 from 192.168.80.1 [user1@centos01 ~]$ |
Inactive
| 암호 만료 이후 접속할 수 있는 기간을 나타낸다. 만약 이 값이 3이라 되어 있다면 30일 이후 3일 동안은 계정 접속이 가능하다. 계정 로그인 시 강제적으로 암호 변경을 유도한다. 만약 이 기간도 넘기게 된다면 계정 접속을 할 수 없게 된다. [ Manual Page에는 password inactivity period로 표기되어 있음] 예) login as: user1 user1@192.168.80.3's password: You are required to change your password immediately (password aged) Last login: Mon Sep 26 16:00:21 2016 from 192.168.80.1 WARNING: Your password has expired. You must change your password now and login again! Changing password for user user1. Changing password for user1. (current) UNIX password: |
Expire
| 계정 사용 만료 일자를 나타낸다. 숫자로 나타나있는데 1970년 1월 1일부터 만료일까지 누적된 일자 수이다. 특정 기간 동안 사용할 수 있는 계정을 만들어야 할 때 이 값을 설정한다. [ Manual Page에는 account expiration date로 표기되어 있음] |
Reserved
| 미래를 위해 남겨둔 필드이다. [ Manual Page에는 reserved field로 표기되어 있음] |
□ /etc/group
이 파일은 만들어진 그룹 계정에 관련된 정보(GID, 그룹 멤버 등등)를 저장하고 있는 텍스트 데이터베이스 파일입니다. 필드의 구분자는 콜론(:) 기호로 되어 있습니다.
필드(Field) 값
|
설 명
|
Group name
| 그룹 계정에 대한 이름을 저장하고 있다. [ Manual Page에는 group_name으로 표기되어 있음] |
Password
| 그룹 계정 암호를 나타낸다. 여기서는 x라 표기되어 있으며 실제 암호는 /etc/gshadow 파일의 계정 관련 두 번째 필드에 암호화된 암호(Encrypted password)로 저장되어 있다. [ Manual Page에는 password로 표기되어 있음] |
GID
| 그룹 계정에 대한 식별자 ID 값을 나타낸다. [ Manual Page에는 GID로 표기되어 있음] |
User List
| 이 그룹의 멤버인 사용자 계정 리스트를 저장하고 있다. [ Manual Page에는 user_list로 표기되어 있음] |
□ /etc/gshadow
이 파일은 만들어진 그룹 계정에 관련된 정보(그룹 계정 암호 등등)를 저장하고 있는 텍스트 데이터베이스 파일입니다. 필드의 구분자는 콜론(:) 기호로 되어 있습니다.
필드(Field) 값
|
설 명
|
Group name
| 그룹 계정에 대한 이름을 저장하고 있다. [ Manual Page에는 group_name으로 표기되어 있음] |
Password
| 그룹 계정 암호의 암호화된 암호(Encrypted password)로 저장되어 있다. [ Manual Page에는 encrypted password로 표기되어 있음] |
GID
| 그룹의 암호 또는 그룹 멤버를 변경할 수 있는 사용자 계정 정보가 저장되어 있다. 복수 사용자 이름은 쉼표로 구분한다.. [ Manual Page에는 administrators로 표기되어 있음] |
User List
| 이 그룹의 멤버인 사용자 계정 리스트를 저장하고 있다. [ Manual Page에는 members로 표기되어 있음] |
□ /etc/default/useradd
이 파일은 useradd 명령의 기본값을 가지고 있는 파일이다. 만약 사용자 계정을 생성할 때 -k <디렉터리> 옵션을 사용하지 않은 경우 이 파일에 명시되어 있는 /etc/skel 디렉터리가 적용된다.
[root@centos01 ~]# more /etc/default/useradd
# useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@centos01 ~]# |
만약 기본값을 변경하고 싶다면 useradd 명령에 -D 옵션을 같이 사용하면 된다. 아래와 같이..
[root@centos01 ~]# useradd -D
GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@centos01 ~]# |
□ /etc/skel
이 디렉터리는 사용자 쉘의 초기화 파일이 존재하는 디렉터리이다. 계정 생성이 이 디렉터리에 있는 파일이 사용자 홈 디렉터리에 복사된다.
■ 계정에 관련된 기타 명령
□ passwd
이 명령은 사용자 계정의 암호를 설정하거나 사용자 계정 정보를 변경하기 위해 사용되는 명령이다.
1). 명령 형식
passwd [옵션] [username]
2). 옵션
옵 션
|
내 용
|
-n Min
| 암호 변경 후 그 암호를 사용해야 하는 최소 일수를 정의한다. |
-x Max
| 암호 변경 후 그 암호를 사용할 수 있는 최대 일수를 정의한다. 최대 일수가 지나면 로그인을 할 수 없다. |
-w Warn
| 암호 만료 전 암호 만료 경고를 알리는 일수를 나타낸다. |
-i Inactive
| 암호 만료 후 접속할 수 있는 일수를 나타낸다. 암호 변경을 강제적으로 유도하는 기간인데 이 기간도 지나면 로그인을 할 수 없다. |
-l
| 사용자 계정 잠금. /etc/shadow 파일의 사용자 계정 암호 앞에 !! 기호가 붙는다. |
-u
| 사용자 계정 잠금 해지 /etc/shadow 파일의 사용자 계정 암호 앞에 !! 기호가 제거된다. |
-d
| 사용자 계정 암호 삭제 /etc/shadow 파일의 사용자 계정 암호가 제거된다. |
-e
| 암호 만료. /etc/shadow 파일의 세 번째 필드 Last Change 값이 0으로 변경된다. |
[root@centos01 ~]# useradd -g group1 user12
[root@centos01 ~]# grep user12 /etc/shadow user12:!!:17610:0:99999:7::: [root@centos01 ~]# [root@centos01 ~]# passwd -n 3 -x 30 -w 5 -i 4 user12 user12 사용자의 사용 기한 데이터 조정 중 passwd: 성공 [root@centos01 ~]# grep user12 /etc/shadow user12:!!:17610:3:30:5:4:: [root@centos01 ~]# [root@centos01 ~]# passwd user12 user12 사용자의 비밀 번호 변경 중 새 암호: 새 암호 재입력: passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다. [root@centos01 ~]# [root@centos01 ~]# grep user12 /etc/shadow user12:$6$g2c0.E92$kgEjMSQmloEDW.SEKMh/AAKjr2Pfx/hK1bxJTiIQxnIsfiwBrqpCxreJoKRfdPnOTVJ..n1q2UFafak5CfPqV1:17610:3:30:5:4:: [root@centos01 ~]# [root@centos01 ~]# passwd -l user12 user12 사용자의 비밀 번호 잠금 passwd: 성공 [root@centos01 ~]# grep user12 /etc/shadow user12:!!$6$g2c0.E92$kgEjMSQmloEDW.SEKMh/AAKjr2Pfx/hK1bxJTiIQxnIsfiwBrqpCxreJoKRfdPnOTVJ..n1q2UFafak5CfPqV1:17610:3:30:5:4:: [root@centos01 ~]# [root@centos01 ~]# passwd -u user12 user12 사용자의 비밀 번호 잠금 해제 중 passwd: 성공 [root@centos01 ~]# grep user12 /etc/shadow user12:$6$g2c0.E92$kgEjMSQmloEDW.SEKMh/AAKjr2Pfx/hK1bxJTiIQxnIsfiwBrqpCxreJoKRfdPnOTVJ..n1q2UFafak5CfPqV1:17610:3:30:5:4:: [root@centos01 ~]#
[root@centos01 ~]# passwd -d user12
user12 사용자의 비밀 번호 삭제 중
passwd: 성공
[root@centos01 ~]# grep user12 /etc/shadow
user12::17610:3:30:5:4::
[root@centos01 ~]#
[root@centos01 ~]# passwd -e user12
Expiring password for user user12.
passwd: 성공
[root@centos01 ~]# grep user12 /etc/shadow
user12::0:3:30:5:4::
[root@centos01 ~]#
|
□ id
사용자 계정의 실제 그리고 유효(effective) UID, GID 값을 출력한다.
1). 명령 형식
id [옵션] [username]
2). 예제
[root@centos01 ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos01 ~]# [root@centos01 ~]# su - user1 [user1@centos01 ~]$ [user1@centos01 ~]$ id uid=500(user1) gid=602(user1) groups=602(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [user1@centos01 ~]$ [user1@centos01 ~]$ exit logout [root@centos01 ~]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos01 ~]# |
□ newgrp
다른 그룹을 사용자 계정의 주 그룹으로 임시적으로 전환하기 위해 사용되는 명령이다.
1). 명령 형식
newgrp [groupname]
2). 예제
[root@centos01 ~]# id user1
uid=500(user1) gid=602(user1) groups=602(user1) [root@centos01 ~]# gpasswd -a user1 group1 Adding user user1 to group group1 [root@centos01 ~]# [root@centos01 ~]# id user1 uid=500(user1) gid=602(user1) groups=602(user1),500(group1) [root@centos01 ~]# [root@centos01 ~]# su - user1 [user1@centos01 ~]$ [user1@centos01 ~]$ id uid=500(user1) gid=602(user1) groups=602(user1),500(group1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [user1@centos01 ~]$ [user1@centos01 ~]$ newgrp group1 [user1@centos01 ~]$ [user1@centos01 ~]$ id uid=500(user1) gid=500(group1) groups=500(group1),602(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [user1@centos01 ~]$ [user1@centos01 ~]$ exit exit [user1@centos01 ~]$ id uid=500(user1) gid=602(user1) groups=602(user1),500(group1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [user1@centos01 ~]$ [user1@centos01 ~]$ exit logout [root@centos01 ~]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos01 ~]# |
□ su
사용자 대치를 하기 위해 사용되는 명령이다. 보통 관리자가 일반 사용자로 접속한 후 이 명령으로 root 계정으로 대치하기 위해 많이 사용한다.
1). 명령 형식
su [옵션] [username]
2). 옵션
옵 션
|
내 용
|
-
| 쉘을 로그인 쉘로 만든다. 사용자의 쉘 초기화 파일을 읽어들여 적용하기 위해 사용하는 옵션이다. |
-c command
| 특정 사용자로 명령을 실행하기 위해 사용되는 옵션이다. 하나의 명령만 수행이 가능하며 만약 실행해야 할 명령이 많다면 쉘 스크립트 파일을 만들어 스크립트 이름을 절대주소로 입력하면 된다. |
2). 예제
[root@centos01 ~]# su - user1
[user1@centos01 ~]$ id uid=500(user1) gid=602(user1) groups=602(user1),500(group1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [user1@centos01 ~]$ exit logout [root@centos01 ~]# [root@centos01 ~]# su - -c date user1 2018. 03. 20. (화) 17:48:00 KST [root@centos01 ~]# [root@centos01 ~]# su - -c id user1 uid=500(user1) gid=602(user1) groups=602(user1),500(group1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos01 ~]# [root@centos01 ~]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@centos01 ~]# |
□ chage
사용자 암호 만료 정보(Min, Max, Warn, Expire day 등)의 정보를 변경하기 위해 사용되는 명령이다.
1). 명령 형식
chage [옵션] <username>
2). 옵션
옵 션
|
내 용
|
-d 0
| Last Change 값을 0으로 변경하여 다음 로그인 시 강제적으로 암호를 변경하도록 만들 때 사용하는 옵션이다. |
-E YYYY-MM-DD
| 계정 사용 만료 일자를 지정하기 위해 사용하는 옵션이다. 만약 옵션 뒤에 -1 값을 입력하면 계정 만료 일자가 제거된다. 실제 /etc/shadow 파일에는 해당 필드에 -2로 나타남. |
-I Inactive
| 암호 만료 후 접속할 수 있는 일수를 나타낸다. 암호 변경을 강제적으로 유도하는 기간인데 이 기간도 지나면 로그인을 할 수 없다. |
-m Min
| 암호 변경 후 그 암호를 사용해야 하는 최소 일수를 정의한다. |
-M Max
| 암호 변경 후 그 암호를 사용할 수 있는 최대 일수를 정의한다. 최대 일수가 지나면 로그인을 할 수 없다. |
-W Warn
| 암호 만료 전 암호 만료 경고를 알리는 일수를 나타낸다. |
2). 예제
[root@centos01 ~]# grep user2 /etc/shadow
user2:!!:17609:0:99999:7::: [root@centos01 ~]# chage -E 2016-12-31 user2 [root@centos01 ~]# [root@centos01 ~]# grep user2 /etc/shadow user2:!!:17609:0:99999:7::17166: [root@centos01 ~]# [root@centos01 ~]# chage -m 3 -M 30 -W 5 -I 4 user2 [root@centos01 ~]# grep user2 /etc/shadow user2:!!:17609:3:30:5:4:17166: [root@centos01 ~]# [root@centos01 ~]# chage -E -1 user2 [root@centos01 ~]# grep user2 /etc/shadow user2:!!:17609:3:30:5:4:-2: [root@centos01 ~]# |
No comments:
Post a Comment