linux class(new) 1 페이지

본문 바로가기
사이트 내 전체검색


회원로그인

linux class(new)

계정관리

페이지 정보

작성자 admin 작성일16-01-14 16:37 조회2,958회 댓글0건

본문

linux system에는 크게 세 가지 종류의 계정이 있다

root : super user 계정이라고도 하며 관리자 계정으로서 거의 모든 권한을 행사할 수 있는 계정,
(root 계정을 system 계정에 포함하기도 한다)
system 계정 : 일반적으로 login은 안되며 system 운영상 필요한 계정
일반user 계정: 시스템 운영목적이 아닌 일반사용자를 위한 계정

계정관련 파일
/etc/passwd, /etc/shadow, /etc/group
- 이 가운데 한 가지 파일이라도 잘못되면 사용자는 정상적으로 login 하지 못할 수 있다.

계정관련 백업파일
/etc/passwd- , /etc/shadow-, /etc/group- : 이 파일은 백업 파일로서 원본데이터가
수정되기 직전에 자동 백업이 된다. 원본이 손상되거나 삭제된 경우 이 파일을 이용해서복구할 수 있다.
ex)
[lee@river lee]$ head -5 /etc/passwd; tail -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash 관리자 계정
bin:x:1:1:bin:/bin:/sbin/nologin 시스템 계정
daemon:x:2:2:daemon:/sbin:/sbin/nologin 시스템 계정
adm:x:3:4:adm:/var/adm:/sbin/nologin 시스템 계정
user1:x:3041:3041::/home/user1:/bin/bash 일반유저계정
user2:x:3042:3042::/home/user2:/bin/csh 일반유저계정
-----------------------------------------------------------------------------------------
passwd 파일 형식
man -s5 passwd ; manual page 에는 아래처럼 명시되어 있다.
계정이름:암호:UID:GID:코멘트:홈디렉토리:shell
ex) root:x:0:0:root:/root:/bin/bash
의미 있는 문자열 및 각 숫자는 콜론 문자로 구분되어 있다.
root : 계정명
x : 패스워드 필드 x 로 표시되어 있으면 패스워드가 /etc/shadow 파일에 저장되어 있다는 의미
패스워드를 shadow 파일에 두면 패스워드를 보호할 수 있다.
(shadow file 에 대한 접근은 root 만 읽을수 있고 수정할수 있다.)
0 : 커널이 참조하는 root 사용자의 식별자.
0 : root 사용자가 속한 첫 번째 그룹(primary group)을 나타낸다
root : 단순히 참고하기위한 용도로 사용되며 이 필드는 비어져 있어도 된다
/root : root 사용자의 홈 디렉토리
/bin/bash : login shell
-----------------------------------------------------------------------------------------
계정관리 명령어
1. useradd (또는 adduser)
ex)
useradd xuser1 : default 옵션으로 계정을 생성
useradd -d /var/user2 xuser2 : 계정 생성시 홈디렉토리를 /var/user2 로.
useradd -d /var/user3 -s /bin/csh xuser3 : 홈디렉토리와 login shell 설정
useradd -e 2015-12-31 -c "hong kildong" xuser4 : 계정만료일과 코멘트필드 설정
useradd -u 1000 xuser5 : 계정의 uid 값 설정(설정안하면 바로위에 계정보다 1이 더해진
uid 값을 할당받게 된다)

2. usermod - 계정정보를 수정
ex)
usermod -s /bin/csh user1 : user1의 login shell을 변경
usermod -c "chulsoo" user2 : user2 의 comment 필드 변경
usermod -e '' xuser3 : user3 의 계정만료를 무기한으로 설정.

3. userdel : 계정정보삭제
ex)
userdel xuser1 : xuser1 삭제(홈디렉토리는 지워지지 않는다)
userdel -r xuser2 : xuser2 가 삭제되고 홈디렉토리까지 지워진다.

4. useradd 명령의 default 설정 변경
ex)
useradd -D : useradd 명령을 디폴트 옵션 출력
[root /etc]# useradd -D
GROUP=100 : 일반 group id 는 100번부터 할당됨을 의미함.
HOME=/home : 일반계정 홈디렉토리 경로
INACTIVE=-1 : 암호만료가 되더라도 계정을 잠그지 않는다.
EXPIRE= : 계정만료일 값이 설정안되어 있으면 계정만료일 없음.
SHELL=/bin/bash : 로그인 셀
SKEL=/etc/skel : 계정생성시 사용자 디렉토리에 자동 복사되는 파일
CREATE_MAIL_SPOOL=yes : 사용자 계정시 메일파일 자동 생성여부

