최근에 /etc/hostname을 통해 sudoers 파일과 호스트 이름을 변경했습니다. 이 파일을 변경한 후 sudo 명령에 시간이 많이 걸립니다. 또한 sudo가 호스트 kaagini(내 컴퓨터의 호스트 이름)를 확인할 수 없다는 메시지가 표시됩니다.
sudo가 무언가에 대한 권한을 제공하기 위해 호스트 이름을 알아야 하는 이유는 무엇입니까 ??
내 sudoers 파일에는 "Defaults env_reset" 명령이 있습니다. 비슷한 질문을 보았지만 여기서 컨텍스트는 원격 로그인이 아닙니다. 오류는 로컬 호스트에 표시됩니다.
문제에 대한 초기 인터넷 검색에 따르면 /etc/hosts 파일에는 127.0.0.1 에 대한 실제 호스트 이름이 있어야 합니다. 이로 인해 내 문제가 해결되었습니다. 하지만 내 실제 질문은: 왜 sudo에 이것이 필요합니까 ?? 로그인 위치에 관계없이 sudo가 작동해야합니까?
답변1
파일 /etc/sudoers
은 여러 서버에 배포될 수 있도록 설계되었습니다. 이를 달성하기 위해 파일의 각 권한에는 호스트 부분이 있습니다.
이는 일반적으로 ALL=
권한이 모든 서버에 유효하다는 의미로 설정되지만 특정 호스트에 설정할 수도 있습니다.
%sudo kaagini=(ALL) ALL
sudo가 이 규칙을 적용해야 하는지 알기 위해서는 실행 중인 호스트를 검색해야 합니다. 올바른지 에 의존하는 호출을 사용하므로 /etc/hosts
옳지 않으면 실패합니다.
sudo
호스트 부분이 모든 권한에 대해 설정된 경우 이름 조회를 수행할 필요가 없다고 주장할 수 있지만 ALL=
그런 식으로 작동하지 않습니다. 규칙을 처리하기 전에 실행 중인 위치를 파악하는 것으로 보입니다. .
sudo는 사용자가 현재 시스템에서 무엇을 할 수 있는지 확인하기 위해 /etc/sudoers만 읽으므로 유지 관리가 쉽습니다. 그러나 100개의 서버를 보유한 관리자는 유지 관리하기 위해 100개의 서로 다른 /etc/sudoers 파일이 필요할 수 있습니다. sudoers에는 권한에 호스트 부분이 있으므로 단일 sudoers 파일을 유지 관리하고 이를 모든 시스템에 배포할 수 있으면서도 사용자가 각 시스템에서 수행할 수 있는 작업을 세분할 수 있습니다.
답변2
덕분에연결된 버그 보고서Matthias Urlichs가 다른 의견으로 제출한 내용에 따르면 다음 명령으로 문제가 해결되었습니다.
Defaults !fqdn
이 줄을 /etc/sudoers
파일 에 넣으세요
답변3
인형Puppet Manifests 파일을 읽어 자동으로 여러 서버를 구성할 수 있는 구성 관리 소프트웨어입니다. 이러한 파일에는 /etc/sudoers 파일의 정의가 포함될 수 있으며, 이 정의는 꼭두각시 "마스터"에서 모든 꼭두각시 "에이전트"로 푸시될 수 있습니다. 그러면 모든 호스트는 HOST 정의를 포함할 수 있고 포함해야 하는 /etc/sudoers 파일의 동일한 복사본을 얻게 되므로 일부 사용자에게 다음과 같은 명령을 부여할 수 있습니다.일부 호스트(그러나 다른 사람들에게는 그렇지 않습니다).