sudoers에 echo write 명령을 추가하는 방법

sudoers에 echo write 명령을 추가하는 방법

비밀번호 없이 실행할 수 있도록 echo를 사용하여 sudoers에 파일을 쓰는 명령을 추가하고 싶습니다.

일반적으로 명령은 다음과 같습니다.

sudo sh -c 'echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo'

(sh -c는 sudo에서 직접 echo를 실행하면 거부된 권한을 반환하기 때문에 존재합니다)

일반적으로 사용자가 비밀번호 없이 sudo를 통해 명령을 실행할 수 있도록 하려면 sudoers 파일에 다음을 추가하면 됩니다.

cestarian ALL = NOPASSWD: /bin/sh

그러나 나는 쉽게 악용될 수 있다고 생각하기 때문에 sh가 비밀번호 없이 실행되는 것을 자연스럽게 원하지 않지만 이 특정 명령이 작동하기를 원합니다...

cestarian ALL = NOPASSWD: /bin/sh -c 'echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo'

이것은 작동하지 않습니다. sudoer가 특정 매개변수가 있는 명령을 허용할 수 있어야 한다는 것을 알고 있지만 이 경우에는 작동하지 않으며 그 이유도 모르겠습니다.

나는 그것을 작동시킬 수 있는 방법을 원한다.

답변1

sudo명령에 대한 인수로 사용될 때 특별히 처리되지 않습니다 '. sudo를 "사용하여 해결된 내용을 나열하면 sudo -ll이를 확인할 수 있습니다 . 귀하의 예를 들어 그것은 말할 것입니다

/bin/sh -c 'echo 1 > /sys/...'

실제 인용문을 기대하므로 예를 들어 다음과 같이 일치합니다.

sudo sh -c "'echo 1 > /sys/...'"

당신이 할 수 있는 일은 sudoers 파일에서 따옴표를 제거하고 백슬래시를 사용하여 공백을 이스케이프하는 것입니다.

cestarian ALL = NOPASSWD: /bin/sh -c echo\ 1\ >\ /sys/...

답변2

sudo따옴표나 공백이 포함된 매개변수에 문제가 있는 것 같습니다 . 이 문제를 처리하는 구문상 올바른 방법이 있을 수 있지만 가장 간단한 해결책은 셸 명령을 별도의 파일로 옮기는 것입니다. 예를 들어 /usr/local/bin/enable_no_turbo다음을 사용하여 만듭니다.

#!/bin/sh
echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo

실행 가능하게 만드세요:

chmod 755 /usr/local/bin/enable-no-turbo

다음에서 활성화하세요 sudoers.

cestarian ALL = NOPASSWD: /usr/local/bin/enable-no-turbo

보다 일반적인 솔루션을 원한다면 /usr/local/bin/write-to-file다음을 사용하여 솔루션을 만드세요.

#!/bin/sh

echo "$2" > "$1"

당신의 sudoers:

cestarian ALL = NOPASSWD: /usr/local/bin/write-to-file /sys/devices/system/cpu/intel_pstate/no_turbo 1

이를 통해 다음이 가능해집니다.

sudo write-to-file /sys/devices/system/cpu/intel_pstate/no_turbo 1

다만, 다음과 같은 상황은 허용되지 않습니다.

sudo write-to-file /sys/devices/system/cpu/intel_pstate/no_turbo 0
sudo write-to-file /some/other/file 1

등.

답변3

또 다른 방법은 tee이러한 파일을 허용하는 것입니다.sudoers

username ALL = NOPASSWD: /bin/tee sys/devices/system/cpu/intel_pstate/no_turbo

| sudo tee그런 다음 대신 사용하십시오 .>

echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo

관련 정보