Использование sudo в Ubuntu для начинающих пользователей. Администратор в Ubuntu, или Что такое sudo Что такое sudo в линукс

С давних времен многих смущает разнообразие вариантов обеспечения безопасности при выполнении операций с максимальными привилегиями. Например, в официальной документации Ubuntu в качестве команды редактирования рекомендуется использовать что-то вроде sudo nano , а в многочисленных любительских мануалах (в стиле «5 фокусов в командной строке, которые удивят вашу бабушку») для получения root"ового шелла предлагается писать sudo su - . Попробую объяснить, почему такое положение вещей кажется мне неправильным.

Исторически единственным универсальным способом выполнить команду от имени другого пользователя в Unix была программа su. Запущенная без параметров, она запрашивала пароль суперпользователя и в случае успеха просто подменяла текущее имя пользователя на root, оставляя почти все переменные окружения от старого пользователя (кроме PATH, USER и еще пары-тройки, см. man su от своего дистрибутива). Более корректно было запускать ее как su - - в таком случае оболочка получала также и правильный environment. С параметром -c можно было выполнить команду: su -c "vim /etc/fstab" .

При этом доверенным пользователям приходилось помнить пароль root"а и у всех пользователей, перечисленных в группе «wheel» (т.е. в группе, члены которой могли выполнить команду su и стать суперпользователем), был одинаковый неограниченный доступ ко всей системе, что являлось серьёзной проблемой безопасности.

Затем появилась команда sudo, и это был прорыв. Теперь администратор мог указывать список разрешенных команд для каждого пользователя (или группы пользователей), файлы, доступные для редактирования, специальные переменные окружения и многое другое (все это великолепие управляется из /etc/sudoers , см. man sudoers от своего дистрибутива). При запуске sudo спрашивает у пользователя его собственный пароль, а не пароль root. Полноценный шелл можно получить с помощью " sudo -i "

Стоит особо упомянуть о специальной команде sudoedit , безопасно запускающей редактор, указанный в переменной окружения $EDITOR . При более традиционной схеме редактирование файлов производилось примерно так:
sudo vi /etc/fstab

Запускаемый таким образом vi наследовал оболочку с неограниченными правами и через:! пользователь мог запускать любую команду (если, конечно, админ не позаботился об этом заранее) и открыть любой файл.

Sudoedit проверяет, можно ли этому пользователю изменять данный файл, затем копирует указанный файл во временный каталог, открывает его в редакторе (который наследует права пользователя, а не root"а), а после редактирования, если файл был изменён, с особыми предосторожностями копирует его обратно.

В Debian-based дистрибутивах пользователь root не имеет пароля, вместо этого все административные действия должны производиться через sudo или его графический аналог gksudo . Являясь полной заменой su , sudo должна бы быть единственной командой переключения между пользователями, однако, как было сказано вначале, в настоящий момент это не так и все зачем-то изобретают дикие последовательности из sudo, su, vi и черточек.

Поэтому предлагаю всем раз и навсегда запомнить:

После первой публикации этой заметки мне было задано несколько вопросов. Из ответов получилось сделать мини-FAQ.

Q: как с помощью sudo сделать su -c "echo 1 > /etc/privileged_file" ? sudo echo 1 /etc/privileged_file ругается на «permission denied»
A: Это происходит потому, что только команда echo выполняется в повышенными правами, а результат перенаправляется в файл уже с правами обычного пользователя. Чтобы добавить что-нибудь в privileged_file, нужно выполнить такую команду:
$ echo 1| sudo tee -a privileged_file >/dev/null
Или же временно стать рутом:
$ sudo -i # echo 1 > privileged_file # exit $
Q: sudo -i длиннее, чем su - , а разницы между ними вроде как и никакой, зачем печатать больше?
A: У sudo есть несколько преимуществ, ради которых стоит потрудиться набрать несколько лишних символов:

  • по умолчанию sudo записывает всю пользовательскую активность в syslog-канал authpriv (как правило, результат кладется в файл /var/log/auth.log), а в su подобную фичу надо включать с помошью задания специального параметра в файле настроек, различающемся от дистрибутива к дистрибутиву (SULOG_FILE в /etc/login.defs в Ubuntu Linux, /etc/login.conf и /etc/pam.d/su в FreeBSD и т.д.)
  • в случае с su администратор системы не может ограничить команды, выполняемые пользователями, а в sudo - может
  • если пользователь должен быть лишен права администрирования, в случае с su после удаления его из группы wheel он должен забыть пароль root"а; если используется sudo, достаточно вынести его из соответствующей группы (например, wheel или admin) и/или файла sudoers, если он был дополнительно настроен.
Q: я единственный пользователь своей системы и привык к su, зачем мне sudo?
A: отвечу вопросом на вопрос: если есть правильный sudo, зачем использовать устаревший su?

Будучи Linux администратором, я всегда использовал и sudo , и su . И системному администратору очень важно, чтобы вы знали разницу между ними. Для тех, кто не имеет общего представления о разнице между этими двумя или всегда путает их - вот список из 12 Q&A (вопросов и ответов), которые направлены, чтобы помочь вам разобраться в тонкостях sudo и su.

ПРИМЕЧАНИЕ - Эта статья является специфичной только для Ubuntu. Хотя некоторые сведения могут быть применимы к большинству популярных дистрибутивов.

Sudo vs Su

Эта серия вопросов и ответов должна прояснить некоторые особенности sudo vs su для многих пользователей Ubuntu.

Q1 . Как используются sudo и su? В чем разница между ними?

Ответ .Sudo используется для запуска той или иной команды с разрешением корня. Интересно то, что когда вы используете sudo для определенной команды, система запросит у вас пароль текущего пользователя. После ввода пароля, команда запускается с привилегиями суперпользователя.

Вот пример:

$ apt-get install skype E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied) E: Unable to lock the administration directory (/var/lib/dpkg/), are you root? $ sudo apt-get install skype password for mylinuxbook: Reading package lists... Done Building dependency tree Reading state information... Done ... ...