ex)
useradd -D -b /var -e 2016-12-31 -s /bin/csh : useradd 의 디폴트 옵션을 변경

-----------------------------------------------------------------------------------------
shadow 파일 포맷

[root@river root]# head -n 2 /etc/shadow ; tail -n 2 /etc/shadow
root:$1$0lvCjXwW$JwSLfSuCJGtHebt.0BJGr/:13587:0:99999:7:::
bin:*:13587:0:99999:7:::
user2:!!:13635:0:99999:7:10::
ftp1:$1$xHaNZCYY$kLaYYpY.q7yydEhgxTNum0:13637:0:99999:7:10::

shadow 파일의 각 포맷 역시 도움말 안에 상세한 내용이 나와 있다.

[root@river root]# man -S5 shadow
Login name
Encrypted password
date of last password change - 가장 최근에 암호를 변경한 날짜
minimum password age - 암호를 변경할 수 없는 기간(암호최소변경주기)
maximum password age - 암호를 변경해야 하는기간(암호최대변경주기)
password warning period - 암호가 만료되기 며칠전부터 알려줄것인가.
password inactivity period - 암호 만료 후 inactive 기간
account expiration date - 계정 만료일
A reserved field - 사용할 수 없는 필드(나중을 위해서 예약되어 있는 필드)

[root@river root]# head -1 /etc/shadow
root:$1$0lvCjXwW$JwSLfSuCJGtHebt.0BJGr/:13587:0:99999:7:::

root : 계정명
$1$0lvCjXwW$JwSLfSuCJGtHebt.0BJGr : 암호화된 비밀번호
13587 : root 사용자가 패스워드를 마지막으로 변경한 날짜를 1970년 1월 1일 기준으로 계산한 일수이다.
0: 패스워드를 변경할 수 있는 최소한의 일수를 나타낸다. (0 으로 되어 있으면 설정이 되어 있지 않다는 의미로
패스워드를 변경을 언제든지 할 수 있다)
99999 : 패스워드를 반드시 변경해야만 하는 일수이다. (숫자가 이렇게 되어 있으면 설정이 되어 있지 않다는 의미)
7 : 패스워드 만료일이 되기 전에 언제부터 경고메시지를 보여줄 것인가 하는 필드
: : 유예기간 - 패스워드 만료일까지 사용자가 패스워드를 변경하지 않았다면 계정을 바로 잠그도록 하는 것이 아니라 이 기간 동안은 패스워드를 변경할 수 있도록 하겠다는 것이다. 유예기간동안에도 패스워드를 변경하지 않는다면 그 계정은 잠기게 되므로 사용하지 못한다.
: : 계정이 expire 되는 날을 뜻한다.
: 매 마지막 필드는 나중을 위해서 예약되어 있는 필드로서 사용되지 않는다.

* finger 명령으로 passwd 파일의 정보를 볼 수 있다
(finger 패키지가 설치되어 있어야 한다)
ex)
[root /etc]# finger xuser1
Login: xuser1 Name: (null)
Directory: /home/xuser1 Shell: /bin/bash
Never logged in.
No mail.
No Plan.

password aging 설정
- 주기적으로 암호를 강제로 변경하게 하여 암호를 안전하게 보호하기위한 목적으로 설정한다.
password aging 설정은 chage 명령어로 한다.
ex)
[root /etc]# useradd xuser10
[root /etc]# tail -1 /etc/shadow
xuser10:!!:16087:0:99999:7:::
<-- password aging 설정이 안되어 있다. 99999 일이 암호최대변경주기인데
숫자가 너무 커서 password aging 설정이 안되어 있음.

password aging 설정은 chage 명령어로 하며 대화식 설정과 비대화식 설정이 있다.

