본문 바로가기
프로그래밍/리눅스

리눅스(Linux) 사용자(User)와 사용자 그룹(User Group) 예제

by bantomak 2025. 1. 28.
반응형

사용자 추가 및 삭제

사용자부터 추가하고 삭제해 보자. adduser 명령어는 다음과 같이 사용한다.

$ adduser [option] [username]

사용법은 간단하다. 추가하려는 사용자 이름을 adduser 명령어 뒤에 입력한다. 자주 사용하는 옵션은 다음과 같다.

  • --home : 사용자의 홈 디렉터리를 지정한다.
  • --shell : 사용자의 로그인 셸을 지정한다.
  • --ingroup : 사용자를 지정한 사용자 그룹에 추가한다.

adduser를 사용해서 유저를 추가했다.
passwd와 group 파일에 새로 등록한 유저가 조회되는 것을 확인할 수 있다.

 

사용자를 삭제하는 명령어에는 deluser와 userdel이 있는데 여기서는 deluser를 사용하도록 하자.

$ deluser [option] [username]
  • --remove-home : 사용자의 홈 디렉터리까지 삭제한다.
  • --remove-all-files : 사용자의 홈 디렉터리를 포함해 사용자 파일을 모두 삭제한다.

위에서 생성한 사용자를 제거해보자.

$ sudo deluser --remove-home [username]

제거한 이후에는 passwd와 group 파일에서 조회되지 않는다.

사용자 그룹 추가하기

이번에는 사용자 그룹을 추가해 보자. 그룹을 추가하는 명령어 addgroup, 그룹을 삭제하는 명령어 delgroup이다. 사용자를 추가할 때와 동일하게 사용하면 된다.

$ addgorup [group_name]
$ delgroup [group_name]

사용자 그룹 추가
사용자 그룹 제거

실습용 사용자와 사용자 그룹 추가하기

adduser 명령어에서 --ingroup 옵션은 추가하는 사용자를 해당 사용자 그룹에 포함하라는 의미이다. 사용자 그룹을 추가할 때는 옵션을 지정할 필요가 없지만, 그룹에 사용자를 추가할 때는 --ingroup 옵션으로 사용자 그룹을 지정한다. adduser 명령어를 실행하면 사용자의 비밀번호를 설정하라고 나오는데 위에서 추가했던 것처럼 각자 적절한 값으로 넣어주자.

$ sudo addgroup animals
$ sudo adduser horse --ingroup animals
$ sudo adduser tiger --ingroup animals

$ sudo addgroup fruits
$ sudo adduser apple --ingroup fruits
$ sudo adduser orange --ingroup fruits

/etc/passwd 조회
/etc/group 조회

셸 사용자 전환하기

앞에서 추가한 사용자를 이용해 su 명령어로 사용자를 전환해 보자.

$ su [username]

ubuntu에서 horse로 사용자 이름이 변경된 것을 확인할 수 있다. 이때는 해당 사용자의 비밀번호를 입력해야 한다.

사용자가 변경된 상태에서 셸을 종료하면 이전 사용자로 복귀할 수 있다.

$ exit

이번에는 su 명령어에 - 옵션을 넣어보자. 새로운 사용자 앞에 - 옵션을 붙여 su 명령어를 실행한다. 사용자 앞에 - 옵션을 입력하면 마치 새로운 사용자가 셸에 로그인한 것처럼 작업 디렉터리와 환경변수가 새로운 사용자의 것으로 변경된다.

$ su - [username]

이번에는 -c 옵션을 넣어서 실행해 보자. su 명령어에 -c를 붙이면 셸은 바뀌지 않고 그 뒤에 오는 명령이 새로운 사용자 권한으로 실행되고 끝난다. -c 옵션으로 whoami까지 실행하면 현재 실행되는 명령이 어느 사용자의 권한으로 실행되는지 확인할 수 있다.

$ su [username] -c [command]

