Как войти в линукс под root. Что такое sudo

В любой 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: /путь/к/программе

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

1. Использование команды: su

Многие команды могут быть запущены только суперпользователем, поэтому мы должны знать, как становится им (root-ом). Чтобы сделать это, мы можем использовать команду: su (смена пользователя). Команда su принимает следующие форматы:

но чаще всего мы будем использовать su для того, чтобы стать пользователем root :

Su - root

если имя пользователя в строке не указано, то автоматически предпологается пользователь root, поэтому команду можно сократить:

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

Зачастую пользователи используют "su" для перехода в root. Попробовав запустить команду (например - ifconfig), вы получите: "command not found" error.

Su Password: ifconfig bash: ifconfig: command not found

Причина заключается в том, что обычные пользователи системы и root пользователь имеют различные переменные окружения PATH (вы можете посмотреть PATH пользователя при помощи "echo $PATH). После ввода команды Linux, оболочка будет искать пользовательский PATH, чтобы попытаться найти команду для запуска. Она начинает поиск в каждой директории указанной в PATH, пока цель не будет найдена.

Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи "su -", то вы также принимаете и новый путь PATH к основным командам. А используя только "su", сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: "command not found" error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells.

Таким образом, вы или должны указывать полный путь к команде (пример - /sbin/ifconfig) при использовании "su", либо использовать "su -", когда становитесь root-ом.

2. Использование Sudo

Вам не нужно быть суперпользователем каждый раз, когда вы хотите запустить некоторые конкретные административные функции. Благодаря Sudo , вы можете запустить некоторые или все команды как под root-ом. Когда Sudo установлен (пакет: Sudo), вы можете настроить его при помощи команды "visudo" под root-ом. В основном он редактирует (Vim по умолчанию) /etc/sudoers, но это не рекомендуется делать вручную.

Alex ALL=(ALL)ALL

Alex - имя пользователя. Сохраните (нажать escape, затем ввести wq), и все готово. Войдите как alex, и запустите например:

$sudo yum update

Sudo запросит пароль. Это пароль alex-а, а не пользователя root. Так что будте осторожны, когда вы даете права пользователя с Sudo.

Но Sudo может сделать не только это, а гораздо больше. Мы можем позволить пользователю или группе пользователей запускать только одну команду или группу команд. Давайте вернемся к нашему sudoers файлу. Начнем с alex и alisa, членов группы administrator. Если мы хотим, чтобы все пользователи из группы"administrator" были в состоянии запустить каждую команду в качестве суперпользователя, мы должны изменить наш пример:

%admin ALL=(ALL)ALL

Alex так же может выполнить суперпользовательскую команду, и alisa получила право запускать Sudo, с теми же правами и со своим паролем. Если alex и alisa не члены одной группы, мы можем определить псевдоним пользователя в файле sudoers:

User_Alias ADMINS = alisa,alex

Здесь мы определили алиас под названием ADMINS, с членами alisa и alex.

Тем не менее, мы не хотим, чтобы alex и alisa могли запускать с правами суперпользователя любую програму. Мы хотим, чтобы они могли запускать только "updatedb". Давайте определим команду псевдоним:

Cmnd_Alias LOCATE = /usr/sbin/updatedb

Но этого мало! Мы должны сказать Sudo, что пользователи, определенные как ADMINS, могут запускать команды заданные в LOCATE. Чтобы сделать это, мы заменим строки с "%admin" на эти:

ADMINS ALL = LOCATE

Это означает, что пользователи входящие в алиас ADMINS могут запускать все команды в алиасе LOCATE.

На этот раз, /etc/sudoers выглядит следующим образом:

User_Alias ADMINS = alisa, alex Cmnd_Alias LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE

В результате alex и alisa могут запускать updatedb, как root, введя свой пароль.

Если последнюю строчку в файле изменить:

ADMINS ALL = NOPASSWD:LOCATE

тогда alex и alisa смогут выполнить "sudo updatedb" без ввода пароля.

Можно добавить другие команды в командный алиас и более алиасов в правило. Например мы можем создать алиас NETWORKING содержащий некоторые сетевые команды типа: ifconfig, route или iwconfig:

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

Давайте все это добавим в наш /etc/sudoers файл (с помощью visudo!). А также предоставим нашей ADMINS групе права на выполнение программ и из алиаса NETWORKING:

User_Alias ADMINS = alice, bob Cmnd_Alias LOCATE = /usr/bin/updatedb Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINS ALL = LOCATE, NETWORKING

Маленькая проба: войдите в систему как alisa (или alex), и наберите:

$ping -c 10 -i localhost

Ответ должен вернуться быстро:

PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. ping: cannot flood; minimal interval, allowed for user, is 200ms

Теперь, тоже-самое но с Sudo:

$sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms --- localhost.localdomain ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1ms rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms

Sudo часто используется для предоставления определенным пользователям частичного доступа к привелигированным командам, чтобы они могли выполнять ограниченные административные функции. Одно из удобств Sudo в том, что все команды записываются в /var/log/secure. Приведенный выше пример будет описан строчкой в журнале:

Apr 18 11:23:17 localhost sudo: alex: TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost

Вот и все. Теперь никогда не забуду, когда использовал Sudo: "с большой властью приходит большая ответственность".

2.1 Sudo shell

Если у вас настроено достаточно прав в sudoers, вы также можете открыть root-ую оболочку shell используя:

В последних версиях только на CentOS 5, для запуска shell под root, используется sudo -s. Будьте очень осторожны, так как это может менять или создавать новые файлы в домашней директории Root, а установку вести в домашний каталог вызвавшего пользователя.

3. consolehelper

Consolehelper представляет собой оболочку для запуска GUI приложений. Когда он начинает работать, он проверяет конфигурацию PAM для требуемого применения. Это означает, что мы можем проводить аутентификацию пользователя с помощью всех установленных модулей PAM. Основной метод состоит в том, чтобы запросить пароль, но если мы имеем надлежащее оборудование. мы можем аутентифицировать с помощью смарткарты, жетонов, отпечатков пальцев и т.д. Конфигурация PAM выходит за рамки этого документа (см. PAM Руководство администратора), поэтому мы рассмотрим этап настройки consolehelper, необходимый для запуска приложений под root-ом и запросом пароля root.

В качестве примера, давайте настроим /usr/bin/xterm для запуска в качестве root-ого.

Ln -s /usr/sbin/consolehelper /usr/bin/xterm-root

Теперь для конфигурирования PAM - создайте файл /etc/pam.d/xterm-root:

#%PAM-1.0 auth include config-util account include config-util session include config-util

Наконец, настройте consolehelper на запуск /usr/bin/xterm под root-ом, командой "xterm-root". Создайте файл /etc/security/console.apps/xterm-root:

USER=root PROGRAM=/usr/bin/xterm

Вот и все. Запускайте "xterm-root" (из командной строки или ярлыком.desktop file), введите пароль и в путь. Если вы получили сообщение об ошибке: "Xlib: connecttion to ":0.0" refused by server", запустите сначала "xhost local:root".

Здравствуйте, уважаемые посетители, читатели, други и недруги, случайные личности, постоянные клиенты и прочие, так сказать, человеки. Мы продолжаем знакомить Вас с Linux-системами, и эта статья из цикла, посвященного Linux, попытается продолжить базовое знакомство и потихоньку погружать Вас в реальность опытного линуксоида, которая (реальность) таки не всегда сурова, особенно, когда есть знания и материалы , но не всегда бывает и добра.

Сразу оговоримся, что в каком бы дистрибутиве Вы не работали (будь то Mint, Debian , Ubuntu , Fedora , Mandriva , Slackware , Gentoo и т.д. и т.п. – сейчас различных дистрибутивов линукса насчитывается порядка 600 или даже больше, если не считать совсем уж мелкие проекты), суть этой работы не изменится. Отличаться могут команды, потому как используются разные . Сегодня мы более подробно затронем такие понятия как:

  • Кто же такой суперпользователь,
  • Что такое пользователи и группы в Linux- системах.

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

Приступим.

Всякое-разное о многопользовательской Linux и администраторском аккаунте Root

1. Многопользовательская система
Итак, еще раз. Linux является многозадачной многопользовательской (сколько много мног"ов:)) операционной системой. Это означает, что одновременно с системой могут работать несколько пользователей, да и каждый из них может запускать несколько приложений. И при этом, например, Вы можете зайти в систему локально, а другой пользователь – удаленно, воспользовавшись протоколами удаленного доступа (telnet, ssh, ftp ).

Это очень удобно. Приведем пример, чтобы было понятно, о чем идет речь. Предположим, Вам понадобилось распечатать документ, который есть на рабочем компьютере, а на домашнем его нет. При наличии интернета и компьютера, настроенного соответствующим образом, это не составит особого труда, ибо Вы спокойно зайдете в систему, скопируете нужный Вам файл и распечатаете его там, где вам это удобно. И даже если кто-то в момент Вашего подключения уже работает с системой, то таки Вы не будете мешать друг другу. В Windows такая возможность тоже есть, но только после установки соответствующего программного обеспечения, и при этом Вы не сможете войти в систему, чтобы "не помешать" другому пользователю, который уже в ней находится. Вместе вы работать не сможете, ибо будете мешать друг другу. Всё, что Вы будете делать, будет отражаться на мониторе пользователя (т.е. рабочий стол получится как бы общий), и если не предупредить пользователя, что Вы удаленно зашли в систему, он подумает, что с его компьютером что-то не так (случай, конечно, не 100 %, но в большинстве своём это факт).

Вывод:
В Linux- системах несколько пользователей могут работать с системой и даже не подозревать о существовании друг друга, пока не воспользуются командой (например, who) . Linux изначально разрабатывалась как многопользовательская система с возможностью удаленного подключения как в текстовом, так и в графическом режиме. Windows в основе своей всегда была (и, наверное, долго останется) системой персонального, ни с чем совсем сильно не связанного компьютера, а средства взаимодействия по локальной сети всегда шли в виде своего рода «довеска». Кроме того, Linux всегда опиралась на открытые протоколы, большая часть которых является стандартом в мире Unix -систем. Microsoft , напротив, делает ставку на собственные протоколы, естественно, закрытые и не всегда совместимые со своими предыдущими версиями.

2. Суперпользователь (root)
Вот мы выяснили (точнее говоря, немного прояснили), что представляет из себя многопользовательская система. Теперь поговорим о том, кто же такой в Linux- системах пользователь root .

Условно и "сленгово" говоря - это царь и бог:). Пользователь root обладает ВСЕМИ полномочиями в системе, вплоть до её полного и безвозвратного удаления, т.е. это, так сказать, системный администратор в отдельно взятой операционной системе.

Любая команда, введенная в терминале, таки будет выполнена безоговорочно и бесповоротно. Так что работать под root -ом в любых Linux (unix )-системах не приветствуется и даже, можно сказать, не принято. Например, кто-то решил "подшутить" и выложил в интернете вредоносную программу, а Вы взяли и скачали её, да еще и начали устанавливать ее на своем компьютере (трудно представить себе таких экстремалов, но все же - а вдруг найдутся такие:)). Если запуск этой программы будет произведен через суперпользователя, то Ваша система может быть легко уничтожена, а вот запуск этой программы от имени простого пользователя ни к чему не приведет - система просто откажется выполнять ее, сославшись на то, что у Вас не хватает полномочий. Это лишний повод присмотреться, а нужно ли Вам вообще это устанавливать. Вот поэтому в Linux (unix)-системах вход под именем пользователя root запрещен.

