배포판 별로 조금씩 명령어의 기본 설정이 다르던데, 우선 debian 기준으로 사용자/그룹 추가 방법과 그룹 지정방법을 정리해본다.


1. 일반 사용자 추가

데비안에서는 옵션을 지정하지 않아도 비밀번호까지 한방에 지정할 수 있기 때문에 adduser 명령어가 살짝 편하다. 옵션 하나 / 명령어 하나 덜 입력하는게 뭐 그리 대단한건 아니지만서도...

$ sudo adduser 신규사용자계정
Adding user `신규사용자계정' ...
Adding new group `신규사용자계정' (1008) ...
Adding new user `신규사용자계정' (1003) with group `신규사용자계정' ...
Creating home directory `/home/신규사용자계정' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:                        # 비밀번호 지정
Retype new UNIX password:                       # 비밀번호 재확인
passwd: password updated successfully
Changing the user information for testtest
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

신규사용자계정과 동일한 그룹이 하나 생성되고 주 그룹으로 지정되는 점에 주목.. 파일/디렉토리 마스크 관리를 대충 해도 덜 털리는 장점이 있다.



2. 시스템 사용자 추가

시스템 사용자라고 무언가 특별한 것은 아니고, UID를 일정번호 이하(500 또는 1000번 이하)로 지정하고, 로긴 시 출력되는 메시지 등 소소한 관리상의 차이가 있는 유저이다. --system 옵션을 줘서 생성

$ sudo adduser --system 신규시스템사용자
Adding system user `신규시스템사용자' (UID 111) ...
Adding new user `신규시스템사용자' (UID 111) with group `nogroup' ...
Creating home directory `/home/systest' ...

새 그룹을 만들지는 않고, nogroup 그룹에 속하게 된다. 홈 디렉토리는 만들어지고, 쉘 로그인이 금지되며 따라서 패스워드를 생성하지 않는다.

특정 서비스/프로그램에 전용 사용자명을 붙여서 실행하는 것이 관리 상 편한 경우가 있는데, 서비스 전용 사용자로서 시스템 사용자를 추가하면 딱 좋다. 불필요한 접근 권한과 기능을 배제해서 보안성을 높이자는 취지이다.


쉘 로그인을 금지 뿐 아니라 홈 디렉토리를 프로그램의 설치/설정/데이터 디렉토리로 변경하기도 한다. 예를들어 torrent daemon인 deluged / transmission-bt 의 경우 torrent 다운로드 디렉토리를 홈으로 지정하면 깔끔하니 좋다. /home/debian-deluged 디렉토리가 무슨 의미가 있겠는가 말이다. 아예 홈 디렉토리를 지정하지 않는 것도 한 방법이나, 그렇게 써본적은 없다.

$ sudo adduser --system --home /mnt/torrent --group deluged
Warning: The home dir /mnt/torrent you specified already exists.
Adding system user `deluged' (UID 111) ...
Adding new group `deluged' (GID 116) ...
Adding new user `deluged' (UID 111) with group `deluged' ...
The home directory `/mnt/torrent' already exists.  Not copying from `/etc/skel'.
adduser: Warning: The home directory `/mnt/torrent' does not belong to the user you are currently creating.

deluged 라는 토렌트 전용 사용자를 추가했는데, 시스템 사용자로 지정(--system)하여 쉘 로그인이 막혔다. 추가로 /mnt/torrent 디렉토리를 홈(--home /mnt/torrent)으로 지정했고, 사용자명(deluged)과 동일한 그룹을 생성(--group)했다.

마지막에 방금 홈으로 지정한 /mnt/torrent 디렉토리의 주인이 deluged가 아니라고 경고가 뜬다. 미리 만들어놓은 디렉토리라서 당연하다. 소유권을 deluged로 변경해주자.

$ sudo chown deluged:deluged /mnt/torrent -R



3. 일반 사용자로 시스템 사용자 흉내내기

아래 처럼 일반 사용자를 생성해서 쓰기도 한다. 예를들면 삼바 접속 전용 계정이라던지.. 일반적으로는 삼바 접속 전용 계정을 만드는 것이 좀 이상한 짓이지만, 내 경우엔 동영상 재생 전용 셋탑박스가 서버에 접속하는 용도로 하나 만들어주었다. 괜히 필요도 없는 폴더를 TV 리모콘으로 옮겨다닐 필요는 없잖아.

$ sudo adduser --shell /bin/false --no-create-home --ingroup videor shield
Adding user `shield' ...
Adding new user `shield' (1002) with group `videor' ...
Not creating home directory `/home/shield'.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for shield
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

$ id shield
uid=1002(shield) gid=1007(videor) groups=1007(videor)

시스템 유저와 메시지 수신을 제외하고 똑같이 만들 수 있으나, 살짝 옵션을 바꿔보았다. 로그인이 금지(--shell /bin/false)된 것은 시스템 유저의 예시와 동일하다. 이번에는 홈 디렉토리를 아예 만들지 않았다.(--no-create-home) 그리고, 신규 사용자(shield)를 이미 존재하는 videor 그룹에 넣어버렸다. (--ingroup videor) 이 때, 2차 그룹이 아닌 1차 그룹으로 지정된 것을 알 수 있다. (id shield)

로그인 금지 시 /bin/false 외에도 /usr/sbin/nologin을 쓰기도 한다. 뭐가 다른지는 모르지만, 적어도 쉘 로그인이 금지되는 주 목적은 동일하다.



4. 사용자 삭제

adduser로 사용자를 만들었으니 deluser로 삭제해야지.

$ sudo deluser 삭제할사용자

이 때 삭제된 사용자의 기본 group에 멤버가 더이상 없을 경우 그룹도 함께 삭제된다.


홈 디렉토리 까지 지우려면 --remove-home 추가, 홈 디렉토리 안에 있는 내용물도 싸그리 날아간다. 백업 옵션도 있는 듯... 그러나 써본적은 없고, 관심도 없다.

$ sudo deluser --remove-home 삭제할사용자



5. 사용자를 2차 그룹에 추가

위에서 생성한 shield를 videor 외에 musicr 그룹에도 추가하고 싶을 경우 아주 간단히 해결할 수 있다.

$ sudo adduser shield musicr                    : adduser 사용자명 그룹명
Adding user `shield' to group `musicr' ...

Adding user shield to group musicr
Done.

$ id shield
uid=1002(shield) gid=1007(videor) groups=1007(videor),1006(musicr)

아무 옵션 없이 "adduser 사용자명 그룹명" 으로 끝!


그런데, 실은 내 동영상 전용 셋탑박스(shield)는 musicr 그룹에 들어갈 필요가 없다. 아래처럼 취소

$ sudo deluser shield musicr
Removing user `shield' from group `musicr' ...
Done.

$ id shield
uid=1002(shield) gid=1007(videor) groups=1007(videor)


음.. 또 기억해야할 뭐가 있었던가?
나도 그렇고 읽는이도 그렇고 이제 슬 지겨울텐데, 그룹 생성/삭제는 addgroup, delgroup을 쓰면 된다는 말로 글을 마무리해본다.




'리눅스공통' 카테고리의 다른 글

Putty Color Scheme 쉽게 변경하기  (0) 2020.06.30
사용자 관리  (0) 2020.06.26
vi 에디터 방향키, 백스페이스 고치기  (0) 2017.07.25
SSH 보안설정  (0) 2017.07.22
우분투 리눅스 Nvidia Graphic Card Driver 설치  (0) 2017.07.18