私は本当に奇妙な状況に直面しました。
次の権限を持つファイル/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グループ内にいます。
これがなぜ起こるかについて何か考えはありますか?
私はその理由を発見しました、そしてそれは状況のコレクションでした:
まず、正確な理由はわかりませんが、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
を発行したときに同じフォールディングファイルが(誤って)使用されました。折りたたみファイルは編集ユーザーが所有していないため、編集ファイルは読み取り専用モードで開かれます。
そのため、/home/user/.vim/view/=+usr=+lib=+Thunderbird=+Thunderbird.sh=
ファイルを削除し、Sudo vim,
を使用して編集しようとすると、まったく問題がないことに気付きました。
したがって、ストーリーの最後に、この状況を修正するために/etc/sudoers
を編集して次の行を追加しました:
Defaults always_set_home
これですべてが期待どおりに動作し、Sudo
を再び確実に使用できます。