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


14

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

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

3
sudoの使用を特定のコマンドに制限することはできますが、これには注意が必要で、ある程度の信頼が必要です。ユーザーを信頼しない場合は、sudoアクセスを許可することはお勧めできません。それは彼らにルート特権を与えるか、または彼らにルート特権を得るために攻撃するための集中的なアプリを与えます。誰かに実行を許可することsudo bashは、ほとんどの点でrootパスワードを持つことと同じです。sudo bashシェル彼らは、任意のadminコマンドを実行することができ、等の削除ユーザーとディレクトリを、インストールまたは削除のソフトウェア
ポール・

@Paul私はこれのためのより良い実用的なオプションを提案できますか?

まず、これはスタックオーバーフローのトピックから外れています。尋ねるより良い場所は、スーパーユーザー、またはaskubuntu、またはlinux&unixを含みます。まず、tomcに何を許可するかを正確に把握します。tomcは_____を許可されるべきですが、________は許可されません。その後尋ねます。Sudoは、root(admin)privを必要とするコマンド用です。rootとして実行しなくても、bashをすでに実行できます。
Paul

回答:


18

あなたはこれを間違った方法で行っているかもしれません。ユーザーに「制限付き」の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と同じように機能しますが、シェルエスケープなどを処理するように設計されています。


7
これらの行はどちらも安全ではありません。おっしゃるように、vim任意のシェルコマンドを実行できます。そして、2行目はおそらくless /var/log/myapp/../../../etc/shadow!私の実験によると、 sudoを安全に使用するのは難しいです。しかし、*sを避けてsudoedit代わりに使用できるvim場合は、大丈夫かもしれません。
joeytwiddle 2016

避ける*だけでは十分ではありません!ユーザーlessとしてrootログインしたら、と入力してみてください!tail /var/log/secure。どうですか?NOEXECタグを調べます。しかし、@ joeytwiddleのメッセージを心に留めてください。sudoの安全性は確かに難しいです。
Bruno Bronosky、2018年

3

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:~$ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.