반응형

리눅스 이용시 다른 계정으로 명령어를 실행해야하는 경우가 빈번하게 있습니다.

 

이런겨우 su, ssh, sudo 등의 방법이 있는데 저는 sudo를 선호합니다. 이유는 비밀번호를 별도로 사용하지 않을 수 있도록 설정이 가능하기 때문입니다.

 

sudo에 여러가지 기능이 있지만, 일단 user1이 user2 의 권한으로 /abc/def 의 rus.sh 명령어를 실행하는 방법을 알아 보도록 하겠습니다.

 

 

1. root 계정으로 visudo 명령어를 실행하면 sudo 관련 설정이 나옵니다. 여기서 아래 구문을 추가하면 원하는 결과를 얻을 수 있습니다.

 

1
user1    ALL=(user2) NOPASSWD: /abc/def/run.sh

 

 

2. visudo에서 :wq 로 저장하고 닫습니다.

 

3. user1 계정으로 로그인 후 아래 명령어를 실행하면 user2 의 권한으로 /abc/def 의 run.sh 명령어를 실행하게 됩니다.

 

1
sudo -u user2 /abc/def/run.sh

 

------ 아래는 sudo 설정에 관한 참고자료 입니다.

 

 

접근권한 제어

 

1
<user_alias>     <host_alias> = (<runas_alias><cmnd_alias>

 

 

User Alias

 

1
2
3
User_Alias    <name> =  < %LDAP GROUP> and/or < %SYSTEM GROUP > and/or < USER >
#예시
User_Alias     ADMIN =  %admin, %root, andrina
 

 

Host Alias

 

1
2
3
Host_Alias    <name> = < MACHINE or *Pattern*>
#예시
Host_Alias SERVERS = 192.168.1.1, server*

 

 

Runas Alias

 

1
2
3
Runas_Alias    <name> = < %GROUP>
#예시
MAILERS = %mailman, %postfix, cyrus

 

Cmnd Alias

 

1
2
3
4
5
Cmnd_Alias     <name> = <full path to command/script>
#
Cmnd_Alias MAIL = /usr/bin/cyrus/tools/amsmailtool, /usr/bin/cyrus/tools/mkimap, \
            /usr/sbin/postfix-watch, /usr/sbin/postfix, \
            /usr/bin/cyrus/bin/ctl_cyrusdb
 

 

** sudo 이용시 환경변수가 달라서 문제가 발생하는 경우에 아래 내용을 참고하세요.

 

1
2
3
4
#PATH 환경변수 유지
Defaults env_keep=PATH
#PATH 특적사용자 환경변수 유지
Defaults:사용자 env_keep=PATH

 

반응형

+ Recent posts