最近使用中に「プロトコルが指定されていません」というメッセージが表示され始めました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/sudoers
(visudo
必要に応じてファイルを編集するために利用可能です)。
編集:これがいつ始まったのかわかりませんが、少なくとも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