В одних дистрибутивах Вы не сможете войти как root в графическом режиме, но сможете зайти через консоль (грубо говоря, терминал) комбинацией клавиш Ctrl + Alt + F2 (как, например, в Fedora ), а в других дистрибутивах Вы вообще не сможете войти как root - ни через графический режим, ни через комбинацию клавиш, ни через консоль (к такому дистрибутиву, например, относится Ubuntu ). Встает вопрос - а как тогда устанавливать нужные программы, минуя этого суперпользователя? Для этого существует "временное разрешение" на выполнение нужных операций в виде команд sudo или su . Чем же отличаются эти команды друг от друга?

Давайте начнем с sudo . Эта команда позволяет запустить любую команду с привилегиями root . Но использовать эту команду могут не все пользователи, а только те, которые внесены в файл /etc/sudoers (в этом файле в доступной форме расписывается - каким пользователям или группам можно выполнять команду sudo , а это значит, что рядовой пользователь, не внесенный в этот файл, даже при сильном своем желании не сможет воспользоваться правами root ).

Отступление
О каталоге /etc мы поговорим в другой раз - потому что это отдельная тема. Но хочется сказать, что в этом каталоге содержатся почти все настройки системы (кроме пользовательских, пользовательские настройки хранятся в домашнем каталоге пользователя /home ), при этом в каталоге /etc находится множество текстовых файлов. А поскольку файлы текстовые, то их можно редактировать любым текстовым редактором, что очень упрощает работу с системными файлами и повышает надежность системы. К слову, даже если удалить один из конфигурационных файлов каталога /etc , система продолжит работу как ни в чем не бывало! Конечно, она будет работать не так, как до удаления этого файла, но все же она, в отличие от Windows , будет работать.

