Sudo

設置預設/全域 Gnome 首選項 (Gnome 3)

  • October 31, 2012

我最近從 Gnome 2 切換到了 Gnome 3(並且在此之前最近切換到了 Linux),而 Gnome 3 並沒有給我提供太多通過 GUI 更改設置的選項,尤其是不更改預設設置。

具體來說,我正在嘗試更改筆記型電腦上的蓋子關閉操作,因為我不希望它在蓋子關閉時暫停。(我通過 gnome-tweak-tool 為我自己的使用者更改了這個。)

我已經打了幾次不成功的刺。我想這與sudo某些使用者有關,無論sudoroot還是gdm

我嘗試過(在 Gnome 會話的控制台視窗和遠端機器的 SSH 會話中):

> sudo gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action
'suspend'
> sudo gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "blank"

為此,我收到有關無法初始化 X11 的錯誤。

我也試過:

> sudo -u gdm gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action

但是,這要求gdm的密碼,我從未設置過。我繼續使用passwd,但它告訴我:Cannot unlock the password for gdm’!`而且,我可以嘗試強制解鎖使用者,但這種對我的抵抗表明我可能應該放棄這條路。

我不知道這些中的每一個是否都值得提出自己的質疑,但最後,我只是想設置筆記型電腦蓋關閉設置(所有使用者的預設設置),儘管我想更一般地了解如何設置 Gnome 的預設首選項。

尤里卡!

感謝這裡的答案組合,關於設置登錄螢幕桌面的討論,以及關於從另一個控制台執行 X 程序的一般討論,我終於設法解決了這個問題。

我確實需要將設置設置為gdm使用者。但是,簡單地執行gsettings set ...asgdm會因為 X11 錯誤而失敗。因此,我還需要將命令附加到 X 會話。

但是,sudo su gdm並沒有gdm像我希望的那樣給我終端,所以我最終創建了一個簡單的 shell 腳本來執行我需要的命令。

setblank.sh:

#!/bin/sh

export DISPLAY=":0"
export XAUTHORITY="$1"
export XAUTHLOCALHOSTNAME="localhost"

gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "blank"

或者,更一般地說(gset.sh):

#!/bin/sh

export DISPLAY=":0"
export XAUTHORITY="$1"
export XAUTHLOCALHOSTNAME="localhost"

gsettings set $2 $3 $4

一旦我有了這個,我可以這樣稱呼它:

sudo sudo -u gdm gset.sh Xauthority-file org.gnome.settings-daemon.plugins.power lid-close-ac-action "blank"

這就是訣竅!

關於 Xauthority 文件的附加說明:您需要將使用者的 Xauthority 文件複製到 gdm 有權讀取的文件中。(對於一個快速而骯髒的例子:cp $XAUTHORITY /tmp/.Xauthoritychown gdm:root /tmp/.Xauthority

執行sudo su gdm -c 'gsettings …'(或sudo sudo -u gdm gsettings …)。該命令sudo -u gdm會提示您輸入密碼,因為您沒有gdm通過 sudo 執行命令的特定授權。但是root可以篡奪任何使用者,你可以成為root,所以先成為root,然後成為gdm.

請注意,我不知道gsettingsgdm使用者身份執行是否會為登錄螢幕設置電源管理首選項。另一種嘗試的可能性是從/etc/gdm/Init/(或您的發行版保存 Gdm 配置文件的任何位置)中的腳本執行命令。

引用自:https://unix.stackexchange.com/questions/27484