Codesigner

[Linux] 리눅스(Linux) 사용자 및 그룹 관리 본문

Linux

[Linux] 리눅스(Linux) 사용자 및 그룹 관리

eunsukimme 2019. 6. 17. 23:02

저번 포스팅에서는 리눅스에서 프로세스를 관리하고 환경 변수에 접근하는 방법에 대해서 간단하게 살펴보았다. 이번 포스팅에서는 리눅스에서 사용자 및 그룹을 관리하고 패키지 매니저를 사용하는 방법에 대해서 알아보도록 하자

 

 

 

사용자 및 그룹 관리

리눅스에서는 시스템을 관리하는 시스템 관리자가 존재한다. 시스템 관리자는 가장 높은 수준의 접근 권한을 가진다. 루트(root) 혹은 슈퍼 유저(super user) 등으로 불리며, 일반적으로 root라는 로그인 이름을 가진다. Ubuntu에서는 루트로 로그인하는 것을 권장하지 않는다. 디폴트 상태의 Ubuntu에서는 루트 로그인이 막혀있다. 물론 sudo passwd root 명령으로 루트 계정으로 로그인할 수 있도록 변경할 수 있다

 

오늘날 많은 리눅스 배포판에서는 일반 사용자가 sudo 명령을 사용하여 시스템 관리 명령을 수행할 수 있다. 또한 su - 혹은 su - root 명령으로 superuser 계정에 접속할 수 있다. 그러면 지금부터 VMware Workstation 15 Plyaer 의 Ubuntu 환경에서 새로운 사용자를 추가하고, 그룹을 관리하는 것을 실습해 보도록 하겠다. 먼저 사용자를 추가하는 명령어를 사용하기 위해 다음과 같은 명령을 실행해보자

$ sudo adduser test		// 새로운 사용자 test 를 추가한다

<그림 1> 새로운 사용자 test 를 추가하는 모습

 

새로운 사용자를 추가하기 위해선 sudo 명령을 주어야 한다. 비밀번호를 입력하면 test 란 사용자와 test 라는 새로운 그룹을 추가한다. 그리고 test 란 사용자를 해당 그룹에 추가하고, test 사용자의 홈 디렉터리를 생성한다. 마지막으로 사용할 비밀번호를 요구한다

 

<그림 2> 새로운 사용자 test 를 추가하는 모습 2

 

사용할 비밀번호를 두 번 입력하면, test 란 사용자의 추가적인 정보를 입력하라고 나온다. 이름 등의 정보를 비워두려면 그냥 Enter를 입력한다. 마지막으로 Y를 입력하여 모든 정보가 잘 입력되었음을 전달하면, 새로운 사용자 test를 추가하는 프로세스가 완료된다. sudo su - test 명령으로 사용자를 test로 전환하고 다음 명령을 실행해보자

$ sudo su - test
$ whoami
$ id

<그림 3> whoami 및 id 명령 결과

 

whoami 명령은 현재 사용자가 누구인지 출력하는 명령이다. 현재 test 사용자로 로그인 된 상태임을 알 수 있다. 또한 id 명령은 현재 사용자의 UID와 사용자가 속한 그룹들을 나열한다. test 유저는 현재 방금 생성된 test 그룹에만 속해있는 걸 확인할 수 있다. 다음으로 cat /etc/passwd 명령을 실행해보자

$ cat /etc/passwd
test@ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
.
.
.
eunsu:x:1000:1000:EUNSU KIM,,,:/home/eunsu:/bin/bash
test:x:1001:1001:Test,,,:/home/test:/bin/bash

위 명령의 결과는 등록된 사용자들에 대한 정보이다. 각 필드는 콜론(:)으로 구분되어 있으며, 앞에서부터 순서대로 사용자명, 패스워드(보안 관련 이유로 x로 표시함), 사용자 UID, 사용자 GID, 사용자 이름(정보), 홈 디렉터리, 로그인 쉘을 나타낸다. 다음으로 cat /etc/gruop 명령을 실행해보자

$ cat /etc/gruop
test@ubuntu:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,eunsu
tty:x:5:
.
.
.
eunsu:x:1000:
sambashare:x:126:eunsu
docker:x:999:eunsu
test:x:1001:

위 명령의 결과는 등록된 그룹에 대한 정보이다. 여기서도 마찬가지로 각 필드는 콜론(:)으로 구분되어 있으며, 앞에서부터 순서대로 그룹명, 비밀번호(역시 x로 표시), 그룹 GID, 그룹에 속한 사용자 이름을 나타낸다. 자, 이제 다시 eunsu 계정으로 돌아가 보도록 하자

$ sudo su - eunsu

<그림 4> sudo su eunsu 명령이 실행되지 않는 모습

 

띠용? 무언가 출력하면서 eunsu 로 계정의 전환이 이뤄지지 않는다. 메시지를 읽어보면 test 계정이 sudoers 파일에 존재하지 않기 때문이라고 한다. 터미널을 종료하고 새로운 터미널을 띄워서 sudo cat /etc/sudoers 명령으로 sudoers 파일을 확인해보자

$ sudo cat /etc/sudoers
eunsu@ubuntu:~$ sudo cat /etc/sudoers
[sudo] password for eunsu: 
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

위 파일에서는 root 계정과 amdin그룹, sudo 그룹에 속한 사람들만이 sudo 명령을 실행할 수 있다고 명시하고 있다. eunsu 계정의 경우 sudo 명령이 잘 실행되므로 sudo 그룹에 속하고 있을 것이다. id 명령으로 이를 확인해보자

 

<그림 5> eunsu 계정이 속한 그룹들

 

역시 27(sudo) 그룹에 속하고 있었다. 그렇다면 test 계정에서 sudo 명령을 실행하기 위해선 test 계정도 이 그룹에 속하게 만들면 될 것이다. 어떻게 test 계정이 sudo 그룹에 속하게 할 수 있을까? 다음과 같은 명령으로 임의의 사용자가 특정 그룹에 속하도록 만들 수 있다

$ sudo usermod -aG sudo test

위 명령은 test 계정이 sudo 그룹에 속하도록 만든다. usermod 명령은 사용자 계정의 속성을 변경한다. -aG 옵션은 명시한 그룹(sudo)에 사용자(test)를 append 한다. 위 명령을 실행하고 test 계정으로 로그인한 뒤, id 명령을 실행하여 test 계정이 속한 그룹을 나열하면 sudo 가 추가된 것을 확인할 수 있다

 

<그림 6> test 계정으로 전환한 모습

 

예상대로 27(sudo) 그룹이 추가된 것을 확인할 수 있다. 이제 test 계정도 sudo 명령을 내릴 수 있게 되었다!

 

<그림 7> test 계정에서 sudo 명령을 내리는 모습

 

 

 

Review

지금까지 리눅스에서 사용자 및 그룹을 관리하는 방법에 대해서 알아보았다. 사용자/그룹 정보 및 sudo 권한 정보를 지닌 파일들에 대해서 살펴보고 임의의 test 계정을 생성하여 sudo 권한을 부여해 보았다. 다음 포스팅에서는 리눅스에서 패키지 매니저를 다루는 방법에 대해 알아보도록 하자

 

 

Comments