Correr comandos com outro utilizador – runuser

Correr comandos com outro utilizador – runuser

Quando se administra sistemas Linux, é normal que surja a necessidade de correr comandos com outro utilizador. Neste artigo escrevo sobre o runuser.

O runuser é um comando que permite correr comandos com outro utilizador diferente.

Para que possamos usa-lo temos ser root. É necessário ser root, para ele ter permissão de mudar internamente o id e gid para correr o comando que pretendermos, com o utilizador/grupo desejado.

Este comando é diferente de outros comandos como su/sudo entre outros que utilizam setuid, para dar permissão a outros utilizadores.

Ele também não utiliza o PAM para verificar credenciais, pois só pode ser utilizado pelo utilizador root. O que torna o runuser bastante seguro e rápido.

Sintaxe do comando

# runuser -l  utilizador -c 'comando'
# runuser -l  utilizador -c '/caminho/para/o/comando arg1 arg2 argn'

Opções de linha de comando

Este comando tem algumas opções que podem e devem e até têm de ser usadas em determinados contextos.

Lista de opções disponiveis:

-, -l, –loginTorna a shell uma shell de login, e usa o ficheiro de configuração da PAM runuser-l ao invés runuser.
-g –group=groupPermite especificar o grupo primário a utilizar.
-G –supp-group=groupPermite especificar um grupo secundário a utilizar.
-c, –command=COMMANDPermite especificar o comando que pretendemos correr.
–session-command=COMMANDPermite especificar o comando que pretendemos correr. No entanto não cria uma nova sessão.
-f, –fastPassa o parâmetro -f para a shell para ser utilizado com (csh ou tcsh).
-m, –preserve-environmentPreserva a variáveis de ambiente atuais.
-pO mesmo que a opção -m.
-s, –shell=SHELLPermite usar outra shell se for permitido por /etc/shells.
–helpMostra os parâmetros e sai.
–versionMostra a ajuda e sai.

Exemplos de uso

Este comando é importante em determinados momentos. Eu uso frequentemente, para administrar os meus sistemas e serviços.

User limites

Podemos verificar os limites configurados para o utilizador www-data que é o utilizador que é utilizado no apache no Debian/Ubuntu, desta forma:

# runuser -l www-data -s /bin/bash -c 'ulimit -SHa'
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15634
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15634
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

A opção “-s /bin/bash” é necessária aqui, porque por defeito a conta www-data está configurada com a shell /usr/sbin/nologin.

Correr trabalhos do CRON do wordpress

Eu desenvolvo alguns plugins para wordpress e alguns deles usam o cron para correr tarefas mais demoradas que não podem correr no pedido de uma pagina. Eu uso o Cron do sistema para correr estes trabalhos. No entanto em desenvolvimento necessito de correr manualmente estes comandos para verificar o seu comportamento.

Uso o seguinte comando:

# runuser -l www-data -s /bin/bash -c 'cd /var/www/html/; /usr/bin/php wp-cron.php'
1 site
32,05 MB
0time limit
512SELECT DISTINCT(`hash`), `email`, `def`, `lastModified`, `lastCheck`, `ext`, `optimized` FROM `wp_optimum_gravatar_cache` WHERE `lastCheck` < 1586122785 ORDER BY `lastCheck` ASC LIMIT 100
0resultados das que necessitam ser verificadas
posts to clear
Array
(
)
 clear all posts ids cache -------clearPostsIDsOnPageCachePlugins-----------xgdgsdgsdgsdg2
Started on: 6 abril, 2020 at 21:39:45
Finished on: 6 abril, 2020 at 21:39:45
It took 0 seconds
32,05 MB

Conclusão

O runuser é um comando que devemos conhecer bem, pois ajuda bastante em tarefas rotineiras. É um comando simples e fácil de aprender.

Com este artigo pretendo dar a conhecer o runuser a quem não o conhece, para que possa tirar melhor partido do seu sistema.

Artigos Relacionados:

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *