내가 찾은 스크립트를 적용하고 있습니다.여기내 목적을 위해.
기본적으로 스크립트는 일부 조건을 확인한 다음 sudo를 사용하여 두 명령 중 하나를 실행합니다. 이 명령은 사용자로 실행됩니다 cas
.
스크립트는 대화형으로 실행되지 않으므로 스크립트 내의 sudo 명령이 비밀번호 프롬프트 없이 실행되는지 확인하고 싶습니다. 그래서 sudoers 파일에 다음 줄을 추가했습니다.
ALL ALL = NOPASSWD: /usr/bin/systemctl mask sleep.target suspend.target
ALL ALL = NOPASSWD: /usr/bin/systemctl unmask sleep.target suspend.target
sudoers 파일의 작동 방식을 제가 이해한 바에 따르면 이는 모든 사용자가 비밀번호 프롬프트 /usr/bin/systemctl mask sleep.target suspend.target
없이 명령을 실행할 수 있음을 의미합니다./usr/bin/systemctl unmask sleep.target suspend.target
대신 비밀번호 프롬프트가 계속 나타납니다.
cas-desktop :: ~ » sudo /usr/bin/systemctl 마스크 sleep.target suspens.target
[sudo] cas 비밀번호:
sudo: 비밀번호 필요
나는 또한 sudo 없이 시도했습니다.
cas-desktop :: ~ » /usr/bin/systemctl 마스크 sleep.target suspens.target
==== org.freedesktop.systemd1.manage-unit-files에 인증 ====
시스템 서비스 또는 장치 관리에는 ID가 필요합니다. 문서 확인 .
인증방법 : Cas(cas)
비밀번호 :
이 작업을 수행하려면 어떻게 해야 할지 모르겠습니다. 아이디어가 있으면 알려주시기 바랍니다.
답변1
실행하여 사용자에게 허용되는 다른 명령줄이 정의되어 있는지 sudo -l
확인하세요 . sudo
이 표시됩니다모두기본 구성 및 포함된 /etc/sudoers.d/*
파일(있는 경우)에서 적용 가능한 sudoers 구성 라인입니다.
다음을 주문하는 것이 중요합니다:마지막귀하의 명령과 일치하는 라인이 존중됩니다. 라인이 (ALL : ALL) ALL
표시되지 않은 NOPASSWD:
일반 라인 인 경우~ 할 것이다비밀번호를 묻는 메시지가 표시됩니다. 이 경우 NOPASSWD:
표시된 줄을 파일의 나중 위치로 이동하세요 sudoers
.
sudoers 파일의 마지막 줄이 이면 @includedir /etc/sudoers.d
sudo 구성 줄을 로 이동하는 것이 좋습니다 /etc/sudoers.d/
. 해당 디렉터리에 있는 파일 이름은 다음 문자를 ~
포함합니다 ..
무시됩니다.
또는 없이 이를 허용하려면 다음과 같은 규칙 파일을 sudo
작성해야 합니다 .polkit
/etc/polkit-1/rules.d/01-local-sleep-suspend.rules
// -*- mode: js2 -*-
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
(action.lookup("unit") == "sleep.target" ||
action.lookup("unit") == "suspend.target") &&
subject.user == "cas") {
return polkit.Result.YES;
}
});