horse 사용자 권한으로 /tmp/horses_file을 생성해 보자. 빈 파일을 생성하는 touch 명령어를 사용한다. -c 옵션 뒤에 오는 빈칸이 포함된 명령을 입력할 때는 이른 하나의 인자로 처리할 수 있게 큰따옴표("")로 묶어야 한다.

$ su horse -c "touch /tmp/horses_file"

horse 사용자 권한으로 추가한 파일을 한번 다른 사용자로 제거해 보도록 하자. 파일 제거에는 rm 명령어를 사용한다.

$ rm /tmp/horses_file

해당 명령에 권한이 없어서 파일을 제거하지 못한다. 이는 해당 파일을 생성한 horse 사용자의 권한으로 제거해야 한다. 아래의 명령어로 제거해 보자.

생성했던 파일이 제거되었다.

사용자 비밀번호 변경하기

로그인할 때나 su 명령어를 사용할 때 비밀번호를 입력한다. 이번에는 사용자의 비밀번호를 변경해 보자.

$ passwd [option] [username]

형식에서 사용자 이름을 생략하면 현재 로그인한 사용자의 비밀번호를 변경한다. 사용자 이름에 일반 사용자 이름을 입력하면 해당 사용자의 비밀번호를 변경한다. 이때 명령은 root 사용자의 권한으로 실행해야 한다.

 

  • -d : 비밀번호 제거
  • -e : 비밀번호를 만료시켜 다음 로그인할 때 새 비밀번호를 설정하도록 강제한다.
  • -l : 사용자를 잠가서 로그인하지 못하게 한다.
  • -u : 사용자 잠금을 해제한다.
  • -x DAYS : 비밀번호의 최대 사용 시간을 일 단위로 설정한다.
  • -n DAYS : 비밀번호를 변경하는 최소 기간을 일단위로 설정한다.
  • -w DAYS : 사용자에게 비밀번호 만료를 며칠 전에 경고할지 설정한다.
$ su username
$ password <- 해당 사용자의 비밀번호 입력

현재 사용자인 pig에서 passwd 명령어를 옵션 없이 실행하면 된다. 현재 비밀번호를 확인한 후 새 비밀번호를 입력하면 된다. 새 비밀번호 확인까지 성공하면 비밀번호가 변경된다.

$ passwd

이번에는 root 사용자로 전환해 다른 사용자의 비밀번호를 변경해 보자. root 사용자 권한으로 단일 명령을 내릴 때는 sudo 명령어를 사용하는 것이 편하다. 하지만 root 사용자 권한으로 여러 명령을 내려야 한다면 su 명령어로 사용자를 전환해서 명령을 내리는 게 편하다. 하지만 su 명령어를 사용해 root 사용자로 전환하려면 root 사용자의 비밀번호를 입력해야 한다. 그런데 앞에서 root 사용자의 비밀번호를 설정한 적이 없다. 혹은 root 사용자의 비밀번호를 알지 못하는 경우도 있을 것이다. 이때는 sudo 명령어를 사용해서 실행하면 된다.

sudo 명령어는 현재 사용자의 비밀번호만 알면 실행이 가능하기 때문이다.

$ sudo su

root 사용자로 전환됐으므로 이 셸에서 입력하는 모든 명령은 root 사용자의 권한으로 실행이 된다. horse 사용자의 비밀번호를 변경해 보자. root 사용자의 권한으로 비밀번호를 변경하기 때문에 현재 비밀번호를 물어보지 않고 새로운 비밀번호 설정이 가능하다.

$ passwd [username]

함께 읽으면 좋은 글

 

리눅스 사용자(User)와 사용자 그룹(User Group)

사용자리눅스는 여러 사용자가 동시에 로그인할 수 있는 멀티 유저 시스템(multi-user system)이다. 여기에서 '사용자'는 사용하는 사람이 아니라 사용자(user)라는 이름의 '계정(account)'을 의미한다.

jettstream.tistory.com

댓글