6. 사용자 및 그룹 관리

2022. 9. 13. 16:43Linux

오늘은 사용자 및 그룹을 관리하는 법에 대해서 알아보겠습니다.

 


먼저 사용자를 담고 있는 /etc/passwd 파일에 대해서 알아보겠습니다.

 

# tail -2 /etc/passwd

tail 명령어는 파일의 뒷부분을 출력해주는 명령어입니다.

옵션 -숫자 를 이용해서 원하는 줄의 수만큼 출력할 수 있습니다.

여기서 kjs 사용자를 참고해 설명해 보겠습니다.

kjs : 사용자명

x : 패스워드. 실제 패스워드 저장은 /etc/shadow 파일에 암호화되어 저장됨

10003 : UID(User ID)

10003 : GID(Group ID)

Top : 별칭, 설명

/home_1/kjs : 사용자의 홈 디렉토리 위치

/bin/bash : 로그인 시 부여되는 shell


다음으로 사용자를 추가하는 명령어에 대해서 알아보겠습니다.

 

# useradd [옵션] 사용자명

 

옵션 -

u : UID 지정

g : GID 지정. 지정안할 시 기본적으로 uid와 동일한 gid가 생성되어 부여됩니다.

G : 추가 그룹 설정

c : 별칭, 설명 설정

d : 홈 디렉토리 경로 지정

s : 로그인 시 사용할 shell 지정

 

모든 옵션을 사용해 hmh 사용자를 추가해 보겠습니다.

# useradd -u 1004 -g 100 -G 10003 -c myname `mkdir /sweethome` -d /sweethome/hmh -s /bin/sh hmh

-u 1004 : uid를 1004로 지정

-g 100 : gid를 100으로 지정

-G 10003 : 추가그룹을 10003으로 지정

-c myname : 별칭을 myname 으로 지정

`mkdir /sweethome` : ``안에 들어간 명령은 그 줄에서 가장 먼저 실행됩니다. /sweethome/hmh를 홈 디렉토리로 설정하기 이전에 /sweethome 디렉토리를 만들어주는 과정입니다.

-d /sweethome/hmh : 사용자의 홈 디렉토리를 /sweethome/hmh로 직접 지정

-s /bin/sh : shell을 /bin/sh로 지정

hmh : 추가할 사용자의 이름 지정

 

tail 명령어로 확인해보니 /etc/passwd 파일에 잘 추가된 모습입니다.


사용자를 수정하는 명령어에 대해서 알아보겠습니다.

 

# usermod [옵션] 사용자명

옵션은 useradd와 동일합니다.

 

여기서 중요한 점은 -d 옵션을 써서 홈 디렉토리를 수정할 때 -m 옵션을 같이 붙여줘야 한다는 점입니다.

-m 옵션을 붙이지 않으면 실제 홈디렉토리가 수정한 위치로 옮겨가지 않기 때문입니다.

 

먼저 -m을 붙이고 디렉토리를 수정해 보겠습니다.

# usermod -d /home/hmh -m hmh

 

디렉토리가 /sweethome/hmh 에서 /home/hmh로 옮겨진 모습입니다.

 

이제 -m 옵션을 붙이지 않고 /home에서 /sweethome으로 옮겨보겠습니다.

실제 hmh 홈디렉토리가 /sweethome으로 옮겨가지 않은 모습입니다.

 

이렇듯 usermod 명령어에서 -d 옵션을 사용할 때 -m을 같이 사용하지 않으면

사용자의 홈 디렉토리를 찾지 못하는 에러가 발생할 수 있기 때문에 꼭 기억하도록 해야 합니다.


 

다음으로 사용자를 삭제하는 명령어인 userdel에 대해서 알아보겠습니다.

 

# userdel [옵션] 사용자명

 

옵션에는 보통 -r을 붙여줍니다.

-r을 붙이는 이유는 사용자를 지우면서 사용자의 홈 디렉토리, 메일 디렉토리 등 관련된 데이터들을 모두 삭제하기 위함입니다. 붙여주지 않으면 nouser인 상태로 디스크 공간을 차지하게 됩니다.

 

먼저 -r을 붙인상태로 사용자를 삭제해 보겠습니다.

 

먼저 사용자 hmh를 만들어 놓겠습니다. 홈 디렉토리는 /home_1/hmh 입니다.

 

이제 삭제 명령어를 입력해보면 /home_1에 hmh 디렉토리가 사라진 모습입니다.

 

-r 옵션을 안 붙인 상황도 가정해 보겠습니다.

/home_1에 hmh 디렉토리가 그대로 남아있는 모습입니다.

 

이렇듯 불필요한 데이터가 남아있는 것을 방지하기 위해 userdel 명령어를 사용할 시 -r을 붙여줘야 합니다.


이제 그룹 관리를 알아보겠습니다.

 

먼저 그룹 파일을 살펴보겠습니다.

경로는 /etc/group 입니다.

kjs:x:10003: 그룹을 분석해보겠습니다.

kjs : 그룹명

x : 그룹 비밀번호

10003 : GID(Group ID)


그룹을 추가해보겠습니다.

 

기본적으로 사용자를 추가할 때 UID번호와 똑같은 GID의 그룹이 생성됩니다.

그리고 명령어를 사용해서 그룹만 따로 생성시킬 수 있습니다.

 

# groupadd [옵션] 그룹명

 

옵션-

g : 그룹의 GID를 지정할 수 있습니다.

 

# groupadd -g 1004 angel

GID가 1004인 angel 그룹을 생성하겠다.

/etc/group 안에 잘 생성된 것을 확인할 수 있습니다.


그룹의 이름을 변경해 보겠습니다.

 

# groupmod -n 변경후이름 변경전이름

 

# groupmod -n devil angel

이름이 잘 변경된 모습입니다.


그룹을 삭제해보겠습니다.

 

#groupdel 그룹명

 

#groupdel angel

잘 삭제됐습니다.


다음으로 그룹에서 사용자 계정을 컨트롤 해보겠습니다.

 

# gpasswd [옵션] 사용자명 그룹명

 

옵션 -

a : 사용자를 그룹에 추가합니다.

d : 사용자를 그룹에서 삭제합니다.

 

# gpasswd -a a devil

a를 devil 그룹에 추가합니다.

# gpasswd -a b devil

b를 devil 그룹에 추가합니다.

 

# cat /etc/group | grep devil

/etc/group 파일에서 devil 문자열이 존재하는 행을 출력합니다.

 

파이프라인은 X | Y 형태에서 X 의 처리결과를 Y 로 전달하는 것입니다.

그리고 grep은 특정 문자열이 존재하는 행을 출력합니다.

 

a,b 사용자가 devil 그룹에 추가된 모습입니다.


사용자를 그룹에서 삭제해 보겠습니다.

 

# gpasswd -d a devil

a 사용자를 devil에서 삭제합니다.

 

확인해보면 a가 devil 그룹에서 빠진걸 알 수 있습니다.


끝!