Existe uma maneira de remover os requisitos de raiz de um comando específico no linux? Se sim, como assim?

2

Estou usando o Ubuntu 12.04 LTS e estou tentando fazer com que o comando específico

dhclient

não requer privilégios de root. Eu fiz algumas pesquisas que me levam a acreditar que eu poderia desbloquear um usuário "su", que não precisaria de root para nada, mas temo que eu quebre algo desse jeito.

Talvez eu esteja fazendo as duas perguntas separadas:

  1. Onde todos os comandos que não exigem privilégios de root residem no meu sistema operacional?

  2. Posso mover este comando para lá?

Qualquer maneira funcionará no meu caso, e eu nem tenho certeza se é assim que os comandos do usuário comum se distinguem do resto, para ser honesto.

    
por rofls 31.05.2012 / 07:28

2 respostas

6

A melhor maneira de fazer isso é com o sudo, que é muito configurável em relação a qual usuário pode executar quais comandos. Use visudo para editar /etc/sudoers (nunca edite este arquivo diretamente - se você cometer um erro, você será completamente bloqueado). A entrada a seguir permitiria que o usuário bob executasse dhclient sem exigir uma senha.

bob ALL = (root) NOPASSWD: /sbin/dhclient

Bob executaria sudo dhclient quando para executá-lo.

    
por 31.05.2012 / 07:42
2

Se um usuário específico pode ou não executar com sucesso um programa (binário ou script) depende de duas coisas:

  • O usuário precisa de privilégios de execução no arquivo.

    Isso não é um problema: ls -l revela que qualquer usuário pode executar /sbin/dhclient .

  • O usuário precisa ler, escrever e / ou executar privilégios nos arquivos que o programa acessa.

    Esta parte é muito, muito mais complicada e mais perigosa, pois pode envolver a alteração das permissões de muitos arquivos.

Para mais informações, consulte Chmod - Wikipedia .

A maneira normal de executar um comando com privilégios de root é sudo . Na página de manual :

sudo allows a permitted user to execute a command as the superuser or another user, as specified in the sudoers file. The real and effective uid and gid are set to match those of the target user as specified in the passwd file and the group vector is initialized based on the group file (unless the -P option was specified). If the invoking user is root or if the target user is the same as the invoking user, no password is required. Otherwise, sudo requires that users authenticate themselves with a password by default ( NOTE: in the default configuration this is the user's password, not the root password). Once a user has been authenticated, a time stamp is updated and the user may then use sudo without a password for a short period of time (5 minutes unless overridden in sudoers).

A sintaxe básica no seu caso específico é:

sudo dhclient

Em relação às suas outras perguntas:

1.​ Where do all of the commands that do not require root privileges reside in my OS?

A maioria dos binários para todos os usuários reside em /bin , /usr/bin e /usr/local/bin .

A maioria dos binários do sistema (requerem privilégios de root) residem em /sbin .

Esta é apenas uma regra prática. Você pode colocar binários onde quiser.

Veja também: Padrão de hierarquia do sistema de arquivos

2.​ Can I move this command there?

Além de potencialmente quebrar algo, isso não teria absolutamente nenhum efeito.

    
por 31.05.2012 / 07:42

Tags