시작 시 자동으로 sudo 명령 실행

시작 시 자동으로 sudo 명령 실행

Asus Zenbook의 스크린 패널 백라이트를 조정하기 위해 제가 찾은 커널 모듈을 사용했습니다.여기.그의 지시에 따르면 밝기를 조정하는 간단한 명령으로 키 바인딩 단축키를 만들려면 재부팅할 때마다 명령이 필요하고 매번 비밀번호가 필요하기 때문에 "rc.local"에 screenpad x추가해야 합니다 . sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'자동 실행을 사용하면 시작할 때마다 명령을 실행하고 암호를 입력할 필요 없이 Windows의 드라이버에서 제대로 작동하기 때문에 사용자 정의 키보드 단축키를 즉시 사용할 수 있습니다.

저는 Parrot OS에서 Linux를 처음 사용합니다. 내가 수집한 바에 따르면 rc.local을 사용하는 것은 권장되지 않으며 systemd, cronjob을 사용하거나 GUI 실행 애플리케이션 메뉴를 사용하여 프로세스로 실행해야 합니다.

나는 이것을 수행하기 위해 systemd 또는 cronjob을 사용하는 방법을 완전히 잃었습니다. 나는 "screenpad-perms.sh"라는 파일을 만들어 /usr/local/bin에 넣어 보았습니다. 내가 읽은 내용에는 다음 줄만 포함되어 있습니다.

#! /bin/bash

sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'

그런 다음 chmod +x screenpad-perms.sh. 마지막으로 GUI를 열어 애플리케이션을 자동 시작하고 이를 로그인 스크립트로 추가했습니다.

PC를 다시 시작했지만 작동하지 않습니다. 비밀번호를 수동으로 입력하고 입력하지 않으면 screenpad x입력할 때 권한 거부 오류가 발생 sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'하여 실행되지 않는 것 같습니다.

저는 Linux를 처음 접했고 이 화면이 작동하기를 원하기 때문에 다시 한 번 죄송합니다. 내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

시스템이 systemd를 사용하는 경우 이는 수행하려는 작업에 가장 적합한 옵션입니다. systemd 장치는 이미 루트로 실행되므로 sudo가 필요하지 않으며 로그인할 필요 없이 시작 중에 실행되도록 설정할 수 있습니다.

다음은 systemd에 대한 정보에 대한 링크입니다.https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

systemd 단위 파일은 Microsoft 파일과 다소 유사합니다 *.INI. 그들은 이미 그 뒤를 [SectionHeadings]따랐 Directive=Value습니다.

필요한 단계는 다음과 같습니다.

  1. 루트 셸( sudo bash)을 로드하거나 대부분의 명령을 sudo루트로 실행하려면 접두사를 사용하세요.

  2. 실행할 시스템 서비스 단위에 대한 쉘 스크립트를 작성하십시오. 일반적으로 파일을 루트 /usr/local/sbin라고 부르겠습니다 ./usr/local/sbin/fix-backlight.sh

    /usr/local/sbin/fix-backlight.sh 편집

( editor원하는 편집기를 실행한다고 가정하면 파일이 없으면 파일이 생성됩니다.)

  1. 파일에 (#!~ 해야 하다파일의 첫 번째 줄입니다):

    #!/bin/bash
    chmod a+w '/sys/class/leds/asus::screenpad/brightness'

  2. 계속해서 편집기를 저장하고 닫습니다. 그런 다음 보안상의 이유로 파일을 루트에서만 읽기/쓰기/실행 가능하게 만듭니다.

    chmod 0700 /usr/local/sbin/fix-backlight.sh

  3. systemd 단위 파일을 만듭니다(일반적으로 에 있지만 /etc/systemd/system다른 위치도 있습니다. 자세한 내용은 위 링크를 참조하세요).

    /etc/systemd/system/fix-backlight.service 편집

  4. 파일 편집기에서 다음을 입력합니다.

    [Unit]
    Description="screenpad x" 백라이트 명령에 대한 권한 수정
    [Service]
    ExecStart=/usr/local/sbin/fix-backlight.sh
    [Install]
    WantedBy=multi-user.target

  5. 편집기를 저장하고 종료합니다. 테스트 유닛:

    systemctl이 백라이트 수리를 시작합니다.서비스

  6. 모든 것이 잘 진행되고 (루트가 아닌) 셸의 "screenpad x" 명령이 작동하는 경우 부팅 시 장치가 시작되도록 활성화합니다.

    systemctl을 사용하면 백라이트 수리가 가능합니다.서비스

  7. 그런 다음 재부팅하여 이제 모든 것이 제대로 작동하는지 확인하세요. (그렇지 않고 이웃집 고양이를 날려버리면 개 탓!)

필요한 경우 systemctl disable fix-backlight.service시작 시 실행을 중지 할 수도 있습니다.

답변2

어쩌면 이 특정 cmd에 더 이상 비밀번호가 필요하지 않도록 sudoers 파일에서 이 cmd를 활성화해야 할 수도 있습니다. Sudoers는 sudo 관련 문제를 관리할 수 있는 구성 파일입니다.

sudo EDITOR=nano visudo

visudo를 통해 nano를 사용하여 파일을 편집하려면(권장) 다음을 추가하세요.

[YOUR_USERNAME] ALL=(ALL) NOPASSWD:/bin/chmod u+w /sys/class/leds/asus::screenpad/brightness

대괄호 없이 사용자 이름을 삽입하고 다음을 실행하여 chmod의 올바른 위치를 추가합니다.

which chmod

나한테는 그래/bin/chmod

기본적으로 로그인한 모든 사람이 비밀번호 프롬프트 없이 이 명령을 실행할 수 있도록 허용하지만 주의하세요. sudoers 파일은 매우 중요하며 파일을 저장할 때 작은 오타를 범하면 시스템이 손상될 수 있습니다. 그렇기 때문에 visudo구성 파일을 오류와 함께 저장하지 않으므로 이를 편집하는 데 사용해야 합니다 . 이런 식으로 재부팅할 때마다 Mac을 변경하므로 나에게 적합합니다.

관련 정보