Как дать пользователю root-права в linux2 мин для чтения

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

Синтаксис и опции usermod

Утилита usermod нужна для управления пользователями Linux, их основными и дополнительными группами. При ее выполнении в терминале нужно указать опции и конкретного пользователя, к которому применяются изменения. Синтаксис здесь следующий:

$ usermod опции имя_пользователя

Рассмотрим опции, которые будут использоваться в этой статье:

  • -a, —append – добавить пользователя в одну или несколько дополнительных групп. Опция будет работать только вместе с опцией -G.
  • -b, —badnames – разрешить использование имен, которые не соответствуют стандартам.
  • -d, —home – указать новое местоположение домашнего каталога пользователя. При использовании опции -m содержимое текущего домашнего каталога будет перемещено на новое место.
  • -e, —expiredate – указать дату, при наступлении которой учетная запись будет отключена. Дата вводится в формате ГГГГ-ММ-ДД. Если использовать эту опцию без указания даты, то отключение пользователя будет отменено.
  • -f, —inactive – установить количество дней для блокировки пользователя, которое должно пройти после устаревания пароля. При значении -1 опция блокировки отключается, а при значении 0 блокировка случится сразу же после устаревания.
  • -g, —gid – выбрать новую основную группу для пользователя и для файлов в его домашнем каталоге. Нужно задать имя или номер новой группы.
  • -G, —groups – указать список дополнительных групп, в которые должен входить пользователь. Между собой группы разделяются запятой. Если пользователь входит в дополнительную группу, которая не была указана в списке, то он будет из нее удалён. Но при использовании опции -a можно добавлять новые дополнительные группы, не удаляя старые.
  • -l, —login – изменить имя пользователя на новое. Данная опция не затрагивает никакие другие данные. А значит, название домашнего каталога и почты придется изменять вручную, чтобы они совпадали с новым именем пользователя.
  • -L, —lock – заблокировать пароль пользователя. Эта опция помещает символ ! (восклицательный знак) перед паролем в зашифрованном виде, отключая его. Данную опцию нельзя использовать с -p и -U.
  • -m, —move-home – изменить местоположение домашнего каталога пользователя. Опция будет работать только вместе с -d. Утилита попытается обновить права собственности на файлы и скопировать режимы, ACL и расширенные атрибуты.
  • -o, —non-unique – разрешить заменить идентификационный номер пользователя на не уникальное значение. Работает в паре с опцией -u.
  • -p, —password – изменить пароль в зашифрованном виде.
  • -R, —root – выполнить chroot в указанный каталог и использовать его вместо корневого каталога / с хранящимися в нем конфигурационными файлами.
  • -s, —shell – указать новую командную оболочку shell для пользователя. При использовании опции -s с пустым значением будет выбрана оболочка по умолчанию.
  • -u, —uid – изменить параметр UID (числовой идентификатор пользователя). Данные изменения автоматически применятся к почтовому ящику и содержимому домашнего каталога. Для остальных файлов UID придется изменять вручную.
  • -U, —unlock – разблокировать пароль пользователя. Данная опция убирает символ ! (восклицательный знак) перед паролем в зашифрованном виде, разрешая использовать его для входа. Не сработает с -p и -L.

Все доступные опции с исходным описанием для данной утилиты вы можете просмотреть в терминале, выполнив следующую команду:

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

Модифицирование первичной группы пользователя в Linux

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

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

Обратите внимание на -g здесь. При использовании маленькой буквы g вы назначаете основную группу

Когда вы используете верхний регистр -G, как указано реке, вы назначаете новую вторичную группу.

Даём права на sudo включая пользователя в группу sudo

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

root@deb:~# adduser alex sudo
Добавляется пользователь «alex» в группу «sudo» ...
Добавление пользователя alex в группу sudo
Готово.

Чтобы изменения применились нужно перезайти под пользователем alex. Проверим работу sudo:

root@deb:~# su alex

alex@deb:/root$ sudo useradd user3

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

    №1) Уважайте частную жизнь других.
    №2) Думайте, прежде что-то вводить.
    №3) С большой властью приходит большая ответственность.

 пароль для alex:

alex@deb:/root$ sudo userdel user3

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

Работая с sudo мы вводим пароль от своего пользователя (alex), а не от root. В примере выше я просто создал и удалил пользователя user3, чтобы продемонстрировать выполнение административных действий.

