Linux - 사용자 & 그룹 생성 및 제거

2021. 7. 29. 18:38Linux

이번 시간에는 사용자와 그룹의 생성과 제거에 대해 공부해보는 시간을 가져보겠습니다.

 

사용자 생성  : useradd 사용자명

사용자를 생성할 때 /etc/default/useradd, /etc/login.defs 이 두 파일들을 참조해서 생성합니다.

 

/etc/default/useradd : 사용자 생성시 첫번째로 참조하는 파일이며 GID, 홈디렉터리 경로, 패스워드 만료 후 유예기간, 계정 종료 일자, 셸 종류, skel 경로, mail spool 생성 여부 등에 대한 설정들이 있습니다.

 

 

/etc/login.defs : 사용자 생성시 두번째로 참조하는 파일이며 비밀번호 관련 설정(만료일, 최소 최대일, 최소 길이 등), UID, GID 범위, 홈 디렉터리 생성 여부, 암호화 설정 등에 대한 설정들이 있습니다.

 

 

사용자가 생성되면 /etc/passwd , /etc/shadow, /home, /var/spool/mail에 사용자에 대한 정보가 자동으로 추가됩니다.

 

/etc/passwd : 사용자명 : 비번 : uid : gid : : 홈디렉터리 : 사용중인 쉘

비번은 확인 할 수 없도록 x 로 표시된걸 볼 수 있습니다. 

 

/etc/shadow : 사용자명 : 비번 : 이 뒤는 마지막으로 비번을 수정한 일수 사용시간 등 사실상 알 필요가 없습니다. 

비번 부분이 ! ! 인것을 볼 수 있습니다. 이는 아직 newuser 사용자한테 비번을 설정 하지 않았기 때문입니다.

 

newuser 사용자한테 비번을 설정 한뒤 /etc/shadow를 다시 열었습니다.

비번이 암호화 되어 있는 모습을 확인 할 수 있습니다.

 

/home : 사용자가 새로 생성되면 사용자명으로 홈 디렉터리가 생성됩니다.

 

/var/spool/mail : 사용자 생성시 사용자명으로 생성되는 메일 파일입니다.

 

사용자를 생성한뒤 id로 사용자 정보를 확인 해보면 그룹명 또한 사용자명과 똑같은 것을 볼 수 있습니다.

사용자가 생성될때 그룹은 사용자명으로 자동으로 생성되며 사용자는 생성된 그룹에 등록되기 때문입니다.

하지만 사용자를 생성할 때 수동으로 직접 그룹을 지정해서 생성 해 줄 수 있습니다.

물론 그룹 또한 직접 생성 할 수 있습니다. 생성된 그룹은 /etc/group에서 확인 할 수 있습니다.

 

그룹 생성 : groupadd 그룹명

 

이제 사용자를 생성할 때 g 옵션을 사용하여 그룹을 지정해보겠습니다. 

useradd -g 지정할 그룹 생성할 사용자명

 

여기서 잠시 /etc/group 파일에 대해 알아보겠습니다.

 

그룹명 : 그룹 비번 : gid : 그룹에 등록된 사용자명 순으로 저장되어 있는 것을 볼 수 있습니다.

여기서 궁금증이 생길 수 도 있습니다. 분명 제가 사용자를 생성시 사용자명으로 그룹이 자동으로 생성되며 사용자는 그룹에 등록된다고 말을 했습니다.

근데 왜 그룹 keum을 제외한 나머지 그룹에는 등록된 사용자가 없을까요?

저희가 방금 testgroup 그룹에 등록한 newuser2 사용자도 안보입니다.

 

그룹에는 주 그룹과 보조 그룹이 있습니다. 주 그룹은 사용자가 처음으로 등록 하는 그룹이 주 그룹입니다. 사용자는 하나 이상의 그룹에 등록할 수 있습니다. 즉 주 그룹 이외에도 다른 그룹에 등록 할 수 있는 것입니다. 이렇게 주 그룹 이후에 등록하는 그룹을 보조 그룹이라고 합니다.

 

사용자가 보조 그룹으로 등록한 그룹에만 등록된 사용자가 저장되는 것입니다. 사용자가 주 그룹으로 등록한 그룹은 등록된 사용자가 없는 것처럼 보이지만 사실은 등록된 사용자가 있는 것입니다.

또한 여러 사용자가 특정 한 그룹을 주 그룹으로 등록을 한다면 그 그룹에는 사실 여러 사용자가 등록되어 있는 것이지만 등록한 사용자가 없는 것 처럼 보일 것입니다.

실제로 한번 만들어 보겠습니다.

우선 testgroup 그룹에 등록하는 사용자 계정 3개를 생성 하겠습니다.

 

정상적으로 testgroup을 그룹으로 가지고 있는 것을 확인 할 수 있습니다.

 

이번엔 /etc/group을 확인 해 보겠습니다.

이와 같이 testgroup에 등록된 사용자 계정은 3개나 있지만 실제로 보여지는 건 없다는것을 볼 수 있습니다. 3계정 다 testgroup을 주그룹으로 등록했기 때문입니다.

 

보조 그룹에 등록 및 제거

gpasswd 명령어를 사용하면 됩니다. root 권한에서만 사용 가능합니다.

a 옵션 : 그룹에 사용자를 등록할 수 있게 해주는 옵션입니다. gpasswd -a 사용자명 그룹명 

d 옵션 : 그룹에 등록된 사용자를 그룹으로부터 해제 해주는 옵션입니다. gpasswd -d 사용자명 그룹명

 

우선 사용자를 그룹에 등록 해보겠습니다.

 

