X를 사용하여 특정 사용자 및 그룹에서 특정 프로그램을 자동으로 시작하려는 경우 사용하는 가장 좋은 접근 방식은 무엇입니까?
내 프로그램에는 GUI가 있으므로 systemd를 사용할 수 없습니다.
sudo 비밀번호를 묻지 않고 X를 자동으로 시작하고 싶습니다.
sudo -H -u $USER bash -c "newgrp $GROUP && /bin/command"
거의 끝났습니다. 하지만 sudo 비밀번호를 입력해야 합니다.
답변1
sudo
기본 그룹은 옵션을 사용하여 설정할 수 있으므로 -g
사용할 필요가 없습니다 . 또한 사용자가 암호 없이 모든 사용자로 실행할 수 있도록 newgrp
구성할 수도 있습니다 .sudo
/bin/command
예를 들어 다음을 추가합니다 /etc/sudoers
(실행아니요파일을 직접 편집하세요. 사용 visudo
. 전체 sudoers 파일을 무효화하는 구문 오류가 발생하지 않도록 변경 사항에 대한 온전성 검사를 수행합니다. 여전히 논리 오류가 발생할 수 있지만 /etc/sudoers sudo
를 전혀 사용할 수 없는 지점 까지 손상시키지는 않습니다 .
username ALL = (ALL) NOPASSWD: /bin/command
그런 다음 실행하십시오.
sudo -H -u "$USER" -g "$GROUP" /bin/command
명령이 실행될 수 있는 사용자 이름 및/또는 그룹을 제한하려면 ALL
대괄호 안에 있는 내용을 변경하세요. 예를 들어
cas ALL = (fred, bob : mygroup, othergroup) NOPASSWD: /bin/command
사용자는 사용자 또는 그룹의 사용자 또는 비밀번호가 없는 사용자로 실행할 수 있습니다 cas
. 제목이 붙은 섹션을 보고 검색하세요./bin/command
fred
bob
mygroup
othergroup
man sudoers
Runas_Spec
그런데 첫 번째 ALL
(앞 =
)는 규칙이 적용되는 호스트 이름을 나타냅니다. 이는 여러 시스템에서 동일한 sudoers 파일을 공유하고 시스템 관리자가 sudo
일부 시스템에서만 특정 명령을 실행하기 위한 권한이 필요한 경우에만 중요합니다. 자세한 내용을 검색 Host_List
하세요 man sudoers
.
참고: sudo
매우 복잡하고 매우 유연합니다. 매뉴얼 페이지가 이해될 sudo
때까지 읽고 다시 읽는 노력은 가치가 있습니다 . sudoers
의도한 것보다 더 적거나 더 나쁜 권한을 부여하는 실수를 저지르기 쉽습니다.