OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 사용자 정보 관리 명령(3) - root 권한 사용하기(sudo, su)

주누다 2015. 5. 2. 13:26
반응형


root 권한 사용하기 

- root 권한을 사용할 수 있는 방법은 두 가지가 있음

첫 번째 방법

- su 명령을 사용하여 root 계정으로 전환하는 것

- 간단하기는 하지만 root 계정으로 전환하는 것이므로

  모든 권한을 가지게 되어 보안상 매우 위험한 방법

 두 번째 방법

- 일반 사용자에게 시스템 관리 작업 중 특정 작업만 수행할 수 있는 권한을 주는 것

- 'sudo' 명령으로 이와 같은 제한적인 권한 부여가 가능



sudo 권한 설정하기

- 일반 사용자가 sudo 명령으로 root 권한을 실행하려면 특정 권한을 부여받아야함.

- 이 권한은 '/etc/sudoers' 파일에 설정

- root 계정으로만 수정이 가능

- '/etc/sudoers' 파일은 vi 로 편집이 가능하나 visudo 명령을 사용할 것을 권장

- visudo 명령은 파일을 수정한 후 문법이 맞는지 확인하고 저장

- '/etc/sudoers' 파일의 설정 형식\

 * 사용자계정 호스트=명령어

 * root ALL=(ALL:ALL) ALL

==================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo cat /etc/sudoers
[sudo] password for sjw:
#
# 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"

# 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
sjw@sjw-HP-Mini-110-3500:~$ 

==================================================================

- 특정 사용자에게 특정 명령을 수행할 수 있는 권한 부여

 * user2 ALL=/sbin/useradd, /sbin/usermod

 * 명령은 절대 경로로 표시

 * 명령이 여러 개일 경우 쉼표로 구분





sudo 명령 사용하기

- 'sudo 명령'

==================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo visudo
sjw@sjw-HP-Mini-110-3500:~$ sudo which useradd
/usr/sbin/useradd
sjw@sjw-HP-Mini-110-3500:~$ sudo visudo
sjw@sjw-HP-Mini-110-3500:~$ su - user2
암호:
디렉터리 없음, 루트 디렉터리(/)로 로그인합니다
$ sudo useradd han01
[sudo] password for user2:
$ tail /etc/passwd
speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
sjw:x:1000:1000:sjw,,,:/home/sjw:/bin/bash
user2:x:1001:1001::/home/user2:
user22:x:1002:1002::/home/user22:
han01:x:1003:1003::/home/han01:
$
==================================================================


- sudo 명령 사용시 암호를 입력하는 과정을 생략하려면 '/etc/sudoers' 파일의 'NOPASSWD' 추가

 * user2 ALL=NOPASSWD:/usr/sbin/useradd, /usr/sbin/usermod


- 절대 경로 확인 꼭 필요(which 명령어 사용하면 좋음)

- 예제에서는 '/sbin/useradd' 로 되어 있어서 했더니 경로 못 찾아서.. 명령 실행 못함...





반응형