Создание нового пользователя в ubuntu. Ubuntu Server - административные права пользователей. Добавление пользователя в группу sudo

В операционной системе Linux есть много отличных функций безопасности, но она из самых важных - это система прав доступа к файлам. Linux, как последователь идеологии ядра Linux в отличие от Windows, изначально проектировался как многопользовательская система, поэтому права доступа к файлам в linux продуманы очень хорошо.

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

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

  • Чтение - разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись - разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение - вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

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

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

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit - этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в linux.

Как посмотреть права доступа к файлам в Linux

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

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

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • --- - нет прав, совсем;
  • --x - разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- - разрешена только запись и изменение файла;
  • -wx - разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r-- - права только на чтение;
  • r-x - только чтение и выполнение, без права на запись;
  • rw- - права на чтение и запись, но без выполнения;
  • rwx - все права;
  • --s - установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • --t - установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные - только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категория действие флаг файл

Опции сейчас нас интересовать не будут, разве что только одна. С помощью опции -R вы можете заставить программу применять изменения ко всем файлам и каталогам рекурсивно.

  • u - владелец файла;
  • g - группа файла;
  • o - другие пользователи.

Действие может быть одно из двух, либо добавить флаг "+", либо убрать флаг - "-". Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r - чтение, w - запись, x - выполнение, s - suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t - устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

Для файла test6 установим SUID:

А для test7 - SGID:

Посмотрим что получилось:

Как видите, изменить права на файл в linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.

Выводы

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

На завершение хочу предложить неплохое видео про права доступа в linux:

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

Работаем с пользователями и группами, учимся управлять, создавать пользователей, группы, перемещать по группам и прочие другие манипуляции с группами в Ubuntu Linux.

Добавление пользователя

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

Sudo useradd vasyapupkin

Эта команда создаст в системе нового пользователя vasyapupkin. Чтобы изменить настройки создаваемого пользователя, вы можете использовать следующие ключи:

Ключ Описание
-b Базовый каталог. Это каталог, в котором будет создана домашняя папка пользователя. По умолчанию /home
Комментарий. В нем вы можете напечатать любой текст.
-d Название домашнего каталога. По умолчанию название совпадает с именем создаваемого пользователя.
-e Дата, после которой пользователь будет отключен. Задается в формате ГГГГ-ММ-ДД. По умолчанию отключено.
-f Блокирование учетной записи. Если значение равно 0, то запись блокируется сразу после устаревания пароля, при -1 - не блокируется. По умолчанию -1.
-g Первичная группа пользователя. Можно указывать как GID, так и имя группы. Если параметр не задан будет создана новая группа название которой совпадает с именем пользователя.
-G Список групп в которых будет находится создаваемый пользователь
-k Каталог шаблонов. Файлы и папки из этого каталога будут помещены в домашнюю папку пользователя. По умолчанию /etc/skel.
-m Ключ, указывающий, что необходимо создать домашнюю папку. По умолчанию домашняя папка не создается .
-p Пароль пользователя. По умолчанию пароль не задается.
-s Оболочка, используемая пользователем. По умолчанию /bin/sh.
-u Вручную задать UID пользователю.

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

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

Useradd -D

Результат будет примерно следующий:

GROUP=100HOME=/home INACTIVE=-1EXPIRE= SHELL=/bin/shSKEL=/etc/skel CREATE_MAIL_SPOOL=no

Если вас не устраивают такие настройки, вы можете поменять их выполнив

Useradd -D-m-s/bin/bash

где -m и -s это ключи, взятые из таблицы выше.

Изменение пользователя

Изменение параметров пользователя происходит с помощью утилиты usermod . Пример использования:

Sudo usermod -c "Эта команда поменяет комментарий пользователю" vasyapupkin

usermod использует те же опции, что и useradd.

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

Изменить пароль пользователю можно при помощи утилиты passwd .

Sudo passwd vasyapupkin

Основные ключи passwd:

Получение информации о пользователях

    w – вывод информации (имя пользователя, оболочка, время входа в систему и т. п.) о всех вошедших в систему пользователях.

    whoami – вывод вашего имени пользователя.

    users – вывод имен пользователей, работающих в системе.

    groups имя_пользователя – вывод списка групп в которых состоит пользователь.

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

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

Sudo userdel vasyapupkin

userdel имеет всего два основных ключа:

Управление группами

Создание группы

Программа groupadd создаёт новую группу согласно указанным значениям командной строки и системным значениям по умолчанию. Пример использования:

Sudo groupadd testgroup

Основные ключи:

Изменение группы

Сменить название группы, ее GID или пароль можно при помощи groupmod . Пример:

