Сначала я попытаюсь объяснить свою ситуацию. В настоящее время я использую 6 виртуализированных серверов Debian на хост-машине ESXi. Виртуальные серверы, на которых установлен Debian Linux 6 (Lenny).
Недавно я обновил серверы до 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
До меня дошло, что после этого обновления команда sudo демонстрирует странное поведение. На самом деле, похоже, это вообще не действует. Я проверил файл / etc / visudo, и все вроде нормально. Судо также запрашивает мой пароль, но затем, похоже, не запускает что-то от root. Примером может служить команда 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
кто-нибудь может мне здесь помочь?
Ваш PATH
вероятно, отличается между вашим обычным пользователем и пользователем root, вероятно, отсутствуют каталоги, такие как /sbin
и / или /usr/sbin
где административные утилиты вроде ifconfig
нормально живут.
Ответ Майкла правильный, но я хотел добавить комментарий:
Не обязательно добавлять путь административных команд (/sbin
, /usr/sbin
, /usr/local/sbin
) непривилегированному пользователю, пока secure_path
директива настроена в /etc/sudoers
на вашем сервере LDAP, если вы используете бэкэнд 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
Проверьте man 5 sudoers
для дальнейшей ссылки на secure_path
(также представляют интерес exempt_group
и 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.