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.