Execute os comandos shell selecionados como root sem conceder ao usuário sudo permisions?

1

Estou tentando executar três comandos nmcli separados

nmcli connection down config-AP

nmcli connection up config-AP

nmcli device wifi hotspot con-name config-AP ssid device band bg password password

Se eles não forem chamados como raiz, eles esgotam o tempo limite

Error: Timeout 10 sec expired.

Como posso permitir que esses comandos sejam executados sem adicionar um usuário ao arquivo sudoers?

    
por Adam 10.05.2017 / 20:33

1 resposta

2

Se você tiver um comando que não cause danos, mas precise de privilégios de root, poderá alterá-lo para ter o atributo "set user id" (set uid ou suid). Aqui está um exemplo:

ls -l /bin/chsh
-rwsr-xr-x 1 root root 23376 Mar 22 21:23 /bin/chsh*

Este arquivo tem a tag "s" para mostrar que durante a execução ele assumirá o ID do usuário root (3ª coluna).

No entanto, isso é potencialmente perigoso e um invasor local capaz de chamar esse comando pode ultrapassar seu sistema se o comando em si não estiver programado para ser chamado de suid 0. Você foi avisado.

Dito isto, você pode fazer:

chmod u+s,a-w /usr/bin/nmcli

(altere o caminho, se necessário, por exemplo, para /bin/nmcli de acordo com o seu sistema)

Se você quiser restringir as pessoas que podem chamar o comando (agora perigoso), você poderá torná-lo acessível apenas a um grupo especial, por exemplo, por

chgrp john /usr/bin/nmcli
chmod o= /usr/bin/nmcli

Dessa forma, apenas alguém no grupo john (e root) poderia chamar o comando. Use um grupo em que seu usuário esteja, idealmente.

    
por 10.05.2017 / 20:43

Tags