選択したコマンドのみを実行するようにユーザーを制限するにはどうすればよいですか。tomcグループにユーザーtomcがあります。このユーザーをsudoユーザーにしてから、bashを制限する必要があります。私はに次のコードを試してみました/etc/sudoers
ファイルが、そのユーザーとして動作していないのような他のコマンドを実行することができますmkdir
、rm
%tomc ALL=/bin/bash,/usr/bin/vim /*
選択したコマンドのみを実行するようにユーザーを制限するにはどうすればよいですか。tomcグループにユーザーtomcがあります。このユーザーをsudoユーザーにしてから、bashを制限する必要があります。私はに次のコードを試してみました/etc/sudoers
ファイルが、そのユーザーとして動作していないのような他のコマンドを実行することができますmkdir
、rm
%tomc ALL=/bin/bash,/usr/bin/vim /*
回答:
あなたはこれを間違った方法で行っているかもしれません。ユーザーに「制限付き」の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と同じように機能しますが、シェルエスケープなどを処理するように設計されています。
vim
任意のシェルコマンドを実行できます。そして、2行目はおそらくless /var/log/myapp/../../../etc/shadow
!私の実験によると、 sudoを安全に使用するのは難しいです。しかし、*
sを避けてsudoedit
代わりに使用できるvim
場合は、大丈夫かもしれません。
*
だけでは十分ではありません!ユーザーless
としてroot
ログインしたら、と入力してみてください!tail /var/log/secure
。どうですか?NOEXEC
タグを調べます。しかし、@ joeytwiddleのメッセージを心に留めてください。sudoの安全性は確かに難しいです。
DSM 6を実行しているSynology Diskstationでは、管理ユーザーのみが一貫してsshを実行できます(非管理ユーザーは/ etc / passwdに/ sbin / nologinとしてシェルを持っています-これを/ bin / shに設定して一時的にsshを許可できますが、再起動時に/ etc / passwdファイルがリセットされます)。このため、たとえば/ sbin / poweroffを実行するためにのみ存在するアカウントには、ある種のsudo制限が必要です。/ 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:~$
sudo bash
は、ほとんどの点でrootパスワードを持つことと同じです。sudo bash
シェル彼らは、任意のadminコマンドを実行することができ、等の削除ユーザーとディレクトリを、インストールまたは削除のソフトウェア