0

再起動後にSUIDビットが無視されるという問題があります。この問題は、SUIDビットについての私の理解に非常によくある可能性があります。それらが実行する機能のために、ディレクトリ内のpythonファイルのパーミッションを上げる必要があります。これは私がやったことです。

sudo find dir -type f -exec chmod u + s {} \; これは、パスワードを提供するためにpexpectを使用してPythonスクリプトで実行されます。しかし、コマンドラインから実行した場合も同じ問題が発生します。

次にls-l-hを実行すると、次のようになります(再起動後にこれを実行すると、同じ出力が得られます)

-rwsrwxrwx1ルートルート。。。filename.py

-rwsrwxrwx1ルートルート。。。filename.py〜

-rwSr--r--1ユーザーuser。。。filename.pyc

セッションでのSUIDの設定は機能しますが、再起動が発生するとすぐにSUIDビットはまだ存在しますが、無視されているようです。ここで、chmodを介してSUIDビットを設定するということは、ユーザーがrootの昇格された権限でプログラムを実行し、再起動してもchmoddingが持続することを意味すると思いました。

私の質問は、SUIDビットを再起動後も存続させて無視しないようにする方法はありますか?

これに関するどんな助けも素晴らしいでしょう

乾杯

4

1 に答える 1

1

-rwsrwxrwx 1 ルート ルート . . . ファイル名.py

本当に?これがファイアウォールで保護されたワークステーションであり、他の誰も物理的にアクセスできず、あなたが唯一の物理ユーザーである場合でも、これをファイルシステムに放置するのは非常に悪い考えです。

sudo find dir -type f -exec chmod u+s {} \;

これもそうです。

pexpect を使用してパスワードを提供する

...ルートパスワードが非ルートユーザーが読み取り可能なクリアテキストファイルに保存されていることを意味しますか?

私はあなたの分析をとても疑っています。私は setuid プログラムを定期的に使用してきました (Python スクリプトではありませんが、他の setuid スクリプトと同じように動作することを期待しますが、setuid として機能する理由は説明しません)が、このような問題に遭遇することはありません。再起動で何が変わると思いますか?あなたの投稿によると、アクセス許可は変更されていません-したがって、ルートとしての実行が実際に停止した場合、これは、これらのスクリプトを別のユーザーとして実行できるかどうかを他の何かが追跡していることを意味します-そして、生き残れない方法でそうしていますリブート - 物語はますます信じられないものになっています。

私が言及したすべての問題を解決し、おそらくあなたも修正する方法は、setuid ビットを削除し、sudo を介してプログラムを呼び出すことです。

于 2013-03-12T16:26:59.093 に答える