/etc/passwd 파일
사용자들의 계정 정보가 저장된 파일이다. 다음과 같은 구조이다.
유저명:x:UID:GID:설명:홈 디렉토리:로그인 쉘
- 유저명 : 말 그대로 유저 이름
- x : 원래 초기 유닉스 시스템에선 사용자 암호가 이쪽에 저장됐으나, 현재 사용자 암호는 /etc/shadow에 있다(해쉬된 형태로)
- UID : 사용자들에게 할당되는 고유한 ID 번호
- GID : 그룹 ID로, 리눅스에서 사용자는 무조권 한 개 이상의 그룹에 소속돼있다.
- 설명 : 사용자의 실명, 부서명 같은 것들
- 홈 디렉토리 : 해당 사용자 계정에 할당된 홈 디렉토리 경로 (ex: /home/jofe 등)
- 로그인 쉘 : 사용자의 로그인 쉘을 지정(로그인 후 켜지는 쉘)
/etc/shadow 파일
사용자 암호에 대한 정보를 별도로 관리하는 파일이다. 전지전능한 root께서만 읽고 쓸 수 있으며 shadow그룹은 읽기만 가능하다. 다음과 같은 구조다.
유저명:암호:최종변경일:MIN:MAX:WARNING:INACTIVE:EXPIRE:Flag
- 유저명 : 말 그대로 유저 이름
- 암호 : 해쉬된 형태의 암호가 있다
- 최종 변경일 : 1970년 1월 1일을 기준으로 최종 변경된 날을 표기
- MIN : 비밀번호 변경 주기를 의미(암호 변경 후 사용해야 하는 최소 기간)
- MAX : 비밀번호를 사용가능한 최대 기간. 즉 유효 기간이라 생각하면 됨
- WARNING : 암호가 만료되기 x일 전부터 알려주겠다 할 때 x에 해당
- INACTICE : 암호가 만료된 후에도 이 값으로 지정된 날수 동안은 로그인 가능(마지막으로 삶을 돌아보는 시간..)
- EXPIRE : 사용자 계정이 만려되는 날짜(1970년 1월 1일 기준)
- Flag : 향후 사용할 목적으로 비워둔 항목
참고로 암호의 경우 단순히 해쉬된 암호만 띡하니 있지 않고, 사용된 해쉬 알고리즘의 타입(MD5, SHA)와 salt값도 동봉돼있다. 비번을 해쉬할 때 단순히 비밀번호만 해쉬하는게 아니라 랜덤하게 만들어낸 salt값을 함께 해싱하는데, 이를 통해 유저 A, B가 똑같은 평문 비밀번호를 사용해도 salt값이 달라서 전체적인 해쉬 값은 다른 걸 가지게 된다. 보안에도 용이한 셈.
/etc/group 파일
각 그룹들의 정보가 저장된 파일. 참고로 각 사용자마다 기본 그룹이라는게 있는데, /etc/passwd에 사용자별로 가지는 gid가 바로 그것이다.
그룹명:x:GID:그룹 멤버
- 그룹명 : 말 그대로 그룹 이름
- x : 그룹의 암호 저장(그룹 암호는 newgrp 커맨드로 자신이 속하지 않은 그룹으로 전환할 때 필요함)
- GID : 그룹을 식별하는 고유 번호
- 그룹 멤버 : 해당 그룹에 속하는 멤버들의 을 쉼표로 구분해서 이 영역에 표기
/etc/gshadow 파일
그룹 암호가 저장된 파일
그룹명:그룹 암호:관리자:그룹 멤버
- 그룹명 : 말 그대로 그룹 이름
- 그룹 암호 : 암호화된 그룹 암호
- 관리자 : 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정. 여러 개면 쉼표로 구분
- 그룹 멤버 : 그룹에 속한 멤버들의 계정명. 쉼표로 구분함
리눅스에서 사용자 계정 추가하기
1. useradd 커맨드 활용
기본적으론 "useradd 유저명"을 통해 사용자 계정 생성 가능
-u, -g 등의 옵션을 붙여 UID나 GID 등을 직접 지정하는 것이 가능하다.
정말 아무것도 없이 계정만 생성해주므로, 비밀번호 등은 별도로 설정해줘야 한다
2. adduser 커맨드 활용
기본적으론 "adduser 유저명"을 통해 사용자 계정 생성 가능
-uid, -gid 등의 옵션을 붙여 UID, GID 등을 직접 지정하는 것이 가능하다.
생성 시 비밀번호 등도 입력받게끔 만들어져있다.
비슷하게, groupadd커맨드를 통해 기존에 없던 그룹 생성도 가능하며, -g 등의 옵션을 곁들여 GID지정도 가능하다.
리눅스에서 사용자 계정 수정하기 - usermod 커맨드 활용
usermod [옵션] [유저명]
-u, -g 등의 옵션으로 UID, 기본 그룹 등의 수정이 가능하다. -aG옵션을 통해 해당 유저를 sudo등의 그룹에 넣을 수도 있다.
비슷하게, groupmod커맨드를 통해 그룹의 GID등을 수정가능하다.
리눅스에서 사용자 계정 삭제 - userdel 커맨드 활용
userdel [옵션] [유저명]
-r 옵션을 줘서 홈 디렉토리도 삭제할 수 있고, -f옵션을 통해 해당 사용자가 로그인 중이어도 강제 삭제가 가능하다.
비슷하게, groupdel커맨드를 통해 그룹을 삭제할 수 있다.
리눅스에서 소속 그룹 변경하기 - newgrp 커맨드 활용
newgrp [그룹명]
말 그대로 사용자가 작업시 현재 소속 그룹을 기본 그룹이 아닌 다른 그룹으로 바꿀 때 사용하는 커맨드다.
UID vs EUID
UID : 실제 유저의 ID다.
EUID : 유효한 사용자 ID로, 현재 명령을 누구 권한으로 수행하고 있는가에 해당하는 개념이다. 즉, UID가 a인 상태에서 커맨드를 실행했을 때 EUID는 a가 아니라 b가 될 수도 있다.
파일/디렉토리의 소유자 변경하기
chown [옵션] [사용자계정] [파일 또는 디렉토리명]
ex) chown root file1 : file1의 소유자를 root로 바꾼다
'Linux' 카테고리의 다른 글
리눅스 awk 커맨드 사용법 및 동작 원리 (0) | 2024.04.21 |
---|