Теория это, конечно, хорошо, но давайте немного попрактикуемся. Например, вам нужно отредактировать файл /etc/sudoers , для чего заходим в терминал и вводим:

sudo gedit /etc/sudoers

Откроется окно программы gedit :

Где мы производим нужное редактирование, сохраняем и закрываем этот файл. В Linux- системах очень много текстовых редакторов, с помощью которых можно редактировать файлы, - это и вышеупомянутый gedit , и nano , и vi , и много других, - посему Вы можете воспользоваться любым. Вот как будет выглядеть открытие файла через редактор nano :

Если мы введем без sudo ту же команду:

gedit /etc/sudoers

Теперь о команде su .
Команда su позволяет получить доступ к консоли (терминалу) root ЛЮБОМУ пользователю (даже если этот пользователь не внесен в список файла /etc/sudoers ), но при условии, что он знает пароль root . Разницу прочувствовали?

Вывод :
Команда su предназначена для администраторов системы, а sudo - для остальных пользователей, которым только иногда нужны права root.

Отступление :
Для многих пользователей команда su - получение прав суперпользователя. Это не совсем верно. Команда su вызывает оболочку другого пользователя в системе, т.е. позволяет получить права ДРУГОГО пользователя, который должен быть указан аргументом к этой команде. Попробуйте ввести команду su root или su [имя_вашего_пользователя] и посмотрите как среагирует эта команда. Я бы рекомендовал использовать один важный параметр "-" (тире), который существенно изменяет её работу. При выполнении команды "su - " вызывается оболочка регистрации в системе. Это часто сбивает с толку новичков: "su " предоставляет Вам только права другого пользователя, "su - " позволяет войти под именем другого пользователя. Второе означает, что вместе с предоставлением прав у вас изменится текущий рабочий каталог, домашний каталог и переменные окружения. Использование команды su без параметра "-" чревато проблемами - запущенная таким образом программа сохраняет свои настройки в каталоге вызывающего, а не вызываемого пользователя (помните, Вам предоставляются только права). Если этот пользователь root - Вы получите в своем домашнем каталоге файлы настроек программы, к которым не будете иметь доступа. Следует ли говорить, что запустив в дальнейшем ту же самую программу из-под своего аккаунта, Вы, в лучшем случае, не сможете сохранить свои настройки, в худшем - программа вообще не запустится. Лучше вообще не использовать команду su для запуска программ со своими переменными окружения, для этого более подходит команда sudo . Не запутал я вас еще? :)

