Root и другие пользователи [+группы] в Linux

Здравствуйте, уважаемые посетители, читатели, други и недруги, случайные личности, постоянные клиенты и прочие, так сказать, человеки. Мы продолжаем знакомить Вас с Linux-системами, и эта статья из цикла, посвященного 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

Просмотр файла sudoers linux

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

Открытие файла sudoers linux

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

nano в linux

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

gedit /etc/sudoers

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

файл sudoers linux

Видите, кнопка «Сохранить» неактивна.

Теперь о команде 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 суперпользователя лучше не включать, а пользоваться командой

sudo -i.

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

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

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

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

Создание нового пользователя linux

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

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

Изменение пароля linux

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

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

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

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

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

удаление пользователя linux

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

Свойства пользователя в linux

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

Менеджер пользователей в linux

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

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

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

sudo apt-get install gnome-system-tools.

gnome-system-tools ubuntu

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

установка утилиты в linux ubuntu

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

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

иконка linux, группы и пользователи

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

user-admin ubuntu linux командная строка

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

ubuntu - параметры пользователей

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

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

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

привелегии пользователей в linux ubuntu

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

вкладка Дополнительно, пользователи, linux, ubuntu

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

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

управление группами пользователя linux ubuntu

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

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

Послесловие

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

Мало-помалу будем двигаться дальше. Оставайтесь на связи, читайте статьи в этой рубрике, комментируйте, предлагайте темы и всё такое прочее.

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

Оценить —

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(3 голоса, в среднем: 5 из 5)

Подписаться —

RSS Email Facebook Twitter G+ YouTube
Темы:  ,

Комментарии к статье

  1. гость

    Подскажите какой дистрибутив Линукс выбрать что бы без проблем можно было работать с двумя мониторами один рабочий стол .

    Спасибо

    • Анонимус

      Навскидку назову Убунту (а также ее разновидности Kubuntu, Lubuntu, Xubuntu и пр.), хотя у меня всё еще стоит старушка 10.04; про новые ничего конкретно не скажу. Зато скажу, что Mint и Fedora тоже скорее всего подойдут, как и большинство других работающих-из-коробки дистрибутивов.

  2. flashcactus

    А статья хороша. Очень хотелось увидеть тут прекраснейший комикс[перевод], значение которого данная статья проясняет :). По существу: Куда смотрит графическая утилита автообновления в убунтах, когда требует пароль самого первого из нерутовых пользователей вместо текущего, хотя он есть в sudoers и имеет там право выполнять всё что угодно?

  3. Lilya

    Парни, подскажите пожалуста. Я игралась с линуксом настраивала его под себя: програмки, панельки и внутри там к ним всякие настройки. Потом захотела сделать отдельно пользователей для Мами, Папи и Брата. Но тогда там у них полностю как после установки - пусто, они уже привикли на моем user’e сидеть ( три раза поторять все надоело и к томуже я не помню как все делалось). А и после загрузки сразу заходить в мой профиль и пароль не спрашивает хотя в меню я указала - спрашивать!
    Какими командами можно склонировать пользователя?

    • ALPom

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

  4. Тарас

    Статья замечательная, ну прооо-сто улет. Спасибо авторам.

    • Sonikelf

      Прямо улёт? Ну что ж, пожалуйста. Лишь бы на пользу.

* - комментарии могут появляться не сразу (или попасть в спам)