구문 은 다음 sudo
과 같습니다
user ALL=(ALL) ALL
따라서:
첫 번째 필드는 실행할 수 있는 사용자입니다.
sudo
sudo
세 번째 필드는 입력할 수 있는 사용자입니다.네 번째 필드는 실행할 수 있는 명령입니다.
sudo
2위sudo
필드는 실행될 수 있는 호스트를 배치하는 데 사용됩니다.
===================================
나는 사용하는 것을 이해하지 못한다2위대지. sudo
다른 호스트 B에서 사용하기 위해 호스트 A에서 이를 어떻게 활성화합니까?
답변1
2위모두= 모든 호스트에서( sudoers
동일한 파일을 여러 컴퓨터에 배포하는 경우)
답변2
이것sudoers 구문의 완전한 사양당신이 나열한 것보다 더 복잡합니다. 호스트 사양은 사용자가 이러한 명령을 실행할 수 있는 호스트를 sudo에 알려줍니다. 매뉴얼 페이지에 명시된 대로 호스트 사양이 "ALL"인 경우:
예약어 ALL은 항상 성공적인 일치 결과를 가져오는 내장 별칭입니다. Cmnd_Alias, User_Alias, Runas_Alias 또는 Host_Alias 가 사용될 수 있는 모든 곳에서 사용할 수 있습니다.
sudo는 로컬 호스트의 sudo 규칙에만 관심이 있습니다. 다른 호스트에 연결된 명령을 실행하면 해당 호스트에서 처리가 다시 시작됩니다.
여러 호스트에 대한 sudoer 구성을 보면 혼란스러울 수 있습니다. 특정 호스트에 적용되는 유일한 규칙 세트는 해당 호스트 이름과 "ALL"이 포함된 규칙입니다.
답변3
따라서 두 번째 필드는 실제로 여전히 로컬 시스템에만 적용됩니다. 그렇죠? 호스트 A의 사용자가 다른 권한으로 sudo를 수행하는 것을 허용하지 않습니까? - 멍청한 놈
예. 파일은 모든 호스트에서 사용되는 단일 복사본이 아니며 호스트 수만큼 복제됩니다. 단일 sudoers 파일을 만든 다음 해당 파일의 복사본을 여러 호스트에 제공하는 것이 더 쉽습니다.
실제적인 예를 들기 위해 sudoers 구성의 80%를 공유하는 수십 대의 서버가 있지만 각 서버에는 몇 가지 특별한 구성이 있다고 가정해 보겠습니다. 호스트 목록을 사용하면 적절한 호스트별 구성을 유지하면서 각 호스트에 동일한 sudoers 파일을 제공할 수 있습니다(예: Ansible을 사용하여 모든 호스트에 파일 복사본 제공).
host_list
in 이라는 단어를 검색하면 man sudoers
거기에 EBNF가 표시됩니다. sudoers 매뉴얼 페이지에 따르면 "쉼표로 구분"되어 있으며 호스트 이름, IP 주소, 선택적 넷마스크가 있는 네트워크, 넷그룹 또는 호스트 별칭을 사용할 수 있습니다.
Host_List ::= Host |
Host ',' Host_List
Host ::= '!'* host name |
'!'* ip_addr |
'!'* network(/netmask)? |
'!'* +netgroup |
'!'* Host_Alias