root からではなく現在のユーザー (インストールを実行したユーザー) から deb-package (preinst、postinst、prerm、postrm) のインストール スクリプトでいくつかのコマンドを実行するにはどうすればよいですか?
2 に答える
root は現在のユーザーです。パッケージのインストールがsudo
SUDO_USER
インストールが単純なコンテキストから実行された場合、スクリプトを呼び出した可能性のあるユーザーの環境変数を確認できますsudo dpkg -i
-sudoがインストールされていない可能性があるため、インストールはによって実行された可能性がありますsu
。つまり、環境変数設定されません。
そのユーザーとしてスクリプトを呼び出したい場合は、sudo を反転するだけです。
sudo -u $SUDO_USER -c <command to invoke>
ただし、スクリプトを呼び出したユーザーを正しく認識している必要があります。つまり、SUDO_USER は root である可能性があります。
ただし、通常、Linux システムでは任意の数のユーザーを持つことができるため、このようなことを行うべきではありません。システムが 1 人のユーザーしかパッケージを使用できない状態になるためです。通常のユーザーとしての最初の呼び出しで状態/構成を作成する必要があります。
最後に、GUI を期待しないでください。dpkg として出荷されたばかりの場合は、インストールに端末を期待しないでください。
root
何かをインストールするには、そうする必要があります。ユーザーごとの構成をインストールする場合は、通常、すべてのユーザーに対してインストールする必要があります。
そうは言っても、実際の uid と有効な uid を調べてください。