Seu PATH
provavelmente difere entre seu usuário normal e o usuário raiz, provavelmente diretórios ausentes, como /sbin
e / ou /usr/sbin
, em que utilitários administrativos como ifconfig
normalmente vivem.
Vou tentar explicar a minha situação primeiro. Atualmente, estou executando 6 servidores Debian virtualizados em uma máquina host ESXi. Os servidores virtuais onde instalados com um Debian Linux 6 (Lenny).
Recentemente atualizei os servidores para o debian Wheezy
root@ares> lsb_release -a /home/vincent
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.1 (wheezy)
Release: 7.1
Codename: wheezy
Chegou ao meu conhecimento que desde esta atualização o comando 'sudo' está exibindo um comportamento estranho. Na verdade, parece não ter efeito algum. Eu verifiquei o arquivo / etc / visudo e tudo parece ok. Sudo também pede minha senha, mas não parece rodar as coisas como root. Um exemplo é o comando 'ifconfig':
user@ares> ifconfig
zsh: command not found: ifconfig
[127] user@ares> sudo ifconfig
sudo: ifconfig: command not found
[1] user@ares> sudo su
root@ares>ifconfig
output shows
alguém que possa me ajudar aqui?
A resposta de Michael está correta, mas eu queria adicionar um comentário:
Não é obrigatório adicionar o caminho dos comandos administrativos ( /sbin
, /usr/sbin
, /usr/local/sbin
) a um usuário não privilegiado, desde que a diretiva secure_path
esteja configurada em /etc/sudoers
on em seu servidor LDAP , se você usar um back-end do LDAP:
$ ip a s
-rbash: ip: command not found
$ sudo ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:0c:29:57:80:d9 brd ff:ff:ff:ff:ff:ff
inet 172.22.197.38/24 brd 172.22.197.255 scope global eth0
$ echo $PATH
/home/dawud/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin
$ sudo -l | awk '$0~/secure_path/ {print $1}'
secure_path=/bin\:/usr/bin\:/sbin\:/usr/sbin\:/usr/local/bin\:/usr/local/sbin
Verifique man 5 sudoers
para referência futura sobre secure_path
(também de interesse são exempt_group
e env_reset
).
secure_path Path used for every command run from sudo. If you don’t trust the people running sudo to have a sane PATH environment variable you may want to use this. Another use is if you want to
have the “root path” be separate from the “user path”. Users in the group specified by the exempt_group option are not affected by secure_path. This option is not set by default.