Числовые значения прав

У прав есть числовые значения: r=4, w=2, x=1. Для удобства я подготовил следующую табличку:

Цифра Описание прав для файла Описание прав для каталога Символьные значения
Нет доступа Нет доступа
1 Право выполнять файл Право входить в каталог (делать его текущем) —x
2 Право редактировать файл Право создавать новые файлы, удалять файлы, или переименовывать их в каталоге -w-
3 Сумма прав (1+2) Сумма прав (1+2) -wx
4 Право читать файл Право смотреть список файлов в каталоге r—
5 Сумма прав (4+1) Сумма прав (4+1) r-x
6 Сумма прав (4+2) Сумма прав (4+2) rw-
7 Сумма прав (4+2+1) Сумма прав (4+2+1) rwx

Таблица соответствия числовых и символьных значений прав доступа

Используя chmod можно устанавливать права в числовых значениях, при этом нужно указывать сумму прав. Например права rw-r—r— в числовом формате будут такими 644, то есть мы сложили права для владельца (r+w=6), дальше для группы и для всех остальных (r=4).

Вот как назначают права в числовом виде:

alex@deb:~$ chmod 644 test/file1.txt

alex@deb:~$ ls -l test/file1.txt
-rw-r--r-- 1 alex alex 0 янв 19 13:12 test/file1.txt

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

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

sudo visudo

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

%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' 

Подмена идентификатора

Утилиты и имеют некоторую странность, объяснить которую Мефодий пока не в состоянии. Эта же странность распространяется и на давно известную программу , которая позволяет редактировать собственную учётную запись. Запускаемый процесс наследуетUID от родительского, поэтому, если этот UID — не нулевой, он не в состоянии поменять его. Тогда как же запускает для обычного пользователя shell? Как получает доступ к хранилищу всех учётных записей? Должен существовать механизм, позволяющий пользователю запускать процессы с идентификаторами другого пользователя, причём механизм строго контролируемый, иначе с его помощью можно натворить немало бед.

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

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

В этом случае UID процесса становится равным UID файла, из которого программа была запущена.

Пример 9. Обычная программа , использующая

Как и в случае с -атрибутом, выводит букву «» вместо буквы «» в тройке «для хозяина». Точно так же, если соответствующего -атрибута нет (что бывает редко), выведет «» вместо «». Во многих дистрибутивах Linux и , и имеют установленный SetUID и принадлежат пользователю , что и позволяет запускать процессы с правами этого пользователя (а значит, и любого другого), а — модифицировать файл , содержащий в таких системах сведения обо всех учётных записях. Как правило, SetUID-ные файлы доступны обычным пользователям только на выполнение, чтобы не провоцировать этих обычных пользователей рассматривать содержимое этих файлов и исследовать их недокументированные возможности. Ведь если обнаружится способ заставить, допустим, программу выполнить любую другую программу, то все проблемы с защитой системы от взлома будут разом решены — нет защиты, нет и проблемы.

Однако Мефодий работает с такой системой, где вообще не имеет атрибута SetUID. Зато эта программа принадлежит группе и имеет другой атрибут, SetGID, так что при её запуске процесс получает идентификатор группы . Утилита выводит SetGID в виде «» вместо «» во второй тройке атрибутов («для группы»). Замечания касательно «», «» и «» действительны для SetGID так же, как и для SetUID.

Пример 10. Не подверженная взлому программа , использующая

Каталог в этой системе содержит подкаталоги, соответствующие входным именам всех её пользователей. В каждом подкаталоге хранится, в числе прочего, собственный файл соответствующего пользователя. Доступ к каталогу на использование (а следовательно, и ко всем его подкаталогам) имеют, кроме , только члены группы . Доступ на запись к каталогу и к файлу имеет только пользователь . Значит, чтобы изменить что-либо в этом файле, процесс обязан иметь UID и GID (или нулевой UID, конечно). Именно такой процесс запускается из : он наследует UID у командного интерпретатора и получает GID из-за атрибута SetGID. Выходит, что даже найдя в программе ошибки и заставив её делать что угодно, злоумышленник всего только и сможет, что… отредактировать собственную учётную запись!

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

