ルート端末にログインして次のように実行するとします。
sudo -u '#1000' dbus-launch chromium
- 懸念すべき潜在的なセキュリティ問題はありますか?
- より安全な方法はありますか? GUIアプリケーションで使用する必要があります。ユーザーの実行確かに。 。使用すると 。
runuser
を取得しますfailed to open display
。
これにより、ルートでのみ起動できるカスタムドライバ(g15daemon)を介してキーボードからターミナルコマンドを実行できます。
答え1
Sudo
関連マニュアルページから:
実際の有効な uid および gid は、passwd ファイルで指定されたターゲット・ユーザーと一致するように設定されます。
-P
また、sudoの(グループベクトルを維持する)オプションの説明で:
ただし、実際の実効グループIDは依然としてターゲットユーザーと一致するように設定されています。
デフォルトでは、sudoを使用して実行されるすべてのコマンドは、効果的なターゲットユーザーのユーザーIDとグループID。
この質問に答えるには、「より安全な方法はありませんか?」-H
、権限のないユーザーとしてsudoを実行するときに(HOME)オプションを使用することをお勧めします「HOME環境変数をターゲットユーザーのhomedirに設定します」。しばらく前に-H
sudoを使用してシェルスクリプトにオプションを追加することで予防できた予期しない動作(詳細は覚えていません)が発生しました。
また、.runのsecure_path
およびenv_reset
オプションがsudoが実行するコマンドに渡される環境変数と、他の興味深く有用な情報を渡さない環境変数を表示することを確認する必要があります。/etc/sudoers
sudo -V
数
または、su $(id -un 1000) -c 'dbus-launch chromium'
ユーザー#1000の有効なユーザーIDとグループIDを使用してChromiumを実行できます。
同じ操作を実行するために(デフォルトでは)を使用している場合は、環境変数のみがターゲットユーザーの変数に設定されているsu
ことに注意してください。この場合(ターゲットユーザーは権限がありません。つまり、スーパーユーザーではありません)、ターゲットユーザーの権限に設定されます。残りの環境変数(例:)は維持されます。su
HOME
SHELL
USER
LOGNAME
PATH
権限のないプロセスを実行するために環境データが漏洩するのを防ぐには、
su
ログインシェルのまたはオプションを使用して
--login
実行する必要があります。-l
su $(id -un 1000) -lc 'dbus-launch chromium'
上記のように、およびを除く--login
すべての環境変数をオフにしてTERM
から、
HOME
およびをリセットします。SHELL
また、ターゲットユーザーのログインスクリプトを実行する前に、事前にコンパイルされたデフォルト値に設定し、現在の作業ディレクトリをターゲットユーザーのホームディレクトリに設定します。USER
LOGNAME
PATH
私は通常、ロギング機能と以前にsudoを正常に使用してから5分以内にパスワードを再入力する必要がない「チケットシステム」のため、suよりsudoを好みます。