sudo: 다른 사용자로 사운드 재생 실행

sudo: 다른 사용자로 사운드 재생 실행

저는 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의 답변을 바탕으로 다음과 같이 했습니다.

  1. chmod 705 $XDG_RUNTIME_DIR
  2. 사용하여 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아빠로서 앱을 실행하고 오디오 작업을 원합니다.

관련 정보