group이라는 이름을 가진 그룹에 사용자 chang을 등록한뒤 사용자 정보를 확인 해보겠습니다.

 

사용자는 이와 같이 주그룹 chang과 보조그룹 group에 등록되어 있는것을 알 수 있습니다.

id 말고 groups라는 명령어를 사용해도 사용자가 현재 속해 있는 그룹들을 알 수 있습니다. (주그룹, 보조그룹 다 나옵니다)

 

 

제가 설명 한 대로 라면 group 그룹은 chang 사용자의 보조 그룹이기 때문에 /etc/group 파일에 등록이 되어 있을 것입니다. /etc/group 파일을 확인 해보겠습니다.

group 그룹에 등록된 사용자 chang이라고 저장되어 있는 것을 볼 수 있습니다. 아까도 말했듯이 chang은 주 그룹으로

등록되어 있기 때문에 공백인것입니다.

 

물론 gpasswd 명령어로 주그룹 또한 등록 할 수 있습니다. 다만 주그룹은 이미 등록 되어 있는 상태이기 때문에 차이는 없습니다. /etc/group 파일에 등록된 사용자가 표시가 되냐 안되냐 차이 뿐입니다.

 

이번엔 등록한 사용자를 그룹으로부터 제거, 해제 해보겠습니다.

성공적으로 해제되었습니다. chang 그룹은 chang 사용자의 주 그룹이기 때문에 등록 해제를 하셔도 여전히 chang 사용자의 주 그룹입니다.

 

주그룹 변경 : newgrp 그룹명

주그룹을 원하는 그룹으로 변경 할 수 있는 명령어입니다.

 

그룹 제거 : groupdel 그룹명

 

직접 생성한 그룹은 그룹에 등록된 사용자를 제거해도 제거되지 않고 남아 있기 때문에 제거하려면 직접 제거해주어야 합니다. 반면 사용자를 생성할 때 자동으로 생성되는 그룹들은 사용자가 제거될때 같이 제거가 됩니다.

 

하지만 자동으로 생성된 그룹을 다른 사용자가 주 그룹으로 등록을 했다면 그룹을 생성한 사용자를 제거해도 그룹은 제거되지 않습니다.

그룹 제거에는 다음과 같은 룰을 따릅니다.

 

1. 그룹이 사용자의 주 그룹일 경우

제거하려는 그룹에 등록되어 있는 사용자들이 많다고 가정해보겠습니다. 그 중 단 한명의 사용자라도 해당 그룹을 주 그룹으로 등록을 했다면 그 사용자를 제거하지 않는 한 그 그룹은 제거 할 수 없습니다.

 

2. 그룹이 사용자의 보조 그룹일 경우

똑같이 제거하려는 그룹에 등록되어 있는 사용자들이 많다고 가정하겠습니다. 하지만 단 한명의 사용자도 해당 그룹을 주 그룹으로 등록한 사람이 없이 전부 보조 그룹으로 등록을 했다면 그 그룹은 바로 제거 할 수 있습니다.

 

user 그룹을 제거해보겠습니다.

 

그럼 user2 사용자를 제거한뒤 다시 시도 해보겠습니다.

 

이번에도 chang 사용자를 제거한뒤 다시 시도 해보겠습니다.

 

마찬가지로 jin 사용자를 제거한뒤 다시 시도 해보겠습니다.

 

성공적으로 user 그룹이 제거된것을 확인 할 수 있습니다. user 그룹을 제거하는 과정에서 user2, chang, jin 사용자가 user 그룹을 주 그룹으로 등록을 했으며 hyun, dong 사용자는 user 그룹을 보조 그룹으로 등록 한것을 알 수 있었습니다. 주그룹으로 등록한 사용자들을 다 제거하자 보조 그룹으로 등록 한 사용자들은 제거하지 않아도 user 그룹을 제거 할 수 있었습니다.

 

이번에는 사용자를 제거해보겠습니다.

 

사용자 제거 : userdel 사용자명

 

가장 최근에 생성한 사용자에 대한 내용은 파일의 제일 마지막에 저장됩니다. 제일 마지막 내용이 newuser가 아닌 chang인걸로 보아 정상적으로 제거되었습니다.

 

/etc/shadow 파일 또한 chang 사용자의 내용인것으로 보아 newuser 정보가 정상적으로 제거되었습니다.

 

/home 홈 디렉터리와 mail 파일은 제거 되지 않았습니다.

 

이를 통해 userdel 사용자명을 사용하면 /etc/passwd, /etc/shadow에 생성된 사용자 정보는 사라지지만

홈디렉터리와 mail 파일은 제거되지 않는것을 확인 할 수 있습니다.

여기서 저희는 옵션 하나를 사용하면 홈디렉터리와 mail 파일도 한번에 제거 할 수 있습니다.

우선 홈디렉터리와 메일 파일을 직접 지운후 newuser 사용자를 다시 생성하겠습니다.

 

 

 

정상적으로 모든 정보들이 제거되는것을 확인 할 수 있었습니다.

 

생성자와 그룹의 생성 및 제거에 대해 공부 해보았습니다. 다음 시간에는 권한에 대해 공부해보도록 하겠습니다.

 

 

다음 내용

Linux - 권한(permission)(1)

 

 

 

'Linux' 카테고리의 다른 글

Linux - 권한(permission)(2)  (0) 2021.08.01
Linux - 권한(permission)(1)  (0) 2021.07.31
리눅스 - 리다이렉션(redirection)  (0) 2021.07.28
리눅스 - MAC Time  (0) 2021.07.25
Linux - 디렉터리 & 파일(3)  (0) 2021.07.23