본문 바로가기
👾 Server/🐧 Linux

👨‍👩‍👦‍👦 리눅스의 사용자, 그룹 관리 파일과 설정하기

by kukim 2022. 1. 7.

* 이 글은 Red Hat의 글 How to manage users and groups in Linux을 참고하여 작성되었습니다. 자세한 내용은 본문과 참고 링크를 확인해주세요

 

OS의 초기(시분할 시스템이 없을 때)에는 하나의 컴퓨터에 한 사람만 사용할 수 있었습니다. 이에 불편함을 느낀 사람들은 시분할 시스템, 멀티 태스킹 등 기술을 발전시켰고 이제는 하나의 컴퓨터(시스템, 서버)에 여러 사용자동시에 접근하여 사용할 수 있습니다. 그러나 여러 사용자가 한 번에 동일한 시스템을 사용한다면 여러 문제 발생합니다. 따라서 이를 막기 위해 사용자나, 사용자들을 묶어(그룹)에 permission(권한)을 주어 시스템을 보다 쉽고 안전하게 사용할 수 있습니다. 본문 내용은 시스템 관리자가 사용자와 그룹을 추가, 수정, 삭제하는 방법과 OS에서 어떻게 관리되는지 간단하게 알아봅니다.

본문에 없는 자세한 내용은 링크를 참고해주세요.


사용자 계정 (User)

사용자의 모든 정보 확인할 수 있는 파일 : /etc/passwd

리눅스 환경에서 /etc/passwd 파일에 모든 사용자에 대한 사용자 이름, passwd, UID(user id), GID(group id), comment, 홈 디렉터리 위치, 디폴트 셸(유저의 디폴트 셸 위치)의 정보가 담겨있습니다. (macOS 동일)

# /etc/passswd 파일 포맷
username:password:UID:GID:comment:home:shell

# 터미널에서 파일 내용 확인
kuki@ku-VirtualBox:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
# 중략
kuki:x:1001:1001:,,,:/home/kuki:/bin/bash
sshd:x:127:65534::/run/sshd:/usr/sbin/nologin

여기서 특이한 점은 password가 모두 "x"로 표시되어 있습니다. 과거에는 "x"표시가 아닌 실제 비밀번호(해싱된 값)이 들어있었습니다. 하지만 비밀번호가 해싱되어 있어도 /etc/passwd 파일은 누구나 열람이 가능한 파일이었기에 위험에 노출될 수밖에 없었습니다. 따라서 개발자들은 /etc/passwd 파일의 password를 "x"로 표시하고 실제 비밀번호는 다른 곳에 저장하고 root 계정만 접근 가능하도록 변경하였습니다.

 

Linux sysadmin basics: User account management 

Linux sysadmin basics: User account management with UIDs and GIDs

 

 

사용자의 모든 정보 확인할 수 있는 파일 : /etc/shadow

/etc/passwd 파일의 password 내용이 들어있는 파일입니다. 실제 비밀번호가 해싱되어 들어있습니다. 접근 권한은 루트만 볼 수 있습니다.

루트 권한이 없는 계정은 볼 수 없다.

# /etc/shadow 파일 포맷
## username:password를 제외하고 뒤의 6개 값은 암호 변경 정보로 후에 암호를 변경할 때(change 명령어) 수정된다.
username:password:last password change:min:max:warning:inactive:expired

# kuki 계정의 비밀번호는 "1234qwer" 일때 $6$MViHlkf0YW.EY5iW~~ 으로 해싱된 값을 확인할 수 있다.

root@ku-VirtualBox:~# cat /etc/shadow
root:"루트 비밀번호 해시된 값":18998:0:99999:7:::
daemon:*:18858:0:99999:7:::
# 중략
kuki:$6$MViHlkf0YW.EY5iW$xvVtiHuKRCcbSO4wuk8SFGKR0VhjlY37bEZj0A6GHDinMdO1GPOqiP4C/W6Ad7NQYcfY4EDOdfyhdkB4lIEvv0:18998:0:99999:7:::

The effects of adding users to a Linux system

Forcing Linux system password changes with the chage command

 

 

사용자 관리 : 생성, 수정, 삭제 (useradd, usermod, userdel)

useradd # 유저 생성
usermod # 유저 수정
userdel # 유저 삭제

passwd # 비밀번호 설정

비밀번호 요구사항 관리

비밀번호를 너무 쉽게 만들면 안되기 때문에 정책을 만들어야 하고, /etc/login.defs 파일과 PAM 설정을 통해 관리합니다. 

 

Managing Linux users with the passwd command

Linux security: 8 more system lockdown controls

How to enhance Linux user security with Pluggable Authentication Module settings

An introduction to Pluggable Authentication Modules in Linux

 


그룹(Group)

파일, 디렉토리 등의 권한을 사용자 단위가 아닌 그룹으로 지정해 좀 더 편리하게 권한을 관리할 수 있습니다.

/etc/group 파일

유저 정보의 /etc/passwd 파일과 유사하게 /etc/group 파일에서 그룹 계정 정보를 확인할 수 있습니다.

# /etc/group 파일 포맷
groupname:password:GID:group members


# 예)
root@ku-VirtualBox:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
# 중략
kuki:x:1001:


# 자세한 내용
## https://www.redhat.com/sysadmin/local-group-accounts

그룹 관리 : 생성, 수정, 삭제(groupadd, groupmod, groupdel)

group add # 그룹 생성
group mod # 그룹 수정
group del # 그룹 삭제

Managing local groups account in Linux

3 basic Linux group management commands every sysadmin should know

댓글