問題タブ [suid]

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 投票する
1 に答える
735 参照

permissions - OpenBSD で SUID ビットを設定すると、有効で保存された UID が実行可能ファイルの所有者に設定されないのはなぜですか?

Parallels for Mac のゲスト OS として OpenBSD 5.3 の新規インストールを使用しています。

驚いたことに、root が所有し、SUID ビットが設定されたバイナリ ファイルは、SUID が設定されていないかのように UID で実行されます。つまり、UID 1000 がそのようなプログラムを実行すると、プログラムは次の状態で開始されます。

状態ではありません:

予想通り。

これはなぜですか?

問題を見つけた方法に関する詳細は次のとおりです。

さまざまな Unix システムでの setuid の動作を評価するための対話型 C プログラム ( setuid_min.binとしてコンパイル) を作成しました。このプログラムは UID 1000 のホーム ディレクトリのサブディレクトリにあり、sudoコマンドを使用して所有権と SUID を変更します。次に、プログラムが実行され、uidを入力して、プロセスの実際の、有効な、保存された UID を報告します。

上記のsome_pidはsetuid_min.binプロセスの pid であることに注意してください。プログラムは、次のシェル コマンドの出力を報告することによって、実際の UID、有効な UID、および保存された UID を報告します。

my_pidはgetpid()によって報告される pidです。これが当てはまる理由についての私の唯一の推測は、OpenBSD には、setuid_min.binが存在するディレクトリの所有権/アクセス権を使用している、または権限のないユーザーがsudoでファイルのパーミッションを変更します。

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

php - C ラッパーを使用したスクリプトの setuid

このチュートリアルのような C ラッパーで root 権限を持つ php スクリプトを使用したいだけです。

ls -l :

createConfig.c :

test.php :

index.php :

しかし、ブラウザで index.php を実行すると、次のエラーが発生しました。

ありがとう

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

c - 「set-user root」プログラムからの root コマンド

「set-user root」プログラムから root コマンドを開始したいので、次の C サンプル プログラムを作成しました。

Debian 6 (64 ビット) でテストしたところ、引数として渡すと、次の場合でも"/bin/sh"常に が得られることに気付きました。ROOT SHELLargc == 2

Slackware 14 (32 ビット) では、動作が異なります。

引数として「/usr/bin/dolphin」を指定すると、別の動作もあります。
Debian では動作しません:

Slackware では の場合のみ動作するargc == 2ため、root で dolphin を起動できません。
なんで?

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

perl - Debian wheezy で suidperl を有効にする方法は?

root が所有し、setuid を持つ Perl スクリプトがあります。

このスクリプトでは、引数として渡されたファイルの所有者を変更しています。

しかし、このスクリプトを実行すると、

setuid が有効になっている場合、デフォルトで suidperl で実行されるスクリプトを誰かが教えてくれました。

しかし、私の場合はそうではないと思います。

誰でもこの問題で私を助けることができますか? Debian wheezy を使用しています。Perl のバージョンは 5.14.2 です。私は試した

しかし、うまくいきませんでした。

Perl の suid に関連する候補はありませんでした。

これは私のPerlプログラムです

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

macos - DMG を介して suid ビットが設定された OSX プログラムを配布する方法は?

小さな診断 OSX プログラム (小さなメニュー トレイ アプリ) があり、これを顧客に提供する必要があります。プログラムは dtrace を使用します。そのため、MacOS ディレクトリに、suid ビットが設定され、所有権が root:wheel に設定された補助実行可能ファイルがあります。ヘルパーの唯一の役割は、含まれている dtrace スクリプトを使用して dtrace にすぐに exec() を実行することです。

私の問題は、これを顧客に届ける良い方法がわからないことです。素朴に .zip アーカイブに入れると、すべての特別なアクセス許可が消去されました。

DMG に入れようとすると、root:wheel の所有権が私のもの (ted:staff) にリセットされました。ファイルオブジェクトの所有権設定を尊重し始めるには、DMG で todiskutilを使用する必要があることがわかりました。enableOwnershipこれで、DMG 内で、ヘルパー プログラムに必要な root:wheel および +s suid 権限が設定されていることがわかります。

