/etc/sudoers
ansible을 통해 파일에 새 줄을 추가 하려고합니다 . 그런데 여전히 작동하지 않습니다. 무엇이 문제인가요?
파일을 쓰기 가능하게 visudo -c
만드는 명령을 시도했습니다 .sudoers
~를 제외하고
sudo echo "test ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
모든 라인이 유효합니다.
이것은 내가 실행한 sh 파일인데, 그 중 아무 것도 작동하지 않았습니다.
sudo adduser test
sudo echo "******" | passwd --stdin test
sudo cp /etc/sudoers /etc/sudoers_20180418
sudo echo "test ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config20180418
sudo sed -i 's/AllowUsers/AllowUsers test/g' /etc/ssh/sshd_config
.sh 파일
sudo adduser test
sudo echo "******" | passwd --stdin test
sudo cp /etc/sudoers /etc/sudoers_20180418
visudo -c
sudo echo "test ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config20180418
sudo sed -i 's/AllowUsers/AllowUsers test/g' /etc/ssh/sshd_config
답변1
문제는 명령줄일 수 있습니다.
sudo echo "test ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
명령의 출력은 원래 사용자의 ID를 사용하여 리디렉션됩니다 . sudo
쓰기 위해서는 루트 액세스 권한이 필요하므로 /etc/sudoers
이 작업은 실패합니다 . 명령은 echo
루트로 실행되지만 리디렉션을 수행하지는 않습니다. 이는 sudo echo ...
명령줄을 실행하도록 준비된 셸에 의해 이미 설정되어 있습니다. 여기서는 sudo를 사용하고 있으므로 쉘이 루트로 실행되고 있지 않은 것 같습니다.
다음과 같이 다시 작성할 수 있습니다.
echo "test ALL=(ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers >/dev/null
이 버전에서는:
- 명령 은
echo
원래 사용자로 실행됩니다. - /dev/null로의 리디렉션은 원래 사용자로 수행됩니다.
- 그러나
tee -a <filename>
파이프된 입력의 복사본을 지정된 파일에 루트로 추가하는 것이 바로 필요한 작업입니다.
답변2
RHEL에는 /etc/sudoers.d
파일이 포함된 디렉터리가 있습니다 /etc/sudoers
. 자체적으로 편집하는 대신 파일 조각을 추가해 보세요 /etc/sudoers
.
echo "test ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ansible
또는 Ansible에 sudoers
직접 관리 기능이 있다는 것을 알 수 있습니다.