Sudo
powersを使用してgedit
を呼び出すと、File Edit View Search Tools Documents Help
の最上位メニューがありません。
ユーザーIDrootを作成し、一度サインインしてgedit
を呼び出すと、必要なユーザー構成ファイルが作成されますmightこれを修正しますか?
これにより、Sudo
、gksu
、またはpkexec
を昇格した権限を持つ通常のユーザーとしてgedit
を使用するたびに、迷惑なエラーメッセージが消えますか?
Nautilusやその他のGnome派生Ubuntuアプリケーションには他の利点がありますか?
注:Sudo
により、Googleでpkexec gedit
3.5kヒット、gksu gedit
40kヒット、またはSudo gedit
50万ヒット。私は最初の方法を使用している少数派ですが、Ubuntu 17.04の標準になると信じています。
2017年6月12日更新pkexec gedit
の使用時に表示されるエラーのリストは次のとおりです。
(gedit:13003): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-spell-enabled not supported
** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-encoding not supported
** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-position not supported
これについて バグレポート 2017年6月5日現在、これらの気を散らすメッセージを修正するコミットメントがあります。修正がいつアップストリームになるか、機能が実装されるか、エラーメッセージが表示されるかは示されません。単に消えます。
バグレポートは1年以上前に提出されたものであり、その間に18人にしか影響しません。
もう一度、気持ちで。 グラフィカルアプリケーションをルートとして使用しない!
現在、上記のルールにはいくつかの例外があります。たとえば、ルートを要求するUbuntuコントロールパネルのどの部分も一般に安全ですが、必要な期間だけ特権を保持するため、その時点ですぐに通常モードにダンプされます。同様に、それらはroot
を効果的に使用し、物事を壊さない方法で特別に設計されています。要するに、すべてのgedit
および他のほとんどのアプリケーションはそうではありません。
/root
フォルダーにgedit
独自の構成を必要とする場合は、次のように起動します。
Sudo -i gedit
ただし、このstillはいくつかの理由で機能しません。あなたのメニューバーが消えることは、多かれ少なかれ Ayatana のメニューシステムの動作の副作用です。要するに、システムはroot
ユーザー用の/所有するメニューオブジェクトを作成しようとしています。
Sudo
の-E
フラグを使用することでメニューの不足を回避できますが、それでもDBus/DConf/whateverがいらいらする原因になります。このモードでは、まだDBus/Ayatanaへのリンクを取得できないため、メニューはgedit
のウィンドウに直接埋め込まれます。
これはUbuntu開発者の感情を反映しており、バグではないです。 GUIは事実上「イージーモード」であり、root
アクセスは事実上not「イージーモード」であるという意見です。 root
が必要な場合は、ターミナルに移動してそこで使用します。実際、これはかなり有効な形式の抵抗です。nano
を使用してファイルを編集できない場合は、root
ユーザーとして突っ走る必要はありません。
絶対に必要 GUIでroot
を使用する場合(Ihighly独自のユーザーとしてもしないでください)、/etc/lightdm/lightdm.conf
というファイルを作成し、これをそのファイルに配置します。
[SeatDefaults]
greeter-show-manual-login=true
Sudo systemctl restart lightdm.service
を使用してlightdm
サービスを再起動すると、root
としてログインできるはずです。 lightdm
を使用しない場合は、そのディスプレイマネージャーに対応する指示を見つけてそれに従ってください。
また、rootアカウントを再度有効にする必要があります。これは、次のコマンドを実行するだけで実行できます。
Sudo passwd root
システムへのrootログインを許可のように、必ず非常に強力なパスワードを選択してください。 Sudo
が存在し、誤って何かを壊す可能性がはるかに高い/少ないため、これはalsoであり、そこにあるすべての推奨事項に反していることに注意してください。
その点について、実際にこれを行うと、gedit
はroot
ユーザーセッションで(予想どおり)ルートとして機能します。ただし、メインセッションに戻った2番目のセッションでは、動作が拒否されます(上記の理由により)。
root
アカウントは、ひどく嫌われるPermission denied
エラーを回避するために使用しないでください。そのメッセージを次のように考えてください。
ねえ、あなたがやっていることmightはシステムに深刻な副作用をもたらします。非常に慎重に考え、コマンドを再確認して、意図したとおりに実行していることを確認してください。これがあなたがしたいことだと確信しているなら、あなたがしたいことをするために使用できる最も低い特権レベルにエスカレートしてください。
それでも、特権アカウントへのエスカレーションを伴わないソリューションがあるかどうかを確認してください。壊れたシステムを再作成するよりも、壊れたユーザーを削除して再作成する方がはるかに簡単です。
gedit
の独自の構成設定を持っているルート/ Sudoをあきらめました。 pkexec
の代わりにgksu
をあきらめ、代わりにSudo -H
を使用しました。次に、現在のユーザーから構成セットアップを「借用」して初期化するスクリプトを作成しました。
gedit
構成設定可能苦労せずにスクリプトを次に示します。
#!/bin/bash
# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as Sudo using $USER preferences
# DATE: June 17, 2018.
# Must not prefix with Sudo when calling script
if [[ $(id -u) == 0 ]]; then
zenity --error --text "You cannot call this script using Sudo. Aborting."
exit 99
fi
# Get user preferences before elevating to Sudo
gsettings list-recursively | grep -i gedit | grep -v history | \
grep -v docinfo | \
grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings
sudoFunc () {
# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "Sudo password authentication failed. Aborting."
exit 99
fi
# Get Sudo's gedit preferences
gsettings list-recursively | grep -i gedit | grep -v history | \
grep -v docinfo | \
grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
chmod +x /tmp/gedit.gsettings.diff
bash -x /tmp/gedit.gsettings.diff # Display override setting to terminal
Nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
# Set the X geometry window size (WIDTHxHEIGHT+X+Y).
}
FUNC=$(declare -f sudoFunc)
Sudo -H bash -c "$FUNC; sudoFunc $*;"
exit 0
Sudo
でスクリプトを呼び出すのではなく、sgedit /path/to/root-owned-file
を使用しますgedit
GUIウィンドウが開いた状態で即座に戻ります1300x840+1+1220
をモニター設定に変更します。単一の「通常の」モニターは700x400+0+0
のようなものになります