제가 사용하는 XFCE는 노트북의 키보드 백라이트 제어 키를 지원하지 않습니다.
제어할 수 있는 스크립트( /etc/acpi/asus-keyboard-backlight.sh
)를 찾았는데, 루트로 실행해야 합니다.
키보드 백라이트를 변경할 때마다 루트 비밀번호를 입력하고 싶지 않습니다.
비밀번호를 묻지 않고 루트로 실행되도록 키보드 단축키를 어떻게 구성합니까?
답변1
sudo
를 사용하여 추가를 실행한 후에 visudo
실행할 수 있습니다 YOURUSER ALL=(ALL) NOPASSWD:ALL
. 그러면 sudo
사용자에게 비밀번호를 묻는 메시지가 표시되지 않습니다.
답변2
Bash를 호출하여 스크립트를 실행하는 작은 C 프로그램을 작성하세요. 프로그램을 컴파일하고 약간 수정하여 suid
Bash(및 스크립트)를 루트로 실행합니다.
다음은 해당 래퍼의 예입니다.
#include <unistd.h>
int main(void) {
const char *bin = "/bin/bash";
const chrar *script = "/tmp/myscrypt.sh";
char *const argv[] = {bin, script, NULL};
char *const env[] = {"SHELL=/bin/bash",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"HOME=/root", "LOGNAME=root", "_=/usr/bin/env", NULL};
execve(bin, argv, env);
return 0;
}
그러면 스크립트가 실행됩니다.루트 사용자로, 뿌리가 있다고 믿는 것을 포함하여 /root
. 이를 원하지 않으면 래퍼를 수정하십시오.
따라서 일단 컴파일하고 나면 남은 것은 조금만 제공하는 것뿐입니다 suid
.
gcc wrapper.c -o wrapper
chown root wrapper
chmod u+wrxs,g+rx,o-wrx wrapper
이렇게 하면 ls -l
권한이 다음과 같이 표시됩니다.
-rwsr-x--- 1 root group [snip] wrapper
이는 그룹의 사용자만 group
이 래퍼를 실행할 수 있음을 의미합니다. 이렇게 하면 s
in은 유효 사용자 ID가 0이 된다는 것을 의미합니다.
많은 사용자가 동일한 그룹에 속하는 공유 환경에서 이 작업을 수행하는 경우 해당 파일만을 위한 특수 그룹을 만들고 해당 그룹에 사용자만 추가할 수 있습니다. 예를 들어 LDAP를 사용하여 로그인하고 모든 사용자가 도메인 사용자 그룹에 속할 수 있습니다. "JulieOnly"라는 로컬 그룹을 만들고 해당 그룹에 사용자만 추가할 수 있습니다. 그런 다음 chown
래퍼를 root:JulieOnly
.