1. 대화식 설정
ex)
[root /etc]# chage user100
Changing the aging information for user100
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: 3 ; 암호를 변경할수 없는 주기(일수)
Maximum Password Age [99999]: 30 ; 암호를 변경해야 하는 기간
Last Password Change (YYYY-MM-DD) [2015-12-08]: ; 최근 암호변경한 날짜
Password Expiration Warning [7]: ;암호만료전 경고일수
Password Inactive [-1]: 10 ; 암호만료후 inactive 기간
Account Expiration Date (YYYY-MM-DD) [1969-12-31]: 2016-12-31 ; 계정만료일

[root /etc]# grep -w user100 /etc/shadow
user100:!!:16777:3:30:7:10:17166:
[root /etc]#

2. 비대화식 설정 - chage 명령의 옵션을 이용하여 설정.
[root /etc]# chage --help
Usage: chage [options] [LOGIN]

옵션:
-d, --lastday <최근날짜> 최근 열쇠글을 변경한 날짜를 <최근날짜>로 합니다.
-E, --expiredate <만료날짜> 계정 만료날짜를 <만료날짜>로 합니다.
-h, --help 이 도움말을 표시하고 끝냅니다.
-I, --inactive <비활성화기간> 만료된 후 비활성화 기간을
<비활성화기간>으로 합니다
-l, --list 계정의 사용기한 정보를 표시합니다.
-m, --mindays <최소날수> 열쇠글을 바꾸기 전의 최소 날 수를 <최소날수>로
합니다.
-M, --maxdays <최대날수> 열쇠글을 바꾸기 전의 최대 날 수를 <최대날수>로
합니다.
-W, --warndays <경고날수> 만료 경고 기간을 <경고날수>으로 합니다.

ex)
/root# useradd user200
/root# chage -M 30 -W 5 -I 10 -E 2015-12-31 user200
/root# grep -w user200 /etc/shadow
user200:!!:16814:0:30:5:10:16800:
/root#

finger 명령어가 설치되어 있는 경우에는 아래처럼 계정정보를 볼수 있다.
/root# finger user200
Login: user200 Name:
Directory: /home/user200 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
/root#

[root@river root]# chage -l user1
/root# chage -l user1
Last password change : Jul 06, 2014
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
/root#

/root# chage -l user200
Last password change : Jan 14, 2016
Password expires : Feb 13, 2016
Password inactive : Feb 23, 2016
Account expires : Dec 31, 2015
Minimum number of days between password change : 0
Maximum number of days between password change : 30
Number of days of warning before password expires : 5
/root#
--------------------------------------------------------------------------------
group 파일

[root /etc]# head -n 2 group ; tail -n 2 group
root:x:0:root,xuser5
bin:x:1:root,bin,daemon
zuser10:x:521:
zuser20:x:522:

=> 각 필드(항목)이 의미하는 바는 아래와 같다.
root : group 이름
x : 패스워드 필드를 뜻한다.
0 : root 그룹의 식별자
root,xuser5 : root 그룹에 속해있는 사용자. 그룹에 속해있는 사용자가 하나이상일 경우에는
사용자사이를 콤마로 구분

그룹 추가 및 삭제, 변경
ex)
[root@river root]# groupadd
usage: groupadd [-g gid [-o]] [-r] [-f] group
ex)
groupadd group1 : /etc/group 파일 맨아래에 group1 이 추가된다.

그룹정보 변경
[root /etc]# groupmod
Usage: groupmod [options] GROUP
ex) groupmod -n group10 group1 : group1을 group10으로 group 이름 변경

그룹정보 삭제
[root /etc]# groupdel
사용법: groupdel 그룹

ex) groupdel group1
*. 주의 - 사용자가 주그룹으로 소속되어 있는 그룹은 삭제되지 않는다.
모든 사용자는 반드시 한개의 주그룹에 속해야 하기때문이다.

ex)
[root /etc]# groupadd groupA
[root /etc]# usermod -g groupA xuser1
[root /etc]# groupdel groupA
--> groupdel: 사용자의 주요 그룹은 지울 수 없습니다.

사용자 계정 추가 및 수정시 그룹관련 옵션
ex)
[root /etc]# useradd xuser2 : 계정을 그룹옵션없이 디폴트로 만들면
[root /etc]# tail -1 group group 파일에 생성계정과 똑 같은 그룹이 만들어지고
xuser2:x:529: 사용자는 그 그룹에 속하게 된다.
[root /etc]# tail -1 passwd
xuser2:x:520:529::/home/xuser2:/bin/bash
[root /etc]# groups xuser2
xuser2 : xuser2
[root /etc]#

