저는 Ubuntu 16.04.3의 관리자입니다.
이 시스템에는 많은 사용자가 있으며 그들은 모두 sudoers 목록에 있습니다. 다음과 같이 구성이 가능한지 궁금합니다.
각 사용자를 위한 Bash 스크립트를 만들고 싶습니다. 각 사용자는 이 스크립트를 실행하는 것 외에는 아무것도 할 수 없습니다.
어쨌든 각 사용자는 자신이 원하는 것이 무엇인지 말해 줄 수 있으며 이를 Bash 스크립트에 넣을 것입니다. 로그인하면 이 스크립트를 실행하는 것 외에는 아무것도 할 수 없습니다.
답변1
기본 설정
다음과 같이 스크립트를 설정할 수 있습니다.
$ cat /usr/local/bin/user1.bash
#!/bin/bash
whoami
다음과 같은 파일을 추가하십시오 /etc/sudoers.d
.
$ cat /etc/sudoers.d/users
user1 ALL = (ALL) NOPASSWD: /usr/local/bin/user1.bash
user2 ALL = (ALL) NOPASSWD: /usr/local/bin/user2.bash
user3 ALL = (ALL) NOPASSWD: /usr/local/bin/user3.bash
예제 실행
이제 로그인하면 user1
:
$ su - user1
$ sudo -l
Matching Defaults entries for user1 on centos7:
always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user1 may run the following commands on centos7:
(ALL) NOPASSWD: /usr/local/bin/user1.bash
이 사용자는 1개의 명령만 실행할 수 있음을 알 수 있습니다 user1.bash
. 우리가 그것을 실행한다면. 이 사용자가 스크립트를 실행할 수 있음을 확인할 수 있습니다.
$ sudo /usr/local/bin/user1.bash
root
하지만 다른 것은 실행할 수 없습니다.
$ sudo whoami
[sudo] password for user1:
Sorry, user user1 is not allowed to execute '/bin/whoami' as root on centos7.