sudo를 통해 특정 Bash 스크립트에만 사용자 권한을 부여할 수 있습니까? [복사]

sudo를 통해 특정 Bash 스크립트에만 사용자 권한을 부여할 수 있습니까? [복사]

저는 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.

인용하다

관련 정보