Total
Search
1. 사용자 계정
1.1. 사용자 관리
•
사용자 계정이 있어야 시스템을 사용할 수 있음
◦
리눅스는 다중 사용자를 지원하는 운영체제
◦
사용자 계정은 유일한 UID를 가짐
•
관리자 입장에서 사용자 계정 별로 접근 권한을 통제할 수 있음
◦
일반 사용자 계정은 자신의 홈 디렉토리를 제외하면 제한된 권한을 가짐
◦
일반 사용자 계정 외에 root 계정 (UID=0), 시스템 계정도 있음
1.2. su 명령
•
su [[-l]] [username]
◦
사용자를 전환시키는 명령 (su = switch user)
◦
root 사용자가 아니라면 지정된 사용자의 암호를 알아야 실행 가능
◦
su -l jjpark su - jjpark su -login jjpark
▪
지정된 사용자의 로그인 셸을 시작
◦
su jjpark
▪
단순히 사용자만 바꿈. 사용자 환경과 작업 디렉토리는 유지됨
◦
su 또는 su -l
▪
root 사용자로 전환함
•
su -c ‘command’
◦
1개의 셸 명령을 root 계정으로 실행하는 명령
◦
root 암호를 알아야함
◦
여러 단어로 되어있다면 명령 부분을 따옴표로 묶어야함
$ su -c ‘ls -l /root/*’
암호:
합계 8
-rw-------. 1 root root 882 2월 14 2023 anaconda-ks.cfg
-rw-------. 1 root root 223 7월 27 15:58 dead.letter
Bash
복사
1.3. sudo 명령
•
root 또는 다른 사용자가 되어 명령을 실행하기 위한 명령 (sudo = superuser do)
◦
특정 사용자나 그룹별로 세세한 권한을 부여할 수 있음
◦
본인의 암호만 필요하며, root 계정의 암호를 요구하지 않음
◦
단, 관리자가 /etc/sudoers 파일에서 누가, 어디서, 어떤명령을 수행할 수 있는지, 즉 권한을 설정해 두어야 함
•
sudo [-u -username] command
◦
현재 셸에서 수행되므로 명령어 부분에 따옴표가 필요 없음
◦
-u 옵션을 사용하면 root 사용자가 아닌 특정 사용자로 수행함
◦
sudo -l 은 자신에게 sudo를 통해 허용된 명령을 확인할 수 있음
$ sudo -u jjpark touch ~jjpark/abc
Bash
복사
1.4. /etc/sudoers 파일
•
root 사용자가 visudo를 사용하여 편집함
◦
문법 오류를 검사하고 안전하게 편집할 수 있음
•
기본 문법은 user MACHINE = COMMANDS 의 형태
jjpark ALL=/usr/sbin/useradd, /usr/sbin/usermod
User_Alias ADMINS = user1, user2, kdhong
ADMINS ALL= NOPASSWD:ALL
%users ALL=(ALL) NOPASSWD:ALL
Bash
복사
2. 사용자 계정 만들기
2.1. useradd 명령
•
사용자 계정을 만드는 관리자 명령
◦
useradd [options] username
▪
useradd -c "Jinju Park" username
•
-c 옵션은 계정의 설명 부분
▪
passwd [username] 명령으로 비밀번호 설정 가능
◦
useradd -D [options]
▪
계정을 생성할때 사용되는 홈 디렉토리, 주 그룹, 만료일, 기본 셸 등에 관한 기본 설정을 보여줌
▪
다른 옵션을 함께 사용하여 기본 설정 변경 가능
•
주요 옵션
옵션 | 설명 |
-d home_dir | 새로운 계정의 홈 디렉터리를 설정함.
이 옵션을 사용하지 않을 때 기본 홈 디렉터리는 /home/username |
-D [options] | -D만 사용하면 사용자 계정 생성 시 사용되는 현재의 환경 설정값을 보여 줌.
옵션에 -b, -e, -g, -s 등을 사용하면 홈 디렉터리의 위치, 만료 날짜, 주 그룹, 기본 셸 등에 관한 기본 설정을 변경할 수 있음 |
-e expire_date | 계정의 만료일을 설정하며, 예를 들어 -e 2024-12-31과 같이 작성함. 기본값은 /etc/default/useradd 파일에서 EXPIRE 변수의 값은 보통 무기한(빈 문자열)임 |
-g group | 계정이 속할 주 그룹을 지정하며 그룹은 /etc/group 파일에 이미 존재해야 함.
기본적으로 사용자 계정 및 UID와 같은 값을 가지는 그룹 계정과 GID가 만들어짐 |
-G group_list | 계정이 속한 부 그룹을 지정하며 여러 개를 지정하려면 콤마로 구분하여 설정함 |
-s shell | 사용자의 기본 셸을 설정하며, 예를 들어 -s /bin/bash와 같이 작성함 |
-u user_id | 사용자의 UID를 수동으로 설정함. 기본적으로 다음으로 가용한 UID가 자동으로 지정됨 |
2.2. 사용자 계정의 생성 절차
1.
/etc/login.defs 파일과 /etc/default/useradd 파일을 읽어서 사용자 계정 생성과 관련된 기본값을 확인
2.
useradd 명령어에서 주어진 옵션을 검사하여 기본값을 대체할 것인지 확인
3.
/etc/passwd 파일과 /etc/shadow 파일에 새로운 사용자 계정에 해당하는 항목을 생성
4.
/etc/group 파일에 새로운 그룹에 해당하는 항목을 추가
5.
/home/ 디렉터리에서 사용자 계정의 홈 디렉터리 /home/username을 생성
6.
/etc/skel/ 디렉터리에 있는 파일을 사용자 계정의 홈 디렉터리에 복사
2.3. /etc/passwd 파일
사용자 계정에 관한 정보를 가진 텍스트 파일
•
라인 별로 사용자 계정의 정보가 저장됨
•
계정의 생성이나 수정을 위해 직접 수정하는 것은 좋지 않음
•
각 라인은 콜론(:)으로 구분되는 7개의 필드를 가짐
•
사용자계정:암호:UID:GID:설명:홈디렉터리:기본셸
◦
kdhong:x:1000:1000:Kildong Hong:/home/kdhong:/bin/bash
2.4. /etc/skel 디렉터리
•
사용자 홈 디렉터리에 복사되는 파일들을 가짐
◦
.bash_profile, .bashrc, .bash_logout 등
2.5. /etc/shadow 파일
•
사용자 계정의 암호 정보와 '패스워드 에이징' 정보를 가짐
•
각 라인은 아래와 같은 라인을 가짐
◦
kdhong:$6$w8j<중간생략>:19585:0:100:7:10:19722:
•
필드의 의미
◦
사용자 계정:암호화된비밀번호:최종비밀번호변경일:
◦
0은 비밀번호 변경 후 바꿀 수 없는 기간(minimum password age)
◦
100은 비밀번호 변경 후 다시 변경하지 않고 사용할 수 있는 기간. 최대 기간(maximum password age)은 99999
◦
7은 비밀번호 만료일 전에 경고를 보내는 날짜 수(password warning period)
◦
10은 비밀번호의 만료 후 로그인이 가능한 날짜 수(password inactivity period)
◦
사용자 계정의 만료일(account expiration date)로 빈 값은 계정이 만료되지 않는다는 것
◦
예약 필드
2.6. chage 명령
•
사용자의 비밀번호 만료에 관한 정보를 변경하는 관리자 명령
◦
chage [options] username
◦
chage -l username으로 계정의 패스워드 에이징 정보를 확인함
•
옵션
◦
l days은 비밀번호 만료 후 비활성화 되기 전까지의 날짜 수(-1은 사용하지 않음)
◦
m days와 비밀번호의 최소 사용 날짜 수(0은 즉시 수정 가능)
◦
M days는 최대 사용 날짜 수(99999는 최대 날짜수)
◦
d date는 비밀번호의 마지막 변경 날짜를 수정
◦
E date는 사용자 계정의 만료일을 지정(-1은 사용하지 않음)
# chage -l kdhong
마지막으로 암호를 바꾼 날 : 8월 16, 2023
암호 만료 : 11월 24, 2023
암호가 비활성화 기간 : 12월 04, 2023
계정 만료 : 12월 31, 2023
암호를 바꿀 수 있는 최소 날짜 수 : 0
암호를 바꿔야 하는 최대 날짜 수 : 100
암호 만료 예고를 하는 날짜 수 : 7
Shell
복사
2.7. 사용자 계정의 기본 설정
•
사용자 계정을 생성할 때 필요한 기본값을 정의한 파일이 있음
◦
/etc/login.defs 파일
◦
각 라인은 키워드와 값으로 구성됨
▪
UID_MIN과 UID_MAX는 UID를 자동 할당할 때 유효 범위를 지정
▪
USERGROUPS_ENAB은 사용자 계정과 같은 이름의 그룹을 자동으로 만들 지를 지정
MAIL_DIR /var/spool/mail
UMASK 022
HOME_MODE 0700
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
GID_MIN 1000
GID_MAX 60000
CREATE_HOME yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
Bash
복사
•
useradd 명령이 참조하는 기본값을 설정한 파일
◦
/etc/default/useradd 파일
◦
GROUP은 (자동 생성을 안 할 때) 사용자 계정의 주 그룹을 지정
◦
홈 디렉터리의 생성 위치와 셸의 종류를 지정
◦
INACTIVE가 0이면 비밀번호 만료 후 즉시 계정을 비활성화, -1이면 기능을 사용하지 않는 것
◦
EXPIRE 값이 없으면 계정의 만료일이 없는 것
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
Bash
복사
3. 사용자 계정 수정
3.1. usermod 명령
•
사용자 계정의 정보를 수정하는 관리자 명령
◦
usermod [options] username
◦
많은 옵션이 useradd 명령과 유사함
◦
usermod -g root kdhong은 주어진 사용자의 주 그룹을 root 그룹으로 변경함
◦
id username 명령은 주어진 사용자의 uid와 gid 정보를 출력함
•
옵션
옵션 | 설명 |
-d home_dir | 사용자 계정의 홈 디렉터리를 변경 |
-m | -d와 함께 사용되어야 하며 기존 홈 디렉터리의 내용을 새 디렉터리로 복사함 |
-l login_name | 사용자 계정의 이름을 변경 |
-u user_id | 사용자 계정의 UID를 변경 |
-g group | 사용자 계정의 주 그룹을 변경. -G 또는 -aG는 부그룹을 변경함 |
-L | 사용자 계정을 잠금. 실제 /etc/shadow 파일에서 비밀번호 앞에 !를 붙임 |
-U | 사용자 계정의 잠금을 해제 |
3.2. userdel 명령
•
사용자 계정을 삭제하는 관리자 명령
•
/etc/passwd 파일에서 해당 라인을 삭제함
◦
userdel [options] username
•
옵션
◦
-r 은 홈 디렉터리와 파일을 함께 삭제하고 메일 스풀도 삭제함
◦
-f 는 로그인 중이거나 다른 사용자가 사용 중이어도 삭제하며, 같은 이름의 그룹도 삭제함
3.3. 사용자 계정 삭제 시 고려사항
•
홈 디렉터리도 삭제할 것인가
•
계정을 삭제하지 말고 잠금 할 것인가
•
삭제될 계정이 소유하는 파일이 또 있는가
◦
삭제 전에 find / -user username -ls로 확인해야 함
◦
삭제 후라면 find / -uid UID -ls 또는 find / -nouser -ls로 확인함
4. 그룹 계정과 관리
4.1. 그룹 계정
•
사용자의 계정들을 모아서 하나의 집합을 이루는 개념
•
그룹의 구성원은 특정 파일(또는 디렉터리)에 대해 그룹에 부여된 권한을 가짐
•
일반 사용자는 bin, mail, sys 등의 '시스템 그룹 계정'에는 포함될 수 없음
•
사용자 계정을 만들 때 주 그룹(기본 그룹)이 지정됨
◦
기본적으로 사용자 계정과 같은 이름으로 그룹 계정이 만들어짐
•
사용자 계정은 0개 이상의 부 그룹에 속할 수 있음
4.2. groupadd 명령
•
그룹 계정을 만드는 관리자 명령
◦
그룹도 계정 이름과 GID를 가짐
◦
groupadd [options] group
•
옵션
◦
-g gid는 수동으로 GID를 지정
◦
-r 은 시스템 그룹 계정을 생성
◦
-o는 -g 옵션과 함께 사용할 때 기존 그룹의 GID를 사용하는 것
4.3. /etc/group 파일
•
그룹 계정의 정보를 가진 텍스트 파일
◦
라인마다 그룹 계정의 정보가 저장됨
•
각 라인은 콜론(:)으로 구분되는 4개의 필드를 가짐
◦
그룹이름:그룹비밀번호:GID:구성원_리스트
◦
예시: sales:x:1005:kdhong,jjpark
•
암호화된 비밀번호는 /etc/gshadow에 저장됨
•
사용자 계정의 부 그룹을 추가하는 방법:
◦
usermod -G groups -a username
•
사용자가 자신의 그룹을 확인하는 방법:
◦
id username
◦
groups username
4.4. 사용자 계정과 그룹 및 파일의 접근권한
•
사용자가 파일이나 디렉터리를 생성하면 그것의 소유 그룹은 사용자의 주 그룹으로 지정됨
•
사용자는 0개 이상의 부 그룹에 속할 수 있음
•
사용자가 스스로 다른 그룹의 구성원이 되게 할 수는 없음
◦
관리자라면 gpasswd -a user group로 구성원을 추가할 수 있음
•
newgrp group를 실행하면 일시적으로 자신의 주 그룹을 변경할 수 있음
◦
자신이 속해 있는 그룹 중에서 지정해야 함
◦
그룹 계정의 비밀번호를 알고 있다면 다른 그룹으로도 지정 가능
◦
단순히 newgrp를 실행하면 원래 주 그룹으로 되돌아감
4.5. gpasswd 명령
•
그룹의 관리를 위한 명령
◦
그룹의 관리자가 사용함
◦
gpasswd [options] group
•
옵션
◦
-a user는 구성원 추가, -A users는 그룹의 관리자를 지정
◦
-d user는 구성원 삭제, -M users는 구성원 설정
◦
-r 은 비밀번호 삭제
4.6. groupmod 명령
•
기존 그룹의 정보를 수정하기 위한 명령
◦
그룹의 관리자가 사용함
◦
groupmod [options] group
•
-g gid을 사용하여 GID를, -n name은 그룹 이름을 변경
4.7. groupdel 명령
•
그룹을 삭제하는 관리자 명령
◦
그룹 계정 관련 파일에서 해당 라인을 삭제함
◦
사용자 계정의 주 그룹으로 되어 있는 경우, 삭제할 수 없음
◦
groupdel group