web-dev-qa-db-ja.com

sudo -H -u <username>が期待どおりに機能しない

特定のgsettingsを設定するスクリプトを作成しています。スクリプトがユーザーとして実行されている場合、期待どおりに機能します。しかし、何らかの理由で、Sudoで作業するためにスクリプトが必要です。

私が見つけた1つの解決策は、Sudo -u <username> -H ./scriptを使用してユーザー空間で実行することでした。エラーなしで実行されていますが、ユーザー空間で変更が行われていません。

ここで何が欠けているのか理解できません。 Sudo -u <currentUser> -H bach -c `echo " $USER $UID"`を実行すると、期待どおりに機能し、ユーザーに値を提供します。

ここの問題は何でしょうか?

前もって感謝します!

1
frankenstein

その理由は、gsettingsコマンドの前でdbus-launchを使用していないためです。

man dbus-launchを参照

Sudo -Hu user gsettings set org.gnome.desktop.background picture-uri ''を実行すると、エラーが発生します

administrator@pratap:~/Music$ Sudo -Hu user gsettings set org.gnome.desktop.background picture-uri ''

(process:11889): dconf-WARNING **: 18:54:53.409: failed to commit changes to dconf: Error spawning command line “dbus-launch --autolaunch=454398a8b6e94accb53d9b7e5361faaa --binary-syntax --close-stderr”: Child process exited with code 1
administrator@pratap:~/Music$

enter image description here

enter image description here

enter image description here

enter image description here

1
PRATAP