sudoを使用してvimを実行すると、「指定されたプロトコルはありません」

sudoを使用してvimを実行すると、「指定されたプロトコルはありません」

最近使用中に「プロトコルが指定されていません」というメッセージが表示され始めましたsudo vim。すべてがうまく機能するので、これは警告であると思います(ファイルを開いて編集して保存できます)。を使用すると、メッセージが表示されないため、sudo -E vim最近の編集で何かが間違っているようですが、/etc/profileわかりません。この問題をどのように解決できますか?

答え1

最近のアップグレードでデフォルト設定が変更されましたsudo。誰でもこの問題が発生した場合は、sudoer構成を確認してください。マニュアルページの例:

# Run X applications through sudo; HOME is used to find the
# .Xauthority file.  Note that other programs use HOME to find
# configuration files and this may lead to privilege escalation!
Defaults env_keep += "DISPLAY HOME"

これがあることを確認してください/etc/sudoersvisudo必要に応じてファイルを編集するために利用可能です)。

編集:これがいつ始まったのかわかりませんが、少なくともxauth 1.0.9は環境変数をサポートしますXAUTHORITY。この値を設定してHOMEを変更せずに置くと、プロトコル警告も修正され、ルートリソース(権限エスカレーションパス)を指すグローバルに書き込み可能なIPCリソース(ソケット/パイプ)が生成されないため、より良いソリューションです。 xauth は変数を環境に自動的にエクスポートしないため、最良の方法はシェルの初期化中に変数を設定することです。

答え2

~によるとこのスレッド、問題に対する考えられる解決策は2つあります。

.bashrc私のrootユーザースクリプトに次の行を置きます。

export XAUTHORITY=/home/<user>/.Xauthority

その後、.Xauthorityをルートにコピーしました。

sudo cp ~/.Xauthority /root

これで警告が消えました。

で実行してみることもできますgksudo

とにかく両方試してみる価値があります...

答え3

この質問に対するいくつかの答えはすでにありますが、それらのどれも私には完全には役に立ちませんでした。私は上記の提案のいくつかをDebianディストリビューションの一部と組み合わせてこの問題を解決しました。

.Xauthorityルートと他のすべてのユーザーのためのファイルシンボリックリンクを作成しました。ルートにはファイルへのアクセス権がありますが、他のユーザーにはアクセス権がないため、rootユーザーの問題を解決しました。他のすべてのユーザーのために.Xauthorityファイルに読み取り専用権限を追加しました。

#do this for all other users who do not have .Xauthority file    
ln -s /home/userwithxauth/.Xauthority .Xauthority

#run the following command to give read only access permission to .Xauthority file
chmod 644 /home/userwithxauth/.Xauthority

関連情報