sudoers 파일에 secure_path를 프로그래밍 방식으로 추가하는 방법


11

github에서 노드와 npm을 빌드 한 다음 서비스를 시작하는 EC2 인스턴스에 대한 사용자 데이터 스크립트를 작성하려고합니다. 이 바퀴에 그리스를 바르려면 다음을 추가해야합니다.

:/usr/local/bin

/ etc / sudoers에서 줄 끝까지 :

Defaults        secure_path="

/superuser/927512/how-to-set-path-for-sudo-commands는 이것을 달성하기 위해 visudo를 사용하는 것에 대해 이야기하지만 EC2 사용자 데이터 내에서 프로그래밍 방식으로 수행하고 싶습니다.

/programming/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-script sudoers 파일을 편집하는 것에 대해 이야기하지만, 내가 시도하고있는 것에 대해 너무 심하게 구워 보입니다. 달성하기 위해.

줄을 잡고 쉽게 교체 할 수있을 것이라고 생각했지만, 나는 엉망입니다. 그 성가신 닫힘 쉼표로 인해뿐만 아니라!

답변:


6

secure_path값을 추가하는 대신 값 을 바꾸어 살 수 있다면 훨씬 쉬운 솔루션을 사용할 수 있습니다. 일반적으로 sudo에는 /etc/sudoers.d추가 구성 파일을 삭제할 수 있는 구성 디렉토리가 있습니다.

완전한 secure_path가치를 가진 파일을 작성하십시오 .

Defaults secure_path="<default value>:/usr/local/bin"

기본 구성의 값을 덮어 씁니다. 경로 값이 모든 컴퓨터에서 동일하면 스크립트 나 패키지를 사용하여 쉽게 배포 할 수 있습니다.

이는 나중에 sudo 패키지가 업데이트 될 때 구성 파일을 확인하고 병합 할 필요가 없다는 추가 이점이 있습니다.


2

secure_path가있는 행이 있다고 가정하면이를 수행하는 간단한 sed 명령

sed -i -e '/secure_path/ s[=.*[&:/usr/local/bin[' /etc/sudoers

또는 조금 더 정교합니다 (입력에 대한 구문 검사가 더 많습니다).

sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=\1:/usr/local/bin[' /etc/sudoers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.