Вполне очевидно, что подмена идентификатора распространяется на программы, но не работает для сценариев. В самом деле, при исполнении сценария процесс запускается не из него, а из программы-интерпретатора. Файл со сценарием передаётся всего лишь как параметр командной строки, и подавляющее большинство интерпретаторов просто не обращают внимания на атрибуты этого файла. Интерпретатор наследует UID у родительского процесса, так что если он и обнаружит SetUID у сценария, поделать он всё равно ничего не сможет.

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

Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:

$ su опции пользователь

Вот ее основные опции:

  • -c, —command — выполнить команду
  • -g, —group — установить основную группу пользователя (только для root)
  • -G —supp-group — дополнительные группы пользователя (только для root)
  • -, -l, —login — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
  • -p, —preserve-environment — сохранить переменные окружения
  • -s, —shell — задать оболочку для входа
  • —version — отобразить версию программы.

Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.

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

Теперь выполняем:

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

Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.

Теперь используем вход в режиме логина:

И повторим ту же комбинацию:

Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:

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

Более подробно о команде su вы можете почитать в отдельной статье. Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.

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

Вся информация о пользователях находится в файле /etc/passwd. Мы могли бы создать пользователя linux просто добавив его туда, но так делать не следует, поскольку для этой задачи существуют специальные утилиты. Одна из таких утилит, это useradd. Рассмотрим ее подробнее.

Команда useradd

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

$ useradd опции имя_пользователя

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

  • -b — базовый каталог для размещения домашнего каталога пользователя, по умолчанию /home;
  • -c — комментарий к учетной записи;
  • -d — домашний каталог, в котором будут размещаться файлы пользователя;
  • -e — дата, когда учетная запись пользователя будет заблокирована, в формате ГГГГ-ММ-ДД;
  • -f — заблокировать учетную запись сразу после создания;
  • -g — основная группа пользователя;
  • -G — список дополнительных групп;
  • -k — каталог с шаблонами конфигурационных файлов;
  • -l — не сохранять информацию о входах пользователя в lastlog и faillog;
  • -m — создавать домашний каталог пользователя, если он не существует;
  • -M — не создавать домашнюю папку;
  • -N — не создавать группу с именем пользователя;
  • -o — разрешить создание пользователя linux с неуникальным идентификатором UID;
  • -p — задать пароль пользователя;
  • -r — создать системного пользователя, не имеет оболочки входа, без домашней директории и с идентификатором до SYS_UID_MAX;
  • -s — командная оболочка для пользователя;
  • -u — идентификатор для пользователя;
  • -D — отобразить параметры, которые используются по умолчанию для создания пользователя. Если вместе с этой опцией задать еще какой-либо параметр, то его значение по умолчанию будет переопределено.

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

Как видите, по умолчанию домашний каталог пользователя будет создан в /home и будет использоваться оболочка /bin/sh. Теперь создадим минимального пользователя с минимальными настройками:

Был создан самый простой пользователь, без оболочки и пароля, а также без групп. Теперь немного усложним задачу и создадим пользователя с паролем и оболочкой /bin/bash:

Для того чтобы получать доступ к системным ресурсам пользователю нужно быть участником групп, у которых есть доступ к этим ресурсам. Дополнительные группы пользователя задаются с помощью параметра -G. Например, разрешим пользователю читать логи, использовать cdrom и пользоваться sudo:

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

Некоторых пользователей интересует создание пользователя с правами root linux, это очень просто делается с помощью useradd, если комбинировать правильные опции. Нам всего лишь нужно разрешить создавать пользователя с неуникальным uid, установить идентификатор в 0 и идентификатор основной группы тоже в 0. Команда будет выглядеть вот так:

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

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

Затем откройте «Пользователи»:

Поскольку утилита запущена от имени обычного пользователя вы ничего не можете сделать. Поэтому нажмите кнопку «Разблокировать»:

Только после этого используйте кнопку со знаком плюс для создания нового пользователя Linux:

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

После этого создание пользователя linux завершено, новый пользователь появится в списке.

Права суперпользователя в Linux

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

  • Читать, писать и изменять атрибуты файлов в своем каталоге
  • Читать, писать, изменять атрибуты файлов в каталоге /tmp
  • Выполнять программы там, где это не запрещено с помощью флага noexec
  • Читать файлы, для которых установлен флаг чтения для всех пользователей.

Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.

Различные типы пользователей

Работая как root

