예,추천하다sudoers 파일을 편집 합니다 visudo
. 하지만 입소문으로만 추천받는 것에는 만족하지 않습니다. 파일을 잘못된 방식으로 편집하면 쉘이 경고하거나 확인을 요청할 수 있습니까?
나는 다음과 같은 상황을 포착하고 싶다.
$ sudo vim /etc/sudoers
/etc $ sudo nano sudoers
$ sudo cp what/ever/file /etc/sudoers.d/a
답변1
참고: 저는 다음 작업을 수행하지 않습니다. 이는 안전하지 않으며 시스템을 손상시킬 수 있는 다른 가능성도 충분히 있습니다. 왜 이것을 선택합니까?
큰 힘에는 sudo
큰 책임이 따른다.
그러나 파일 root
편집을 방지하려면 다음을 실행하여 파일을 불변으로 만들 수 있습니다.sudoers
sudo chattr +i /etc/sudoers
.rc
그런 다음 또는 파일 에 다음 별칭을 추가합니다. .profile
예 .bashrc
:
alias visudo="sudo chattr -i /etc/sudoers; sudo visudo; sudo chattr +i /etc/sudoers;"
alias sudo='sudo '
먼저 불변 플래그를 재설정한 다음 실행 하고 마지막으로 다시 실행하도록 visudo
명령을 변경합니다 . 바라보다visudo
immutable
여기두 번째 별칭이 필요한 이유는 무엇입니까?
리소스 파일은 정상적으로 사용할 수 있지만 쉘을 다시 시작한 후에 sudo visudo
는 편집할 수 없습니다 .
visudo
이는 일반적인 아이디어일 뿐이며 아래 파일의 기타 매개변수를 활성화하려면 개선이 필요합니다 /etc/sudoers.d/
. 별칭 대신 함수나 스크립트를 사용할 수도 있습니다.
이는 실제로 안전하지 않습니다.
visudo
실행할 때 파일이 돌로 설정되지 않습니다.- 모든
sudo
사용자는chattr -i
언제든지 다음을 실행하여 불변 플래그를 설정 해제 할 수 있습니다. - 당신은 어떤 일을 하기 전에 생각하지 않고 그것을 할 수 있도록 자신을 훈련합니다
답변2
나는 여기에 어색한 해결책을 제시합니다. 저는 zsh 위젯(명령줄 플러그인)인 zsh를 사용하고 있습니다.
zsh는 명령이 "cd" 또는 "visudo"가 아닌 이상 현재 디렉터리가 sudoders.d
이거나 명령줄에 가 포함되어 있으면 경고를 표시합니다.sudoers
이 코드는 vim, nano, cp, rm, cat > 및 기타 시나리오를 다룹니다.
당신이 더 잘할 수 있다고 확신하지만 이것이 기본 아이디어입니다.
#! /usr/bin/zsh
function catchEditSudoers {
if ([[ $BUFFER =~ .*sudoers.* ]] && [[ ! $BUFFER =~ .*visudo.* ]] && [[ ! $BUFFER =~ "cd .*" ]]) ||
([[ $PWD =~ ".*/sudoers.d" ]] && [[ ! $BUFFER =~ .*visudo.* ]] && [[ ! $BUFFER =~ "cd .*" ]]); then
zle -R "It's recommanded to use visudo to edit sudoers. Continue anyway? (y/n)"
read -k reply
if [[ $reply == y ]]; then
zle accept-line
else
zle send-break
fi
else
zle accept-line
fi
}
zle -N catchEditSudoers_widget catchEditSudoers
bindkey '^M' catchEditSudoers_widget
.zshrc에서 파일을 가져옵니다.