Sudo groupmod -n newtestgroup testgroup #Имя группы изменено с testgroup на newtestgroup

Опции groupmod:

Удаление группы

Удаление группы происходит так:

Sudo groupdel testgroup

groupdel не имеет никаких дополнительных параметров.

Файлы конфигурации

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

/etc/passwd

В файле /etc/passwd хранится вся информация о пользователях кроме пароля. Одна строка из этого файла соответствует описанию одного пользователя. Примерное содержание строки таково:

Vasyapupkin:x:1000:1000:Vasya Pupkin:/home/vpupkin:/bin/bash

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

Второе и последнее поля необязательные и могут не иметь значения.

/etc/group

В /etc/group , как очевидно из названия хранится информация о группах. Она записана в аналогичном /etc/passwd виде:

Vasyapupkin:x:1000:vasyapupkin,petya

В этом файле второе и четвертое поля могут быть пустыми.

/etc/shadow

Файл /etc/shadow хранит в себе пароли, по этому права, установленные на этот файл, не дают считать его простому пользователю. Пример одной из записей из этого файла:

Vasyapupkin:$6$Yvp9VO2s$VfI0t.o754QB3HcvVbz5hlOafmO.LaHXwfavJHniHNzq/bCI3AEo562hhiWLoBSqxLy7RJJNm3fwz.sdhEhHL0:15803:0:99999:7:::

Управление пользователями и группами через GUI

В текущей версии Ubuntu отсутствует штатная утилита управления группами пользователей системы, поэтому по умолчанию все действия с группами необходимо выполнять в консоли. Однако для этих целей существует специальная утилита «Пользователи и группы».

Установка графической GUI утилиты для управления группами

Пакет gnome-system-tools находится в репозитории Ubuntu, поэтому ставится одной командой:

Sudo apt-get install gnome-system-tools

Управление группами

Для добавления, удаления групп, а также добавления\удаления пользователей в\из конкретных групп, необходимо перейти в Меню Ubuntu / Dash - Системные утилиты - Администрирование - Пользователи и группы, после в данном окне нажав кнопку «Управление группами», вы увидите окно, отображающее все присутствующие в системе группы:

в котором выбрав нужную группу и нажав «Свойства» можно отметить галочкой пользователей, которых необходимо внести в группу.

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

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

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

Как добавить пользователя

# adduser newuser

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

$ sudo adduser newuser

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

После ввода команды вам нужно будет последовательно ответить на несколько вопросов, а именно:

  • ввести и подтвердить пароль для нового пользователя;
  • написать дополнительную информацию о новом пользователе. Делать это необязательно; если не хотите ничего добавлять, просто нажмите Enter;
  • наконец, вам нужно будет подтвердить корректность всей введенной до этого информации - для этого надо нажать y (yes - да).

Теперь новый пользователь создан и готов к использованию! Авторизоваться под ним можно используя пароль, который вы установили ранее.

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

Как наделить пользователя правами sudo

Если вам нужно, чтобы новый пользователь мог выполнять административные (root) команды, вам нужно дать этому пользователю доступ к sudo. Сделать это можно двумя путями: либо добавить этого пользователя в созданную группу пользователей, которые могут выполнять команды sudo, либо дать это право пользователю путем внесения изменений в конфигурацию утилиты sudo. Рассмотрим оба варианта.

Добавление нового пользователя в группу sudo

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

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

$ groups newuser

В результате вы увидите на экране:

Newuser: newuser

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

$ usermod -aG sudo newuser

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

Ключ -aG нужен для того, чтобы пользователь был добавлен в одну из уже существующих в списке групп.

Проверка наличия sudo-прав

Теперь необходимо проверить, может ли ваш пользователь выполнять административные команды.

$ команда

Вы можете выполнить эту же команду, но с административными правами, если напишете в начале sudo:

$ sudo команда

При этом вам нужно будет ввести пароль от аккаунта данного пользователя.

Уточнение прав пользователя в in /etc/sudoers

Альтернативным способом дать пользователю sudo-права является настройка конфигурационного файла. Вам нужно использовать команду visudo для того, чтобы открыть конфигурационный файл /etc/sudoers в выбранном по умолчанию редакторе и указать права конкретно для этого пользователя.

Рекомендуется для редактирования конфигурационного файла использовать именно команду visudo: во-первых, она защищает файл от нескольких одновременных изменений, во-вторых, проверяет синтаксис файла перед перезаписью. Благодаря этому у вас не будет ситуации, когда вы неправильно настроили sudo, а потом не можете внести нужные изменения, так как потеряли административные права.

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