И, тем не менее, заходить в систему под суперпользователем можно всегда, даже если эта учетная запись ограничена или отключена, например, в Ubuntu нужно просто задать пароль для пользователя root командой sudo passwd root . Сначала система запросит ваш пользовательский пароль, затем новый пароль и его подтверждение. Учетную запись root в ubuntu можно потом отключить командой sudo passwd -l root , но.. После закрытия учетной записи могут быть проблемы с входом в систему в режиме восстановления. На мой взгляд, в ubuntu суперпользователя лучше не включать, а пользоваться командой

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

# adduser <имя пользователя> (добавляет пользователя)

# passwd <имя пользователя> (задает/изменяет пароль)

Обратите внимание на знак # перед командой. Таким знаком обозначается, что команду отдает суперпользователь (он же root , он же бог и властелин, если перед командой стоит значок $ - то команда будет выполняться от простого пользователя).

Вот он, наш новый пользователь системы Dron . Мы его создали и завели пароль на эту учетную запись.

Если пароль задан слишком простой, то Вам выдастся предупреждение, что пароль слишком доступный:

И так будет до бесконечности, пока Вы не создадите нормальный и таки .

При создании нового пользователя для него в системе создастся каталог /home <имя пользователя> , куда скопируется содержимое каталога /etc/skel (в нем находится весь "джентльменский" набор, который должен быть в любом пользовательском каталоге).

