問題タブ [setuid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1078 参照

c++ - setuid で git 'post-receive' フックを実行すると失敗する

post-receive フックを sudo として実行する必要がある git リポジトリがあります。これをテストするためにコンパイルしたバイナリは次のようになります。

はのgeteuid()所有者 ID を取得し、post-receivesetuid を試みます。これを任意のユーザー(スーパーユーザーを含む)で実行すると、スクリプトがルートとして正しく実行されます。ただし、git フックによってトリガーされると、システムは uid の設定に失敗します。実行してみchmod u+s post-receive ましたが、他の構成もいくつか試しましたが、アイデアが不足しています。git がトリガーする場合を除いて、すべてのケースで機能する理由はありますか?

ところで、プラットフォーム Ubuntu Server 9.04(2.6.28-15)、git1.6.0.4、gcc バージョン 4.3.3 (Ubuntu 4.3.3-5ubuntu4)

0 投票する
3 に答える
681 参照

linux - Linux ID と setuid/setgid

実行中のプロセスの実際の有効で保存された UID と GID を確認する簡単な方法はありますか?

0 投票する
3 に答える
815 参照

linux - Linux ID no_squash_root

Linux の 'id' コマンドは、プロセスが属する groups= について報告します。これはいつ、どのように記入されますか?

私は suid/sgid プログラムを書いていますが、私のプロセスではグループが埋められないようで、おそらく偶然かもしれませんが、nfs マウントされたファイル システムに関する権限も正しく機能しません (ちなみに、 no_root_squash で遊んだことがありますが、役に立ちませんでした)

0 投票する
2 に答える
601 参照

c - setuid でより低い特権レベルにドロップする適切な方法は何ですか?

ポート < 1024 にバインドするプログラムを C で作成しています。その後、非ルート権限で実行したいと考えています。

setuid() を呼び出す必要があることはわかっていますが、引数は何ですか? UID はシステムによって異なります。

0 投票する
5 に答える
14393 参照

linux - スーパーユーザービットがオンになっているプロセスに対して valgrind を実行するにはどうすればよいですか?

私は次のようにvalgrindを実行しています:-

/usr/local/bin/valgrind "プロセス名"

実行後、次のエラーが表示されます

私のvalgrind許可は次のとおりです:- -r-sr-xr-x /usr/local/bin/valgrind

私のプロセス許可は次のとおりです: - -r-sr-xr-x "process_name"

プラットフォーム: Linux VMLINUX3 2.6.9-78.0.22.ELsmp(RHEL)

Valgrind バージョン: valgrind-3.5.0

これに関する任意の助けをいただければ幸いです

0 投票する
5 に答える
57331 参照

python - 長時間実行されている Python プロセスとは別のユーザーとして子プロセスを実行する

特定のイベントが発生したときにサブプロセスを使用して新しい子プロセスを生成する、長時間実行されるデーモン化された Python プロセスがあります。長期実行プロセスは、スーパー ユーザー権限を持つユーザーによって開始されます。親プロセスのスーパーユーザー権限を保持しながら、別のユーザー(たとえば、「nobody」)として実行するために生成される子プロセスが必要です。

私は現在使用しています

しかし、これは重いようで、きれいに死ぬことはありません。

su を使用する代わりにプログラムでこれを達成する方法はありますか? 私は os.set*uid メソッドを見ていますが、Python std ライブラリのドキュメントはその領域ではかなりまばらです。

0 投票する
1 に答える
392 参照

python - ユーザーの Linux グループ スケジューリングが setuid されたプロセスに適用されない

2.6.28-11 Linux カーネルでは、setpriority を使用して、さまざまなユーザー プロセスが受け取る CPU 時間の量にバイアスをかけています。ユーザー 1 は、ユーザー 2 の 2 倍の CPU パワーを受け取ります。Linux の setpriority を使用して、ユーザー 2 に低い優先度 (nice 値の点で高い) を割り当てました。負荷がかかっているコンピューターでシェルを介してまったく同じプログラムを実行すると、ユーザー 2 の実行にユーザー 1 の 2 倍の時間がかかります。ただし、プログラムをルートとして実行し、setuid、seteuid、setgid、setegid、および setgroups を使用してユーザー 2 になると (もう一度、ユーザー 1 がまったく同じプログラムを同じ方法で実行して、コンピューターに負荷がかかります)。 、プログラムの実行にはまったく同じ時間がかかります。ユーザー 2 のプロセスは、ユーザー 1 よりも少なくスケジュールされていませんでした。どうすればこれを回避できますか? プロセスが別のユーザーの一部であることをスケジューラが認識できるようにするには、他に何か設定する必要がありますか?

実行中のプログラムは Python です。

0 投票する
2 に答える
5858 参照

git - 別のユーザーが所有するローカル クローンを更新するための Git post receive フック

コミットが受信されたときに、マシン上のリポジトリの別のクローンが更新されるように、git post-receive フックを設定しようとしています (つまり、 を実行しますgit pull origin master)。私はリポジトリを提供するために gitosis を使用しています。gitosisそのため、受信時に更新したいリポジトリはwww-data. これを行うにはどうすればよいですか?

スクリプトについて聞いたことsetuidがありますが、これがセキュリティ リスクになるかどうかはわかりません。それがセキュリティ上のリスクでない場合、どうすればこれを行うことができますか? スクリプトを所有しwww-data、誰でも実行できるようにして、setuid ビットを有効にするようなことをすると思いますか? このスクリプトは、リポジトリを更新するだけなので、ほとんど無害だと思いますが、確認したいと思います。ありがとう!

編集:これを使用してこれを行う方法はありますsudoか? それはより安全setuidでしょうか?つまり、ユーザーが root でなくても大きな問題はないと思いますが、スクリプトを実行するsetuidには、いくつかの手順を踏まなければならないように思えます。setuid

2番目の編集:魔法と. 代わりにこれを ServerFault に投稿するべきだったのかもしれませんが、少なくとも私はこの努力から少し学びました。/etc/sudoerssudo -u

0 投票する
1 に答える
2823 参照

python - ファイルがPythonでsetuidrootであるかどうかを確認します

Pythonでファイルにsetuidビットがあるかどうかを確認しようとしています。

stat docは関数について言及していますが、実際にsetuidビットを読み取るのではなく、S_ISUIDでのみ機能します。os.chmod()も記載されていますS_IMODEが、どう解釈すればいいのかわかりません。

setuidルートビットとしてファイルが設定されているかどうかを簡単に確認するにはどうすればよいですか?

0 投票する
4 に答える
10043 参照

c - ルートからsetuid()を使用してユーザーになり、後で再びルートになる可能性がある方法は?

私は安全なことをしようとしています、そしてそれがそれらを必要としないときにその特権を落とすためにrootとして実行する必要があるプログラムを持っています。chmodこれは、SUIDビットを使用してバイナリをrootに属する場合にうまく機能します。これは、UID =一部のユーザー、EUID = rootであるため、とを使用seteuid(0)seteuid(getuid())て管理者権限をそれぞれ上げたり下げたりできます。

しかしsudo、SUIDを設定する代わりにを使用すると、UID == EUID == 0になるため、呼び出しseteuid(getuid())ても効果はありません。UIDまた、ランダムなユーザーから値を変更することはできません。mansetuid()ページには、rootとして実行されているプログラムから呼び出された場合、特権が永久に失われ、元に戻される見込みがないことが明記されています。

では、を使用して実行すると、プログラムの特権が一時的に失われるようにするにはどうすればよいsudoですか?