이 질문은 완전히 일반적이며 내 상황에만 적용 할 수 있지만 루트 사용자가 아닌 사용자가 루트 권한으로 특정 스크립트를 실행할 수있게하려는 작은 busybox 장비가 있습니다. 예를 들어, $1
cmdline (!!)에서 보낼 변수 ( ) 만 보낼 호스트 이름은 DHCP를 활성화하는이 작은 스크립트와 같은 것입니다.
#!/bin/bash
udhcpc -b -i eth0 -h $1
다음과 같이 udhcpc를 실행하려면 루트 액세스 권한이 필요합니다. 이렇게하려면 /etc/sudoers
이 줄을 포함 하도록 수정 하려고합니다.
joe ALL = NOPASSWD: /path/to/enable_dhcp.sh
"joe"를 사용하면 간단하게 다음을 실행하여 루트 권한으로 해당 스크립트를 쉽게 실행할 수 있습니다.
sudo /path/to/enable_dhcp.sh
암호를 요구하지 않습니다 (joe가 이것을 스크립팅 할 수 있기를 원하기 때문에 원하는 것입니다).
이제 .. 내가 알고있는 (또는 적어도 내가 생각하는)을 사용하는 것이 $1
당신은 당신이에 원하는대로 삽입 할 수 있기 때문에 쉽게 루트 권한으로 실행할 수있는 스크립트에서하는 끔찍한 생각입니다.
그래서 ... 이것을 다루는 가장 좋은 방법은 무엇입니까? 어떻게 루트 권한으로 원하는 것을 수행하고, 주입 공격에 광범위하게 노출되지 않은 상태에서 변수를 전달할 수 있도록 (또는 환경 변수와 같이 효과적으로 수행 할 수 있도록) 어떻게해야합니까?