Помимо этого в файле /etc/passwd создается запись, короче, наш новый пользователь Dron будет полноправным пользователем системы.

Удалить пользователя из системы так же просто, как и завести его. Достаточно набрать команду:

# userdel <имя пользователя> (смотрите себя не удалите) :).

3. Группы пользователей
Иногда, для удобства работы, пользователей объединяют в группы. По умолчанию один пользователь не имеет доступа к домашнему каталогу другого пользователя (например, пользователь galina не будет иметь доступ к домашнему каталогу Dron и наоборот, Dron не будет иметь доступа к домашнему каталогу galina ). Но если нескольких пользователей объединить в одну группу, то у каждого из них будет доступ не только к своему домашнему каталогу, но и к домашним каталогам других пользователей. Полезность таких объединений очевидна. Обычно добавлять/удалять/изменять учетные записи принято через командную строку, но хотелось бы затронуть графические конфигураторы (это маленькие утилиты, которые упрощают жизнь начинающим пользователям или тем, кто любит работать в графическом интерфейсе). С другой стороны, я хочу показать, что работать в linux (unix )-системах можно разными способами: можно через командную строку, а можно использовать - кому что больше по душе. В каждом дистрибутиве есть свои конфигураторы, и они могут отличаться. Например, в Fedora для редактирования пользователей и групп служит конфигуратор system-config-users .

Еще раз вернитесь к рисунку, где мы удаляли пользователя Dron из системы. В системе остался один пользователь – galina. Выделите его, нажмите на кнопку «Свойства » и Вы узнаете много интересного:). Например, обратите внимание на вкладку «Группы », где можете включить пользователя в ту или иную группу, просто поставив галочку:

С каждым новым пользователем создаются и новые группы. Если у пользователя galina на вкладке «Группы » поставить галку на группе «Dron », то у galina будет доступ к домашнему каталогу пользователя Dron (а вот у Dron таких полномочий не будет).

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

Давайте попробуем потренироваться на другом дистрибутиве (все предыдущие картинки относятся к дистрибутиву Fedora 16 ), например, на ubuntu 12.10 (этот дистрибутив тоже популярен среди населения). Отвлекусь и напомню, что в каком бы дистрибутиве Вы не сидели, смысл работы будет идентичен, отличаться будут только команды. В данном конкретном случае в ubuntu есть конфигуратор gnome - system - tools , и он по умолчанию не установлен в системе. Чтобы воспользоваться всеми прелестями этого конфигуратора, для начала установите его командой:

sudo apt-get install gnome-system-tools.

Пошел процесс установки данной утилиты:

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

Потом в поиске можно набрать «группы» или «пользователи» и появится иконка утилиты gnome-system-tools

Или запускаем утилиту командой users - admin из терминала (командной строки):

И нашему взору представляется графический интерфейс настроек пользователей и групп в ubuntu :

