[LFCS] User 및 Group 관리(1)

2022. 7. 25. 10:59[ 자격증 ]/[ LFCS ]

User/Group Administration

User와 Group에 관련된 Database File들

1. '계정' 관련 파일

1) /etc/passwd 파일

- 시스템의 모든 계정에 대한 정보를 담고 있는 설정 파일

- 총 7가지의 필드로 구분된다. 플디 구분자는 콜론( : )이다.

 

예시)

위에서 passwd 파일을 보이는 것과 같이 : 을 기준으로 7가지 필드가 존재한다. user이름은 중복될 수 없다.

 

7가지 필드 설명

field1) login name

field2) encryped password (보통 x라고 되어있고 /etc/shadow 파일에 보면 암호화된 형식으로 볼 수 있다)

field3) User Id (root는 0번, 1~999까지는 시스템 계정이 사용하는 유저, 1000~60000은 local user, 60000~65535는 다시 시스템 계정이 사용하는 UID)

field4) primary group id (리눅스의 모든 유저는 반드시 1개의 개인 그룹을 가지고 있으며 기본적으로 UID와 같음)

field5) user name 또는 comment: 어떤 유저인지에 대한 설명

field6) user home directory(login directory) : root는(/root), local user는 (/home/username)

field7) login shell : 로그인했을 때 실행할 프롬프트 쉘 (보통은 /bin/bash 쉘을 사용하나 시스템 계정 같은 경우에는 /usr/sbin/nologin 이라는 쉘을 사용함)

 

 

* User 생성시 특별한 설정을 주지 않으면 user는 1000번부터 순차적으로 번호가 할당된다. 특정 UID를 주는 옵션도 있다.

* /usr/sbin/nologin 쉘의 의미: 해당 쉘을 사용하는 유저는 로그인이 안된다는 의미이다. 시스템 계정은 애플리케이션이 사용하는 계정이기 때문에 로그인이 되면 보안상 문제가 생길 수 있다. 따라서 시스템 계정의 경우에는 로그인이 차단되고 계정만 존재한다.

 

 

cf. Jenkins User

젠킨스를 설치하면 기본적으로 jenkins 유저가 생성된다. 해당 유저를 분석해본 결과는 아래와 같다.

기본적으로 100번대 UID를 사용하는 것으로 보아 시스템 유저이다. 또한 primary GID는 UID와 다른것으로 보아 primary group을 새로 생성하는 것으로 보인다. 시스템 계정이라 encryped password는 *로 표시되어 있다.

 

 

 

2) /etc/shadow 파일

- encryped password와 비밀번호의 aging 정보가 저장된다.

- * 나 ! 로 표현된 유저는 로그인이 금지된 유저를 의미한다.(암호화로 나올 수 없는 문자)

- 해당 파일의 자세한 정보는 Password관리 포스팅에서 다룬다.

 

예시)

 

 

 

 

2. '그룹' 관련 파일

/etc/group 파일

- 계정을 생성할 때 해당 파일에 '계정 정보'가 생성된다.

- 각 user는 반드시 private group을 하나 가져야 한다. 기본적으로 user name과 같은 그룹을 가진다.

 

 

 

필드 설명

field1) group name

field2) group password

field3) GID

field4) user list (단, 그냥 user list가 아니라 이 그룹을 '추가 그룹'(additional group)으로 사용하는 유저들의 목록임)

 

 

* 리눅스에서 모든 유저는 기본적으로 primary group을 반드시 가져야 한다.

* 추가적으로 additional group을 여러 개 가질 수 있다.

 

 


 

Managing Local User Account

* 계정, 그룹, password 관련하여 생성, 변경, 삭제 명령어는 root 권한이 필요하기 때문에 명령어 앞에 sudo를 붙여야 함.

1. 계정(Account) 생성

사용법: useradd [option] [username]

 

Options

useradd --help

 

위 옵션에서 빨간 박스로 표시한 옵션은 자주 사용되는 옵션들이다. 여기에는 계정 생성 시 홈 디렉토리도 바꾸거나 유저 comment를 남기는 등 다양한 옵션이 있다. 기본적으로 옵션을 넣지 않아도 private group은 자동으로 생성되며 만약 additional group(supplementary group)을 만들고 싶다면 -G 옵션을 사용한다.

 

ex) useradd jihun

- UID가 1000번부터 순차적으로 발급되며 home 디렉토리가 생성될지는 모른다.(배포판마다 다를 수 있음) 따라서 계정 생성 시에는 -m 옵션을 기본적으로 사용하는 걸 권장한다.

 

ex) useradd -m jihun

- UID가 1000번부터 순차적으로 발급되며 home 디렉토리를 생성한다.

 

ex) useradd -u 2000 jihun

- uid 2000으로 생성

 

 

-r: 시스템 계정을 만들 때 사용

-s: 로그인 쉘을 지정할 수 있음. default는 /bin/sh이며 /bin/bash 쉘을 사용하기 위해서 계정 생성 시 -s옵션을 같이 사용하길 권장한다.

 

실습

위와 같이 계정 생성시 -c를 주어 comments를 설정할 수 있다. 또한 id 명령어를 사용해서 계정 생성 결과를 확인해보면 기본적으로 옵션을 주지 않아도 primary group이 UID와 user name과 같은 형태로 생성됨을 확인할 수 있다. 옵션을 주어 primary group을 User name과 다른 그룹으로 지정할 수도 있다.

 

 

 

