[LINUX] 사용자 관리
사용자 계정
- 리눅스는 다중 사용자를 지원하는 운영체제
- 사용자 계정이 있어야 시스템을 사용할 수 있음
- ‘사용자명’ 또는 ‘로그인 아이디’라고도 함
- 사용자 계정은 유일한 UID를 가짐
- 사용자 계정별로 접근 권한을 통제할 수 있음
- 일반 사용자 계정 외에 root 계정(UID=0), 시스템 계정도 있음
id username
명령은 사용자의 UID와 GID 정보를 출력함
su 명령
사용자 전환
su [-[l]] [username]
- ex)
su -l jjpark
또는su - jjpark
또는su --login jjpark
: 사용자 로그인 셸을 시작 - 옵션 없이
su jjpark
를 실행하면 단순히 사용자만 바꾸며, 사용자 환경과 작업 디렉터리가 유지됨 - username 없이
su
또는su -l
를 실행하면 root 사용자로 전환
- ex)
- 사용자 암호를 알아야 전환할 수 있으며, root 사용자로 작업 중에 일반 계정으로 전환하는 경우는 암호 입력이 필요 없다.
root 계정으로 명령 실행
- 일회성으로 1개의 셸 명령만 root 계정으로 실행
- root 계정의 암호 입력 필요
su -c 'command'
- 명령 부분을 따옴표로 묶어야 함
- ex)
su -c 'ls -l /root/*'
sudo 명령
- 관리자 권한으로 명령을 실행
- 특정 사용자나 그룹 별로 세세한 권한을 부여할 수 있음
- 현재 사용자 암호만 필요하며 root 계정의 암호는 입력하지 않음
- 단, 관리자가 etc/sudoers 파일에 권한을 설정해야 함
sudo [-u username] command
-u
옵션을 사용하면 특정 사용자 권한으로 명령을 실행하고, 사용하지 않으면 root 권한으로 실행su -c
와 달리 명령 부분에 따옴표를 붙이지 않는다.sudo -l
은 자신에게 허용된 sudo 명령을 확인할 수 있음
/etc/sudoers 파일
- root 사용자가
visudo
명령을 사용하여 편집 가능 - 기본 문법은
user MACHINE=COMMANDS
(사용자 허용된호스트=허용된명령
) 형태
jjpark ALL=/usr/sbin/useradd, /usr/sbin/usermod
: 사용자 jjpark이 모든 호스트에서 sudo 명령을 사용하여 root 사용자 자격으로 useradd와 usermod 명령을 실행할 수 있도록 허용User_Alias ADMINS = user1, user2, kdhong
: user1, user2, kdhong을 ADMINS로 지정ADMINS ALL= NOPASSWD:ALL
: ADMINS에 속한 사용자가 sudo 명령을 사용하여 root 사용자 자격으로 모든 호스트에서 비밀번호를 입력하지 않고도 모든 명령을 실행할 수 있도록 권한을 부여%users ALL=(ALL) NOPASSWD:ALL
: 그룹의 구성원이 모든 호스트에서 특정 사용자가 되어 비밀번호를 입력하지 않고 모든 명령을 실행할 수 있음
사용자 계정 만들기
useradd 명령
- 사용자를 추가하거나 사용자 환경설정의 기본값을 변경하는 관리자 명령
useradd [options] [username]
- 사용자를 추가한 후
passwd [username]
명령으로 초기 비밀번호를 설정해야 한다.
옵션 | 설명 |
---|---|
-c comment | 계정에 대한 설명 |
-d home_dir | 계정의 홈 디렉터리. 기본값은 /home/username이다. |
-D [options] | 계정을 생성할 때 사용되는 홈 디렉터리, 주 그룹, 만료일, 기본 셸 등에 관한 기본 설정 값을 보여줌. 옵션으로 -b, -e, -g, -s 등을 사용하면 설정을 변경할 수 있다. |
-b default_home | 계정의 홈 디렉터리가 위치할 기본 디렉터리. 기본값은 /home이다. |
-e expire_date | 계정의 만료일. 기본값은 /etc/default/useradd 파일의 EXPIRE 변수값이며 보통 무기한(빈 문자열)이다. |
-g group | 계정이 속할 주 그룹을 지정하며 그룹은 /etc/group 파일에 이미 존재해야 함. 옵션을 사용하지 않으면 사용자 계정 및 UID와 같은 값을 가지는 그룹 계정과 GID가 만들어짐 |
-G group_list | 계정이 속할 부 그룹을 지정하며 여러 개를 지정하려면 콤마로 구분 |
-s shell | 사용자의 기본 셸. ex) -s /bin/bash |
-u user_id | 사용자의 UID를 수동으로 설정 |
사용자 계정 생성 절차
- /etc/login.defs 파일과 /etc/default/useradd 파일을 읽어서 사용자 계정 생성과 관련된 기본값을 확인
- useradd 명령어에서 주어진 옵션들을 검사하여 기본값을 대체할 것이지 확인
- /etc/passwd 파일과 /etc/shadow 파일에 새로운 사용자 계정에 해당하는 항목을 생성
- /etc/group 파일에 새로운 그룹에 해당하는 항목을 추가
- /home/ 디렉터리에 사용자 계정의 홈 디렉터리 /home/username을 생성
- /etc/skel/ 디렉터리에 있는 파일을 사용자 계정의 홈 디렉터리에 복사
/etc/login.defs 파일
- 사용자 계정을 생성할 때 필요한 기본값을 정의한 파일
키워드 | 값 |
---|---|
MAIL_DIR | 메일 스풀 디렉터리 |
UMASK | 파일 접근권한의 기본값 |
HOME_MODE | 홈 디렉터리의 초기 접근권한 |
PASS_MAX_DAYS | 비밀번호를 변경하지 않고 사용할 수 있는 최대 기간 |
PASS_MIN_DAYS | 비밀번호를 변경 후 바꿀 수 없는 기간 |
PASS_WARN_AGE | 비밀번호 만료일 전에 경고를 보내는 날짜 수 |
UID_MIN과 UID_MAX | UID로 할당되는 유효 범위의 최솟값과 최댓값 |
GID_MIN과 GID_MAX | GID로 할당되는 유효 범위의 최솟값과 최댓값 |
CREATE_HOME | 홈 디렉터리의 자동 생성 여부 |
USERGROUPS_ENAB | 사용자 계정과 같은 이름의 그룹을 자동으로 만들 지 여부. 사용자 삭제 시 그룹도 삭제 (다른 구성원이 없는 경우) |
ENCRYPT_METHOD | 비밀번호 암호화에 사용되는 알고리즘 |
/etc/default/useradd 파일
- 계정을 생성할 때 사용되는 홈 디렉터리, 주 그룹, 만료일, 기본 셸 등에 관한 기본 설정을 정의한 파일
useradd
명령에 -D 옵션과 함께 -b, -e, -g, -s 등을 사용하면 설정을 변경할 수 있다.
키워드 | 값 |
---|---|
GROUP | 사용자 계정의 주 그룹의 GID를 설정 |
HOME | 홈 디렉터리의 생성 위치 |
INACTIVE | 비밀번호 만료 후 비활성화 되기 전까지의 날짜 수. 0이면 즉시, -1이면 사용하지 않음 |
EXPIRE | 사용자 계정의 만료일. 값이 없으면 사용하지 않음 |
SHELL | 사용자의 기본 셸을 설정 |
/etc/passwd 파일
- 사용자 계정에 관한 정보를 가진 텍스트 파일
- 파일을 직접 수정하는 것보다 명령이나 관리자 도구를 사용하는 것이 좋다.
- 라인별로 사용자 계정의 정보가 저장되며 각 라인은 콜론(:)으로 구분되는 7개의 필드를 가짐
- 사용자계정:암호:UID:GID:설명:홈디렉터리:기본셸
- ex) kdhong:x:1000:1000:Kildong Hong:/home/kdhong:/bin/bash
/etc/shadow 파일
- 사용자 계정의 암호 정보와 패스워드 에이징 정보를 가짐
- 각 라인은 콜론(:)으로 구분되는 필드를 가짐
- 사용자계정:암호화된비밀번호:최종비밀번호변경일:…
- ex) kdhong:$6$0:19402:0:99999:7:3:21183:
- kdhong: 사용자계정
- $6$0: 암호화된 비밀번호
- 19402: 최종 비밀번호 변경일
- 0: 비밀번호 변경 후 바꿀 수 없는 기간. 0이면 언제든 수정 가능
- 99999: 비밀번호 변경 후 다시 변경하지 않고 사용할 수 있는 기간. 99999는 계속 사용 가능
- 7: 비밀번호 만료일 전에 경고를 보내는 날짜 수
- 3: 비밀번호 만료 후 로그인이 가능한 날짜 수
- 21183: 사용자 계정의 만료일. 빈 값은 계정이 만료되지 않음
- 마지말 필드: 다른 기능을 위해 예약된 필드
chage 명령
- 사용자의 비밀번호 만료에 관한 정보를 변경하는 관리자 명령
chage [options] username
chage -l username
으로 계정의 패스워드 에이징 정보를 확인
옵션 | 설명 |
---|---|
-I days | 비밀번호 만료 후 비활성화 되기 전까지의 날짜 수. -1이면 사용하지 않음 |
-m days | 비밀번호의 최소 사용 날짜 수(변경 후 바꿀 수 없는 기간). 0이면 즉시 수정 가능 |
-M days | 비밀번호의 최대 사용 날짜 수(다시 변경하지 않고 사용할 수 있는 기간). 99999이면 계속 사용 가능 |
-d date | 비밀번호의 마지막 변경 날짜 |
-E date | 사용자 계정의 만료일. -1이면 사용하지 않음 |
/etc/skel 디렉터리
- 사사용자 계정을 만들 때 기본적으로 /etc/skel 디렉터리에 있는 파일이 사용자의 홈 디렉터리에 자동으로 복사됨
- .bash_profile, .bashrc, .bash_logout 등
사용자 계정 수정
usermod 명령
- 사용자 계정의 정보를 수정하는 관리자 명령
usermod [options] username
- ex)
usermod -g root kdhong
은 주어진 사용자의 주 그룹을 root 그룹으로 변경함
- ex)
옵션 | 설명 |
---|---|
-d home_dir | 사용자 계정의 홈 디렉터리를 변경 |
-m | -d와 함께 사용되어야 하며 기존 홈 디렉터리의 내용을 새 디렉터리로 복사함 |
-l login_name | 사용자 계정의 이름을 변경 |
-u user_id | 사용자 계정의 UID를 변경 |
-g group | 사용자 계정의 주 그룹을 변경 |
-G group_list | 사용자 계정의 부 그룹을 변경 |
-L | 사용자 계정을 잠금 |
-U | 사용자 계정을 잠금을 해제 |
userdel 명령
- 사용자 계정을 삭제하는 관리자 명령
- /etc/passwd 파일에서 해당 라인을 삭제함
userdel [options] username
옵션 | 설명 |
---|---|
-r | 홈 디렉터리와 파일을 함께 삭제하고 메일 스풀도 삭제함 |
-f | 로그인 중이거나 다른 사용자가 해당 홈 디렉터리를 사용 중이어도 삭제함. 계정과 같은 이름의 그룹, 메일 스풀도 삭제함 |
삭제 시 고려사항
- 홈 디렉터리도 삭제할 것인가?
- 계정을 삭제하지 말고 잠금 할 것인가?
usermod -L username
- 홈 디렉터리 바깥에 삭제될 계정이 소유하고 있는 파일이 있는가?
- 삭제 전:
find / -user username -ls
명령으로 확인 - 삭제 후:
find / -uid UID -ls
또는find / -nouser -ls
명령으로 확인
- 삭제 전:
그룹 계정과 관리
- 그룹: 사용자의 계정들을 하나로 모아서 하나의 집합을 이루는 개념
- 그룹의 구성원은 특정 파일 또는 디렉터리에 대해 그룹에 부여된 권한을 가짐
- 일반 사용자는 bin, mall, sys 등의 시스템 그룹 계정에는 포함될 수 없음
- 사용자 계정을 만들 때 주 그룹이 지정됨
- 기본적으로 사용자 계정과 같은 이름으로 그룹 계정이 만들어짐
- 그룹별로 암호화된 비밀번호는 /etc/gshadow 파일에 저장됨
id username
또는groups username
명령은 사용자의 그룹을 출력
사용자 계정과 그룹 및 파일의 접근권한
- 사용자가 파일이나 디렉터리를 생성하면 그것의 소유 그룹은 사용자의 주 그룹으로 지정됨
- 사용작는 0개 이상의 부 그룹에 속할 수 있음
- 사용자 스스로 다른 그룹의 구성원이 되게 할 수는 없음
newgrp group
명령을 실행하면 일시적으로 자신의 부 그룹 중 하나를 주 그룹으로 변경할 수 있음- 자신이 속한 그룹이 아니어도 비밀번호를 알고 있다면 주 그룹으로 변경 가능
groupadd 명령
- 그룹을 만드는 관리자 명령
groupadd [options] group
옵션 | 설명 |
---|---|
-g | 수동으로 GID를 지정. 이 옵션을 사용하지 않으면 기본적으로 1000 이상의 값 중에서 사용 중인 GID보다 큰 값 중 가장 작은 값으로 GID를 지정한다. |
-o | -g 옵션과 함께 사용하면 기존 GID로 지정 가능 |
-r | 시스템 그룹 계정을 생성. 기본적으로 1000보다 작은 첫 번째 숫자가 GID로 지정된다. |
-p password | 그룹의 초기 비밀번호 설정 |
/etc/group 파일
- 그룹 계정의 정보를 가진 텍스트 파일
- 라인별로 그룹 계정의 정보가 저장되며 각 라인은 콜론(:)으로 구분되는 4개의 필드를 가짐
- 그룹이름:그룹비밀번호:GID:구성원리스트
- ex) sales:x:1005:kdhong,jjpark
gpasswd 명령
- 그룹의 관리를 위한 그룹 관리자 명령
gpasswd [options] group
- 옵션을 사용하지 않으면 그룹의 비밀번호를 설정
- 옵션을 사용하면 그룹의 구성원을 변경
옵션 | 설명 |
---|---|
-a user | 새로운 사용자를 그룹에 추가 |
-A users | 그룹의 관리자를 지정 |
-d user | 그룹에서 사용자를 삭제 |
-M users | 그룹의 구성원을 설정 |
-r | 그룹의 비밀번호 삭제. 이후 그룹의 구성원만 newgrp 명령 사용 가능 |
groupmod 명령
- 그룹의 정보를 수정하는 관리자 명령
groupmod [options] group
옵션 | 설명 |
---|---|
-g gid | GID를 지정 |
-n group_name | 그룹의 이름 변경 |
-o | -g 옵션과 함께 사용하면 기존 GID로 지정 가능 |
-p password | 그룹의 비밀번호 설정 |
groupdel 명령
- 그룹을 삭제하는 관리자 명령
groupdel group
- 사용자 계정의 주 그룹으로 되어 있는 경우 삭제할 수 없음
This post is licensed under CC BY 4.0 by the author.