Все современные дистрибутивы Linux неплохо русифицированы, а поэтому более подробно останавливаться на рассмотрении этой утилиты мы не будем, но главные моменты осветим.

Понятно, что чтобы добавить нового пользователя, нужно нажать кнопку «Добавить» , чтобы удалить созданного пользователя – нажать кнопку «Удалить» . Чтобы изменить тип учетной записи – нужно щелкнуть по кнопке «Изменить» , напротив поля «Тип учетной записи ». Существует 3 вида учетной записи:

  • Администратор (root ) – пользователь может администрировать систему
  • Пользователь – пользователь может работать в системе, но не может администрировать её (использовать команду sudo , устанавливать программы, управлять пользователями и т.д., т.п.)
  • Другое – эта учетная запись с особыми параметрами доступа, которые устанавливаются вручную. Для этого нужно воспользоваться вкладкой «Дополнительные параметры ». На вкладке «Привилегии пользователя » можно задать, какие операции может выполнять пользователь, а какие – нет.

На вкладке «Дополнительно » Вы можете отключить учетную запись, изменить группу, ID пользователя, можете даже выбрать другой интерпретатор и домашний каталог.

Если Вам необходимо разрешить пользователю использовать sudo , то в окне «Параметры пользователей » выделите учетную запись пользователя, нажмите кнопку «Дополнительные параметры » и на вкладке «Привилегии пользователя » разрешите «Администрирование системы ».

Чтобы управлять группами – нужно воспользоваться кнопкой «Управление группами ».

Вы увидите список групп и кнопки «Добавить » (ну понятно же, что эта кнопка добавляет новую группу), «Удалить » (удаляет группу) и «Свойства » (с помощью этой кнопки Вы легко добавите/исключите членов группы). Все очень просто и интуитивно понятно.

На этом мы закончим нашу очередную лекцию:). Надеюсь, что я Вас не утомил? Согласитесь, что в принципе не так уж и страшна эта система, как о ней говорят. Если есть что дополнить (добавить), милости прошу, добавляйте в своих комментариях.

Послесловие

Вот такая вот получилась полутеоретическая и немножко практическая, но таки важная статья для тех, кто постигает линукс и кому он интересен.

P.S. За существование данной статьи спасибо члену команды Pantera

Как вы понимаете, в ответ на это приглашение необходимо ввести имя пользователя, а потом, по запросу, и пароль для входа в систему. Если это первый вход в систему после ее установки, то входить надо под именем ""root"". Это единственный пользователь, для которого обязательно заводится счет или бюджет (account) во время инсталляции. Этот пользователь является полным хозяином системы (как сейчас, так и в последующем), то есть имеет неограниченный доступ к ее ресурсам, может заводить и удалять других пользователей, останавливать систему и т. д. Неосторожное поведение пользователя с такими правами легко может привести к печальным последствиям, вплоть до полного краха системы. Поэтому обычно под этим именем входят в систему только для выполнения административных задач. Но у нас сейчас как раз такой случай, так что в ответ на приглашение login : вводим "root" и нажимаем клавишу (или < Return> ). Система выдаст запрос на ввод пароля:

Password:

Очевидно, что в ответ надо вводить пароль того пользователя, имя которого было введено ранее. При первой загрузке надо ввести тот пароль, которой был задан для пользователя root в процессе инсталляции, и нажать . Заметим, что если после ввода имени очень долго не вводить пароль, то система снова вернется к запросу имени пользователя. После ввода пароля вы увидите примерно такую надпись:

Такая строка называется приглашением. Появление приглашения означает, что система готова воспринять и выполнить вашу команду. Сейчас это свидетельствует о том, что вы успешно вошли в систему. Вы видите черный экран и приглашение системы к вводу команды — то, что в MS-DOS или Windows принято называть режимом командной строки. Мы будем называть этот режим текстовым (в отличие от графического режима, предоставляемого системой X Window).

