1. 사용자 관리
root 관리
사용자 분류
- root 사용자
- 일반 사용자 : 로그인이 가능한 사용자, 시스템 계정
숫자 값 형태의 UID(User Identity)로 관리. root는 0이 할당되고 0번 사용자를 슈퍼유저로 인식 일반 사용자는 1번부터 부여.
시스템 계정
시스템의 필요에 의해 생성된 계정. vim, daemon, adm, game 등
root 계정 관리
- 다른 슈퍼유저가 존재하는지 점검.
- PAM을 이용하여 root 계정으로 직접 로그인을 막고, su 명령 사용 유도
- TIMEOUT 설정
- sudo 이용
사용자 계정 관리
사용자 생성 명령어
사용자 계정 생성: useradd
[사용법]
$ useradd [option] 사용자계정 이름
옵션
- -p : 암호를 추가(--password)
- -d : 홈 디렉터리 지정(--home-dir)
- -g : 그룹을 지정(--group)
- -G : 추가 그룹 지정(--groups)
- -c : 사용자 설명 설정(--comment)
- -s : 사용자 셸 지정(--shell)
- -D : /etc/default/useradd에 설정된 유저추가와 관련된 기본 사항들을 보여줌, -D 옵션 추고 나머지 옵션들로 추가로 옵션주면 그 옵션의 기본값을 바꿈
- -m : 홈 디렉터리를 생성
- -k : 사용자 생성 시에 제공되는 환경 파일들은 기본적으로 /etc/skel로 지정 되어 있음. 이외의 디렉터리 지정시에 사용.
- -f : 패스워드 만기되고 몇일 뒤에 계정이 영구적으로 불가능하게 할건지
- -e : 계정 만기일. YYYY-MM-DD 형태.(--expiredate)
- -u : UID 값 지정
사용자 정보는 /etc/default/useradd에 있음
사용자 암호 부여: passwd
암호를 지정하지 않으면 로그인 안됨
[사용법]
$ passwd 사용자명
사용자 전환: su
[사용법]
$ su [option] 사용자명
옵션
- -, -l : 실제 로그인한 것처럼 셀 이용시 반드시 이 옵션 사용(--login)
- -c : 명령 일시적 수행(--command)
사용자 관련 파일
useradd 명령을 실행하면
- 기본설정은 /etc/default/useradd
- /etc/skel에 들어있는 파일 및 디렉터리를 사용자에게 제공
- 사용자 정보는 /etc/passwd, /etc/shadow에 기록
- /home/사용자아이디에 홈 디렉터리를 부여받아서 파일을 생성 삭제하고
- /var/spool/email/사용자아이디에 메일 파일을 생성
/etc/passwd
패스워드를 암호화하여 다시 /etc/shadow에서 추가로 관리
[기본구조]
username:password:UID:GID:fullname:home-directory:shell
/etc/shadow
오직 root만 접근할 수 있음.
[기본구조]
username:password:패스워드 바꾼날:패스워드 최소 사용 날 수:패스워드 최대 사용 기간:경고 기간:패스워드 만료뒤 실제 불가능까지의 시간:계정 사용 불가능까지의 날수:남겨둠
사용자의 패스워드를 /etc/passwd에서 관리하려면 pwunconv 명령어를 입력하고, 다시 /etc/shadow에서 관리하려면 pwconv 입력.
pwch 명령어는 /etc/passwd와 /etc/shadow를 점검해줌.
/etc/default/useradd
useradd -D 입력시 확인 가능.
useradd 명령을 이용한 /etc/default/useradd 파일 관리
[사용법]
$ useradd -D option
옵션
- -D : 기본 useradd 출력. 이 옵션 + 아래의 옵션 사용해야 함
- -g : 기본 그룹 지정
- -b : 홈 디렉터리의 상위 디렉터리 지정(--base-dir)
- -f : 패스워드 유효기간 만료 후 얼마나 추가로 더 살릴지
- -e : 계정 만료일 지정
- -s : 기본 셸 지정
/etc/login.defs
메일 디렉터리, 패스워드 관련 설정, UID, GID, 홈디렉터리 생성 여부, 기본 UMASK, 암호화 알고리즘 등이 정의 되어 있음.
사용자 계정 관리 및 삭제
사용자 계정 관리: usermod
사용자의 셸, 홈 디렉터리, 그룹, UID, GID 등을 변경하는 명령어로 사용자 관련하여 대부분의 정보를 변경할 수 있다.(--home)
[사용법]
$ usermod [option] 사용자계정
주요옵션
- -d : 사용자의 홈 디렉터리를 변경한다. -m과 같이 사용하면 사용하던 홈 디렉터리의 파일과 디렉터리도 같이 옮겨주므로 이 경우에는 디렉터리를 생성하지 않아도 된다.(--home)
- -m : 사용자의 홈 디렉터리 변경 시 기존에 사용하던 파일 및 디렉터리를 옮겨주는 옵션으로 -d와 함께 쓰인다.(--move-home)
- -g : 사용자의 그룹을 변경한다.
- -s : 사용자의 셸을 변경한다.(--shell)
- -u : 사용자의 UID 값을 변경한다.
- -e : 계정만기일을 변경한다.
- -f : 패스워드 만기일이 지난 후 패스워드에 Lock을 설정할 유예기간을 지정한다.
- -c : 사용자의 간단한 정보를 입력하거나 변경한다.
- -G : 추가로 다른 그룹에 속하게 할 때 쓰인다.
- -a : -G 옵션과 같이 사용하는 옵션으로 기존의 2차 그룹 이외에 추가로 2차 그룹을 지정할 때 사용한다.(--append)
- -p : /etc/shadow의 2번째 필드인 암호화된 패스워드 값을 변경할 때 쓴다. 이 옵션을 사용할때는 암호화된 값으로 지정해야 한다.(--password)
- -l : 사용자아이디를 변경한다.(--login)
- -L : 사용자의 패스워드에 LOCK을 걸어 로그인을 막는다.(--lock)
사용자 계정 삭제: userdel
[사용법]
$ userdel [option] 사용자 계정
옵션
- -r : 홈 디렉터리 메일 파일까지 다 삭제(--remove)
사용자 패스워드 관리
사용자 패스워드 관리 : passwd
passwd은 기본적으로 패스워드를 부여하거나 패스워드를 변경하는 명령이지만, 계정을 사용하지 못하게 하거나, 패스워드 만기일 및 유효기간 등을 설정할 수 있다.
[사용법]
passwd [option] 사용자계정
주요 옵션
- -S : 사용자에 대한 패스워드 정보를 알 수 있다.(--status)
- -l : 사용자의 패스워드에 잠금(lock)을 걸어 로그인을 막는다.(--lock)
- -u : 사용자에게 설정되어 있는 패스워드 잠금을 푼다.(--unlock)
- -d : 사용자의 패스워드를 제거한다. 패스워드 없이 로그인이 가능하다.
- -n : 패스워드 변경까지의 최소 날짜를 설정한다. 즉, 패스워드 변경 후 최소로 사용해야 되는 날짜수이다.(--minimum)
- -x : 현재 패스워드의 유효기간을 지정한다. 즉, 패스워드 최대 사용 가능한 날짜수이다. (--maximum)
- -w : 패스워드 만료 전 경고 날짜를 지정한다.
- -i : 패스워드 만료된 뒤에 사용자 계정 사용이 실제 로그인이 불가능하게 되기까지의 유예기간을 설정한다.(--inactive)
- -e: 다음 로그인 시에 반드시 패스워드를 변경하도록 할 때 사용한다.(--expire)
사용자 패스워드 관리: chage
사용자의 패스워드에 대한 정보를 출력하고 설정하는 명령
[사용법]
$ chage [option] 사용자계정
옵션
- -l : 정보
- -d : 최근 패스워드 바꾼날 수정(--lastday)
- -m : 암호를 변경할 수 있는 최소의 날짜. 그러니깐 이게 0이면 언제든지 바꿀 수 있음.(--minday)
- -M : 변경 없이 사용 가능 최대 날짜(--maxday)
- -I : 만료 후 잠금까지의 기간(--inactive)
- -E : 계정 만기날
- -W : 변경 요구 경고 날짜 지정
그룹 계정 관리
그룹의 조회
그룹의 목록은 /etc/group에서 확인. 그룹의 패스워드는 별도의 파일인 /etc/gshadow에서 관리.
/etc/group
[기본 구조]
GroupName:Password:GID:Member_List
/etc/gshadow
root만 확인 가능.
[기본 구조]
GroupName:Password:Admin:Member_List
그룹의 패스워드를 /etc/group에서 관리하려면 grpunconv 명령을 실행. grpconv 명령으로 다시 돌아갈 수 있음
그룹 생성: groupadd
root만 사용 가능
[사용법]
$ groupadd [option] 그룹명
옵션
- -g : GID 부여
- -r : 시스템 레벨로 생성(--system)
그룹 변경: groupmod
그룹명, GID 변경
[사용법]
$ groupmod [option] 그룹명
옵션
- -n : 이름 변경(--new-name)
- -g : GID 변경(--gid)
그룹 삭제: groupdel
삭제할 그룹의 사용자가 없어야된다. 2차 그룹으로 속한 사용자는 상관없다.
[사용법]
$ groupdel 그룹명
gpasswd
그룹의 패스워드를 설정, 그룹관리자(해당 그룹에 속하지 않아도 됨)를 지정. 그룹 패스워드가 설정되면, 해당 그룹이 아닌 사용자들이 newgrp 명령으로 그룹 패스워드 입력 후 일시적 1차 그룹 변경 가능
[사용법]
gpasswd [options] group
옵션
- -A : root가 그룹 관리자 지정(--administrators)
- -a : 그룹 관리자가 사용자를 추가
- -d : 그룹 관리자가 사용자 제외시킴
- -r : 패스워드 제거(--delete-password)
- -R : 패스워드 사용 비활성화(--restrict)
- -M : root가 그룹 멤버 지정(--members)
newgrp
사용자가 일시적으로 1차 그룹을 변경시에 사용
[사용법]
$ newgrp 그룹명
관련 명령어
users
시스템에 로그인되있는 사용자의 아이디 출력
who
시스템에 로그인되있는 사용자를 출력
옵션
- -b : 부팅 시간(--boot)
- -d : 죽은 프로세스(--dead)
- -H : 출력되는 정보의 헤더(--heading)
- -l : 시스템 로그인 프로세스
- -p : init 프로세스에의해 활성화된 프로세스(--process)
- -r : 현재의 런 레벨(--runlevel)
- -t : 마지막 시스템 시간 변경 정보
- -T : 사용자의 메시지 상태
- -u : 시스템에 로그인한 사용자 목록
- -m : 표준 입력과 연관된 호스트명과 사용자명(whoami)
- -a : -m 제외 모든 옵션 다 출력
q
whoami
실질적 권한자를 출력
w
시스템에 로그인되있는 사용자, 수행중인 작업 출력
[사용법]
$ w [option] user
옵션
- -h : 헤더 출력 x
- -s : 간략히 출력
logname
사용자의 로그인 계정을 출력
id
아이디에 대한 정보를 출력. UID, GID, 속한 그룹 정보
[사용법]
$ id [option] user
옵션
- -g : 주 그룹 GID만 출력
- -G : 모든 그룹 GID 출력
- -u : 사용자의 UID만 출력
- -n : 숫자값인 UID, GID 대신 이름 출력
groups
사용자가 속한 그룹명 출력
lslogins
시스템 전체 사용자의 정보를 출력
옵션
- -G : 각 사용자의 그룹 정보
- -L : 각 사용자의 마지막 로그인 정보
- -u : 사용자 계정 정보