sudoers 구문에 문제가 있습니다. 간단히 말해서, 그래픽 카드 문제로 어려움을 겪고 있는데 최근에 간단한 명령으로 그래픽 카드를 켜고 끌 수 있다는 사실을 발견했습니다(이전에는 항상 꺼져 있었고 90%는 괜찮았지만 때로는 추가 전력을 사용하십시오). 내 생각은 다양한 스크립트에서 이 두 명령을 사용하여 GC를 켜고 GC를 사용하는 명령을 실행한 다음 다음과 같이 끄는 것입니다.
sudo tee /proc/acpi/bbswitch <<<ON
optirun [command]
sudo tee /proc/acpi/bbswitch <<<OFF
문제는 이러한 스크립트가 셸에서 거의 실행되지 않고 대부분 .sh 파일을 두 번 클릭하여 실행된다는 것입니다. 그래서 특정 명령에 대해 비밀번호를 피하는 방법을 연구하다가 sudo
알아냈습니다 sudoers
.
visudo
파일 끝에 줄을 실행 하고 추가했습니다.
grb ALL=(ALL) NOPASSWD: tee /proc/acpi/bbswitch <<<OFF, tee /proc/acpi/bbswitch <<<ON
하지만 편집기를 닫 visudo
자마자 구문 오류가 있다고 표시되지만 그게 전부입니다. 명령을 하나만 추가해도 구문 오류가 발생합니다.
grb ALL=(ALL) NOPASSWD: tee /proc/acpi/bbswitch <<<OFF
이 줄은 마지막에 추가되었으며 파일을 편집하는 것은 이번이 처음입니다 sudoers
.
도움이 된다면 Ubuntu MATE 18.04를 사용하고 있습니다. 나는 대답이 정말 간단하다고 생각하지만 내 경우에 맞는 문서를 찾을 수 없습니다. 제가 강조하고 싶은 것은 가능한 입력을 /proc/acpi/bbswitch
ON과 OFF로 제한해야 한다는 것입니다. 뭔가 다른 것을 작성하면 어떤 일이 일어날지 모르겠고, 제 GC가 저에게 주는 문제로 판단하면 정말 이런 일이 발생할 수 있습니다. 비밀번호를 요구하거나 프로그램이 시작되지 않으면 스위치 명령이 올바르게 작성되었는지 확인해야 한다는 것을 알아야 합니다.
답변1
리디렉션은 실제 명령의 일부가 아닙니다. 이는 표준 입력 및 출력을 위한 파이프를 특정 방식으로 배열하라는 쉘에 대한 지시일 뿐입니다.앞으로실제로 명령을 실행해 보세요.
<<<
따라서 파일 명령에 "here-string" 리디렉션을 포함하는 것은 의미가 없습니다 sudoers
.
대신, 사용을 제한하고 싶기 때문에오직문자열 쓰기 ON
를 허용하려면 다음과 같은 스크립트를 만들 수 있습니다.OFF
/proc/acpi/bbswitch
#!/bin/sh
case $1 in
ON) ;; # nothing
OFF) ;; # nothing here either
*) printf 'Usage: %s ON|OFF\n' "$0" >&2
exit 1
esac
printf '%s\n' "$1" >/proc/acpi/bbswitch
ON
그런 다음 원하는 사용자가 액세스할 수 있지만 수정할 수는 없는 디렉터리에 넣고 OFF
명령줄 인수를 통해 사용할 수 있도록 허용할 수 있습니다.
grb ALL=(ALL) NOPASSWD: /some/path/script.sh ON, /some/path/script.sh OFF
(혹은 비슷한 것)