Нюансы su и sudo

Когда я начинал разбираться с FreeBSD и Linux (а было это лет 10 назад), единственной возможностью запуска приложений с правами суперпользователя для меня была “su”. Попутно я узнал что означает “su -” (получение прав суперпользователя и получение значений переменных окружения для этого пользователя). К тому времени я уже усвоил, что постоянно сидеть с правами root’а чревато: на тестовой (или домашней) системе – потерей времени на восстановление, на боевой – гораздо более серьезными проблемами.

Так все и продолжалось FreeBSD, Solaris, Slackware Linux – “su -” по необходимости.
Но пару лет назад я решил поковырять ставшую тогда модной Ubuntu (так на ней и остался), а в ней оказалось все по-другому, непривычно – использовалась команда “sudo”, а у root’а не было пароля. Поначалу непривычно, через неделю уже оценил и с тех пор использую постоянно (никто команду “su” не отменял, но Linux на то и Linux, что любую операцию можно сделать наиболее удобным способом, не пренебрегая здравым смыслом). А вот у “sudo” есть пара нюансов, которые не сразу видны, но о которых полезно знать.

1. Чтобы какое-то время поработать под root’ом (не рекомендую!), но использовать свое окружение, достаточно ввести:
$ sudo bash

2. Чтобы получить права root’а со всем его окружением (initial login)(тем более не рекомендую):
$ sudo -i

3. Запуск команды от имени другого пользователя (не суперпользователя):
$ sudo -u [user] [command]

4. Получить список разрешенных к выполнению команд в режиме “sudo” (да-да, и это настраивается):
$ sudo -l

5. Убедившись, что команда вида “sudo iptables-save > /etc/iptables.conf” не сработает с банальным сообщением “Permission denied”, выяснить, что действие “sudo” распространяется только на первую команду (iptables-save), а вторая (>) уже будет выполняться с правами простого пользователя, которому доступ на запись в /etc запрещен. Это решается просто:
$ sudo sh -c "iptables-save > /etc/iptables.conf"

Кстати, рекомендую обратить внимание на команду “sudoedit” для редактирования файлов от имени суперпользователя и напомнить, что, получив доступ к редактору, например “sudo vim /home/protected/topsecret.txt“, пользователь получает и возможность выполнить из редактора любую команду через “:!”, и она будет выполнена от имени суперпользователя.

Leave a comment

Your comment