ex2)
[root /etc]# useradd -g groupA -G groupB,groupC xuser3
[root /etc]# groups xuser3
xuser3 : groupA groupB groupC

ex3)
[root /etc]# useradd -G groupC xuser4
[root /etc]# groups xuser4
xuser4 : xuser4 groupC
[root /etc]#
==> 보조그룹옵션만 쓰고 계정을 만들면 위에 결과처럼
주그룹은 자신의 계정명과 같은 그룹에 속하게 된다.
--------------------------------------------------------------------------------
/root# useradd -D ; useradd 명령의 default 옵션 중에서 skel 의 의미.
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

* SKEL 은 계정 생성시 계정 홈디렉토리로 자동으로 복사되는 파일이 있는 디렉토리
/etc/skel 에 있는 파일은 대부분 계정 환경설정과 관련되어 있다.
아래처럼 계정을 생성후 계정 홈디렉토리를 확인해보면 skel 에 있는 파일이 계정디렉토리로
자동을 복사되어있는 것을 볼수 있다.

/root# useradd user300
/root# ls -a ~user300
. .. .bash_logout .bash_profile .bashrc .emacs .gnome2 .mozilla
/root# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc .emacs .gnome2 .mozilla
/root#
--------------------------------------------------------------------------------------------
기타 계정 설정 파일
/etc/login.defs ; useradd 및 passwd 명령어 사용시 참조되는 파일, password aging 정보와
암호최소길이, 홈디렉토리 자동 생성여부 등이 설정되어 있다.
/etc/default/useradd ; useradd 의 default 설정이 있는 파일, useradd -D 는 여기에
저장되어 있는 정보를 출력해준다.
----------------------------------------------------------------------------------------------
su / sudo
일반 사용자에서 root 권한 얻는 방법

1. su(substitute user, switch user)
$ su 계정 : 바뀌는 계정의 일반셀(비 login shell) 로 shell 사용
=> 바뀌는 계정의 환경변수를 제대로 사용못함
$ su - 계정 : 바뀌는 계정의 login shell 사용
=> 바뀌는 계정의 환경변수를 사용한다.
$ su -c '명령어' root => 명령어를 root 권한으로 실행.
* su 명령어는 /var/log/secure 파일에 기록된다.

login shell : login 할때(bash shell 기준) 자동으로 실행되는 shell
login 할때 아래의 네개의 파일이 차례대로 실행된다.
/etc/profile -> $HOME/.bash_profile -> $HOME/.bashrc
-> /etc/bashrc

비login shell: bash 엔터
아래의 두개의 파일이 자동으로 실행된다.
$HOME/.bashrc
-> /etc/bashrc

*. 파일내용
/etc/profile / $HOME/.bash_profile : 환경변수가 저장

2. sudo는 아래 site 참고
https://wiki.debian.org/sudo

* sudo 명령어 사용 기록은 /var/log/secure 파일에 기록된다.

------------------------------------------------------------------------------------------

계정 생성 실습 예제.
id:cuser100
pw:mypass

homedirectory : /usr/local/cuser100
shell: /bin/csh
계정만료일: 올해말까지
comment: son hungmin
----------------------------
solution :
useradd -d /usr/loca/cuser100 -s /bin/csh -e 2019-12-31 -c "son hungmin" cuser100
passwd cuser100

2. cuser100 암호정책(확인방법:chage -l 계정)
50일에 적어도 한번씩은 암호를 변경하게설정
암호가 만료되면 20일동안 유예기간부여
경고일수: 암호만료되기 10일전부터 경고표시
---------------------------
solution
chage -M 50 -I 20 -W 10 cuser100 (* 옵션은 chage --help 로 확인후 참고)

3. cuser100 의 계정만료일을 무기한 변경
로그인shell : /bin/bash 변경
solution
usermod -e '' -s /bin/bash cuser100

댓글목록

등록된 댓글이 없습니다.


접속자집계

오늘
105
어제
66
최대
611
전체
453,386
개인정보취급방침 서비스이용약관 twoseven.kr All rights reserved.
상단으로