Как вы видите, сначала я попытался установить Skype, используя команду apt-get , но я получил permission denied error . Тогда я использовал sudo вместе с такой же системой команд и системой пароля для пользователя mylinuxbook. После ввода правильного пароля, команда выполнена успешно.

С другой стороны, su используется для переключения любого пользователя. Установленный пароль соответствующего пользователя включен. Если su используется без опций, происходит переход к корневой учетной записи пользователя. В этом случае, система запрашивает пароль суперпользователя.

Вот пример:

$ su mylinuxbook Password: mylinuxbook@mylinuxbook-Inspiron-1525:~$

В приведенном выше примере, я использовал su для переключения на учетную запись пользователя mylinuxbook и после ввода пароля для mylinuxbook, я смог сделать это.

Вот еще один пример:

$ su Password: su: Authentication failure

В приведенном выше примере, я выполнил на su, чтобы включить кореневые права аккаунт обычному пользователю, но он не мог, потому что у меня ненастроен пароль суперпользователя. В дистрибутивах, таких как Ubuntu, пароли для суперпользователя не настроены по умолчанию. Как только его настроят, вы сможете использовать этот пароль.

Q2 . Что делать, если я не хочу настраивать пароль администратора в моей Ubuntu, но все же ​​хочу переключиться на суперпользователя?

Ответ. В этом случае вы можете попробовать команду "sudo su ". Вот пример:

$ sudo su password for mylinuxbook: root@mylinuxbook-Inspiron-1525:/home/mylinuxbook#

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

Q3. Что делать, если я хочу использовать su для перехода к другим учетным записям пользователей, но не хочу помнить каждого и каждый пароль пользователя?

Ответ . Ну, в таком случае, просто используйте команду su, введите пароль администратора и переключитесь на учетную запись. Отсюда, использовав su, можно переключиться на любую учетную запись пользователя без использования паролей.

Q4. Если sudo используется, чтобы выполнить что-то с привилегиями суперпользователя, тогда почему нужен пароль текущего пользователя, а не пароль суперпользователя?

Ответ. Ну, это н есовсем то, чтобы любой нормальный пользователь может сделать sudo и выполнять команды, которые требуют привилегий суперпользователя. Вы, как пользователь, должны быть sudoer тоже. Это означает, что вы должны иметь привилегии для использования sudo. Если вы являетесь действительным sudoer, система запрашивает пароль только для того чтобы убедиться, что вы понимаете, что вы делаете некоторые работы, которые требуют привилегий суперпользователя, и вы должны все перепроверить, прежде чем на самом деле сделать это.

Теперь возникает вопрос о sudoers. Как стать пользователем sudoer ? Пользователь может стать sudoer, если его добавили в группу sudo. Вот пример:

$ sudo adduser sudo

