루트로 파일을 편집할 수 있지만 sudo를 사용할 수는 없습니다.

루트로 파일을 편집할 수 있지만 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

관련 정보