Как правило, команда visudo открывалась /etc/sudoers в редакторе vi, что могло смутить не очень опытных пользователей. Поэтому в Ubuntu 16.04 вместо vi используется nano, инструмент, который гораздо больше знаком большинству пользователей. Используете стрелки на клавиатуре для того, чтобы найти нужную строку. Она выглядит примерно так:

Root ALL=(ALL:ALL) ALL

Скопируйте этот текст чуть ниже и вместо “root” напишите имя того пользователя, которого вы хотите наделить правом выполнять sudo-команды. Это будет выглядеть примерно так:

Root ALL=(ALL:ALL) ALL newuser ALL=(ALL:ALL) ALL

Для каждого нового пользователя необходимо добавлять новую строку. После того, как вы внесете все необходимые изменения, сохраните и закройте файл, нажав Ctrl-X, затем Y и Enter для подтверждения.

Как удалять пользователей

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

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

# deluser newuser

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

$ sudo deluser newuser

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

# deluser --remove-home newuser

Для пользователей с sudo-правами:

$ sudo deluser --remove-home newuser

А если вы хотите лишить удаленного пользователя sudo-прав, вам нужно открыть конфигурационный файл:

(если от суперпользователя)
или

(если от пользователя с sudo-правами)

Root ALL=(ALL:ALL) ALL newuser ALL=(ALL:ALL) ALL # Удалите эту строчку.

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

Заключение

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

Май 3, 2016 12:20 пп 27 946 views | Комментариев нет

Управление пользователями – один из важнейших навыков системного администратора окружения Linux. Как правило, в новой системе по умолчанию существует только один пользователь – root.

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

Данное руководство научит создавать аккаунты новых пользователей, передавать права sudo и удалять пользователей.

Добавление пользователя

Чтобы добавить нового пользователя в сессии root, введите:

Находясь в сессии не- root пользователя с доступом sudo, можно добавить нового пользователя с помощью команды:

sudo adduser newuser

Команда предложит:

  • Установить и подтвердить пароль.
  • Ввести дополнительные данные о пользователе. Это опционально; чтобы принять информацию по умолчанию, просто нажмите Enter.
  • Подтвердить правильность предоставленной информации (нажмите Enter).

Новый пользователь готов! Теперь можно подключиться к серверу с его помощью.

Настройка прав доступа sudo

Чтобы иметь возможность использовать новый аккаунт для выполнения задач администратора, нужно разрешить пользователю доступ к команде sudo. Это можно сделать двумя способами:

  1. Добавить пользователя в группу sudo
  2. Отредактировать настройки sudo в файле /etc/sudoers

Добавление пользователя в группу sudo

В системе Ubuntu 16.04 все пользователи, входящие в группу sudo, по умолчанию имеют доступ к команде sudo.

Чтобы узнать, в какие группы входит новый пользователь, введите:

Команда вернёт:

newuser: newuser

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

usermod -aG sudo newuser

Флаг –aG добавляет пользователя в перечисленные группы.

Тестирование настройки

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

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

Чтобы выполнить команду с правами администратора, добавьте sudo в начало команды:

sudo some_command

При этом система запросит пароль текущего пользователя.

Редактирование файла /etc/sudoers

Альтернативный способ расширить привилегии пользователя – отредактировать файл sudoers. Для этого используется команда visudo которая позволяет открыть файл /etc/sudoers в редакторе и явно указать привилегии каждого системного пользователя.

Редактировать файл sudoers рекомендуется исключительно при помощи visudo, поскольку эта команда блокирует внесение нескольких одновременных правок и выполняет проверку содержания перед перезаписью файла. Это предотвращает ошибки в настройке sudo, которые могут повлечь за собой потерю привилегий.

Если вы находитесь в сессии root, введите:

В сессии не-root пользователя с доступом к sudo введите:

Как правило, visudo открывает /etc/sudoers в редакторе vi, который может показаться сложным для новичков. По умолчанию в новых установках Ubuntu visudo использует более знакомый редактор nano. Для перемещения курсора используйте клавиши со стрелками. Найдите строку:

root ALL=(ALL:ALL) ALL

Скопируйте эту строку и вставьте её ниже, заменив root именем пользователя, которому нужно передать права суперпользователя.

root ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL

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

Удаление пользователей

Ненужные аккаунты можно удалить.

Чтобы удалить пользователя, оставив его файлы, введите:

как root
deluser newuser
как обычный пользователь с расширенными привилегиями:
sudo deluser newuser

Чтобы удалить пользователя вместе с его домашним каталогом, используйте:

в сессии пользователя root
deluser --remove-home newuser
в сессии пользователя с расширенными привилегиями:
sudo deluser --remove-home newuser

Если удалённый пользователь обладал правами суперпользователя, необходимо отнять эти права, отредактировав файл:

visudo
Или
sudo visudo
root ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL # удалите эту строку

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

Заключение

Управление пользователями – необходимый навык при администрировании сервера Ubuntu 16.04. Он позволит отделить пользователей и дать им только необходимый для работы доступ.

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

Tags: ,

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

Начнем с небольшого отступления. Система административных прав Linux восходит корнями к ОС Unix и поэтому имеет много общего с другими Unix-like системами: BSD, Solaris, MacOS. В тоже время различные дистрибутивы имеют свои особенности реализации отдельных моментов, поэтому конкретные примеры мы будем приводить относительно семейства Ubuntu, однако знание общих правил позволит вам без труда разобраться в среде любой другой Unix-like ОС.

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

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

Команда su позволяет войти в систему под именем другого пользователя (не обязательно root) не завершая текущий сеанс. Так команда:

Su petrov

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

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

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

Что будет если мы попробуем таким образом повысить права в Ubuntu? У нас ничего не получится, так как мы не знаем пароля пользователя root , в тоже время никто не мешает нам войти под иным пользователем.

"Подождите!" - скажет иной пользователь, - "а разве права root"а не получает первый созданный пользователь, которого мы указываем при установке?" Действительно, административные задачи можно выполнить только от имени созданного при установке пользователя, при попытке сделать это от имени другого пользователя нас постигнет неудача.

Здесь мы вплотную подходим к второму механизму повышения прав - утилите sudo . Однако прежде чем переходить к ее изучению стоит внести ясность: права суперпользователя (root) в Ubuntu принадлежат учетной записи root, которая по умолчанию отключена. Поэтому повысить права с помощью команды su не представляется возможным.

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

Это важно! Основным отличием su от sudo служит то, что su позволяет сменить текущего пользователя на root, что требует активной записи суперпользователя в системе и знания пароля к ней, sudo позволяет повысить права для выполняемой команды без указания пароля суперпользователя, пользователь должен ввести свой собственный пароль, войти под root с этим учетными данными не получится.

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

Sudo команда1 | команда2

с правами root будет выполнена только команда1 . А команда

Sudo cat sources.list > /etc/apt/sources.list

выдаст ошибку прав доступа так как запись в /etc/apt/sources.list будет происходить с правами обычного пользователя.

Чтобы выполнять сложные комбинации команд вы можете перейти в режим суперпользователя командой

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

Теперь самое время разобраться, кто имеет право использовать возможности sudo и в каком объеме. За настройки данной утилиты отвечает файл /etc/sudoers , несмотря на то, что это обычный конфигурационный файл для его редактирования настоятельно рекомендуется использовать команду:

Sudo visudo

Данная команда блокирует файл и осуществляет проверку синтаксиса, в противном случае вы рискуете из-за опечатки потерять административный доступ к ПК.

Синтаксис данного файла весьма прост. Например в самом конце файла содержится запись:

%admin ALL=(ALL) ALL

Это означает, что пользователи группы admin могут выполнять на любом хосте, от имени любого пользователя любую команду. Как мы можем легко убедиться с помощью команды groups в нашем случае пользователь andrey входит в группу admin , а пользователь petrov нет.

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

Petrov ubuntu-lts=(andrey) ALL

Данная строка позволяет пользователю petrov выполнить любую команду на хосте ubuntu-lts от имени пользователя andrey . При указании команд следует указывать полный путь к ним, узнать его можно при помощи команды which

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

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

User_Alias USERGROUP1 = petrov, sidorov
Cmnd_Alias CMDGROUP1 = /bin/kill, /sbin/reboot, /sbin/shutdown

Этим мы создали два алиаса USERGROUP1 , куда включили необходимых нам пользователей и CMDGROUP1 с набором нужных команд, в последствии мы можем править только алиасы, не затрагивая все правила, где они могут использоваться. Затем добавим правило:

USERGROUP1 ALL = (ALL) NOPASSWD:СMDGROUP1

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

Кроме указанных двух, доступны алиасы и для имени хоста и пользователей от имени которых разрешено выполнять команды, например:

Host_Alias WWW = webserver1, webserver2
Runas_Alias WWW = www-data, www-developer

USERGROUP1 WWW = (WWW) ALL

Приведенный набор записей позволит пользователям входящим в USERGROUP1 выполнять любые команды от имени пользователей www-data и www-developer на веб-серверах компании.

Напоследок рассмотрим, как же быть, если учетная запись root все таки нужна. Все просто, чтобы включить ее достаточно задать пароль:

Sudo passwd root

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

Sudo passwd -l root

Помните, что все административные задачи в Ubuntu можно решать с использованием утилиты sudo, поэтому не включайте учетную запись root без реальной необходимости!

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