기본적으로 처음 로그인할 때 설치 후 bash 스크립트를 루트로 실행하는 사전 구축된 데비안 설치가 있습니다. 이 스크립트는 sudo 그룹의 사용자가 sudo를 사용할 때 암호를 선택 사항으로 만들기 위해 sudoer를 편집해야 합니다.
sed -i.bak 's/%sudo ALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD:ALL/' /etc/sudoers
그러나 뭔가 잘못된 것 같습니다. 사용자는 sudo를 사용하려면 여전히 비밀번호가 필요합니다. 짧게 말하면 모든 사용자가 --disabled-password를 사용하여 생성되므로 실제로는 sudo를 사용하는 사람이 없다는 의미입니다. 예, 나는 이것이 이상적/올바른/지능적/안전한 방법이 아닐 수도 있다는 것을 알고 있지만 그것이 바로 그 방법입니다.
내가 알아내야 할 것은 무엇이 잘못되었는가입니다. 왜? 스크립트는 사용할 때마다 작동하며 일부 패키지 업데이트와 같은 다른 명령을 실행하는 것이 분명합니다. 그런데 /etc/sudoers를 올바르게 편집하지 않는 이유는 무엇입니까? sudoer를 확인하거나 루트 없이 편집이 실패한 이유를 어떻게 알 수 있나요?
답변1
글쎄요, 환경에 따라 다르기 때문에 실제로 추측할 수는 없습니다. 내 돈은 /etc/sudoers가 아닌 당신이 교체하려는 라인에 있을 것입니다. (적어도 아니죠.정확히나타나는 대로). 즉, 교체되지 않으므로 "NOPASSWD"로 설정되지 않습니다.
내 말은, 당신은 특정 수의 공백과 특정 줄 형식에 의존하고 있으며, 처음에 정규식과 일치하지 않으면... 결코 수정되지 않을 것입니다.
대답은 원하는 값을 사용하여 /etc/sudoers.d/에 파일을 추가하는 것입니다. 그런 다음 (어쩌면?) 사용자로~해야 한다sed
대상 행을 삭제 하는 데 사용되는 'sudo'를 사용할 수 있습니다 . (그렇게 할 수 없으면 실패하게 됩니다. 반환 코드를 테스트할 수 있습니다.)