저는 iptables를 사용하여 자녀의 Linux 계정에서 모든 인터넷 트래픽을 차단합니다. 때때로 나는 그들이 하나 또는 다른 프로그램을 사용하기를 원합니다. 이 경우 sudoers를 통해 다른 (무제한) 사용자로 프로그램을 실행할 수 있도록 허용합니다. 이번에는 그것들을 사용하려고 노력했습니다.번역 쉘mpg123
소리/발음 번역된 단어를 재생할 뿐만 아니라 :
kiddy ALL= (daddy) NOPASSWD: /usr/bin/trans
그러나 사용자 sudo -u daddy trans en:he -speak -player mpg123 apple
로 실행하면 kiddy
터미널에 올바른 번역이 표시되지만 소리는 재생되지 않고 "음성 출력은 영어로 사용할 수 없습니다."라는 메시지가 표시됩니다. Gnome 에 로그인 daddy
하고 동일한 명령을 실행하면: trans en:he -speak -player mpg123 apple
- 모든 것이 예상대로 작동하고 텍스트가 번역되고 사운드가 재생됩니다. 두 사용자 모두 이 audio
그룹에 속합니다. 나는 노력했다이 방법하지만 아이디는 도움이 되지 않습니다. 저는 Debian 12를 사용하고 있으며 Wayland나 Xorg 모두 $HOME/.Xauthority
이 솔루션에 대한 문서를 갖고 있지 않습니다...
다른 사용자로서 sudo를 통해 번역 쉘 재생 오디오를 어떻게 만드나요?
답변1
최신 시스템의 오디오 장비는 다음으로 구성됩니다.관로귀하의 디렉토리에 소켓이 있습니다 /run/user
. sudo:ed 프로세스가 현재 세션의 파이프라인 인스턴스에 액세스하려면 소켓에 대한 액세스를 허용해야 합니다 $XDG_RUNTIME_DIR/pipewire-0
. 소켓 자체는 일반적으로 누구에게나 열려 있지만, $XDG_RUNTIME_DIR
그렇지 않습니다.
유효한 명령 순서는 다음과 같습니다.
chmod a+x $XDG_RUNTIME_DIR
sudo -u daddy XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR trans en:he -speak -player mpg123 apple
$XDG_RUNTIME_DIR
그러나 원하지 않는 사람에게 자신을 개방 하고 있다는 점을 고려하십시오 .
답변2
Göran Uddeborg의 답변을 바탕으로 다음과 같이 했습니다.
- chmod 705 $XDG_RUNTIME_DIR
- 사용하여
sudo visudo
다음 줄을 추가했습니다.
Defaults:kiddy env_keep += "XDG_RUNTIME_DIR"
kiddy ALL= (daddy) NOPASSWD: /usr/bin/trans
이제 괜찮아!
답변3
이 XDG_RUNTIME_DIR
지침은 최종 결과를 제공하지는 않지만 더 간단하고 깔끔한 결과를 제공합니다.지침했다:
$ sudo 사용자 추가사용자보컬 $ sudo 사용자 추가사용자맥박 $ sudo 사용자 추가사용자펄스 액세스
이것이 원래의 대답이 user
될 것입니다 daddy
. 아이는 sudo
아빠로서 앱을 실행하고 오디오 작업을 원합니다.