rootでファイルを編集できますが、sudoは使用できません。

rootでファイルを編集できますが、sudoは使用できません。

ちょうど非常に奇妙な状況に直面しました。

/usr/lib/thunderbird/thunderbird.sh次の権限を持つファイルを編集しようとしています。

$ ll /usr/lib/thunderbird/thunderbird.sh
-rwxr-xr-x 1 root root 2730 Aug 20 12:55 /usr/lib/thunderbird/thunderbird.sh*

発行したら

sudo vim /usr/lib/thunderbird/thunderbird.sh

挿入モードに切り替えると、次の警告メッセージが表示されます。

/usr/lib/thunderbird/thunderbird.sh [RO]
W10: Warning: Changing a readonly file
-- INSERT --

そして、実際に何の変更も書くことはできません。

しかし、以下を発行すると:

user@hostname:~$ sudo su -
root@hostname:~# vim /usr/lib/thunderbird/thunderbird.sh

問題なくファイルを編集できます。

奇妙なことは、の設定ファイルのように、同様の権限を持つ多くのファイルを/etc/問題なく編集し、同じディレクトリにファイルを作成すると問題なく編集することです。

user@hostname:~$ sudo touch /usr/lib/thunderbird/test.sh
user@hostname:~$ sudo chmod 755 /usr/lib/thunderbird/test.sh
user@hostname:~$ ll /usr/lib/thunderbird/test.sh /usr/lib/thunderbird/thunderbird.sh
-rwxr-xr-x 1 root root    0 Aug 20 13:03 /usr/lib/thunderbird/test.sh*
-rwxr-xr-x 1 root root 2730 Aug 20 12:55 /usr/lib/thunderbird/thunderbird.sh*
user@hostname:~$ sudo vim /usr/lib/thunderbird/test.sh

これは私のsudoersファイルです。

# Cmnd alias specification
Cmnd_Alias  APT = /usr/bin/apt-get update, /usr/bin/apt-get upgrade

# User privilege specification
root    ALL=(ALL:ALL) ALL 

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL 

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL 
%sudo   ALL=(ALL:ALL) NOPASSWD: APT

私のユーザーはsudoグループにいます。

なぜこれが起こるのかご存知ですか?

答え1

ちょうどその理由が次の状況の組み合わせであることがわかりました。

まず理由はわかりませんが、環境変数を正しくインポートsudoできず、一般ユーザーの環境変数を使用するため、このように読んでください。HOME.vimrc/home/user/.vimrc.

これを見るために次のように投稿しました。

user@hostname:~$ sudo bash
[sudo] password for user: 
root@hostname:/home/user# echo $HOME
/home/user

次に、カーソル位置が保存されるように、ユーザーのvimrcファイルで折りたたみ持続性を有効にしました。

au BufWinLeave * mkview
au BufWinEnter * silent loadview

これにより、ファイルを編集するたびに$HOME/.vim/viewフォルダ内にプロパティファイルが作成されます。私の場合、私はsudo最初にファイルを編集しようとしなかったようで、一般ユーザーとして折りたたまれたファイルが作成されました。

user@hostname:~$ ll .vim/view/ | grep thunderbird.sh
-rw-rw-r-- 1 user user  2650 Aug 20 15:56 =+usr=+lib=+thunderbird=+thunderbird.sh=

ルートがあるので、/home/user私が$HOME発行したときに同じ折りたたまれたファイルが(間違って)使用され、sudo vim何らかの理由でvimの内部に関して見落とされた可能性があります。折りたたまれたファイルが編集ユーザーの所有ではない場合は、編集したファイルが開きます。読み取り専用モードで。

だから、ファイルを削除した/home/user/.vim/view/=+usr=+lib=+thunderbird=+thunderbird.sh=後に編集してみるとsudo vim,全く問題がないことに気づきました。

それで、物語の最後の部分で状況を解決するために、/etc/sudoers次の行を編集して追加しました。

Defaults always_set_home

これで、すべてが期待どおりに機能し、sudo再び安定して使用できるようになります。

答え2

このコマンドで問題を解決しました。

sudo chattr -i filename

関連情報