しかし、アプリ バンドルを DMG からデスクトップにドラッグ アンド ドロップすると、権限が再びリセットされることがわかりました。さらに、DMG からアプリケーションを実行しようとすると、ヘルパー プログラムに suid ビットが設定されていないかのように動作します。

これを少し振り返ると、なぜこれが機能するのかまったくわかりません。開発者がこのように suid ビットを設定したアプリ バンドルを配布できるようにすることは、厄介で非常に明白なセキュリティ ホールのようです。

では、これはどのように行われるのでしょうか。パッケージインストーラーは必要ですか? それはsuidビットを保持しますか?誰かがこれがどのように機能するかを教えてくれますか?

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

python - 適切な権限で pycharm と scapy を実行します

PyCharm を使用して python 用の scapy ネットワーク パッケージで開発したいと考えています。特定のパケットを作成し、特定のポートを通過するには、ルート アクセスが必要です。現在、ルートとして PyCharm を実行していますが、これを行うためのより安全な方法があるかどうか疑問に思っています。おそらく悪いSUIDでpythonを設定しようとしましたが、scapyはまだ実行されません。任意の提案をいただければ幸いです。

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

google-chrome - SUIDサンドボックスの問題により、Chromiumのコンパイルと実行に失敗しました

私がやろうとしていること:

Ubuntu 13.10 で Chromium ソース コードをコンパイルして実行する

私が取った手順:

問題 :

ソースコードを取得し、問題なくコンパイルします。ただし、クロムを実行すると、以下のエラーが発生します

通常実行

--no-sandbox で実行

私が問題を解決しようとした手順:

  1. https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopmentに行きました
  2. それを読んで
  3. chrome_sandbox を使用して chrome を再度ビルドしました
    • ninja -C out/Debug chrome chrome_sandbox
  4. build/update-linux-sandbox.sh再実行
  5. ~/.bashrc以下の行がある かどうかを再度確認します
    • export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox

私が知りたいこと:

  1. 上記の状況でChromeを実行するにはどうすればよいですか?
  2. --no-sandboxそのオプションが機能しなかった理由は何ですか?

どんな入力でも大歓迎です。

若い。

0 投票する
0 に答える
354 参照

c++ - CAP_NET_RAW 機能を使用して、ロードされた共有ライブラリの $ORIGIN をプログラムに解釈させることは可能ですか?

Python と C++ の両方のライブラリを持つアプリケーションを作成しています。Python 部分は未加工のパケットを送受信する必要があるため、Python 実行可能ファイルにCAP_NET_RAW機能を与えています。

同じプログラムで、Cython を使用して C++ 共有ライブラリもロードします。依存関係の相対パスを使用して共有ライブラリをコンパイルしたい - つまり、$ORIGIN特別な変数を使用します。

ただし、Python にはCAP_NET_RAW機能があるため、Linux はプログラムとして扱い、共有ライブラリの依存関係定義内の文字列setuidを無視するため、読み込みに失敗します$ORIGIN

$ORIGINセキュリティ上の理由から、ダイナミック リンカでは、set-user および set-group ID プログラムで置換シーケンスを使用することはできません。DT_RUNPATH動的配列エントリによって指定された文字列内に現れるそのようなシーケンスの場合、そのシーケンスを含む特定の検索パス$ORIGINは無視されます (ただし、同じ文字列内の他の検索パスは処理されます)。パラメータとして渡され$ORIGINたエントリまたはパス内のシーケンスは、エラーとして扱われます。拡張セキュリティ メカニズムがインストールされているシステムでは、最小限以上の権限を持つプロセスにも同じ制限が適用される場合があります。DT_NEEDEDdlopen()

このセキュリティ機能は、私たちに多くの苦痛をもたらします。共有ライブラリをコンパイルする必要があり、完全なパスの依存関係があり、開発マシン間で移植することはできません。

Linux でこのセキュリティ機能を無効にし$ORIGINて、追加の機能を持つプログラムで解釈されるようにする方法はありますか?