web-dev-qa-db-ja.com

選択的なコマンドを実行するユーザーを制限する(Linux)

選択したコマンドのみを実行するようにユーザーを制限するにはどうすればよいですか。 tomcグループにユーザーtomcがあります。このユーザーをSudoユーザーにしてから、bashを制限する必要があります。 /etc/sudoersファイルで次のコードを試しましたが、ユーザーがmkdirrmなどの他のコマンドを実行できるため、機能しません

%tomc ALL=/bin/bash,/usr/bin/vim /*
14
newbie17

あなたはこれを間違った方法で行っているかもしれません。ユーザーに「制限付き」のbashシェルを与える代わりに、rootとして実行するために必要なコマンドへのアクセスのみをユーザーに与える必要があります。たとえば、sudoersファイルで:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

ユーザーがrootとしてvimを実行できるように注意してください。 Vimには、シェルへのエスケープやvim内からコマンドを実行する機能など、多くの機能が組み込まれています。ディストリビューションによっては、sudoeditが利用できる場合があります。これは通常のVimと同じように機能しますが、シェルエスケープなどを処理するように設計されています。

18
mtak

DSM 6を実行しているSynology Diskstationでは、管理ユーザーのみが一貫してsshを実行できます(管理者以外のユーザーは/ etc/passwdに/ sbin/nologinとしてシェルを持っています-これを/ bin/shに設定して一時的にsshを許可できますが、再起動時に/ etc/passwdファイルがリセットされます)。このため、アカウントを実行するためにのみ存在するアカウントには、ある種のSudo制限が必要です。/sbin/poweroff。/etc/sudoersの次の行は私のために働きました:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

変換:すべてのコマンドを禁止し、必要なコマンドのみを許可します(この場合はパスワードを要求しません)。

この構成では、Sudoはパスワードを要求し、次にホワイトリストに登録されているもの以外のコマンドを要求します。

guestx@ds:~$ Sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
3
robm