=======
/etc/shadow 파일
- 사용자 계정의 암호화된 패스워드 및 정책 설정 정보가 저장된 파일
# cat /etc/shadow
각 필드
1. root = 사용자 계정이름
2. :$6...3H...2BgO = 암호화된 패스워드 정보(형식 : $hash_id$salt$hash_value) $기준으로 3파트로 나뉜다
첫번째 $ 표시 옆 숫자 = sha 512를 적용해 hash값을 만든다. ($6 = sha 512, $4 = sha 256 , $ 1 = MD5)
두번째 $ = salt 값이고 hash값을 만들기전에 랜덤한 임의의 값을 알아서 넣어 적용한다.
패스워드값에 salt값을 넣어 적용한다
세번째 $ 값 = salt값을 매겨서 중간중간 값을 넣어서 최종 결과값이 달라진 값, 원문에 salt값을 섞어서 나온 hash값
3. 16692 = 패스워드의 마지막 변경일(1970년 1월 1일부터 경과된 일 수로 표시)
4. 0 = 마지막 변경일로부터 패스워드를 최소 사용해야 하는 일 수
5. 99999 = 마지막 변경일로부터 패스워드를 최대 사용할 수 있는 일 수(99999 : 무한대)
6. 7 = 패스워드 만료를 경고하는 일(만료일 이전 n일부터 경고)
7. = 패스워드 만료 후 사용 유예기간
8. = 계정 사용 만료일(월/일/연도)
9. = 예약된 필드(사용하지 않음)
======
Linux 계정 관리 파일
/etc/skel 디렉터리
- 사용자 계정의 홈 디렉터리에 제공할 기본 환경설정 파일이 저장된 디렉터리
- 사용자 홈 디렉터리의 초기환경 제공을 위해 사용됨
- 사용자 계정을 생성했을 때 skel디렉터리에있는파일들이자동으로사용자홈디렉터리로복사됨
사용법
# ls -a /etc/skel
useradd(=adduser )
- 사용자 계정 생성
사용법
# useradd [옵션] [계정 이름]
- 옵션을 설정 하지 않으면 “/etc/default/useradd” 에 지정된 기본 값으로 생성 됨
OPTIONS
-u = 사용자 계정의 uid 설정
-g = 사용자 계정의 gid 설정
-d = 사용자의 홈 디렉터리 설정
-e = 사용자 계정의 만료일 설정
passwd
- 사용자 계정의 패스워드 생성 및 설정 변경
- 관리자는 모든 계정의 패스워드 변경 가능
- 사용자 계정은 자신의 패스워드만 변경 가능
사용법
# passwd [옵션] [계정명]
OPTIONS
-d = 패스워드를 null 값으로 변경(패스워드 삭제)
-l = 패스워드 잠금(Lock)
-u = 패스워드 잠금 해제
usermod 명령어
- 사용자 계정의 설정 변경
사용법
# usermod [옵션] [계정명]
OPTIONS
-u = 사용자 계정의 uid 변경
-g = 사용자계정의gid 변경
chage
- 사용자 계정의 패스워드 설정 변경
사용법
# chage [옵션] [계정명]
OPTIONS
-l(소문자 L) = chage 설정 내용 확인
-M = 패스워드의 사용 최대 기간 (재설정) 변경
-m = 패스워드의 최소 유지 기간 변경
-I(대문자 i) = 패스워드의 사용 기간 만료 후 사용자 계정 만료 유예 기간 변경(0: 즉시계정만료)
-E = 사용자 계정의 만료 기간 변경(0 :즉시, -1 : 비활성, YYYY-MM-DD : 직접 지정)
-d = 패스워드의 최종 변경일 수정
-W = 패스워드 만료에 대한 경고일 변경
userdel
- 사용자 계정 삭제
사용법
# userdel [옵션] [계정명]
-r = 사용자의 홈 디렉터리까지 함께 삭제
Linux 그룹 관리
그룹 관리 파일
/etc/group = 사용자 그룹의 기본 정보
/etc/gshadow = 사용자 그룹의 암호화된 패스워드 정보
그룹 관리 명령어
groups = 사용자 그룹 정보 확인
groupadd = 사용자 그룹 생성
groupmod = 사용자 그룹 설정 변경
groupwd = 사용자 그룹 패스워드 설정, 그룹 관리자 및 구성원 설정
groupdel = 사용자 그룹 삭제
/etc/group 파일
- 사용자 그룹의 기본 정보가 저장된 파일
# cat /etc/group
1. root = 그룹이름
2. x = 그룹의 패스워드 , x : /etc/gshadow 파일에 암호화된 패스워드 저장
3. 0 = gid(관리자 : 0, 사용자 : 500 이상)
4 = 그룹에 소속된 사용자 목록(참조)
groups 명령어
- 사용자 그룹의 정보 확인
사용법
- # groups [계정명]
- 계정명을 지정하지 않으면 현재 계쩡의 사용자 그룹 정보를 확인 함
- 계정명을 지정하면 지정된 계정의 사용자 그룹 정보를 확인 함
groupadd 명령어
- 사용자 그룹 생성
사용법
# groupadd [옵션] [계정명]
OPTION
-g = 그룹 gid설정
-o = 중복 gid 생성 허용
-r = 0~499 범위에서 자동으로 gid 값을 지정 함(사용가능한 큰값부터 순차적으로 할당 됨)
groupmod 명령어
- 사용자 그룹의 설정 변경
사용법
# groupmod [옵션] [계정명]
-g = 그룹 gid 변경
-o = 중복 gid 변경 허용
-n = 새로운 그룹명으로 변경
gpasswd 명령어
- 사용자 그룹의 패스워드 설정
- 사용자 그룹의 관리자 지정 및 추가
- 사용자 그룹의 멤버 추가 및 삭제
- 구성원을 삭제할때 자주 쓰인다.
사용법
# gpasswd [옵션] [계정 이름] [그룹 이름]
-A = 그룹의 관리자 추가
-a = 그룹의 멤버 추가
-d = 그룹의 멤버 삭제
-M = 그룹의 멤버 수정
groupdel 명령어
- 사용자 그룹 삭제
사용법
# groupdel [그룹 이름]
d = 디렉터리 파일 , - = 일반 파일, l = 심볼릭 링크 파일
r = 읽기 , w = 쓰기 , x = 실행
1번째 root = 소유자
2번째 root = 소유 group
여기서 소유자를 바꾸는 명령어가
chown 명령어
- 개체(파일 및 디렉터리)의 소유자 및 소유 그룹 변경
- 계정이름/그룹 이름 대신 UID/GID 로 사용 가능
사용법
# chown [옵션] <계정 이름> <파일 이름>
# chown [옵션] <:그룹 이름> <파일 이름>
# chown [옵션] <계정이름:그룹이름> <파일이름>
소유자가 root에서 test11로 바뀐걸 볼 수 있다.
여기서 소유 그룹을 바꾸는 명령어가
chgrp 명령어
- 개체(파일 및 디렉터리)의 소유 그룹 변경
사용법
# chgrp [옵션] <gid 또는 그룹이름> <파일이름>
OPTION
-R = 하위 디렉터리 및 파일 전체의 소유권 변경
소유 그룹이 바뀐걸 볼 수 있다
chown 명령어로만 바꿀수도 있는데
# chown test12.test12 test01
이와 같이 chown다음에 . 을 기준으로 왼쪽이 소유자, 오른쪽이 소유 그룹이다.
그러므로 점 기준 오른쪽만 이름을 넣고 입력 하면
사진 처럼 소유 그룹만 바뀐다.
왼쪽만 넣어서 소유자도 바뀌는 모습
소유자는 기본적으로 만든사람이 소유자 이다.
허가권(permission)은 3개씩(맨 앞은 파일형식이므로 뺀다)
rxr r-x r-x
r = read 읽기 , 4
w = write 쓰기 , 2
x = exec 실행 , 1
x가 없으면 디렉터리를 실행할 수 없다
File
r(읽기) : 파일내용(cat), w(쓰기), 파일 내용(cat >)
읽기 가능 쓰기/변경 가능
대부분의 리눅스는 디렉터리 생성시 755, 일반파일생성시 644이다.
root는 퍼미션의 영향을 받지 않는다.
허가권 구분
- 앞에서부터 3자리씩 소유자(user), 소유 그룹(group), 나머지 사용자(other)로 구분함
- 마지막(10번쨰 문자) . 은 확장 권한 (권한ACL)을 나타냄
rwx : 소유자일 경우 적용되는 권한
r-x : 파일의 소유 그룹 멤버 일 경우 적용 되는 권한
r-x : 소유자 또는 소유 그룹의 멤버가 아닌 나머지 사용자 일 경우 적용 되는 권한
FIle
r(읽기) : 파일내용(cat), w(쓰기), 파일 내용(cat >)
읽기 가능 쓰기/변경 가능
x(실행) : 실행 여부(실행파일일 경우에만 의미가 있다)
디렉터리에서 지우려는건, 디렉터리 밑에있는 파일을 지우려는건
디렉터리 자체에 권한이 있어야 하고(test01), other부분에 권한이 있어야한다.
만약 일반유저 test12가 test01 디렉터리 밑에있는 kjj.txt 파일을 지우려면 test01 디렉터리를 먼저 통과 해야한다.
그렇기에 test01 디렉터리의 권한을 변경을 해줘야만 test01 디렉터리에 새로운 파일을 만들수도, kjj.txt를 지울수도있다.
test01 디렉터리에 chmod 757로 w권한까지 준 모습
권한이 생기고 abc.txt 생성, kjj.txt삭제가 된 모습이다.
other 부분에 w를 주었기 때문에, 디렉터리에 권한을 주었기 때문에 되었다.
디렉터리에 permission과 관련이 있다.
abc.txt의 권한을 chmod 000 로 주었다
파일의내용은 볼수 없지만 삭제는 된다.
왜나면 파일의 삭제는 w 권한과는 관련이 없기 때문
w는 파일의 내용과 관련이 있는것이지 삭제와는 관련이 없기 때문이다
1. 디렉터리의 r(읽기)는 디렉토리에 목록을 볼수있는지
2. 디렉터리의 w(쓰기)는 디렉토리 안으로 진입(cd명령어)할 수 있는지
3. 디렉터리의 x(실행)는 디렉터리 안으로 진입할 수 있는지
.
.
.
계정 관리 실습
================== 실습 ================
1. 현재 존재하는 일반 사용자 계정 정보 확인
# cat /etc/passwd
2. root 계정의 UID확인
# id
# head -3 /etc/passwd
3. 현재 패스워드에 적용된 해시알고리즘 확인
# cat /etc/shadow ---> $6$ --> sha512
4. 계정 생성 2개(계정 생성 시 패스워드 설정)
4-1. salelee 계정생성
- 계정 사용만료일 지정(24년07월31일)
# useradd -e 2024-07-31 salelee
# passwd salelee
새 암호 : ~~~~
4-2. salekim 계정 생성
- 계정 생성 완료 후 계정 사용만료일을 24년12월31일로 설정
# useradd salekim
# passwd salekim
새 암호 : ~~~~
# chage -E 2024/12/31 salekim
5. salegroup 그룹 생성
# cat /etc/group --> 확인
# groupadd salegroup
6. salegroup 구성원으로 salelee, salekim 추가 후 확인
# usermod -G salegroup salelee
# usermod -G salegroup salekim
# cat /etc/group --> 확인
7. /test/sale 디렉토리 생성
# cd /test
# mkdir sale
- sale 디렉토리에 다음과 같이 설정
- 소유자 salekim, 소유그룹 : salegroup
# ls -l sale
drwxr-xr-x root root sale
# chown salekim.salegroup sale
# ls -l sale
drwxr-xr-x salekim salegroup sale
- 퍼미션(허가권) rwxrwxr-x로 변경
# chmod 775 sale == chmod g+w sale
# ls -l sale
drwxrwxr-x salekim salegroup sale
- sale/sale.txt 파일 생성 후
# cd sale
# touch sale.txt
* sale.txt에 대해 소유자 salekim, 소유그룹 : salegroup설정 후
# ls -l
-rw-r--r-- root root sale.txt
# chown salekim.salegroup sale.txt
# ls -l
-rw-r--r-- salekim salegroup sale.txt
* salekim계정에서 /test/sale 디렉토리로 이동 후
$ su - salekim
암호 : ~~~~
$ id
(salekim)
$ cd /test/sale
$ ls -l
-rw-r--r-- salekim salegroup sale.txt
$ cat > sale.txt --> 내용 추가 가능? ==> OK!!!
* salelee계정에서 /test/sale 디렉토리로 이동 후
$ su - salelee
암호 : ~~~~
$ id
(salelee)
$ cd /test/sale
$ ls -l
-rw-r--r-- salekim salegroup sale.txt
$ cat sale.txt --> 기존 내용 확인 가능? ==> OK!!!
$ cat >> sale.txt --> 내용 추가 가능? ==> 추가 불가능
$ rm -rf sale.txt --> 삭제 가능? ==> OK!!!
이유? sale 디렉토리의 소유그룹 항목에 w가 존재하기 때문...
$ ls -l /test
drwxrwxr-x salekim salegroup sale
$ touch /test/sale/sale1.txt --> 파일 생성 가능? OK!!!
이유? sale 디렉토리의 소유그룹 항목에 w가 존재하기 때문...
'공부? > 국비 지원 일기장' 카테고리의 다른 글
40일차 - vi editor (0) | 2024.09.01 |
---|---|
39일차 - 리눅스 계정 공유 및 관리 , 패키지 설치 (0) | 2024.08.29 |
37일차 - 리눅스 명령어 , 암호화 (0) | 2024.08.27 |
36일차 - 여러 리눅스 운영체제들과 이해, 명령어 (1) | 2024.08.26 |
35일차 - 리눅스 명령어 (0) | 2024.08.23 |