В приведенном примере приглашение включает в себя указание имени пользователя (root ), имени системы (localhost ) и тукущего каталога (/root ). Вид приглашения тоже можно изменить. Во всех последующих примерах мы будем использовать приглашение, состоящее только из имени пользователя.

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

Первая команда, которую стоит ввести — команда useradd . После имени команды надо ввести пробел и имя пользователя, например, jim:

# useradd jim

После этого система будет знать о существовании пользователя jim (говорят, будет "открыт счет для пользователя jim "). Однако войти в систему (или, как обычно говорят, "логироваться") под этим именем еще невозможно. Для того, чтобы система разрешила работать пользователю с именем jim , надо задать ему пароль. Для этого вводим команду

# passwd jim

Появится строка

New UNIX password:

Вводите пароль. После того, как вы завершите ввод нажатием клавиши , система попросит ввести его повторно:

Retype new UNIX password:

Если вы не ошиблись при вводе (пароль приходится вводить "вслепую", поскольку он не отображается на экране), появится сообщение:

passwd: all authentication tokens updated successfully

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

Таким образом, вы познакомились с первыми двумя командами системы Linux: useradd и passwd . Следующая команда, о которой нужно знать каждому пользователю любой UNIX-системы — это команда man . Команда man — это система встроенной помощи системы Linux. Вводить ее надо с параметром — именем другой команды или ключевым словом, например,

# man passwd

В ответ вы получите описание соответствующей команды или информацию по теме, обозначенной ключевым словом. Поскольку информация обычно не помещается на одном экране, при просмотре можно пользоваться клавишами И А также клавишей пробела. Нажатие клавиши в любой момент приводит к выходу из режима просмотра и возврату в режим ввода команд. Попробуйте просмотреть информацию по рассмотренным уже командам login и passwd . Заметим, что точно также можно получить информацию по самой команде man . Введите

# man man

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

Вы можете попробовать вводить еще некоторые команды и понаблюдать за реакцией системы. Попробуйте, например, команды, перечисленные в табл. 3.1 (вводите их с приведенными в таблице параметрами).

Таблица 3.1 . Простейшие команды Linux.

Команда

Краткое описание

whoami

Сообщает имя, с которым вы вошли в систему в данном сеансе работы

w илиwho

Сообщает, какие пользователи работают в данный момент в системе

pwd

Сообщает имя текущего каталога

ls -l

Выдает список файлов и подкаталогов текущего каталога

cd < имя_каталога>

Осуществляет смену текущего каталога

ps ax

Выдает список выполняющихся процессов

Просмотрите описания этих команд с помощью команды man .

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

В. Костромин (kos at rus-linux dot net) - 3.2. Вход в систему

Когда мы хотим запускать программы с правами root, мы используем sudo , gksu , gksudo и т. Д. Теперь мой вопрос: как мы можем запускать Terminal в качестве пользователя root в Terminal?

Я пробовал использовать gksudo terminal gksu terminal но ничего не происходит. и, запустив sudo terminal я получу ошибку sudo: terminal: command not found .

Эмулятор терминала по умолчанию на Ubuntu – это терминал GNOME . Он расположен в /usr/bin/gnome-terminal и может быть запущен с помощью команды gnome-terminal .

Что вы действительно хотите

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

Предполагая, что вы хотите, как предложил steeldriver , просто запустите:

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

Но если вы действительно хотите запустить приложение эмулятора графического терминала как root, прочитайте дальше. Я представляю два способа: с помощью gksu / gksdo и командой sudo .

С gksu / gksudo

Поскольку у вас есть gksu установленный пакет, вы можете запустить gnome-terminal как root с любым из:

Gksu gnome-terminal gksudo gnome-terminal

(Так как gksu по умолчанию установлен в sudo-mode в Ubuntu, они должны быть эквивалентными.)

Запуск gnome-terminal как root без управляющего gnome-terminal без полномочий root:

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

Обычно это достигается с помощью Alt + F2 . Появится текстовое поле с надписью Run (или аналогичное), и вы сможете ввести свою команду.

Например, это похоже на Unity:

И как в MATE (GNOME Flashback / Fallback, Xfce, LXDE похожи):

