Допустим, вы хотите расширить права пользователя и позволить ему не только просматривать файл паролей, но и монтировать CD-ROM-диск. Для этого изменяем строку, добавляя разрешение на выполнение команды mount:
robert ALL=/bin/cat /etc/shadow, /bin/mount
Обратите внимание, что в случае с доступом к файлу /etc/shadowмы дали добро только на его просмотр, явно указав утилиту catс параметром в виде пути к файлу с паролями. Это логично, ведь нет смысла изменять его, когда для этого существует команда passwd. Можно задать просто разрешение на выполнение команды cat:
robert ALL=/bin/cat, /bin/mount
Но в этом случае хакер сможет от имени root просматривать любые файлы в системе и даже те, которые не должны быть ему видны.
Для команды mountмы не указываем ничего, кроме самой программы. Таким образом, пользователь сам может варьировать ее параметры. Если явно указать в качестве аргумента CD-ROM, то пользователь сможет монтировать именно это устройство:
robert ALL=/bin/cat /etc/shadow, /bin/mount /dev/cdrom
В рассмотренных примерах вместо имени компьютера я всегда применял ключевое слово ALL, что соответствует любой машине. Никогда не используйте такое значение параметра в своей реальной системе. Всегда указывайте конкретный компьютер, к которому относится данная запись. Чаще всего это локальный сервер.
С помощью утилиты sudo можно выполнять команды от лица различных пользователей. Для этого используется ключ -u. Например, следующая команда пытается просмотреть файл паролей от имени пользователя flenov:
sudo -u flenov cat /etc/shadow
Если пользователь не указан, то программа sudo по умолчанию запрашивает пароль root. Это не очень удобно, т.к. придется отдавать пароль администратора учетной записи robert. В этом случае теряется смысл в построении такой сложной системы безопасности, ведь зная пароль root, пользователь сможет зарегистрироваться в системе как администратор и сделать все, что угодно.
Никогда не передавайте пароль администратора. Используйте пароли других учетных записей, которым разрешена работа с необходимыми файлами и программами. В этом случае придется указывать конкретное имя пользователя, которое назначил администратор для выполнения команды.
Еще один способ сохранить пароль администратора — разрешить пользователю выполнять команды без аутентификации. Для этого необходимо между знаком равенства и списком разрешенных команд добавить ключевое слово NOPASSWDи двоеточие. Например:
robert ALL=NOPASSWD:/bin/cat /etc/shadow, /bin/mount /dev/cdrom
Теперь при выполнении команды sudoпароль вообще запрашиваться не будет. Это очень опасно, если вы не перечисляете необходимые директивы, а указываете ключевое слово ALL:
robert ALL=NOPASSWD:ALL
Если хакер получит доступ к учетной записи robert, то сможет с помощью утилиты sudo выполнять в системе любые команды. Если вы перечисляете возможные директивы, то серьезность взлома системы уменьшается в зависимости от того, насколько опасные команды вы разрешаете выполнять пользователю robert и в какой мере защищена эта учетная запись (длина и сложность пароля, прилежность владельца и т.д.).
С помощью утилиты sudo можно предоставить доступ для корректировки файлов. Никогда не делайте этого. Если текстовый редактор запустится для правки даже безобидного файла, хакер получит слишком большие возможности:
□ выполнять системные команды. Так как редактор открывается с правами root, команды также будут выполняться от имени этого пользователя, а значит, хакер получит в свое распоряжение всю систему;
□ открыть любой другой файл, пользуясь правами администратора.
Я никогда не делегирую возможность корректировки конфигурационных файлов с помощью редакторов. Если без этого не обойтись, то никогда не использую в этом случае права root. Конфигурационному файлу назначается другой владелец, и пользователь для исправлений будет запускать программу sudo только от его имени, а это значит, что редактор будет работать не с правами root.
К потенциально опасным командам, которые нежелательно предоставлять для выполнения с правами root другим пользователям, относятся:
□ редактирование файлов — позволяет злоумышленнику изменить любой конфигурационный файл, а не тот, что вы задали;
□ chmod— дает возможность хакеру понизить права доступа на конфигурационный файл и после этого редактировать его даже с правами гостя;
Читать дальше
Конец ознакомительного отрывка
Купить книгу