/etc/sudoers
화이트리스트에서 항목을 추가 / 제거하려면 스크립트에서 편집해야 합니다.
일반 파일에서 작동하는 명령이 있다고 가정하면 어떻게 적용 할 수 /etc/sudoers
있습니까?
복사 및 수정 한 다음 visudo
원본을 수정 된 사본으로 바꿀 수 있습니까? 내 자신의 스크립트를 제공하여 $EDITOR
?
아니면 동일한 잠금 장치를 사용할 수 cp
있습니까?
문제는 단순히 작동하는 것을 찾는 것보다 잠재적 인 문제에 관한 것입니다.
답변
오래된 스레드, 그러나 어떨까요?
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
답변
이를 위해 사용자 정의 편집기로 visudo를 사용하십시오. 이것은 Brian의 솔루션으로 모든 경쟁 조건과 “해킹”문제를 해결합니다.
#!/bin/sh
if [ -z "$1" ]; then
echo "Starting up visudo with this script as first parameter"
export EDITOR=$0 && sudo -E visudo
else
echo "Changing sudoers"
echo "# Dummy change to sudoers" >> $1
fi
이 스크립트는 sudoers 끝에 “# Dummy change to sudoers”줄을 추가합니다. 해킹이나 경쟁 조건이 없습니다.
이것이 실제로 어떻게 작동하는지 설명하는 주석이 달린 버전 :
if [ -z "$1" ]; then
# When you run the script, you will run this block since $1 is empty.
echo "Starting up visudo with this script as first parameter"
# We first set this script as the EDITOR and then starts visudo.
# Visudo will now start and use THIS SCRIPT as its editor
export EDITOR=$0 && sudo -E visudo
else
# When visudo starts this script, it will provide the name of the sudoers
# file as the first parameter and $1 will be non-empty. Because of that,
# visudo will run this block.
echo "Changing sudoers"
# We change the sudoers file and then exit
echo "# Dummy change to sudoers" >> $1
fi
답변
임시 파일을 편집 한 다음 visudo -c -f sudoers.temp를 사용하여 변경 사항이 유효한지 확인한 다음 / etc / sudoers 위에 복사해야합니다.
#!/bin/sh
if [ -f "/etc/sudoers.tmp" ]; then
exit 1
fi
touch /etc/sudoers.tmp
edit_sudoers /tmp/sudoers.new
visudo -c -f /tmp/sudoers.new
if [ "$?" -eq "0" ]; then
cp /tmp/sudoers.new /etc/sudoers
fi
rm /etc/sudoers.tmp
답변
Debian 및 파생물에서는 /etc/sudoers.d/
권한이있는 사용자 지정 스크립트를 디렉터리에 삽입 할 수 있습니다 . 0440
자세한 내용은 /etc/sudoers.d/README를 참조하십시오 .
도움이 될 수 있습니다.
답변
visudo는 편집을위한 휴먼 인터페이스로 간주됩니다 /etc/sudoers
. 파일을 직접 교체하여 동일한 결과를 얻을 수 있지만 동시 편집 및 구문 유효성 검사에주의해야합니다. r--r-----
권한에 유의하십시오 .
답변
에 sudo
항목을 추가 /etc/sudoers.d
할 수있는 경우 @ dragon788의 답변을 사용할 수 있습니다.
https://superuser.com/a/1027257/26022
기본적으로 visudo
파일을으로 복사하기 전에 파일을 확인하는 데 사용 /etc/sudoers.d
하므로 sudo
누구에게도 깨지지 않도록 할 수 있습니다 .
visudo -c -q -f filename
이를 확인하고 유효한 경우 성공 (0)을 반환하므로 if
, &&
및 기타 스크립트 부울 연산과 함께 사용할 수 있습니다 . 유효성을 검사 한 후에 복사하면 /etc/sudoers.d
작동합니다. 루트가 소유하고 다른 사람이 쓸 수 없는지 확인하십시오.
답변
사용자 정의 편집기를 설정하십시오. 기본적으로 파일 이름 (이 경우 /etc/sudoers.tmp)을 받아들이고 수정하고 제자리에 저장하는 스크립트입니다. 그래서 당신은 그 파일에 쓸 수 있습니다. 완료되면 스크립트를 종료하면 visudo가 실제 sudoers 파일을 수정합니다.
sudo EDITOR=/path/to/my_dummy_editor.sh visudo