ДЛЯ НАЧАЛА: ЖИВЫЕ

- Knoppix -
Линукс за пять минут
- Puppy Linux -
Хороший друг


ДЛЯ ДЕЛА: ПРОФИ

- Debian -
Он такой один
- Linux Mint -
С родинкой на щеке!
- CentOS -
Копейка рубль бережёт!
- Fedora -
По следам Red Hat
- Ubuntu Linux -
Мы одной крови!
- Mageia -
Красота и удобства
- openSUSE -
Настоящее немецкое качество
- Slackware -
Линукс из кубиков
- ALT Linux -
Что русскому хорошо





ДЛЯ ДЕЛА: РОЛЛЫ

- ArchLinux -
Гениальное - просто!
- PCLinuxOS -
Просто линукс
- Aptosid -
Почувствуй силу!


ДЛЯ ДЕЛА: СОБЕРИ САМ

- Gentoo -
Каждому своё
- LinuxFromScratch -
Линукс с нуля


ДЛЯ ДЕЛА: ЛЁГКИЕ

- DeLiCate -
Старость в радость!
- SLAX -
Тысяча и один модуль


ЗАЩИТА

- OpenWall -
Не стучите, закрыто!
- Kali -
Вам, хакеры!


ПРИЛОЖЕНИЯ

- Planet CCRMA -
Работа со звуком
- VegaStrike -
Каждому по планете!


ЭКСПЕРИМЕНТ

- коЛинуксы -
Не выходя из Виндоус
- GoboLinux -
Очевидно и вероятно
- ReactOS -
Освободите Виндоус!


РОДНЯ

- BSD-семейство -
На плечах гигантов
- OpenIndiana -
До звёзд рукой подать


АРХИВ (2003-2016)
ФОРУМ




НАШИ ПРОЕКТЫ

MATRIX GL
ПОЛЕЗНЫЕ СОВЕТЫ
ПИНГВИН В КАРМАНЕ
ЗАКЛАДКИ
СТАТЬИ
КОНТАКТЫ


ПОМОЧЬ






Личный архив ЕЗ

su и sudo - запуск системных программ обычным пользователем

Работать в Линуксе под суперпользователем (рутом) категорически не рекомендуется, но при обычной работе все же иногда необходимо выполнять административные задачи. Для этого существует 3 способа:

1. В одной из виртуальных консолей или Х-терминалов (xterm, konsole и т.д) залогиниться рутом, а после выполнения нужных команд выйти.

2. Используя команду su, временно стать рутом на одной из консолей, в которых вы уже вошли как обычный пользователь, после выполнения нужных команд выйти.

3. Используя команду sudo, просто выполнить нужную команду.

У этих способов есть свои плюсы и минусы.

Для 1-го способа нужна свободная виртуальная консоль либо еще один Х-терминал, тогда как 2-й и 3-й способы временно используют имеющуюся.

1-й и 2-й способы запускают новую командную оболочку, что позволяет выполнить несколько команд, но для выполнения всего одной команды (напрмер, редактирования файла конфигурации или выполнение make install) гораздо удобнее 3-й способ, когда команда вводится сразу, а после ее выполнения не надо делать выход из оболочки.

А главное достоинство 3-го способа - его очень высокая гибкость и настраиваемость. Правда, сразу после установки системы без настройки команда sudo пользователю недоступна.

Теперь подробнее.

Команда su запускает в текущей консоли командную оболочку c правами другого пользователя, по умолчанию - рута. При этом необходимо ввести пароль этого пользователя. Запуск su должен обязательно производиться с дефисом в качестве параметра:

$ su -

При этом обновляются переменные окружения $HOME и $PATH, т.е. домашним каталогом становится /root, а в $PATH добавляются /sbin и /usr/sbin. При запуске su без дефиса $HOME остается равным домашнему каталогу пользователя, который запускал эту команду, и в результате работы программ, запущенных из-под su, туда могут быть записаны файлы (например, конфигурации этих программ) с правами рута, что может привести к ошибкам и странностям в дальнейшей работе.

Чтобы вернуться в оболочку обычного пользователя, нужно дать команду exit, logout или нажать Ctrl-D.

Команда sudo позволяет запустить одиночную команду с правами другого пользователя (по умолчанию - рута), при этом вводится пароль (если не включен беспарольный запуск) пользователя, который запускает sudo (а не того, от чьего имени запускается команда, в отличие от su). По умолчанию никто не имеет права запускать что-либо. Поэтому для начала пользования sudo необходимо ее настроить. Настройки хранятся в файле /etc/sudoers. Настоятельно рекомендуется редактировать этот файл командой visudo (эта команда проверяет синтаксис файла перед его сохранением). О гибких настройках sudo можно почитать в man sudoers, но мы рассмотрим несколько наиболее простых и интересных примеров.

ALL ALL = (ALL) ALL

Самый простой способ настройки sudo, но не самый удачный с т.зр. безопасности. Мы разрешаем всем пользователям запуск любой команды от любого имени. Рассмотрим, как можно ограничить эту свободу.

1-е поле в строке - это список пользователей и/или групп, к которым применяется данная строка. Может быть ALL (все), имя_пользователя, %имя_группы или #числовой_идентификатор_пользователя.

%wheel ALL = (ALL) ALL

Мы разрешаем всем членам группы wheel (надо включить туда себя) запуск любой команды от любого имени. Так более правильно, при этом в группу %wheel включаются только разрешенные пользователи.

2-е поле - имя машины, с которой можно выполнять команды. Имеет значение только при использовании сетевого входа в систему.

3-е поле (в скобках) - список пользователей, от имени которых можно выполнять команду. Поскольку обычно sudo используют для запуска программ от имени рута, это поле используется не очень часто.

4-е поле - команда, которую позволено выполнять. Здесь, как и в остальных полях, можно указывать список команд через запятую.

Любой пользователь может командой sudo -l узнать, какие команды ему разрешено выполнять.

При запуске sudo запрашивается пароль (пользователя, запустившего команду). В течение 5 минут (этот интервал можно изменить) после последнего запуска sudo его можно запускать еще раз уже без пароля. Можно в /etc/sudoers в нужных строках поставить после знака = тэг NOPASSWD:, тогда команды, указанные в этой строке, могут выполняться без пароля.

ALL ALL = NOPASSWD: (ALL) /sbin/shutdown, /sbin/reboot

Позволяет выключать и перезагружать компьютер любому пользователю без указания пароля, командами sudo /sbin/shutdown и sudo /sbin/reboot соответственно (другие способы выполнения этого будут рассмотрены в следующей статье).

По умолчанию, все успешные и неуспешные попытки выполнения команды sudo (включая имя пользователя и полную команду) регистрируются в системном журнале и могут быть отправлены по почте системному администратору.

При настройке su и sudo в плане ограничения доступа пользователям надо быть осторожным, т.к. неправильно настроенное sudo может позволить пользователю запустить с правами рута любую команду. В частности, даже при отсутствии у пользователя прав на su возможны такие команды, как sudo bash, sudo su, sudo mc или запуск какой-либо программы, позволяющей временный выход в оболочку (например, vi и команда :sh).

Вернуться к оглавлению


При частичной или полной перепечатке, переводе, переработке материалов сайта ссылка на Knoppix.ru обязательна.
(c) Knoppix.ru 2003 - 2016