web-dev-qa-db-ja.com

ユーザーID「root」を作成して、「gedit」にユーザー設定ファイルを作成させます

Sudo powersを使用してgeditを呼び出すと、File Edit View Search Tools Documents Helpの最上位メニューがありません。

ユーザーIDrootを作成し、一度サインインしてgeditを呼び出すと、必要なユーザー構成ファイルが作成されますmightこれを修正しますか?

これにより、Sudogksu、または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人にしか影響しません。

3

もう一度、気持ちで。 グラフィカルアプリケーションをルートとして使用しない!

現在、上記のルールにはいくつかの例外があります。たとえば、ルートを要求する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であり、そこにあるすべての推奨事項に反していることに注意してください。

その点について、実際にこれを行うと、geditrootユーザーセッションで(予想どおり)ルートとして機能します。ただし、メインセッションに戻った2番目のセッションでは、動作が拒否されます(上記の理由により)。


rootアカウントは、ひどく嫌われるPermission deniedエラーを回避するために使用しないでください。そのメッセージを次のように考えてください。

ねえ、あなたがやっていることmightはシステムに深刻な副作用をもたらします。非常に慎重に考え、コマンドを再確認して、意図したとおりに実行していることを確認してください。これがあなたがしたいことだと確信しているなら、あなたがしたいことをするために使用できる最も低い特権レベルにエスカレートしてください。

それでも、特権アカウントへのエスカレーションを伴わないソリューションがあるかどうかを確認してください。壊れたシステムを再作成するよりも、壊れたユーザーを削除して再作成する方がはるかに簡単です。

11
Kaz Wolfe

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のようなものになります
0