리눅스

리눅스 (사용자 관리 /etc/passwd, /etc/group, /etc/shadow)

SHU! 2023. 5. 27. 21:37

 

시스템에서 사용자 관리 파일은 다음과 같이 3개로 구성된다.

1. /etc/group : 그룹 정보를 저장

2. /etc/passwd: 사용자에 대한 정보를 저장

3. /etc/shadow : 사용자 암호를 저장 시스템에서 사용자 관리 파일은 다음과 같이 3개로 구성된다.

 

 

시스템에서 사용자와 그룹은 /etc/passwd와 /etc/group 파일에서 각각 관리

 

이 두파일은 편집기에서 직접 편집하는 것은 좋지않다.

반드시 vipw와 vigr 명령어 사용

 

@vipw

-/etc/passwd 파일을 복사하여 /etc/passwd.edit로 저장

-vi 편집기로 /etc/passwd.edit  파일을 편집

-편집이 끝나면 오류를 점검하여 이상이 없으면 /etc/passwd로 저장하고

-임시파일인 /etc/passwd.edit 파일은 삭제

 

@vigr

-vigr와 마찬가지로 동작

-/etc/group.edit라는 임시 파일 사용하고 편집이 끝나면 /etc/group 파일로 저장 

 

@/etc/passwd

시스템 사용자들에 대한 정보를 저장하기 파일로 다음과 같은 형식으로 구성되어 있음

root:x:0:0:root,,,:/root:/bin/bash
 ①   ② ③ ④   ⑤       ⑥       ⑦
 

첫번째 필드: username 필드로 사용자가 로그인 시 사용하는 사용자 계정명으로 최대 32자까지 지정가능

두번째 필드: password 예전에는 암호가 암호화되어 저장되었는데, 보안상 문제로 현재는 /etc/shadow에 저장됨

-이 필드가 비어 있으면 암호 없이 시스템에 접근할수 있으므로 위험

-이 필드에 * 가 있으면 계정의 활동이 중지되어 올바른 암호를 입력해도 로그인이 안 됨.

세번째 필드: User ID로 사용자 ID번호이며 0은 루트가 사용하기로 예약되어 있고, 일반사용자는 1000번부터 사용

네번째 필드: Group ID 필드이며 그룹 ID번호로 /etc/group 파일과 연결되어 사용

다섯번째 필드: ID string으로 주석필드로 이름,사무실,전화번호 등의 정보를 저장

-finger 명령: 주석 필드 정보를 보여줌

-chfn명령: 주석 필드 정보를 수정할 수 있음

여섯번째 필드: 홈디렉터리, 사용자가 로그인 시에 사용하게 될 디렉터리의 절대경로명을 지정,

다수의 사용자가 시스템을 사용하는 리눅스는 사용자 별로 홈 디렉터리라는 공간을 통해 파일 저장

일곱번째 필드: command 필드로 사용자가 로그인할때 실행할 명령의 절대경로를 지정하며, 대부분

shell을 지정

-shell은 사용자의 명령을 리눅스에 전달하여 실행하는 역할

-/bin/sh, /bin/bash 이외에 많은 shell이 있음

-chsh: 필드를 변경

 

 

@/etc/shadow

보안을 강화하기 위하여 사용자 암호를 암호화하여 저장됨

암호와 관계된 정보만 저장이되며, 관리자만 읽을 수 있음

 

 

-shadow 파일 필드의 구성

root:*:18375:0:99999:7:::
 ①   ②   ③   ④   ⑤   ⑥⑦⑧⑨
 
 

첫번째 필드: login name으로 /etc/passwd 파일의 사용자 명과 같아야 함

두번째 필드: Encrypted : 사용자의 암호화된 패스워드

세번째 필드: last Changed: 마지막으로 패스워드가 변경된 날짜

네번째 필드: Minimum: 패스워드 변경 금지 일수

다섯번째 필드: Maximum 패스워드 사용 만기일

여섯번째 필드: Warn: 패스워드 사용 만기일 전에 사용자에게 주의 메시지가 제공되는 일수

일곱번째 필드: Inactive: 사용자가 며칠 간 시스템을 사용하지 않은 경우 로그인 금지를 지정한 일수

여덟번쨰 필드: Expire: 로그인을 더 이상 사용할 수 없는 일자

아홉번째 필드: 사용하지 않음

 

 

@/etc/group

모든 사용자는 반드시 한개 이상의 그룹에 포함되어 있어야 한다.

그룹의 용도는 파일이나 디렉터리에 대한 그룹 퍼미션 설정에 사용

사용자 등록시에 특별한 그룹을 지정하지 않으면 기본값으로 소유자와 동일한 그룹을 만들고

그룹 멤버를 비워 둠

*파일에 대한 권한 최소화

 

@사용자 추가/삭제
useradd: 사용자 계정만 만들고 홈 디렉터리나 설정파일을 복사하는 등의 작업은 하지 않는다.
adduser: 적절한 UID 및 GID를 선택하고,  홈 디렉터리를 생성하며, 사용자 기본 설정을 복사(/etc/skel 디렉터리의 파일) 자동으로 사용자 암호, 실제 이름 등을 위한 초기 값을 질의하여 설정

 

-사용자 삭제
deluser: 사용자 홈 디렉터리와 메일 스풀 또는 시스템 상에서 사용자가 소유하는 모든 파일을 백업하고
삭제 가능

 

