13

ユーザー特権 (root ではない) プロセスが新しいプロセスを user として起動するようにしますnobodysetuid-1 EPERMonで失敗する直接呼び出しを試みましたUbuntu 8.04

#include <sys/types.h>
#include <unistd.h>

int main() { 
       setuid(65534);
       while (1);
       return 0;
}

代わりにこれを行うにはどうすればよいですか?

4

5 に答える 5

18

システム管理者からの支援と多くの信頼必要になります。通常のユーザーは、選択した実行可能ファイルを他のユーザーに代わって実行することはできません。

彼女はあなたのアプリケーションを/etc/sudoers適切な設定でに追加するかもしれませんsudo -u nobody. これは、スクリプトとバイナリ実行可能ファイルの両方で機能します。

別のオプションは、彼女があなたchown nobodychmod +sバイナリ実行可能ファイルに対して行うことであり、あなたはそれを直接実行できます。このタスクは、実行可能ファイルが変更されるたびに繰り返す必要があります。

これは、単に実行する小さなヘルパー実行可能ファイルを作成する場合、スクリプトでも機能しますexec("/home/you/bin/your-application")。この実行可能ファイルは suid-nobody にすることができ (上記を参照)、自由に変更できますyour-application

于 2008-09-15T21:02:26.190 に答える
1

私の知る限り、root であるか、sudo を設定してユーザーの切り替えを許可しない限り、それはできません。または、実行可能ファイルに suid ビットを設定し、だれにも所有させないようにすることもできます。しかし、それには root アクセスも必要です。

于 2008-09-15T20:57:34.313 に答える
0

今日、LWN を読んでいるときにsetuid-sandboxプロジェクトに出くわしました。これは、私が探している適切な方法を実行します。

于 2013-02-15T01:38:34.717 に答える
0

califeの代替sudoです。

Calife は、UNIX システム管理者が root パスワードを与えずに自分のマシンで root (または別のユーザー) になることを可能にする小さなプログラムです。

于 2008-09-15T21:15:52.740 に答える
0

「nobody」ユーザーはまだユーザーです。プログラムを nobody として実行する理由が何であるかはわかりません。追加のセキュリティを追加するつもりはありません。他の問題に心を開いてしまう可能性が高くなります。

ヘルパー アプリケーションを使用するというスクワッドの推奨に従います。

于 2008-09-15T21:21:08.780 に答える