Ubuntu 18.04.2 LTSで別のユーザーのgsettingsを実行しようとしています。具体的には、ユーザーの画面がロックされないようにしています。これは、bashスクリプトの一部として実行されます。私が使用しているコマンドは次のとおりです。
su someuser
dbus-launch gsettings set org.gnome.desktop.screensaver lock-enabled false
これはssh経由で実行されるため、dbus-launchを開いてdbusを起動してから、gsettingsへの単純な呼び出しを試みます。しかし、私はエラーを受け取ります:
dbus[22652]: Unable to set up transient service directory: XDG_RUNTIME_DIR "/run/user/1000" is owned by uid 1000, not our uid 1001
(process:22650): dconf-CRITICAL **: 11:11:27.830: unable to create directory '/run/user/1000/dconf': Permission denied. dconf will not work properly.
(process:22650): dconf-CRITICAL **: 11:11:27.830: unable to create directory '/run/user/1000/dconf': Permission denied. dconf will not work properly.
(process:22650): dconf-CRITICAL **: 11:11:27.836: unable to create directory '/run/user/1000/dconf': Permission denied. dconf will not work properly.
UIDが一致していないことを確認するために、/ run/userディレクトリを確認しました。
ls -lah /run/user
どの出力:
total 0
drwxr-xr-x 4 root root 80 Apr 16 14:25 .
drwxr-xr-x 31 root root 900 Apr 16 14:25 ..
drwx------ 4 adminuser adminuser 100 Apr 16 14:25 1000
drwx------ 11 someuser someuser 260 Apr 16 12:26 1001
私もSudoを使ってみました:
Sudo -u "someuser" dbus-launch gsettings set org.gnome.desktop.screensaver lock-enabled false
エラーを与える:
(process:22264): dconf-CRITICAL **: 14:33:41.124: unable to create directory '/home/adminuser/.cache/dconf': Permission denied. dconf will not work properly.
(process:22264): dconf-CRITICAL **: 14:33:41.124: unable to create directory '/home/adminuser/.cache/dconf': Permission denied. dconf will not work properly.
(process:22264): dconf-CRITICAL **: 14:33:41.135: unable to create directory '/home/adminuser/.cache/dconf': Permission denied. dconf will not work properly.
(process:22264): dconf-WARNING **: 14:33:41.152: failed to commit changes to dconf: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2dfile_2derror_2dquark.Code2: Cannot open dconf database: Failed to open file “/home/adminuser/.config/dconf/user”: Permission denied
質問につながるのは、なぜgsettingsがsomeuserではなくadminuserで実行しようとしているのか、そしてSSH経由でadminuserがsomeuserで実行するように指示するにはどうすればよいのでしょうか。
ここでの問題は ユーザーが通常のSudoを使用してグラフィカルアプリケーションを起動しないのはなぜですか? つまり、デフォルトではSudo
は$HOME
をターゲットユーザーの_に変更しません。
これは、-H
(--set-home
)オプションを使用して変更できます。
-H, --set-home Request that the security policy set the HOME environment variable to the home directory specified by the target user's password database entry. Depending on the policy, this may be the default behavior.
そう
Sudo -Hu someuser dbus-launch gsettings set org.gnome.desktop.screensaver lock-enabled false