방금 아주 이상한 상황에 직면했습니다.
/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