-사용자 암호 변경
1.개인 사용자가 자신의 암호를 변경할 때는 passwd 명령 사용
2.시스템 관리자가 여러 사용자들의 암호를 변경하기 위해서는 chpasswd 명령어를 사용
사용자명:암호 형식으로 한 줄에 한 명씩 지정
3. 많은 사용자들의 암호를 변경하기 위해서는 텍스트 파일에 사용자명:암호 형식으로 한줄에 한명씩 지정
편집한 파일을 리다이렉션을 이용하여 chpasswd 명령의 입력으로 넣어줌

 

@사용자 쿼터 설정
쿼터 패키지 설치
$ sudo apt install quota

쿼터란?
쿼터는 디스크 저장 장치를 일부 사용자가 전부 사용하는 것을 막기 위해 지정
-파일의 생성개수나 디스크 사용량으로 각각 제한할 수 있다.
-쿼터는 파일 시스템 별로 동작하며 파일 시스템이 여러 개 일 경우 쿼터를 사용해야 할
각 파일 시스템 별로 전부 쿼터를 설정해야 함
-/etc/fstab 파일을 보면 3개의 파일 시스템이 있다. 
-관리자 권한 /etc/fstab 파일 수정 시 오타에 주의
*오타 있을경우 시스템이 부팅되지 않는 문제가 발생하여 리눅스 재설치 필요 

-현재 사용량 검사
쿼터를 on하기 전에 quotacheck 명령으로 사용자 별로 소유하고 있는 파일의 개수와 크기를 확인
*이 명령을 수행할 경우에는 파일 손상 위험이 있으므로 quotaoff 상태에서 함
쿼터체크를 하기 전에는 무조건 quotaoff를 하는 습관!!!

쿼터 관련 명령을 수행하기 위해서는 관리자 권한 필요 
sudo -i : 관리자 상태에서 명령을 수행하기 위하여 관리자로 전환 
cd /home: 쿼터를 적용할 파일 시스템 이동
quotaoff -avug: 파일 손상 위험이 있기 때문에 쿼터 체크 전에는 쿼터를 종료 
qutotacheck -augmn: 파일 시스템의 쿼터 정보를 수집하기 위해 체크
ls -l aquota.user: 쿼터 데이터베이스 파일이 생성되었는지, 권한 올바르게 지정 되어 있는지 확인
quotaon -avug: 검사가 완료되었으면 쿼터 작동

 

 

-테스트 사용자 생성과 쿼터 지정
쿼터는 저장 용량인 blocks을 제한하는 방법과 파일의 개수를 제한하는 방법
두 가지 전부를 제약할 수 있다.
1. soft LimitL 사용자에게 미리 경고를 해주는 용량 지정
경고를 받게 되면 유예 기간안에 경고 용량 아래로 파일을 정리 해야 함
2, Hard Limit: 사용자가 사용할 수 있는 최대 허용 용량
유예기간과 관계없이 즉시 제한을 받게 됨
3. 유예기간: 사용자의 사용 용량이 soft Limit 용량을 넘은 후부터 적용되는 시간 제한
사용자별로 지정하는 것이 아니라 파일 시스템별 지정
유예기간 변경은 edquota-t 옵션으로 지정
유예기간 역시, 하드 디스크의 공간과 파일의 개수에 대하여 각각 지정 가능


@시스템 자원 사용 제한하기
시스템 자원 제한은 주로 CPU, Task 수, 메모리 정도가 많이 사용
systemctl 명령을 사용하여 systemd를 관리
-CPUquota: /etc/passwd 파일의 사용자명과 같아야 함 /이를 위해서는 CPUAccounting = true를 설정해야함
-TaskMax: 생성할 수 있는 최대 프로세스 수를 제한 / 이를 위햐서는 TaskAccounting = true 를 설정해야 함
-MemoryHigh: 메모리 제한 크기, 쿼터에서 softlimit와 비슷
-MemoryMax: 메모리 최대 사용 크기  

CPUquota는 CPU 코어 1개에 대한 할당량을 백분율로 지정
-하나 이상의 CPU 코어를 할당하려면 100^보다 큰 값을 지정
systemd-cgls 명령은 현재 실행되고 있는 cgroup에 대한 정보를 서비스 계층별로 표시
.slice로부터 모든 프로세스가 시작 
-silce, scope, service에 자원 제한을 걸 수 있다.

-시스템 자원을 제한하는 방법
sudo systemctl start machine.slice 명령으로 메모리 제한 설정을 활성화 시킴
systemctl set-property 옵션으로 메모리 제한

-모든 사용자에 대한 시스템 자원 제한
systemd-cgls 명령으로 계층 구조 보기
User-1000.slice
UID: /etc/passwd 파일에 있는 사용자 ID
각 사용자 별로 시스템 자원을 제한 가능, 각각의 사용자에게 개별적으로 제한을 걸기 위해서는
user-.slice에 제한을 줌

사용자에 대한 시스템 자원 제한은 systemctl edit --runtime --force user.slice
제한 해제:  systemctl revert user.slice

 

 

 

'리눅스' 카테고리의 다른 글

리눅스 입문  (1) 2023.05.29
리눅스 - 방화벽  (0) 2023.05.29
리눅스 - 네트워크 관리  (2) 2023.05.28