Обратите внимание, что это работает с gksu и gksudo потому что они используют графическое диалоговое окно проверки подлинности. Если вы должны были нажать Alt + F2 и запустить sudo ... , вы не сможете взаимодействовать с подсказкой пароля.

С sudo

Если у вас нет пакета gksu, и вы не захотите его установить, вы можете использовать:

Sudo -H gnome-terminal

Флаг -H важен, поскольку он устанавливает переменную среды HOME в /root вместо домашнего каталога вашего собственного пользователя. Вы не должны использовать sudo gnome-terminal как он может нарушить конфигурацию gnome-terminal, принадлежащую пользователю без полномочий root. Для получения дополнительной информации об этом см.

  • RootSudo в вики помощи Ubuntu
  • Почему пользователи не должны использовать обычное sudo для запуска графических приложений?

(sudo -i gnome-terminal тоже в порядке.)

Избавление от управляющего терминала без полномочий:

Если вы (1) открываете графический терминал, (2) запускаете в нем что-то вроде sudo -H gnome-terminal , создаете новый графический корневой терминал и (3) выходите из оригинального графического терминала без полномочий root … тогда корневой графический терминал завершает работу.

Это связано с тем, что корневой графический терминал отправляется SIGHUP, когда терминал, который его владеет, выходит из него.

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

Sudo -H gnome-terminal &

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

Один из способов обойти это – использовать:

Sudo -v sudo -H gnome-terminal

sudo -v существует только для этой цели. Как объясняется в man sudo , он «обновляет [s] кэшированные учетные данные пользователя, при необходимости аутентифицируя пользователя».

Обратите внимание, что это все равно не сработает, если вы запускаете прямо из командной строки Alt + F2 рабочего стола среды рабочего стола, потому что вам все еще нужен терминал для ввода пароля для sudo -v .

Или вы можете сделать это в том, что можно назвать традиционным способом, приостановив работу после ее запуска:

  1. Запустите sudo -H gnome-terminal из исходного графического терминала без полномочий root.
  2. Введите пароль, как указано в sudo . Начнется графический терминал.
  3. Находясь в терминале без полномочий root , нажмите Ctrl + Z, чтобы приостановить корневой терминал. Хотя корневой терминал приостановлен, вы не можете его использовать; его интерфейс не будет реагировать на ваши действия.
  4. Выйдите из управляющего терминала без exit root с exit . Задание графического корневого терминала будет автоматически отменено и отменено терминалом без полномочий root.

Sudo -H gnome-terminal ^Z exit

Но предположим, что вы хотели продолжать использовать оригинальный, не-корневой терминал. Затем вы можете запустить bg N , где N – номер задания графического корневого терминала, чтобы возобновить работу в фоновом режиме. Вы можете запускать jobs чтобы найти N но вам, вероятно, не придется – этот номер был показан как [ N ] когда вы нажимали Ctrl + Z. Например:

Ek@Ilex:~$ sudo -H gnome-terminal password for ek: ^Z [ 1 ]+ Stopped sudo -H gnome-terminal ek@Ilex:~$

Короткий ответ:

Gksudo gnome-terminal (assuming gksu is installed)

открывает терминал как root:

Root@jacob-Satellite-L300:~#

Не нужно объяснять, что вы можете использовать это, чтобы открыть любой терминал как root; например, Vala (gksudo vala-terminal), gksudo xterm (gksudo xterm), Termit (gksudo termit), UXTerm (gksudo uxterm), Konsole (gksudo konsole) и так далее.

Есть еще один способ сделать это, протестировать и работать с Ubuntu 16.04 LTS:

Сначала установите gnome-панель:

Sudo apt install gnome-panel

Затем установите gksu:

Sudo apt install gksu

По завершении установки запустите:

Gnome-desktop-item-edit ~/Desktop/ --create-new

Это создает ярлык на рабочем столе. У вас должна быть возможность назвать его. Я назвал свой «X-Term», но вы можете назвать свое, что бы вы ни пожелали. Введите /usr/bin/gksu * для пути «Command».