일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 리눅스사용자파일
- 리눅스자동로그인
- 웹서버
- root막기
- 인프라구조
- linuxmaster
- 물리서버
- 센토스
- 리눅스재부팅
- 서버
- 리눅스
- it
- CentOS
- 리눅스도움말명령어
- 운영체제
- 리눅스vi
- IT인프라구조
- 병렬처리
- DB서버
- OS
- centos자동로그인
- linux
- 리눅스사용자관리
- 리눅스사용자생성
- 리눅스명령어
- it인프라
- 리눅스마스터
- 센트
- IT인프라기초
- 인프라
- Today
- Total
Thinking Out Loud
[Linux] 리눅스 사용자 생성 및 관리 본문
# 사용자 생성 명령어
useradd 명령어
= $ adduser
- 계정 생성 명령어
- 계정자의 홈 디렉터리 : /home/계정명
- 생성된 계정자 정보가 저장되는 파일 : /etc/passwd, /etc/shadow, /etc/group
- $ useradd [옵션] 계정명
- $ useradd -s bash 계정명 : 기본 셸을 bash로 지정
- $ useradd -d /USER1 계정명 : 홈 디렉터리를 USER1으로 지정
* /etc/passwd, /etc/shadow, /etc/group
/etc/passwd | /etc/shadow | /etc/group |
- 사용자의 정보들이 담겨있는 파일 - 계정, 인증 관리 - 암호화된 패스워드는 /etc/shadow에 저장됨 |
- 사용자의 비밀번호 정보가 담겨있는 파일 - 암호화된 패스워드 설정 정책 기재 - 관리자 계정과 관리자 그룹만 이 파일을 읽을 수 있음 |
- 그룹의 정보가 담겨있는 파일 - 대부분의 리눅스에서는 사용자가 생성되면 그 사용자의 이름과 똑같은 이름의 그룹도 함께 생성 |
사용자 계정명 : 패스워드(x) : UID : GID : comment : 홈 디렉토리 : 실행프로그램(로그인 쉘) | 사용자 계정명 : 암호화된 패스워드 : 마지막 변경 : 패스워드 최소 사용기간 : 패스워드 최대 사용기간 : 경고 : 비활성화 : 만료일 | 그룹명 : 패스워드(x) : GID : members |
ex) root : x : 0 : 0 : root : /root : /bin/bash |
ex) root : x : 0 : audio : x : 29 : pulse |
|
< 각 필드의 의미 (콜론(:)으로 구분) > 1. 사용자 계정명 2. 패스워드 - x : "사용자의 패스워드가 /etc/shadow에 암호화되어 저장되어 있다." 3. UID - 사용자의 user id. 관리자 계정(root)의 UID는 0 4. GID - 사용자의 그룹 id. 관리자 그룹(root)의 GID는 0 5. comment - 사용자와 관련한 기타 정보. 일반적으로 사용자의 이름. 보안상 사용 X 6. 홈 디렉토리 7. 실행프로그램(로그인 쉘) - 사용자가 로그인 시 사용할 쉘 - 보통 사용자의 쉘 = bash (성능 우수) - 로그인이 불필요한 계정의 쉘 (사용자가 아닌 어플리케이션일 경우) = /usr/sbin/nologin, /bin/false, /sbin/nologin 등 |
< 각 필드의 의미 (콜론(:)으로 구분) > 1. 사용자 계정명 2. 암호화된 패스워드 3. 마지막 변경 - 1970년 1월 1일 기준으로 일수 표시 4. 패스워드 최소 사용기간 - 패스워드를 변경한 이후 최소 이 정도의 기간은 써야한다는 것을 의미. 이 일수가 지나기 전에 암호 변경 불가 5. 패스워드 최대 사용기간 - 마지막 패스워드 변경 이후 만료 일수. 패스워드를 변경하지 않으면 공격자가 패스워드를 깰 수도 있으므로 90일 권장 6. 경고 - 패드워드 만료 이전에 경고할 경고 일수 7. 비활성화 - 패스워드가 만료된 이후에 계정이 잠기기 전까지 비활성 일수(date). 해당 비활성 기간 동안에 패스워드를 변경해야 계정이 잠기지 않음 8. 만료일 - 계정 만료일. 1970년 1월 1일 기준으로 일수 표시 |
< 각 필드의 의미 (콜론(:)으로 구분) > 1. 그룹명 2. 패스워드 - x : "사용자의 패스워드가 /etc/gshadow에 암호화되어 저장되어 있다." 3. GID (그룹 ID) - 그룹명을 대신하는 정수형 숫자 4. members - 소속된 사용자 계정들 |
passwd 명령어
- 생성된 계정자의 패스워드를 입력 및 변경하는 명령어
- 생성된 계정자의 패스워드가 기록되는 파일 : /etc/shadow
- $ passwd [옵션] 계정명
- $ passwd -S 계정명 : 계정 상태(Status) 표시 (P : 정상, NP : 패스워드 없음, LK : Lock or NP 상태)
- $ passwd -d 계정명 : 계정의 패스워드 삭제 (delete)
- $ passwd -l 계정명 : 계정을 lock 상태로 변경 (lock)
- $ passwd -u 계정명 : 계정의 lock 상태 해제 (unlock)
su 명령어
- switch user
- 현재의 사용자 계정에서 로그아웃하지 않고 다른 사용자 계정으로 로그인하여 해당 사용자의 권한을 획득하는 명령어
- $ su [옵션] [사용자] [셸변수]
- $ su - root : root의 환경변수를 적용하여 로그인
(적용하지 않으면 pwd의 결과가 여전히 전 계정자의 홈 디렉터리로 뜸. 즉, 위치가 변하지 않고 계정자만 바뀌는 상황이 됨)
- $ su -s bash root : 지정된 셸(bash)로 로그인
- $ su -c root : 셸을 실행하지 않고 주어진 명령어 수행
# 사용자 관련 파일
/etc/default/useradd
- 명령어 useradd로 사용자 계정을 추가할 때 사용되는 정보를 읽어오는 파일
![]() |
- GROUP : 계정이 기본적으로 소속될 그룹의 GID - HOME : 계정의 홈 디렉터리 위치 - INACTIVE : 계정의 패스워드 사용기간 만료 후 계정이 사용 불가능해지는 날 지정 (0: 바로 사용불가, -1: 이 기능을 사용 X) - EXPIRE : 계정의 패스워드 만료일 지정 (없는 경우가 많음) - SHELL : 계정의 기본 셸 지정 - SKEL : 계정 사용자의 홈 디렉터리에 복사될 초기 환경설정 파일들이 저장된 디렉터리 지정 (즉, 계정이 생성되면 /etc/skel 디렉터리에 있는 초기 환경설정 파일들이 홈 디렉터리로 복사됨) - CREATE_MAIL_SPOOL : 계정의 메일 파일을 저장할지 여부 지정 (yes, no) |
/etc/passwd
- 계정자의 정보를 가지고 있는 파일
- 리눅스에 로그인할 때 사용됨
(위의 표 참고)
/etc/shadow
- 계정자의 패스워드 정보가 암호화되어 있는 파일
- 암호화 패스워드 및 계정의 유효기간 등을 기록하고 있는 파일
(위의 표 참고)
- $ tail -l /etc/shadow
/etc/login.defs
- 사용자 계정 설정과 관련된 기본값을 정의한 파일
- 새로운 계정을 생성할 때 반드시 참조하는 파일
- MAIL_DIR, PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_MIN_LEN, PASS_WARN_AGE, UID_MIN, UID_MAX, GID_MIN, GID_MAX, CREATE_HOME 등 포함
# 사용자 계정 관리
usermod 명령어
- 디렉터리 /home 에 위치한 사용자들의 정보를 변경하는 명령어
- 사용자의 홈 디렉터리 변경, 그룹 변경, 유효기간 등 변경
- $ usermod [옵션] 계정명
* usermod 옵션
옵션 | 설명 | 예시 |
-d | - 사용자의 홈 디렉토리 변경 - 변경할 디렉토리는 미리 생성되어야함 - -m 과 같이 사용하면 사용하던 홈 디렉토리의 파일과 디렉토리도 같이 옮겨주므로 이 경우에는 디렉토리를 생성하지 않아도 됨 |
$ usermod -d /home/user1 user2 : user2의 새로운 홈디렉토리로 /home/user1 지정 |
-m | - 사용자의 홈 디렉토리 변경 시 기존에 사용하던 파일 및 디렉토리를 옮겨주는 옵션. -d와 함께 쓰임 | |
-g | - 사용자의 그룹 변경 | $ usermod -g 1004 user1 : user1 계정의 GID 값을 1004로 변경 |
-s | - 사용자의 셸 변경 | $ usermod -s bash user2 : user2의 셸을 bash로 설정 |
-u | - 사용자의 UID 값 변경 | $ usermod -u 1004 user1 : user1 계정의 UID 값을 1004로 변경 |
-e | - 계정만기일 변경 - YYYY-MM-DD 또는 MM/DD/YY 형태로 지정 |
$ usermod -e 2022-02-19 user1 : user1 계정에 만기일 변경 |
-f | - 패스워드 만기일이 지난 후 패스워드에 Lock을 설정할 유예기간 지정 | $ usermod -f 3 user1 : user1 계정의 유효일 3일로 설정 |
-c | - 사용자의 간단한 정보를 입력 및 변경 | $ usermod -c 주석 user1 : user1의 Comment를 '주석'으로 변경 |
-G | - 추가로 다른 그룹에 속하게 할 때 | $ usermod -G 1004 user2 : GID 1004를 갖는 그룹에 user2 계정 추가 (user2의 보조그룹으로 GID 1004 지정) |
-a | - -G 옵션과 같이 사용하는 옵션 - 기존의 2차 그룹 이외에 추가로 2차 그룹을 지정할 때 사용 |
|
-p | - /etc/shadow의 2번째 필드인 암호화된 패스워드 값을 변경할 때 사용 - 이 옵션을 사용할 때는 암호화된 값으로 값을 지정해야함 |
|
-l | - 사용자의 아이디 변경 | $ usermod -l user3 user2 : user2의 계정명(아이디)을 user3으로 변경 |
-L | - 사용자의 패스워드에 LOCK을 걸어 로그인을 막음 | |
-U | - 사용자의 패스워드에 걸린 LOCK을 품 |
userdel 명령어
- 기존 계정 정보를 삭제하는 명령어
- 사용자의 홈 디렉토리 변경, 그룹 변경, 유효기간 등 변경
- 옵션 없이 userdel 을 사용하면 /etc/passwd, /etc/shadow, /etc/group 에서 해당 계정자의 정보가 삭제됨
- $ userdel [옵션] 계정명
- $ userdel -r 계정명 : 계정의 메일 파일과 홈 디렉터리 내용 모두 삭제
- $ userdel -f 계정명 : 삭제 중에 나는 에러를 무시하고 강제로 삭제
chage 명령어
- 패스워드의 만료 정보를 변경하는 명령어
- 시스템에게 로그인한 사용자가 패스워드를 변경해야 하는지 알려줌
- 시스템 관리 명령어 → root 권한을 가진 사용자만 사용 가능
- $ chage [옵션] 계정명
* chage 옵션
옵션 | 설명 | 문법 | 예시 |
-l (소문자 L) |
- 지정한 계정의 패스워드 만기 정보를 보여줌 | $ chage -l 계정명 | $ sudo chage -l user2![]() |
-d | - 패스워드의 마지막 변경일 수정 (Last password change) |
$ chage -d 날짜 계정명 | $ sudo chage -d '2022-02-18' user2 |
-E | - 지정한 계정의 만기일 지정 (계정의 패스워드 만기일이 아닌 계정 자체의 만기일) (Account expires) |
$ chage -E 만기일 계정명 | $ sudo chage -E '2022-02-19' user2 |
-m | - 지정한 계정의 패스워드 변경일로부터 최소 며칠이 경과해야 다른 패스워드로 변경할 수 있는지 지정 (Minimum number of days between password change) |
$ chage -m 날짜수 계정명 | $ sudo chage -m 5 user2 |
-M | - 지정한 계정의 패스워드를 변경 없이 사용할 수 있는 최대 일수 지정 (Maximum number of days between password change) |
$ chage -M 날짜수 계정명 | $ sudo chage -M 180 user2 |
-I (대문자 i) |
- 패스워드 만료 시, 비활성화 상태로 전환되기까지의 유예기간 지정 (Password inactive) |
$ chage -I 날짜수 계정명 | $ sudo chage -I user2 |
-W | - 패스워드 만료 며칠 전부터 사용자에게 경고 메시지를 보낼지 설정 (Number of days of warning before password expires) |
$ chage -W 날짜수 계정명 | $ sudo chage -W 10 user2 |
# 그룹 관련 파일
/etc/group
- 사용자 그룹에 대해 정의되어 있는 파일
- 모든 계정은 한 개 이상의 그룹에 포함되어 있다.
(위의 표 참고)
- $ vi /etc/group
/etc/gshadow
- 그룹의 암호를 MD5 로 하여 저장하며, 그룹의 소유주, 구성원 설정이 가능
- $ cat /etc/gshadow | grep user2
→ user2:!:: (그룹명 : 그룹암호(!=부여x, *=부여o) : 그룹소유주 : 그룹구성원(콤마로 구분)
- $ cat /etc/gshadow | grep root
→ root:*::
# 그룹 관리
groupadd 명령어
- 새로운 그룹을 생성하는 명령어
- $ groupadd [옵션] 그룹명
- ex) $ groupadd -d 1004 user3
: GID 1004인 user3 그룹 생성
groupdel 명령어
- 기존의 그룹을 삭제하는 명령어
- 그룹 안에 소속되어 있는 계정명이 있을 경우 해당 그룹은 삭제되지 않는다.
groupmod 명령어
- 그룹의 설정을 변경하는 명령어
- $ groupmod [옵션] 그룹명
- ex) $ groupmod -g 1004 testgroup
: testgroup의 GID를 1004로 변경
- ex) $ groupmod -n testGroup testgroup
: testgroup → testGroup 으로 그룹명 변경
참고 :
https://reakwon.tistory.com/137
https://nearhome.tistory.com/49
'Linux > Linux Master' 카테고리의 다른 글
[Linux] 리눅스 명령어 개요 및 도움말 (0) | 2022.02.18 |
---|---|
[Linux] 부트매니저 (부트로더/런레벨/로그인&로그아웃) (0) | 2021.11.01 |
[Linux] 파티션 (0) | 2021.11.01 |
[Linux] 리눅스 역사 & 라이선스 (0) | 2021.11.01 |
[Linux] 리눅스 배포판 (0) | 2021.10.29 |