![sudo를 통해 특정 Bash 스크립트에만 사용자 권한을 부여할 수 있습니까? [복사]](https://linux55.com/image/143507/sudo%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%ED%8A%B9%EC%A0%95%20Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EB%A7%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EA%B6%8C%ED%95%9C%EC%9D%84%20%EB%B6%80%EC%97%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
저는 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.