Просто замените фактическим именем пользователя для учетной записи. Обратите внимание, что ранее (до Ubuntu 12.04) группа должна была называться admin , но сейчас это не обязательно.

Вы можете использовать команду "group ", чтобы проверить все группы, в которых есть этот пользователь. Вот пример:

$ groups mylinuxbook mylinuxbook: mylinuxbook adm cdrom sudo dip plugdev lpadmin sambashare

Таким образом, вы видите, что пользователь "mylinuxbook " входит в состав всех этих групп, включая группы sudo, и, следовательно, sudoer.

Q5. Я заметил, что как только я использовал sudo, у меня длительное время сохраняются кореневые права, хотя через некоторое время все приходит в норму. Что это?

Ответ . Ubuntu помнит пароль для sudo около 15 минут. Это означает, что как только вы использовали sudo для выполнения команды, система не будет запрашивать пароль, если вы запускаете другие команды, которые требуют привилегий суперпользователя для запуска. Хотя вам придется использовать "sudo " перед каждой командой.

Q6. Какие преимущества sudo над su?

Ответ. Sudo имеет много преимуществ по сравнению с su.

Вот список:

  • Sudo гарантирует, что привилегии существуют для конкретной команды (или в течение определенного периода времени), а не для всей сессии, поскольку это может привести к случайному злоупотребление привилегиями суперпользователя.
  • Вы можете использовать sudo, чтобы ограничить права пользователя. Это полезно, когда вы не хотите, чтобы пользователь имел контроль над всеми правами суперпользователя, работая с suda.
  • Существует лог журнала (auth.log), который поддерживается для каждого sudoer. Этот файл содержит информацию о командах, которые были выполнены с использованием sudo, время их выполнения. Это помогает администратору отслеживать даже доверенных пользователей (sudoers).
  • Самое главное преимущество в том, что для входа в suda требуется собственный пароль пользователя, а не пароль суперпользователя. Это помогает сохранять личный корневой пароль, и нет необходимости менять его даже тогда, когда пользователь (sudoer) уходит.
  • Q7. Любой пользователь может выполнять операции sudo?

    Ответ. Нет, только доверенные пользователи или sudoers могут выполнять операции sudo. Вот официальная страница , которая описывает, как и что может делать пользователь-sudoer.

    Q8. Я интересуюсь su. Как я могу настроить использование su таким образом, чтобы достичь функциональность, аналогичную suda?

    Ответ . Если вы работаете с su, это означает, что у вас уже есть настроенный пароль суперпользователя. Для достижения функциональности, аналогичной sudo, т.е. для запуска только одной команды с привилегиями суперпользователя использованием su, все что вам нужно использовать опцию -c от команды su.

    Вот пример:

    $ su -c "apt-get install skype" Password:

    Просто введите пароль, и только эта команда будет работать с привилегиями суперпользователя. Хотя это так же, как sudo, но с той лишь разницей, что вам нужно ввести пароль суперпользователя вместо пароля текущего пользователя.

    Q9. Я работаю с sudо. Как я могу настроить использование sudo таким образом, чтобы достичь своей функциональности аналогичное su?

    Ответ. Для достижения функциональности su через sudo, попробуйте опцию -i команды sudo.

    Вот пример:

    $ sudo -i password for mylinuxbook: root@mylinuxbook-Inspiron-1525:~#

    Вы видите, что с помощью "sudo -i ", был выполнен переход на корневую учетную запись, хотя пароль, введенный для текущего пользователя (mylinuxbook в данном случае).

    Q10. Кореневой пароль моей учетной записи еще не активирован. Могу ли я использовать sudo, чтобы активировать пароль суперпользователя?

    Ответ. Для активации пароля для суперпользователя, вы можете использовать команду passwd следующим образом:

    $ sudo passwd root

    Эта команда требует права суперпользователя, так что вам придется использовать sudo.

    Q12. Могу ли я использовать sudo, чтобы предоставить особые права пользователям?

    Ответ. Конфигурационный файл для sudo - /etc/sudoers . Его нельзя редактировать вручную с помощью редактора. Для этой цели рекомендуется использовать команду visudo .

    Вот точная команда:

    $sudo visudo

    и вот что вы получите:

    Эта команда откроет временный файл /etc/sudoers.tmp в нано редакторе для редактирования. Visudo убеждается, что нет никакого конфликта, когда несколько экземпляров одного файла получается отредактировать.

    Чтобы понять, как предоставить ограниченные права, понять дизайн этого файла конфигурации, .

    В любой Linux-системе обязательно есть один привилегированный пользователь - root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.

    Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su . Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

    Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo .

    В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.

    Что такое sudo

    sudo - это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.

    Где используется sudo

    sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic - это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.

    Однако не все программы, требующие административных привилегий, автоматически запускаются через sudo. Обычно запускать программы с правами администратора приходится вручную.

    Запуск графических программ с правами администратора

    Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .

    Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду

    Gksudo nautilus

    Вместо gksudo можно подставить gksu , кроме того, пользователи KDE должны вместо gksudo писать kdesu . У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

    Gksudo <имя_команды>

    Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.

    Запуск программ с правами администратора в терминале

    Для запуска в терминале команды с правами администратора просто наберите перед ней sudo:

    Sudo <команда>

    У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter . После ввода пароля указанная команда исполнится от имени root.

    Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале

    Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды

    Sudo cat test.txt | grep text > result.txt

    с правами root исполнится только cat , поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.

    Получение прав суперпользователя для выполнения нескольких команд

    Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:

    Sudo -s sudo -i

    После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su , однако: - sudo -s - не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s , что обычно очень удобно. - sudo -i - сменит так же и домашний каталог на /root.

    Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl + D .

    Использование традиционного root аккаунта и команды su

    Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.

    Ubuntu 11.04 и младше

    Для входа под root достаточно задать ему пароль:

    Sudo passwd root

    Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

    Ubuntu 11.10 и старше

    Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

    1. Устанавливаем root пароль. Введите в терминал:

    Sudo passwd root

    2. Включаем пункт «Введите логин». Введите в терминал:

    Gksu gedit /etc/lightdm/lightdm.conf

    В конце файла допишите:

    Greeter-show-manual-login=true

    3. Перезагружаем lightdm. Введите в терминал:

    Sudo service lightdm restart

    Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль - пароль, который мы задали на первом этапе.

    Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

    Sudo passwd -l root

    Настройка sudo и прав доступа на выполнение различных команд

    sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers . Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

    Sudo visudo

    По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo , о чём говорит строчка

    %admin ALL=(ALL) ALL

    Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

    Man sudoers

    Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.

    Разрешение пользователю выполнять команду без ввода пароля

    Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды :

    # Cmnd alias specification Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot

    И в конец файла дописать строку

    Имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

    Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой

    Создание синонимов (alias`ов)

    Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее: откройте файл.bashrc, находящейся в вашем домашнем каталоге

    nano ~/ bashrc

    и добавьте в конец файла строки

    alias reboot ="sudo reboot" alias poweroff ="sudo poweroff" alias pm-hibernate="sudo pm-hibernate" alias hibernate ="sudo pm-hibernate" alias shutdown ="sudo shutdown"

    Время действия введённого пароля

    Возможно, вы хотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo) примерно следующее:

    Defaults:foo timestamp_timeout=20

    Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут. Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.

    sudo не спрашивает пароль

    sudo без пароля - чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно - срочно верните обратно как было.

    Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo , то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:

    ALL ALL=(ALL) NOPASSWD:ALL

    Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

    Юзернейм ALL= NOPASSWD: /путь/к/программе

    Есть и другие варианты решения проблемы, небольшое обсуждение .

    Иногда для решения какой-либо задачи необходимо открыть терминал и выполнить команды от суперпользователя (sudo или su), называемый также ROOT. Хотя некоторые из них можно осуществить с помощью графического интерфейса.

    Для чего в Unix системах нужен и используется Root, вы можете узнать из , а мы далее будем обсуждать, как применяется sudo или su в Linux системах.

    Предположим, что нужно выполнить нестандартную задачу, где графические инструменты нам не помогут. К тому же командная строка является очень гибким инструментом, здесь можно увидеть вывод команд и понять, что происходит не так как нужно. А самое главное, команды в терминале являются стандартными для всех дистрибутивов Linux.

    Итак, существует два основных способа получить права суперпользователя (Root) это - sudo или su

    Команда sudo используется в Debian - подобных системах или более популярных Ubuntu, «su» используется почти во всех остальных дистрибутивах Linux.

    Ввод sudo в операционной системе Ubuntu требует ввода пароля Root и далее после успешного ввода, дает права суперпользователя на время выполнения одной лишь команды. Перед всеми последующими командами, которые требуют прав Root в Debian - подобных системах, необходимо снова вводить «sudo». А в остальных дистрибутивах Linux, где используется команда «su», предоставляет полный доступ Root, после ввода пароля, пока вы не введете «logout» или не закроете терминал.

    В Debian - подобных (Ubuntu) системах есть одна хитрость, которая может предоставить полный доступ к Root, пока вы не закроете терминал. Это нужно в том случае если вы будете выполнять много команд от имени Root, и вам не придется перед каждой командой вводить «sudo». Для этого скомандуйте:

    Например, нам необходимо найти всех имеющихся пользователей в системе, увидеть их каталоги и присвоить права нужного каталога одного пользователя другому. Для этого если бы я использовал Ubuntu, то команда в терминале была бы следующей:

    Sudo du -sch /home/*

    После этого последовал бы пароль от Root:

    16K /home/lost+found 27G /home/pavel 34G /home/pavelubuntu 50G /home/pavelzen 110G итого

    Я знаю, что я являюсь пользователем каталога /home/pavelzen , но мне необходимо еще стать и владельцем каталога /home/pavelubuntu. Для этого мне вновь необходимо перед командой ввести «sudo».

    А для других систем: сначала я скомандовал бы

    пароль, а потом

    Du -sch /home/*

    Chown -R pavelzen: /home/pavelubuntu

    Вот так в системах Linux проявляются терминалы и суперпользователи.

    Sudo - это программа позволяющая администраторам давать ограниченные root права пользователям и вести журнал root активности. Базовая философия заключается в том, чтобы дать так мало прав, как это возможно, но при этом позволить людям нормально выполнять свои задачи. Отличие от команды su в том, что пользователь вводит пароль от своей учетной записи, а не пароль пользователя root.

    Sudo в Debian имеет пятнадцатиминутный (может быть ) таймаут после ввода пароля. Это значит, что когда вы первый раз ввели пароль рута, то у вас есть 15 минут в течение которых вы можете выполнить следующую команду без ввода пароля. Таймаут может быть немедленно сброшен с помощью команды sudo -k .

    Установка sudo в Debian 7

    aptitude install sudo

    Во время установки создается конфигурационный файл /etc/sudoers и директория /etc/sudoers.d , о которых мы поговорим чуть позже.

    Параметры команды sudo

    -k - позволяет сбросить таймаут до момента, когда необходимо будет снова вводить пароль. Если указать команду, которая может потребовать ввода пароля, то таймаут будет сброшен конкретно для этой команды.
    -h - будет выведена небольшая подсказка на стандартный выход.
    -V - отобразиться версия sudo и плагинов. Если запустить от root, то будут выведены все настройки.
    -g group - позволяет задать от какой группы будет запущена команда.
    -H - задает директорию, которая будет указана в переменной окружения HOME.
    -i - симулирует начальный вход. Если команда не указана, то будет произведен вход в систему, таким образом можно сделаться рутом вместо использования sudo su.
    -l[l] - если команда не указана, то будет выведен список доступных команд для вызвавшего пользователя (или пользователя указанного с параметром -U). Если указана команда и она доступна, то будет выведен полный путь до команды и доступные параметры. Если команда не доступна, то sudo закроется со статусом 1. Если использовать параметр -ll или указать -l два раза, то будет использован более подробный формат вывода.
    -s - будет запущена оболочка указанная в переменной окружения SHELL. Если указана команда, то она будет передана на исполнения запущенной оболочке.
    -U user - совместно с параметром -l позволяет отобразить привилегии определенного пользователя. Доступ спискам привилегий по умолчанию есть у root и пользователей со всеми привилегиями (ALL).
    -u user - указанная команда будет запущена от имени указанного пользователя, а не от root.
    -v - позволяет продлить таймаут на 15 минут или на тот, который указан в sudoers), но не выполнять каких-либо команд.

    Здесь указана большая часть доступных параметров, но не все. Чтобы посмотреть полный список используйте команду man sudo .

    Настройка sudo в Debian 7

    Рекомендуется все пользовательские настройки задавать в файлах в директории /etc/sudoers.d , а не в основном файле /etc/sudoers . То есть можно создать файл с любым названием в директории /etc/sudoers.d и уже в нем перечислить необходимые настройки.

    Файл /etc/sudoers рекомендуется править с помощью утилиты visudo , так как она блокирует файл и осуществляет проверку правильности написания директив при закрытии. visudo использует текстовый редактор по умолчанию, который можно переопределить в sudoers директивой вида:

    Loading...Loading...