/dev/dri/renderD128 deve ser acessível apenas para root ou usuários no grupo de renderização conforme:
project_kohli% ls -lha /dev/dri/renderD128
crw-rw----+ 1 root render 226, 128 May 26 09:43 /dev/dri/renderD128
No entanto, posso ver vários aplicativos que NÃO estão sendo executados como root acessando diretamente o descritor de arquivo:
USER PID ACCESS COMMAND
/dev/dri/renderD128: root 3389 F.... Xorg
project_kohli 6392 F.... xfwm4
project_kohli 9472 F.... firefox-esr
project_kohli 9364 F.... totem
Curiosamente, todos esses são aplicativos que precisam renderizar vídeo diretamente (como o Totem Video Player).
De qualquer forma, voltando à questão, o aplicativo firefox-esr
está sendo executado como user project_kohli
.
project_kohli% ps -aux | grep firefox-esr
project_kohli 9472 5.3 5.2 12545580 74632 ? Sl 13:13 3:23 /usr/lib/firefox-esr/firefox-esr
O usuário project_kohli
não está no render
grupo.
project_kohli% cat /etc/group | grep render
render:x:115:
Por que /dev/dri/renderD128 é acessível para aplicativos em execução com meu usuário?
Você notou o sinal de mais no final da string de permissões?
Isso significa que o nó do dispositivo possui uma lista de controle de acesso e, portanto, você precisará do
getfacl /dev/dri/renderD128
comando para ver o conjunto completo de permissões nele.O resultado provavelmente será semelhante a este:
indicando que, além das permissões clássicas de proprietário/grupo/outras, existe uma ACL que concede acesso de leitura/gravação a um usuário nomeado, neste caso
project_kohli
.Normalmente, isso é causado por uma
TAG+="uaccess"
regra do udev para o dispositivo. Isso faz com que o mecanismo de login/logout (especificamentesystemd-logind
em sistemas que usamsystemd
) adicione permissões de leitura+gravação a este dispositivo para usuários logados localmente e remova essas permissões no logout.Se o seu ambiente de desktop GUI incluir a capacidade de alternar entre vários usuários conectados localmente, esse mecanismo será estendido para conceder acesso ao usuário que atualmente detém ativamente o assento local (= o grupo de dispositivos sob controle do ativo conectado localmente). no usuário).
Sessões remotas, como sessões SSH, normalmente não terão esse tipo de acesso: você não quer que outros usuários possam espiar remotamente sua tela ou manipulá-la, não é?
Se você deseja permitir que vários usuários compartilhem o acesso ao dispositivo, é para isso que serve
renderD128
o grupo.render
Depois que o administrador do sistema adicionar a conta de alguém aorender
grupo, esse usuário sempre poderá acessar esse dispositivo: a partir de sessões remotas, de tarefas cron ou de sessões de GUI locais desativadas.