問題タブ [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.
c++ - setuid で git 'post-receive' フックを実行すると失敗する
post-receive フックを sudo として実行する必要がある git リポジトリがあります。これをテストするためにコンパイルしたバイナリは次のようになります。
はのgeteuid()
所有者 ID を取得し、post-receive
setuid を試みます。これを任意のユーザー(スーパーユーザーを含む)で実行すると、スクリプトがルートとして正しく実行されます。ただし、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)
linux - Linux ID と setuid/setgid
実行中のプロセスの実際の有効で保存された UID と GID を確認する簡単な方法はありますか?
linux - Linux ID no_squash_root
Linux の 'id' コマンドは、プロセスが属する groups= について報告します。これはいつ、どのように記入されますか?
私は suid/sgid プログラムを書いていますが、私のプロセスではグループが埋められないようで、おそらく偶然かもしれませんが、nfs マウントされたファイル システムに関する権限も正しく機能しません (ちなみに、 no_root_squash で遊んだことがありますが、役に立ちませんでした)
c - setuid でより低い特権レベルにドロップする適切な方法は何ですか?
ポート < 1024 にバインドするプログラムを C で作成しています。その後、非ルート権限で実行したいと考えています。
setuid() を呼び出す必要があることはわかっていますが、引数は何ですか? UID はシステムによって異なります。
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
これに関する任意の助けをいただければ幸いです
python - 長時間実行されている Python プロセスとは別のユーザーとして子プロセスを実行する
特定のイベントが発生したときにサブプロセスを使用して新しい子プロセスを生成する、長時間実行されるデーモン化された Python プロセスがあります。長期実行プロセスは、スーパー ユーザー権限を持つユーザーによって開始されます。親プロセスのスーパーユーザー権限を保持しながら、別のユーザー(たとえば、「nobody」)として実行するために生成される子プロセスが必要です。
私は現在使用しています
しかし、これは重いようで、きれいに死ぬことはありません。
su を使用する代わりにプログラムでこれを達成する方法はありますか? 私は os.set*uid メソッドを見ていますが、Python std ライブラリのドキュメントはその領域ではかなりまばらです。
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 です。
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/sudoers
sudo -u
python - ファイルがPythonでsetuidrootであるかどうかを確認します
Pythonでファイルにsetuidビットがあるかどうかを確認しようとしています。
stat docは関数について言及していますが、実際にsetuidビットを読み取るのではなく、S_ISUID
でのみ機能します。os.chmod()
も記載されていますS_IMODE
が、どう解釈すればいいのかわかりません。
setuidルートビットとしてファイルが設定されているかどうかを簡単に確認するにはどうすればよいですか?
c - ルートからsetuid()を使用してユーザーになり、後で再びルートになる可能性がある方法は?
私は安全なことをしようとしています、そしてそれがそれらを必要としないときにその特権を落とすためにrootとして実行する必要があるプログラムを持っています。chmod
これは、SUIDビットを使用してバイナリをrootに属する場合にうまく機能します。これは、UID =一部のユーザー、EUID = rootであるため、とを使用seteuid(0)
しseteuid(getuid())
て管理者権限をそれぞれ上げたり下げたりできます。
しかしsudo
、SUIDを設定する代わりにを使用すると、UID == EUID == 0になるため、呼び出しseteuid(getuid())
ても効果はありません。UID
また、ランダムなユーザーから値を変更することはできません。mansetuid()
ページには、rootとして実行されているプログラムから呼び出された場合、特権が永久に失われ、元に戻される見込みがないことが明記されています。
では、を使用して実行すると、プログラムの特権が一時的に失われるようにするにはどうすればよいsudo
ですか?