su Открывает subshell (подоболочку) от имени другого пользователя с тем преимуществом, что только команды subshell выполняются от имени пользователя root.
sudo Позволяет настроить среду, в которой конкретные задачи выполняются с правами администратора.
PolicyKit Позволяет настроить графические утилиты для работы с правами администратора.

su sususu usersu 

su su —

sudouseradd sudo useradd

  1. Сделайте административную учетную запись членом группы wheel с помощью usermod -aG wheel user.
  2. Введите visudo и убедитесь, что строка %wheel ALL=(ALL) ALL включена.

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

Войдите в систему под обычным пользователем;
Введите whoami, чтобы увидеть, какую учетную запись вы используете в данный момент

Также введите id и обратите внимание, что вы получаете больше информации о ваших текущих учетных данных при использовании id;

Наберите su. При запросе пароля введите пароль root

Введите id еще раз. Вы видите, что вы в настоящее время root;
Введите visudo и убедитесь, что строка %wheel ALL=(ALL) ALL включена;
Введите useradd -G wheel user, чтобы создать пользователя user, который является членом группы wheel;

Введите id user, чтобы убедиться, что он добавлен в группу wheel;

Установите пароль для User, введя passwd user. Введите пароль дважды;
Выйдите из системы и войдите в систему как user;
Наберите sudo useradd user1. Введите пароль при запросе. Вот вы и создали еще одного пользователя.

Создание

Синтаксис:

useradd <имя пользователя>

* опции не являются обязательными при создании пользователя.

Пример:

useradd dmosk

* в данном примере создается учетная запись dmosk.

Для учетной записи стоит сразу создать пароль:

passwd dmosk

* после ввода, система попросит ввести пароль дважды.

Ключи (опции)

Ключ Описание и примеры
-b Задает базовый каталог для домашнего каталогаuseradd dmosk -b /var/home
-c Создает комментарий для описания учетной записиuseradd dmosk -c «Пользователя для управления системой»
-d Полный путь к домашнему каталогу пользователяuseradd dmosk -d /home/newuser
-D Позволяет показать или изменить настройки по умолчанию, которые будут применяться при последующем создании пользователейuseradd dmosk -Ds /bin/bash
-e Дата, после которой учетная запись устареет.useradd dmosk -e 2017-12-31
-f Число дней, после которого учетная запись с устаревшим паролем будет заблокированаuseradd dmosk -f 0
-g Задает основную группуuseradd dmosk -g altternativegroup
-G Задает дополнительные группыuseradd dmosk -G wheel
-k Путь к источнику скелета (файлы с шаблонами для нового пользователя)useradd dmosk -k /var/skel
-m При создании пользователя создать домашний каталогuseradd dmosk -m
-M Не создавать домашний каталогuseradd dmosk -M
-N Не создавать основную группу с таким же именем, как у пользователяuseradd dmosk -N
-o Разрешает создание учетной записи с повторяющимся UIDuseradd dmosk -u 15 -o
-p Задает парольuseradd dmosk -p pass
-r Системная учетная запись (без домашнего каталога и с идентификаторами в диапазоне SYS_UID_MIN — SYS_UID_MAX из файла /etc/login.defs)useradd dmosk -r
-R Каталог, в который выполняется chrootuseradd dmosk -R /var/chroot/home
-s Путь до оболочки командной строкиuseradd dmosk -s /bin/csh
-u Задает UIDuseradd dmosk -u 666
-U Имя группы будет таким же, как у пользователяuseradd dmosk -U

Актуальный список ключей можно получить командой useradd -h.

Как создать пользователя Linux

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

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

Список групп пользователя Linux

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

Все группы, созданные в системе, находятся в файле /etc/group. Посмотрев содержание этого файла, вы можете узнать список групп linux, которые уже есть в вашей системе. И вы станете удивлены.

Если вы не введете имя пользователя, по умолчанию будет применено ваше имя. К примеру:

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

Помимо стандартных root и users, здесь есть еще пару десятков групп. Это группы, сделанные программами, для управления доступом этих программ к общим ресурсам. Каждая группа позволяет чтение или запись определенного файла или каталога системы, тем самым регулируя полномочия юзера, а следовательно, и процесса, запущенного от этого пользователя. Здесь можно считать, что пользователь — это одно и то же что процесс, поэтому что у процесса все полномочия пользователя, от которого он запущен.

Понравилась статья? Поделиться с друзьями:
Компьютерная помощь
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: