Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- study
- reivew
- wargame
- 위험관리
- 드림핵
- 취약점진단
- 웹해킹
- DreamHack
- 기록
- 케이쉴드주니어
- 보안
- 자격증
- 공부
- 리눅스
- Linux
- 정리
- Review
- 자격증공부
- 복습
- 리눅스마스터2급
- 보안용어
- IT
- Security
- it자격증
- keyword
- 클라우드
- webhacking
- Shell
- 워게임
- 정보처리기사
Archives
- Today
- Total
IT Memory Note
[K-Shield Jr - 복습] 리눅스 서버 기본 활용 방안 4 본문
사용자 및 권한 관리
사용자 계정의 이해
- 각 사용자의 권한은 일반 사용자 또는 root 사용자 중의 하나로 정의되며, 일반 사용자는 실행할 수 있는 퍼미션을 가진 파일에만 접근할 수 있고, root 사용자는 소유 여부에 관계 없이 모든 파일에 접근할 수 있음
- 리눅스에서 계정은 파일의 설정에 따라 관리
- 리눅스 계정과 관련 파일
- /etc/passwd : 계정명과 관련 정보
- /etc/shadow : 패스워드와 관련 정보
- /etc/group : 계정 그룹과 보조 그룹 계정 정보
사용자 계정 생성
- adduser & useradd 명령어 : /etc/passwd 파일 내에 /home/[사용자명] 디렉터리를 계정 홈으로 가짐
# useradd [생성할_사용자명]
# passwd [생성한_사용자명]
Changing password user [생성한_사용자명]
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# cat /etc/passwd | grep [사용자명]
[사용자명]:x:500:500::/home/[사용자명]:/bin/bash
< adduser 옵션 >
옵션 | 기능 |
-c 설명 | 패스워드 파일에 새로운 사용자 설명을 추가 |
-d 디렉터리 | 새 계정에 대한 디렉터리 위치를 지정 |
-e 유효기간 | 지정된 날짜에 사용자의 계정을 삭제 |
-f 비활성일수 | 패스워드가 인가된 후 계정이 영구히 말소될 때까지의 기간 |
-u UID | 사용자의 ID에 대한 값 |
-s shell | 사용자의 로그인 쉘을 지정 |
-n | 사용자 계정 추가 기본모드를 지정하지 않을 때 |
-G[그룹] | 사용자가 기본 그룹이외의 다른 그룹에 추가하고자 할 때 |
계정 관리
- adduser 명령은 root 사용자만 실행할 수 있으며, useradd [명령어]를 이용하여 계정의 홈 디렉터리 위치, 사용종료일자, 유효일자, 로그인 쉘 등의 세부 설정을 할 수 있음
- adduser : 사용자 계정 생성
- 명령어 형식 : adduser [사용자명]
< adduser 실행 절차 >
- /etc/passwd와 /etc/shadow 사용자 추가
- 사용자명과 동일하게 /etc/group에 추가
- /home/[사용자명] 디렉터리 생성
- /etc/skel 디렉터리 파일 /home/[사용자명] 디렉터리에 복사
- adduser [사용자명] -e 옵션으로 2013년 2월 20일 말소
# 로그인 불가 : 사용자 쉘을 false 또는 nologin으로 변경해주면 로그인을 할 수 없게 됨
# adduser [사용자명] -e 2013-02-20
# passwd [사용자명]
Changing password for user [사용자명].
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# tail /etc/passwd
:
sshd:x:74:74:privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[사용자명]:x:500:500::/home/[사용자명]:/bin/bash
# 사용자 계정 경로로 생성되지 않고 계정 생성
# adduser -M [사용자명2]
# ls -l /home/ | grep [사용자명2]
- adduser -D 옵션을 이용하여 사용자 추가 명령어의 기본 설정 값을 확인
# 사용자의 기본 홈 디렉터리를 /home에서 /user를 기본 경로로 갖도록 함
# adduser -D -b /user
# /bin/bash에서 /bin/tcsh로 쉘 변경
# adduser -D -s /bin/tcsh
- userdel : 사용자 계정 삭제
- 명령어 형식 : userdel [사용자명]
- passwd : 사용자 암호 변경
- etc/passwd 파일
- [사용자명]:x:512:512::/home/[사용자명]:/bin/bash
- [사용자명][패스워드][UID][GID][COM][사용자위치][쉘]
- GID 뒤에 설명(Comment)을 삽입시키려면 -c 옵션을 적고 그 뒤에 설명을 빈칸 없이 연속해서 적어주면 됨
- /etc/shadow 파일
- shadow 파일은 9개 필드로 콜론(:)에 의해 구분
- 사용자명
- 암호화된 패스워드
- 최종 암호 변경일
- 암호 변경 최소일수
- 암호 변경 유예기간
- 암호 변경 경고일수
- 계정 사용 불가 날짜
- 계정 만료일
- 예약
# cat /etc/shadow
root:$sdfSDGSAFSD$ASdgg/A:17746:0:99999:7:::
bin:*:17746:0:99999:7:::
daemon:*:17746:0:99999:7:::
adm:*:17746:0:99999:7:::
lp:*:17746:0:99999:7:::
- /etc/skel 디렉터리
- 해당 디렉터리 안에 들어있는 파일 및 디렉터리를 계정 생성 시 홈 디렉터리에 제공
# ls -al /etc/skel
total 28
drwxr-xr-x. 3 root root 78 Apr 11 2018 .
drwxr-xr-x. 143 root root 12268 Jan 16 16:02 ..
-rw-r--r--. 1 root root 18 Apr 11 2018 .bash_logout
-rw-r--r--. 1 root root 193 Apr 11 2018 .bash_profile
-rw-r--r--. 1 root root 231 Apr 11 2018 .bashrc
drwxr-xr-x. 4 root root 39 Aug 10 2017 .mozilla
- /etc/default/useradd 파일
- 별도의 옵션 없이 'useradd [사용자명]'으로 계정 생성 시에 기본적으로 적용되는 설정이 들어있는 파일
- useradd -D 또는 cat /etc/default/useradd로 확인 가능
# useradd -D or cat /etc/default/useradd
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
- /etc/login.defs 파일
- 해당 파일에서 정의 되어지는 주요 값
- 패스워드 정책 관련 설정 (최소/최대 사용기한, 최소길이 등)
- GID/UID의 최소/최대값, 기본 UMASK 값
- 홈 디렉터리 생성 여부, 패스워드에 적용하는 암호화 알고리즘
# cat /etc/login.defs | egrep -x "^#|^$"
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
- pwconv / pwunconv
- 일반적으로 사용자 암호는 해쉬화 되어 /etc/shadow에 저장되지만 pwunconv 명령어로 /etc/passwd 파일에서 해쉬화된 암호를 볼 수 있음
# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
# pwunconv
# cat /etc/passwd | grep root
root:$t5AGD$aset/asdf3$.:0:0:root:/root:/bin/bash
operator:*:11:0:operator:/root:/sbin/nologin
# pwconv
# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
- group 관리 명령어
- groupadd : 그룹 생성
- 명령어 형식 : groupadd [그룹명]
- groupdel : 그룹 삭제
- 명령어 형식 : groupdel [그룹명]
- groupmod : 그룹 속성 변경
- 명령어 형식 : groupmod [옵션] [그룹명]
퍼미션과 소유권
- 리눅스는 멀티 유저 운영체제이기 때문에 시스템의 자원인 파일을 소유할 수 있는 권리와 접근 권한, 즉 소유권과 퍼미션을 root가 부여하게끔 되어 있음
- 퍼미션(Permission)과 소유권(Ownership)
- 리눅스 시스템에 있는 모든 파일과 디렉터리에서는 그것을 액세스할 수 있는 소유자와 그룹에 대한 소유권(Ownership)을 가짐
- 이러한 파일과 디렉터리에 액세스할 수 있도록 해주는 퍼미션(Permission)으로 접근을 제어할 수 있음
- 소유권은 그 파일과 디렉터리를 생성한 사용자가 가지는데, 보통 계정명으로 표기되거나 어떤 경우에는 UID로 표기됨
- 소유권(Ownership)
- chown 명령어 : 사용자, 그룹의 소유권을 변경하는 명령어
- 명령어 형식 : chown [소유자명][그룹명] [파일/디렉터리명]
# 사용자 소유권 변환
# ls -l
total 4
-rw-r--r-- 1 temp temp 0 Dec 13 17:53 1234.txt
# chown root 1234.txt
# ls -l
total 4
-rw-r--r-- 1 root temp 0 Dec 13 17:53 1234.txt
# 그룹 소유권 변환
# ls -l
total 4
-rw-r--r-- 1 root temp Dec 13 17:53 1234.txt
# chown .root 1234.txt
# ls -l
total 4
-rw-r--r-- 1 root root Dec 13 17:53 1234.txt
- 퍼미션 형식 구조
- 읽기 허용(Read) : 파일의 내용을 읽을 수 있는지 여부를 결정
- 쓰기 허용(Write) : 파일을 쓰거나 지울 수 있는지, 덮어쓸 것인지 결정
- 실행 허용(eXecution) : 실행 파일들에 대해서 실행 권한 부여 여부를 결정
- 퍼미션(Permission) 계산 예제
- 사용자 읽기 쓰기 실행 권한(rwx)
- 그룹 쓰기 실행 권한(r-x)
- 기타 쓰기 실행 권한(r-x)
# ls의 실행 퍼미션은 기본 755
# ls -l /bin/ls
-rwxr-xr-x 1 root root 93560 Sep 28 2006 /bin/ls
# 실행 권한을 750으로 수정
# chmod 750 /bin/ls
# ls -l /bin/ls
-rwxr-x--- 1 root root 93560 Sep 28 2006 /bin/ls
# 일반 계정으로 변경하고 ls 실행
# su temp
$ ls
bash: /bin/ls: Permission denied
- 4자리 절대모드 퍼미션
비트 이름 | 절대 표기 값 | 문자 |
Sticky bit | 1000 | Other 권한에 t |
SetGID | 2000 | Group 권한에 s |
SetUID | 4000 | Owner 권한에 s |
- Sticky bit : 모든 사용자가 쓰고 삭제할 수 있는 디렉터리에 적용
- 리눅스에선 /tmp 디렉터리가 이 비트에 적용
- 이 비트를 적용한 파일은 어떤 사용자라도 읽고 쓸 수 있지만 삭제를 할 수 있는 사람은 이 파일을 생성한 사용자만이 삭제 가능
- SetGID와 SetUID : 파일을 실행할 때 그 파일의 소유자 또는 그룹의 권한으로 실행되도록 하는 것
- 이 권한은 시스템에서 작업이 이뤄질 수 있도록 루트 권한이 필요한 경우나 어떠한 시스템 자원을 이용하기 위해 필요
- 예 : /bin/ping라는 명령어에서 SetUID를 제거하게 되면 일반 사용자가 이 명령을 사용하는데 오류가 발생하게 됨
- SetGID와 SetUID 예제
# /bin/ping 파일 살펴보기
# ls -l /bin/ping
-rwsr-x-r-x 1 root root 36056 Sep 13 2006
# chmod 755 퍼미션 변경
# chmod 755 /bin/ping
# ls -l /bin/ping
-rwxr-x-r-x 1 root root 36056 Sep 13 2006 /bin/ping
# 사용자 ID로 계정 변경 후 ping 테스트 > Ping이 실행되지 않음
# su temp
$ ping 211.240.68.1
ping: icmp open socket: Operation not permitted
'K-Shield Jr' 카테고리의 다른 글
[K-Shield Jr - 복습] 리눅스 서버 기본 활용 방안 3 (0) | 2023.09.02 |
---|---|
[K-Shield Jr - 복습] 리눅스 서버 기본 활용 방안 2 (0) | 2023.08.17 |
[K-Shield Jr - 복습] 리눅스 서버 기본 활용 방안 1 (0) | 2023.08.16 |
[K-Shield Jr - 복습] 기업 IT 인프라 구성의 이해 (0) | 2023.08.16 |
[K-Shield Jr - 복습] 보안 업무 맛보기 및 Keyword (0) | 2023.08.15 |