web-dev-qa-db-ja.com

ルートとしてファイルを編集できますが、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グループ内にいます。

これがなぜ起こるかについて何か考えはありますか?

6
Carles Sala

私はその理由を発見しました、そしてそれは状況のコレクションでした:

まず、正確な理由はわかりませんが、SudoHOME環境変数を適切に取得しておらず、通常のユーザーの変数を使用していたため、.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を再び確実に使用できます。

8
Carles Sala