問題タブ [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.
linux - 番号の小さいポートをルート以外の「正しい方法」として主張するにはどうすればよいですか
低い番号のポート(<1024)でリッスンしているデーモンとして実行したいスクリプトがあります
スクリプトはPythonですが、perlでの回答も受け入れられます。
スクリプトは起動スクリプトでstart-stop-daemonを使用してデーモン化されているため、回答が複雑になる可能性があります
私が本当に(考えて)望んでいないのは、ps -fewと入力して、このプロセスがその行に「ルート」を付けて実行されていることを確認することです。
どうすればいいのですか?
(システムコールについて十分に教育されていないという観点から、私は3つの道を見ることができます。
- スクリプトをrootとして実行し(--user /-group /-chuid to start-stop-daemonなし)、ポートを要求した後、ユーザーのエスカレーションを解除します
- スクリプトのrootを設定し(chmod u + s)、実行中のユーザーとしてスクリプトを実行します(--user /-group /-chuidを介してstart-stop-daemonを実行しますが、起動スクリプトは引き続き次のように呼び出す必要があります。 root)、スクリプトで、root権限を取得し、ポートを要求してから、通常のユーザーに戻します
- 私が知らない何か他のもの
)。
php - PHP setuid スクリプトで呼び出し元のユーザー ID を取得する
Linux にスティッキー ビットが設定された PHP スクリプトがあるため、ファイル所有者として実行されます。認証のために、呼び出しプロセスのユーザー ID を取得するにはどうすればよいですか?
コンテキスト: サーバー上に 2 つのアプリケーションがあり、一方が他方から情報を要求したいと考えています。このため、もう一方は setuid を使用したスクリプトを提供していますが、それを呼び出すことができるのは一方のみであることを確認したいと思います。
linux - cgi-perl スクリプトを使用したパスワードレス SSH
これは、cgi-perl スクリプトを試す最初のショットです。(root ユーザー) ローカル マシンとリモート マシンの間に SSH キーをセットアップしました。リモート ボックスでコマンドを実行し、ローカル マシンからホストされている Web ページに出力を表示しようとしています。スクリプトはコマンド ラインから正常に実行されますが、スクリプトを実行しているユーザーが root ではなく Apache であるため、Web ページから呼び出すと SSH キー エラーがスローされます。この問題を回避する方法はありますか?
unit-testing - 特権操作の自動テスト
継続的インテグレーション環境に存在するものとは異なる特権レベルを必要とするコードをどのようにユニット/統合テストしますか?
root 以外のCCRB 主導のビルド環境では、自動化されたビルド環境では保持されない特権 (root 特権または特別なアカウントとグループ) を前提とするユーティリティ関数がいくつかあります。(たとえば、ある関数は、UID/GID と補助グループを指定されたアカウントに変更し、ルートと現在の作業ディレクトリを変更し、任意の制御端末から分離します。)
もちろん、手動でテストを実行することもできますが、実行するのを忘れる可能性があります。
他の人はこの問題にどのように取り組んできましたか?
python - 別のユーザーに変更するときの環境の設定
特定のタスクを別のユーザーが所有する他の特定のbashスクリプトに委任するbashバックアップスクリプトをroot(cron)として実行しています。(簡略化された例、原則として、rootとして実行する必要があるものがあり、さまざまなタスクが適切な環境(oracle、amazon、...)を持つユーザーに委任されます。
このスクリプト自体は、ユーザーoracleとしていくつかのタスクを実行します。
Pythonでこの動作を模倣しようとすると、次のことがわかりました(ルートとしてcronから開始)
su-を使用する場合のbashでは、実際の新しいシェルが呼び出され、そのユーザーのすべての環境変数が設定されます。Pythonスクリプトでこれをどのように改善できますか?私が従うことができる標準的なレシピはありますか?私は環境変数、umask、...を考えています。
それが問題になる可能性がある場合、環境はSolarisです。
setuid - sgid ビット セキュリティ
私は共有 Web 開発環境で作業しています。私のチームはサーバー上に新しいファイルとフォルダーを頻繁に作成しますが、後でグループのアクセス許可を変更する必要があります。
新しいファイルのデフォルトのパーミッションとして、bashrc で umask 002 を設定しました。ただし、新しいディレクトリのデフォルトのアクセス許可の場合:
$ sudo chmod g+s /var/www
/var/www 内の新しいディレクトリは次のように表示されます。
drwxrwsr-x 2 ユーザー www-data 4096 2010-10-14 08:49 テスト
現在、このセットアップは正しく機能します。つまり、新しいファイルとディレクトリはデフォルトでグループ書き込み可能です。このセットアップで sgid を使用する場合、セキュリティ上の問題はありますか? setuid のリスクを完全には理解していないため、特に注意してください。
security - Windows でのプロセス権限の削除
セキュリティ上の理由から、プロセス権限を削除する方法を探しています。特権を持つユーザーとして開始し、制限付きユーザーとして終了したい。
たとえば、ポート 80 でリッスンしたいので、Web サーバーを制限付きユーザーで実行したいとします。
Windowsでそのようなことを行うにはどうすればよいですか。Unixのものに似たもの:
Windowsで同様のことを行うにはどうすればよいですか?
編集: もちろん、Windows には fork や chroot がないことは理解していますが、さまざまな権限、特にユーザーのベスト プラクティスを削除する方法を探しています。
c - setuidラッパーに関する考慮事項
私が書いたPython拡張機能は、単一のハードウェア初期化呼び出しを行うためにrootアクセスを必要とします。拡張機能でこの1回の呼び出しのためだけにスクリプト全体をルートとして実行したくないので、ユーザー特権にドロップして実際のスクリプトを実行する前に、この初期化を行うラッパーを作成したいと思います。
私はこのラッパーがsudo
例えばを介して実行されることを意図しています
私は次のようなことを考えていました(いくつかのバグを修正するために更新されました):
だから私は3つの質問があります:
- これは正気に見えますか?私は通常、* uid()呼び出しをいじる必要がないので、通常の落とし穴に精通していません。呼び出しも少し奇妙に見えます
execvp
が、私が見る限り、適切な場所に引数があります)。 execvp
マニュアルページには、「アプリケーションがenviron配列に直接アクセスしてはならない」と書かれていますが、これはgetenv
呼び出しを悪い考えにしますか?- よりも良い呼び出しが
execvp
あるので、私はできますsudo devwrap somescript.py
(「python」がないことに注意してください)
bit - setuid ビットの結果
uidビットを設定したいシェルスクリプトがあります。所有者をルートに設定し、uid ビットを設定しました。シェルに「whoami」を追加して、正常に動作しているかどうかを確認しましたが、スクリプトを実行すると、root ではなくユーザー名が返されました。それでは、これは間違っていますよね?uidが正しく設定されていれば、ルートを取得する必要がありましたよね?
permissions - setuid は sudo と同じ効果がありますか?
uid を設定すると、sudo と同じ効果がありますか? setuid された実行可能ファイルを popen で whoami を開くとどうなりますか? 「ルート」を取得できますか?