배포판 별로 조금씩 명령어의 기본 설정이 다르던데, 우선 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 |