생성된 정보 확인

encryped password가 ! 인 것으로 보아 로그인이 금지된 유저임을 확인할 수 있다. 해당 유저에게 비밀번호를 설정해야지만 로그인이 가능한 유저로 바뀐다.

 

 

유저 비밀번호 설정

sudo passwd jihun

위 명령어 수행 후 비밀번호 입력하기

 

이후 다시 tail 명령어로 /etc/passwd 파일을 확인해보면

 

위와 같이 encryped password가 설정되었음을 확인할 수 있다.

 

 

실습) UID 2000, GID 2000을 사용하고 sudo 그룹을 '추가 그룹'으로 가지는 jihun2 계정을 생성하기

 

sudo useradd -u 2000 -g 2000 -G sudo jihun2

여기서 -g 2000 옵션은 생략할 수 있다. 기본적으로 UID가 그대로 Private 유저 그룹으로 자동 생성되기 때문이다. 또한 -G 옵션 뒤에 오는 그룹은 이미 존재하는 그룹이어야 한다. 

 

27번 GID를 사용하는 sudo 그룹에 추가된 것을 확인

 

 

group 컨피그 파일 확인

sudo cat /etc/group

 

sudo 그룹에 방금 생성한 계정이 들어가 있음을 확인할 수 있다.

 

 

 

2. 계정 정보 변경하기(usermod: user modify)

 

Options

usermod --help

 

usermod의 명령어의 옵션은 useradd에서의 것과 거의 비슷하다. 하지만 usermod에서만 사용되는 옵션은 아래와 같다.

 

-a: append의미로 기존 설정을 초기화하지 않고 추가한다는 의미이다. usermod 명령어 사용 시 반드시 사용해야 한다.

-L: 계정 잠금 lock

-U: unlock

-l : 로그인 계정 이름 변경

 

 

실습

 

1) 위에서 생성한 jihun, jihun2 계정의 로그인 쉘(/bin/sh)을 /bin/bash로 변경

sudo usermod -s /bin/bash jihun
sudo usermod -s /bin/bash jihun2

 

 

2) jihun 계정을 sudo 그룹에 추가하도록 변경

sudo usermod -a -G sudo jihun

 

* 주의: 위 명령어에서 -a를 없애고 실행하면 jihun 계정이 소속된 기존 supplemenary 계정을 모두 지우고 sudo 계정만 추가한다.

* 항상 usermod를 사용할 때에는 -a 옵션을 사용해야 한다!

 

 

 

3) jihun2 계정을 로그인 Lock을 걸어 로그인할 수 없도록 설정하고 다시 로그인 잠금 해제하기

sudo usermod -L jihun
sudo usermod -U jihun

이렇게 Lock을 걸면 /etc/shadow에서 encryped password 앞에 !가 붙어있음을 확인할 수 있다. ! 문자는 SHA256 암호화 알고리즘으로 나올 수 없는 문자다. 즉, -L 옵션을 사용하면 기존 encryped password앞에 !를 붙여서 암호화가 해독되지 못하도록 설정하여 로그인이 불가능하도록 하는 것이다.

 

 

실습) alovelace를 babbage 그룹에 secondary로 추가하고 alovelace 그룹에 primary로 추가하기

sudo usermod -a -G alovelace,babbage alovelace

단, secondary 그룹인 babbage 그룹은 이미 존재하는 상태여야 한다. alovelace라는 유저 이름과 같은 그룹 이름을 주면 기본적으로 -G옵션을 사용하더라도 alovelace의 primary group으로 들어간다.

 

 

3. 계정 삭제하기

사용법: userdel [oprions] [username]

 

Options

 

실습

sudo userdel jihun

위 명령어는 계정을 삭제하나 home 디렉토리와 같은 정보들은 삭제되지 않는다. 따라서 -r 옵션을 사용해서 유저 디렉토리까지 모두 지워지도록 한다.

 

sudo userdel -r jihun

 

만약 유저가 Lock 상태라면 다음 명령어로 유저를 삭제한다.

sudo userdel -r -f jihun

 

정리

- useradd [options] [username]

- usermod -a [options] [username]

- userdel -r [username]

 


 

Group

1. group 추가 : useradd

useradd --help

 

 

실습

GID 3000을 갖는 group을 생성하고 project1을 '추가 그룹'으로 가지는 계정 2개 생성

sudo groupadd -g 3000 project1

sudo useradd -G project1 -m -s /bin/bash lee
sudo useradd -G project1 -m -s /bin/bash kim

 

 

추가 그룹을 가졌는지 확인

또는

 

 

 

 

2. 그룹 변경: groupmod

groupmod --help

 

 

3. 그룹 삭제: groupdel

 

groupdel --help

 

보통 primary group은 groupdel 커맨드로 삭제하지 않는다. primary group은 계정이 삭제될 때 함께 삭제되는 것이 일반적이다. 따라서 additional group의 경우에만 userdel 명령으로 삭제한다.

 

 

정리

- groupadd [options] [group name]

- groupmod [options] [group name]

- groupdel [options] [group name]

 

* 보통 group 관련 커맨드는 특별한 옵션이 없음. GID를 생성하거나 변경하는 -g 옵션이 대부분일 것

 

 

 

 

Reference

- https://youtu.be/4GTnR76qdAE