2017-02-08 18 views
0

linuxのコマンドrmを許可しないスクリプトを作成することはできますか?linuxのコマンドrmを許可しないスクリプトを作成することはできますか?

+0

あなたは、特定のユーザーのために意味ですか? –

+0

はsudoでも可能です –

+2

forbidding rmコマンドが可能かもしれませんが、ユーザは 'File.unlink()'を呼び出すrubyスクリプトを実行することができます。 これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)だと思います。あなたが直面している実際の問題は何ですか? – ymonad

答えて

1

コマンドラインを模倣する独自のシェルを作成し、rmコマンド以外のすべての通常の入力を実際のコマンドラインに送信することができます。

より洗練されたソリューションがあれば、私は驚かないでしょう。

あなたは .bashrc

alias rm='rm -i' 

これはあなたがrm -f

を実行しない限り、あなたはファイルをRMたびに確認するように強制されますにしている場合、エイリアスを追加することができ

+0

実際にはありません。私が見ることができるところでは、これが唯一の方法です。ユーザーがこのシェルで実行できるようにするには、非常に制限する必要があります。例えば、コンパイラへのアクセスはありません。もちろん、暗黙的にコマンドを実行できる他のシェルやプログラムへのアクセスはありません。実際、これはあなたが非常に限定された量の機能を提供するシェルになります。sudoを使って実行されたコマンドがこれらのセキュリティ制限に違反していないことを確認している限り、sudoを許可することができます。 – user1934428

1

このようなあなた別名:

alias rm='echo "command rm is forbidden"' 

これはrmコマンドを禁止します

エイリアスは、入力ミスを防止するだけであることに注意してください。あなたが本当にユーザーがrmコマンドを実行するには、root権限を持つようにしたい場合はいない、システムのセキュリティは、固定:

$which rm 
-rwxr-xr-x 1 root root 64424 Jan 20 22:46 /bin/rm 
$sudo chomd 744 /bin/rm 

rmコマンドを実行するには、rootであることをユーザーに強制すること。

技術的にはそこに根が何かを行うことができますので、あなたは、あなたのシステム上のファイルを削除するには、ルートを無効にすることはできませんが、ユーザーはsudoを通じて特権を獲得した場合(ルート実際のユーザーされていないが、一時的に特権を得ます) LshellはINIファイルで構成された

このようにあなたが行うことができ、特定のユーザーのためにsudoの設定ファイル経由でも須藤によって実行されているから check this post

+0

これはsudoでも動作しますか? –

+0

あなたは 'sudo'(root権限を得るでしょう)でも' rm'を実行することを禁止したいのですか? – armnotstrong

+0

@xxアップデート – armnotstrong

0

を特定のコマンドを無効にする方法があります。デフォルトでは、許可されたコマンドのホワイトリストが保持されますが、ユーザーが特定のコマンドを使用できないように簡単に設定できます。

この設定(デフォルトconfの/etc/lshell.conf)がMKDIRを使用してからユーザーのfooを禁止:

[foo] 
allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env'] 
関連する問題