Executando o Chromium como ninguém

1

Como (na terra) eu executo o Chromium como o usuário nulo? Falhas selecionadas (no Openbox):

su nobody chromium

This account is currently not available

sudo -u nobody chromium

[0316/203558.490760:FATAL:chrome_main_delegate.cc(442)] Check failed: process_type.empty(). Unable to get the user data directory for process type: zygote ...

sudo -u nobody chromium --user-data-dir=/root

No protocol specified

[595:595:0316/203827.174040:ERROR:browser_main_loop.cc(279)] Gtk: cannot open display: :0

sudo -u nobody chromium --user-data-dir=/home

No protocol specified

[615:615:0316/203909.792019:ERROR:browser_main_loop.cc(279)] Gtk: cannot open display: :0

Minhas especificações:

Arco Linux 4.10.1-1-ARCH # 1 SMP PREEMPT Sun, 26 de fevereiro 21:08:53 UTC 2017 x86_64 GNU / Linux Cromo 57.0.2987.98

cat /etc/passwd:
...
nobody:x:99:99:nobody:/:/usr/bin/nologin
...

Eu prefiro ninguém porque executar o Chromium como root é altamente desencorajado e parece estúpido criar um usuário apenas para executar o Chromium

ATUALIZAÇÃO:

xhost local:root; su -pc 'env -i DISPLAY="${DISPLAY}" chromium' nobody

executado pelo root em uma sessão X funciona (se você quiser fazer conexões locais com o servidor X como raiz, local:root é muito mais seguro que + ). Ainda assim, houve dois erros:

Home directory not accessible: Permission denied [629:629:0323/170000.968320:ERROR:child_thread_impl.cc(762)] Request for unknown Channel-associated interface: ui::mojom::GpuMain

Livre-se do primeiro com

mkdir /home/nobody; chown -R nobody:nobody /home/nobody; su -pc 'env -i DISPLAY="${DISPLAY}" HOME=/home/nobody chromium' nobody
    
por jaam 16.03.2017 / 20:08

1 resposta

2

Como o usuário cuja atual X sessão está ativa:

$ xhost +
$ su - -c "DISPLAY=\"${DISPLAY}\" /bin/sh"

A primeira etapa, xhost + , permite que qualquer usuário se conecte à atual X session 1 . A segunda etapa é desnecessária se você já tiver root 2 . Em seguida, você mudará para nobody e executará chromium :

# su -p -c "env -i DISPLAY=\"${DISPLAY}\" chromium" nobody

O -p preserva o ambiente, permitindo que o usuário bloqueado efetue o "login". Então, env -i limpa o ambiente, que é provavelmente mais seguro, mas pode ou não ser o que você deseja.

1 Eu suponho que há uma maneira de conceder acesso apenas a um outro usuário específico, mas não sei o que é.
2 A prática comum é criar uma conta que não seja root para atividades típicas do dia-a-dia, mudando apenas para root para tarefas administrativas.

    
por 16.03.2017 / 21:14