Разное

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

Содержание

Пользователи и группы в linux. Добавление удаление редактирование

Системы, обеспечивающие многопользовательский доступ, будь то операционная система ОС, программное обеспечение (ПО), система управления контентом (CMS), очень важно иметь инструментарий для надёжного управления пользователями (их аккаунтами или учётными записями, пользовательскими конфигурациями, домашними каталогами и т. д.), а также для организации и управления самим пользовательским доступом. В таких случаях грамотное и продуманное управление пользователями (точнее, их учётными записями) является ключевым аспектом, от которого зависят безопасность, стабильность и, как следствие — надёжность всей системы. В современных дистрибутивах Linux имеются автоматизированные системы управления пользователями с наглядным графическим пользовательским интерфейсом (GUI), что позволяет быстро и удобно выполнять рутинные (как оказывается на самом деле) мероприятия по управлению пользователями и конфигурации их учётных записей. Однако, очень важно знать и понимать как и какие на самом деле процессы и изменения происходят в самой системе во время управления пользователями.

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

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

$ sudo useradd john

В результате будет создана следующая запись в файле /etc/passwd:

john:х:535:20: :/home/john:/bin/sh

Однако, команда useradd располагает куда большими возможностями, например:

$ sudo useradd -с "John Silver" -d /home/pirates/john -g pirates -G john -m -s /bin/bash john

Эта команда добавит в систему пользователя с полным именем «John Silver», регистрационным именем «john». Включив его в основную группу «pirates», а также добавит его в ещё одну дополнительную группу «john» и назначит ему домашний каталог по адресу /home/pirates/john. В результате, соответствующая запись в файле /etc/passwd будет примерно такой:

john:х:535:30:John Silver:/home/pirates/john:/bin/bash

Команда useradd автоматически создаёт домашний каталог пользователя, если он ещё не создан. A также копирует в него файлы из /etc/skel/.

Полный список параметров useradd

Использование: useradd [параметры] ПОЛЬЗОВАТЕЛЬ
useradd -D
useradd -D [параметры]

Параметры:
-b, —base-dir БАЗ_КАТ базовый каталог для домашнего каталога новой
учётной записи
-c, —comment КОММЕНТАРИЙ поле GECOS новой учётной записи
-d, —home-dir ДОМ_КАТ домашний каталог новой учётной записи
-D, —defaults показать или изменить настройки
по умолчанию для useradd
-e, —expiredate ДАТА_УСТ дата устаревания новой учётной записи
-f, —inactive НЕАКТИВНОСТЬ период неактивности пароля новой учётной записи
-g, —gid ГРУППА имя или ID первичной группы новой
учётной записи
-G, —groups ГРУППЫ список дополнительных групп новой
учётной записи
-k, —skel КАБ_ШАБ использовать альтернативный каталог с шаблонами
-K, —key КЛЮЧ=ЗНАЧЕНИЕ заменить значение по умолчанию
из /etc/login.defs
-l, —no-log-init не добавлять пользователя в базы данных lastlog и
faillog
-m, —create-home создать домашний каталог пользователя
-M, —no-create-home не создавать домашний каталог пользователя
-N, —no-user-group не создавать группу с тем же именем что и у
пользователя
-o, —non-unique разрешить создание пользователей с
повторяющимися (не уникальными) UID
-p, —password ПАРОЛЬ зашифрованный пароль новой учётной записи
-r, —system создать системную учётную запись
-R, —root КАТ_CHROOT каталог, в который выполняется chroot
-s, —shell ОБОЛОЧКА регистрационная оболочка новой
учётной записи
-u, —uid UID пользовательский ID новой учётной записи
-U, —user-group создать группу с тем же именем что и у
пользователя
-Z, —selinux-user SEUSER использовать указанного SEUSER для
пользовательского сопоставления SELinux

Создание и назначение домашнего каталога пользователю

Обычно домашний каталог  создается автоматически при добавлении пользователя в систему. Но бывают случаи когда по каким либо причинам домашний каталог не создается. А затем появляется необходимость создать его.  Для создания домашнего каталога пользователя используется стандартная команда mkdir. После этого нужно скопировать необходимые конфигурационные скрипты в домашний каталог (для организации рабочей среды пользователя), далее, с помощью команд chown и chmod задать владельца и режимы доступа к каталогу и его содержимому. Это лучше сделать после того как все конфигурационные файлы были скопированы в целевой каталог. Например:

$ mkdir /home/john/
$ cd /etc/skel/
$ cp -Rp . /home/john/
$ chown -R john:john /home/john/
$ chmod -R 644 /home/john/
$ find /home/john/ -type d -exec chmod 755 {} \;

Как видно, файлы конфигурации были скопированы из каталога /etc/skel/ – именно здесь хранятся примеры конфигураций запуска, которые можно отредактировать так, как это необходимо. Кстати, модифицирование копии файлов из каталога /etc/skel/ следует хранить в каталоге usr/local/etc/skel. При задании владельца домашнего каталога необходимо следить за тем, чтобы (в случае неаккуратного использования команды chown) пользователь не стал владельцем псевдокаталога «..», т. е. каталог, уровнем выше, который часто представляет собой каталог /home, что по соображениям безопасности недопустимо.

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

В целях безопасности для учётной записи обязательно должен существовать надёжный пароль. Который следует задать сразу же после создания учётной записи пользователя:

$ sudo passwd name_of_new_user

Например, для пользователя jonh:

$ sudo passwd john
Новый пароль :
Повторите ввод нового пароля :
passwd: все данные аутентификации успешно обновлены.

 

Проверка учётной записи

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

$ pwd
$ ls -al

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

Управление учётными записями

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

СистемаКомандыФайлы конфигурацииКомментарий
Ubuntuuseradd/etc/login.defs
adduser/etc/default/useraddPerl-версия
/etc/adduser.conf
SUSEuseradd/etc/login.defs
/etc/default/useradd
/etc/default/passwd
/usr/sbin/useradd.localЛокальные настройки
/usr/sbin/userdel.localЛокальные настройки
/usr/sbin/userdel-pre.localЛокальные настройки
/usr/sbin/userdel-post.localЛокальные настройки
Red Hatuseradd/etc/login.defs
/etc/default/useradd
Solarisuseradd/etc/default/{login,passwd)
/etc/security/policy.conf

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

Для удаления пользователей из системы используется команда userdel, например команда

userdel john

Удалит пользователя john, но зачастую (как и команда useradd, кстати) не в «чистом» виде, а в виде Perl-оболочек с использованием сценария удаления учётной записи. Например, в дистрибутивах Ubuntu используется команда deluser, которая является обычным сценарием на Perl. Который, в свою очередь, вызывает саму команду userdel для удаления и очистки всего того, что было сделано ранее командой useradd. При этом, используется файл сценария (обычно это файл /etc/deluser.conf в Ubuntu и /etc/login.defs в RedHat). Который позволяет задать следующие опции для работы команды userdel:

Использование: userdel [параметры] ПОЛЬЗОВАТЕЛЬ

Параметры:
-f, —force принудительное удаление пользователя и файлов, даже если они используются в настоящее время
-r, —remove удалить домашний каталог и почтовый ящик
-R, —root КАТ_CHROOT каталог, в который выполняется chroot
-Z, —selinux-user удалить все пользовательские сопоставления
SELinux для пользователя

Файл /etc/passwd – описание локальных учётных записей

Если в системе не используется какая-либо автоматизированная служба управления каталогами (например LDAP, NIS), то файл /etc/passwd – это именно тот файл, в котором хранится информация об учётных записях пользователей, известных системе. К этому файлу система обращается всякий раз при попытке авторизации пользователя в поисках требуемого идентификатора пользователя и определения его домашнего каталога. Формат этого файла заключается в том, что каждая строка в нём соответствует одному конкретному пользователю (учётной записи), в которой (в строке) перечислены атрибуты (поля) учётной записи, разделяемые символом двоеточия:

  1. Имя пользователя.
  2. Пароль пользователя (в шифрованном виде) или «заполнитель» пароля.
  3. Идентификатор пользователя.
  4. Идентификатор группы пользователя (по умолчанию).
  5. Информация GECOS — полное имя, офис, телефоны и т. д.
  6. Домашний каталог.
  7. Регистрационная оболочка.

Содержимое файла /etc/passwd может выглядеть следующим образом: Как можно видеть, второе поле для всех записей содержит символ «x» — заполнитель пароля. В Linux-системах зашифрованные пароли хранятся отдельно, в файле /etc/shadow. В случае, если совместно с файлом /etc/passwd используется служба автоматизированного управления каталогами, то в этом же файле имеются записи, начинающиеся с символа «+». Такие записи содержат инструкции по интеграции службы управления каталогами в системе. Стоит вкратце рассмотреть поля учётных записей:

  • Имя пользователя или регистрационное имя — уникальное имя, которое должно составляться согласно правилам построения регистрационных имён для той или иной системы. Для Linux длина регистрационного имени может быть не более 32 символов. Допускается использование только строчных букв с включением цифр. Начинаться регистрационное имя должно с буквы.
  • Зашифрованный пароль — как уже отмечалось, пароли для локальных учётных записей хранятся в /etc/shadow в зашифрованном виде. В Linux в качестве криптографических инструментов для шифрования паролей используются алгоритмы crypt, MD5, Blowfish. Минимальная длина пароля составляет 5 символов, максимальная 8
  • Идентификатор пользователя — это целое число без знака, по которому система «распознаёт» отдельных пользователей, поэтому идентификаторы пользователей используются системой и программной средой, в то время как имена пользователей служат для наглядности и удобства представления пользователей в системе. Для пользователя root зарезервирован идентификатор под номером 0, также рекомендуется присваивать реальным пользователям идентификаторы, следующие после 500, поскольку в системе может быть много «неперсонифицированных» пользователей, таких как bin или daemon – это позволит содержать в порядке список пользователей и избегать путаницы. Также в Linux-системах предусмотрен псевдопользователь nobody, с идентификатором -1 или -2. Обычно этот псевдопользователь используется, когда суперпользователь системы пытается получить доступ к файлам, примонтированным с другого компьютера, у которого нет доверия к исходному компьютеру.
  • Идентификатор группы — целое число без знака, аналогично идентификатору пользователя предназначено для обозначения в системе уникальных групп пользователей. Под номером 0 зарезервирована группа root. Группы используются в основном для удобного управления и организации совместного доступа к файлам. Как и в случае с идентификаторами пользователей, в системе зарезервированы группы (например bin) для использования самой системой.
  • Поле GECOS – информация, которая не имеет чётко определённой спецификации, отражает в себе дополнительные данные о пользователе: его полное имя, телефоны, сведения о должности и отделе и т. д. Информацию в этом поле можно менять с помощью команды chfn.
  • Домашний каталог — «место» в дереве файловой системы, которое отведено для хранения данных определённого пользователя. Этот каталог из соображений безопасности должен быть доступен только пользователю-владельцу этого каталога. Если домашний каталог отсутствует на момент регистрации, то пользовательские данные помещаются в каталог /. Также, если в файле /etc/login.defs в опции DEFAULT_HOME, задающем домашний каталог по умолчанию указано значение no, то авторизация/регистрация пользователя будет невозможной.
  • Регистрационная оболочка — командная оболочка интерпретатора команд (или любая другая программа), которая запускается при входе пользователя в свою учётную запись. Для Linux используется интерпретатор

Файл /etc/group – создание и удаление групп пользователей

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

$ groupadd group_name

где group_name название новой группы. Эта команда создаст в файле /etc/group новую запись

Формат этого файла такой же как и у /etc/passwd. Пример содержимого файла /etc/group: Как видно, каждая строка включает в себя четыре поля:

  1. Имя группы.
  2. Зашифрованный пароль или заполнитель пароля.
  3. Уникальный идентификатор группы.
  4. Список пользователей, входящих в данную группу, содержащий имена пользователей, разделённых запятыми без пробелов.

Интересным здесь является поле пароля. Пароль группы предназначен для того, чтобы пользователи могли вступить в группу с помощью команды newgrp. Сам же пароль для группы задаётся командой gpasswd, после чего он в зашифрованном виде будет храниться в файле /etc/gshadow. Однако, следует заметить, что пароли для групп используются крайне редко. Системным администраторам следует следить за содержимым файлов /etc/passwd и /etc/group и согласовывать их между собой, поскольку иногда возникают ситуации, когда пользователь указывается членом группы в файле /etc/passwd и в то же время в файле /etc/group такого объявления нет. Следует заметить, что в этом случае пользователь будет считаться членом группы, однако всё же настоятельно рекомендуется согласовывать содержимое обоих файлов.

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

Удалить группу пользователей можно с помощью команды

$groupdel group_name

Эта команда удалит запись из /etc/group.

Файл /etc/shadow – хранение паролей

Для хранения скрытых или теневых паролей используется отдельный файл /etc/shadow. Доступ к которому доступен только суперпользователю. Нужно также заметить, что файлы /etc/shadow и /etc/passwd хоть и связаны концептуально, однако на уровне системы между ними практически нет никакого взаимодействия. За исключением того, что поле, содержащее регистрационное имя в shadow берётся из passwd. Т.е. при модификации shadow, изменения не отражаются автоматически в passwd – эти файлы хранятся отдельно и обрабатываются системой независимо друг от друга. Формат /etc/shadow аналогичен /etc/passwd и каждая строка включает в себя следующие поля:

  1. Регистрационное имя.
  2. Пароль в зашифрованном виде.
  3. Дата последнего изменения пароля.
  4. Минимальное количество дней между изменениями пароля.
  5. Максимальное количество дней между изменениями пароля.
  6. Количество дней до выдачи сообщения об окончании срока действия пароля.
  7. Количество дней (по истечению срока действия пароля) до автоматического аннулирования учётной записи.
  8. Период действия учётной записи.
  9. Зарезервированное поле.

Запись из файла /etc/shadow выглядит следующим образом:

john:$md5$em5JhGE$a$iQhgS70sakdRaRFyy7Ppj. :14469:0:180:14: : :

Следует отметить, что обязательными являются первые два поля. Формат полей дат соответствует количеству дней, прошедших с первого января 1970 года. Поле с регистрационным именем, как уже отмечалось, заполняется соответствующим значением из файла /etc/passwd. В Linux седьмое поле содержит значение, которое определяет по истечении какого времени (в днях) после устаревания пароля учётная запись будет автоматически отключена. Эта интерпретация отличается от той, которая используется в системах Solaris и HP-UX. В восьмом поле, для установки даты истечения срока действия учётной записи можно использовать команду usermod в формате гггг-мм-чч.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Linux — начинающим. Часть 6. Управление пользователями и группами. Практика

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

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

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

useradd -D

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

Также обратите внимание на параметр:

GROUP=100

Но как нам известно в Debian пользовательские группы начинаются с 1000, а в RHEL c 500, поэтому в современных системах этот параметр игнорируется. Все параметры, кроме SKEL, могут быть изменены, но практический смысл это имеет только для HOME и SHELL.

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

useradd -D -b /var/www/home

А для изменения командной оболочки:

useradd -D -s /bin/bash

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

useradd -m ivan

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

useradd -h

Приведем некоторые из них:

  • -b — задает домашний каталог пользователя
  • -c — комментарий к учетной записи
  • -g — задает основную группу пользователя
  • -G — задает дополнительные группы
  • -m — создать домашний каталог пользователя
  • -N — не создавать группу с именем пользователя
  • -k — путь к каталогу шаблона домашней директории (по умолчанию /etc/skel)
  • -s — командная оболочка

Например:

useradd -m -b /var/www/ivanov -g webuser -G www-data -k /etc/myskel -s /sbin/nologin ivanov

Этой командой мы создадим пользователя ivanov, которому назначим домашнюю директорию в /var/www/ivanov, для которой будет использован шаблон из /etc/myskel, включим его в основную группу webuser и дополнительную www-data. Также запретим ему интерактивный вход в систему, назначив оболочкой /sbin/nologin.

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

passwd ivan

которая установит пароль к учетной записи ivan. Для блокировки пароля используйте:

passwd -l ivan

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

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

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

usermod -h

Приведем некоторые из них:

  • -c — изменить комментарий
  • -d — новый домашний каталог
  • -g — новая основная группа
  • -G — новые дополнительные группы
  • -a — добавить пользователя в дополнительные группы, не удаляя из других групп, используется совместно с ключом -G
  • -l — новое имя учетной записи
  • -L — блокировать учетную запись
  • -m — переместить содержимое домашнего каталога, используется только вместе с —d
  • -U — разблокировать учетную запись

Например:

usermod -c "Ivanov Ivan" -aG sudo ivan

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

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

Для удаления учетной записи пользователя используется команда userdel, например:

userdel vasya

которая удалит учетную запись vasya.

Команда имеет дополнительные ключи, которые также можно просмотреть, запустив ее с ключом -h, практическую пользу представляют два из них:

  • -r — удалить домашний каталог пользователя
  • -f — удалять файлы, даже если они не принадлежат пользователю

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

userdel -rf vasya

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

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

Для управления группами используется аналогичный набор команд: groupadd, groupmod и groupdel. Их ключи также можно посмотреть, запустив их с параметром -h.

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

groupadd office

Из дополнительных ключей имеют практический смысл:

  • -g — использовать указанный GUID
  • -f — завершить команду без ошибки если группа с таким именем уже существует и отменить действие -g, если указанный GUID уже используется.

При помощи команды usermod мы можем изменить GUID и наименование группы, скажем:

groupmod -n sales office

Данная команда переименует группу office в группу sales. Используемые ключи:

  • -g — изменить GUID группы
  • -n — изменить наименование группы

Ну и наконец groupdel, который используется для удаления групп:

groupdel office

Из параметров можно использовать:

  • -f — удалить группу, даже если она является основной для пользователя

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

Управление членством пользователей в группах

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

usermod -g office ivan

Данная команда изменит основную группу пользователя ivan на office. Для добавления в дополнительные группы следует выполнить команду:

usermod -aG office, sales ivan

Которая добавит пользователя ivan в группы office и sales.

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

gpasswd -a ivan office

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

gpasswd -d ivan office

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

groups ivan

где ivan — имя пользователя.

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

usermod -G "" ivan

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

Группы пользователей Linux | Losst

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

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

Содержание статьи:

Что такое группы?

Как я уже сказал группы в Linux появились еще в самом начале разработки этой операционной системы. Они были разработаны для того, чтобы расширить возможности управления правами. Разберем небольшой пример, возьмем организацию в которой есть только один компьютер, у нас есть администраторы и пользователи. У каждого человека свой аккаунт на нашем компьютере. Администраторы могут настраивать систему, пользователям же лучше не давать воли, чтобы что-то не сломали. Поэтому администраторы объединяются в группу admin, и ей дается доступ ко всему оборудованию, реально же ко всем файлам в каталоге dev, а пользователи, объеденные в группу users, и этой группе дается возможность читать и записывать файлы в общий каталог, с помощью которого они могут обмениваться результатами своей работы. Мы могли бы назначать права для каждого пользователя отдельно разрешая ему доступ к тому или иному файлу, но это слишком неудобно. Поэтому и были придуманы группы. Говорите, да ничего, можно назначить? Ну а теперь представьте что наши пользователи — это процессы. Вот тут вся краса групп выходит на передний план, группы используются не столько для обеспечения доступа для пользователей, сколько для управления правами программ, особенно их доступом к оборудованию. Для сервисов создаются отдельные группы и пользователь, от имени которого запущен он, сервис может состоять в нескольких группах, что обеспечивает ему доступ к определенным ресурсам.

А теперь давайте рассмотрим как посмотреть группы linux.

Группы в Linux

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

vi /etc/group

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

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

  • daemon — от имени этой группы и пользователя daemon запускаютcя сервисы, которым необходима возможность записи файлов на диск.
  • sys — группа открывает доступ к исходникам ядра и файлам include сохраненным в системе
  • sync — позволяет выполнять команду /bin/sync
  • games — разрешает играм записывать свои файлы настроек и историю в определенную папку
  • man — позволяет добавлять страницы в директорию /var/cache/man
  • lp — позволяет использовать устройства параллельных портов
  • mail — позволяет записывать данные в почтовые ящики /var/mail/
  • proxy — используется прокси серверами, нет доступа записи файлов на диск
  • www-data — с этой группой запускается веб-сервер, она дает доступ на запись /var/www, где находятся файлы веб-документов
  • list — позволяет просматривать сообщения в /var/mail
  • nogroup — используется для процессов, которые не могут создавать файлов на жестком диске, а только читать, обычно применяется вместе с пользователем nobody.
  • adm — позволяет читать логи из директории /var/log
  • tty — все устройства /dev/vca разрешают доступ на чтение и запись пользователям из этой группы
  • disk — открывает доступ к жестким дискам /dev/sd* /dev/hd*, можно сказать, что это аналог рут доступа.
  • dialout — полный доступ к серийному порту
  • cdrom — доступ к CD-ROM
  • wheel — позволяет запускать утилиту sudo для повышения привилегий
  • audio — управление аудиодрайвером
  • src — полный доступ к исходникам в каталоге /usr/src/
  • shadow — разрешает чтение файла /etc/shadow
  • utmp — разрешает запись в файлы /var/log/utmp /var/log/wtmp
  • video — позволяет работать с видеодрайвером
  • plugdev — позволяет монтировать внешние устройства USB, CD и т д
  • staff — разрешает запись в папку /usr/local

Теперь, когда вы знаете зачем использовать группы в linux и какие они есть по умолчанию, рассмотрим управление группами LInux.

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

Управлять группами можно и с помощью графического интерфейса. В KDE есть программа Kuser специально предназначенная для этого, в Gnome это выполняется с помощью настроек системы. Кроме того, в популярных дистрибутивах есть отдельные инструменты, такие как YaST в OpenSUSE или Настройки Ubuntu. Но с графическим интерфейсом я думаю вы разберетесь. А мы рассмотрим управление группами linux через терминал. Сначала разберемся с файлами, а уже потом с пользователями.

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

ls -l ~/

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

ls -l /dev/

Здесь мы видим что дисковым устройствам sd* назначена группа disk, а это все значит, что пользователь, состоящий в этой группе, может получить к ним доступ. Или еще пример:

ls -l /var/log/

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

chgrp имя_группы имя_файла

Например создадим файл test:

touch test

И изменим для него группу:

chgrp adm test

Теперь этот файл смогут прочитать все пользователи из группы adm.

Если вы хотите создать группу linux, это можно сделать командой newgrp:

sudo groupadd test

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

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

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

  • -G — дополнительные группы, в которые нужно добавить пользователя
  • -g изменить основную группу для пользователя
  • -R удалить пользователя из группы.

Добавить пользователя в группу можно командой usermod:

sudo usermod -G -a имя_группы имя_пользователя

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

sudo newgrp имя_группы

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

sudo usermod -G -a disk sergiy

Теперь вы можете монтировать диски без команды sudo:

mount /dev/sda1 /mnt

Посмотреть группы linux, в которых состоит пользователь можно командой:

groups

Также можно использовать команду id. В первом случае мы просто видим список групп linux, во втором дополнительно указанны id группы и пользователя. Чтобы включить пользователя в группу Linux, для основной группы используется опция -g:

sudo usermod -g test sergiy

Теперь все каталоги в домашней папке пользователя имеют группу test. Удалить пользователя из группы в linux можно той же командой с опцией R:

sudo usermod -R группа пользователь

Ну и наконец, удалить группу Linux можно командой:

sudo delgroup имя_группы

Выводы

Как видите, группы пользователей Linux не такое уж сложное дело. Вы можете в несколько команд добавить пользователя в группу linux или дать ему полномочия на доступ к определенным ресурсам. Если вы надумали изменять группы для системных устройств, тут все не так просто, но в этом вопросе вам поможет статья про правила udev в linux. Теперь управление группами Linux вам не кажется таким сложным. Если остались вопросы, пишите в комментариях!

Оцените статью:

Загрузка…

Администрирование пользователей в Linux | Блог любителя экспериментов

В своих прошлых постах блога я уже затрагивал тему пользователей в операционной системе Linux. Например в теме о правах доступа в Linux я затрагивал вопросы принадлежности пользователя к группе, а так же то, что пользователи и группы имеют свои UID и GID. Так же поднималась тема о сбросе пароля пользователя root. Сегодня я бы хотел систематизировать знания о базе локальных пользователей в Linux, о том, как управлять пользователями и о файлах, отвечающих за управление пользователями.

Linux — это многопользовательская операционная система. Каждый пользователь в Linux принадлежит одной основной группе и одной или нескольким дополнительным группам. В Linux, как и в большинстве других операционных системах работа с пользователями заключается в наборе следующих манипуляций: добавление пользователя/группы, удаление пользователя/группы, модификация настроек пользователя/группы. Данные манипуляции производятся с помощью команд: useradd, groupadd, userdel, groupdel, usermod, groupmod, а так же passwd, gpasswd, id. Более подробно: Описание команд управления пользователями Linux. Существуют так же и графические средства администрирования пользователями, обычно они расположены в оболочке X в разделе Администрирование — Пользователи и группы.

Особенности управления пользователями в Linux

Пример добавления пользователя с помощью шелла:

user-add-server:~# groupadd test
user-add-server:~# useradd -c "Test Test" -g test -m test
user-add-server:~# passwd test
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
user-add-server:~# id test
uid=1001(test) gid=1001(test) группы=1001(test)
user-add-server:~# ls -ld /home/test/
drwxr-xr-x 2 test test 4096 Дек 16 10:24 /home/test/
user-add-server:~#

В примере мы добавляем группу для нового пользователя (groupadd), далее создаем нового пользователя с полным именем Test Test, имеющего основную группу test и логин test, далее задаем пароль для пользователя test (passwd test) и проверяем параметры созданного пользователя (id и созданный каталог пользователя /home/test/). В листинге видно, что UID и GID — более 1000. Данная особенность является признаком обычного пользователя. Значения ниже (меньше) 1000 (а в некоторых дистрибутивах — меньше 500) указывают на то, что пользователь является системным пользователем.

В соответствии с соглашением, системные пользователи обычно имеют id меньше, чем 100, а пользователь root имеет id, равный 0. Автоматическая нумерация обычных пользователей начинается со значения UID_MIN, установленного в файле /etc/login.defs, это значение обычно установлено в 500 или 1000.

Помимо учетных записей обычных пользователей и учетной записи пользователя root, обычно в системе бывает несколько учетных записей специального назначения для демонов, таких как FTP, SSH, mail, news и т.д. Такие учетные записи часто управляют файлами, но к ним невозможно получить доступ путем обычной регистрации в системе. Поэтому обычно они имеют login shell, определенный как /sbin/nologin или /bin/false, чтобы попытки зарегистрироваться в системе терпели неудачу.

В некоторых системах, команда(ы) добавления пользователей имеют расширенный функционал. То есть, для примера, команда useradd в дистрибутивах Fedora и Red Hat по умолчанию, для нового пользователя создает новую группу и для отмены данной функции, необходимо использовать опцию -n. Для уточнения таких вопросов, необходимо обратиться к документации дистрибутива.

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

user-add-server:~# userdel test
user-add-server:~# groupdel test
user-add-server:~# ls -ld /home/test/
drwxr-xr-x 2 1001 1001 4096 Дек 16 10:24 /home/test/
user-add-server:~# groupadd test123
user-add-server:~# useradd -c "Test Test" -g test123 -m test123
user-add-server:~# ls -ldn /home/test*
drwxr-xr-x 2 1001 1001 4096 Дек 16 14:30 /home/test
drwxr-xr-x 2 1001 1001 4096 Дек 16 14:29 /home/test123
user-add-server:~# ls -ld /home/test*
user-add-server:~# ls -ld /home/test*
drwxr-xr-x 2 test123 test123 4096 Дек 16 10:24 /home/test
drwxr-xr-x 2 test123 test123 4096 Дек 16 14:25 /home/test123
user-add-server:~# passwd test123
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
user-add-server:~# su -l test123
test123@user-add-server:~$ pwd
/home/test123
test123@user-add-server:/home/mc-sim$ ls /home/
mc-sim  test  test123
test123@user-add-server:~$ cd /home/mc-sim/
test123@user-add-server:/home/mc-sim$ ls -la
итого 24
drwxr-xr-x 2 mc-sim mc-sim 4096 Ноя 15 12:31 .
drwxr-xr-x 6 root   root   4096 Дек 16 14:25 ..
-rw------- 1 mc-sim mc-sim   99 Ноя 15 13:45 .bash_history
-rw-r--r-- 1 mc-sim mc-sim  220 Окт  1 17:42 .bash_logout
-rw-r--r-- 1 mc-sim mc-sim 3116 Окт  1 17:42 .bashrc
-rw-r--r-- 1 mc-sim mc-sim  675 Окт  1 17:42 .profile
test123@user-add-server:/home/mc-sim$ rm /home/mc-sim/.bash_logout
rm: удалить защищенный от записи обычный файл `/home/mc-sim/.bash_logout'? y
rm: невозможно удалить `/home/mc-sim/.bash_logout': Отказано в доступе
test123@user-add-server:/home/mc-sim$ rm /home/test/.bashrc
test123@user-add-server:/home/mc-sim$

В приведенном примере мы удаляем пользователя и группу test, созданную ранее. При этом каталог данного пользователя остался не тронутым. Как видно из листинга, права у каталога остались для id 1001. Далее мы создаем нового пользователя и группу, но уже с другим именем — test123. Данному пользователю присваивается UID и GID — ранее существующего пользователя test. Посмотрев  список каталогов, начинающиеся на /home/test* с ключом -n и без него, видим, что получилось — каталог пользователя test стал принадлежать пользователю test123, о чем нам говорят права доступа -rw-r—r— test123 test123. Входим в систему под пользователем test123 и для проверки прав доступа, в каталоге /home/test пробуем удалить файл, а так же пробуем удалить файл из каталога третьего пользователя — mc-sim. Данный пример хорошо иллюстрирует, что в Linux все привязано к идентификаторам.

Управление базами данных пользователей и групп в Linux

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

/etc/passwd

файл паролей, содержащий основную информацию о пользователях

/etc/shadow

файл теневых шифрованных паролей, содержащий зашифрованные пароли

/etc/group

файл групп, содержащий основную информацию о группах и принадлежащих этим группам пользователях

/etc/gshadow

файл теневых групп, содержащий шифрованные пароли групп

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

Если все же есть острая необходимость в редактировании указанный файлов, то при помощи команды vipw можно безопасно редактировать файл /etc/passwd, а при помощи команды vigr безопасно редактировать файл /etc/group. Эти команды заблокируют необходимые файлы на то время, пока при помощи редактора vi будут производиться изменения. Если вы вносите изменения в файл /etc/passwd, команда vipw подскажет, что необходимо проверить, не нужно ли обновить и файл /etc/shadow. Подобным образом, если вы обновляете файл /etc/group при помощи команды vigr, вы получите подсказку, что необходимо обновить и файл /etc/gshadow. Если необходимо удалить администраторов группы, необходимо использовать команду vigr, поскольку команда gpasswd позволяет только добавлять администраторов.

Обращаю внимание, что в современных системах, файлы passwd и group не хранят пароли в открытом виде. Это сделано из соображений безопасности. Сами файлы passwd и group должны быть доступными для чтения для всех, а зашифрованные пароли — недоступными для чтения для всех. Поэтому зашифрованные пароли хранятся в теневых файлах, и эти файлы доступны для чтения только пользователю root. Необходимый доступ для изменения аутентификационных данных обеспечивается при помощи suid-программы, которая имеет полномочия пользователя root, но может быть запущена любым пользователем.

Файл /etc/passwd

user-add-server:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin
test123:x:1001:1001:Test Test:/home/test123:/bin/sh

Файл /etc/passwd содержит одну строку для каждого пользователя системы. Каждая строка содержит семь полей, разделенных двоеточиями (:), описание полей на примере пользователя root:

полезначениеописание
Имя пользователяrootимя, используемое для входа в систему (логин)
Парольxпароль пользователя (если зашифрован, используется символ — x)
id пользователя (UID)0Идентификатор пользователя
id группы (GID)0Идентификатор группы
КомментарийrootНеобязательное поле, используемое для описания пользователя. Например, для указания полного имени. Это поле может содержать несколько разделенных запятыми записей.
Домашний каталог/rootАбсолютный путь для домашнего каталога пользователя.
Командная оболочка/bin/bashПрограмма, которая автоматически запускается при входе пользователя в систему. Обычно это интерактивный shell, такой как /bin/bash или /bin/sh, но это может быть и другая программа, не обязательно интерактивный shell.

Файл /etc/group

user-add-server:~# cat /etc/group
root:x:0:
lp:x:7:
ssh:x:103:
test123:x:1001:

Файл /etc/group содержит одну строку для каждой группы системы.Каждая строка содержит четыре поля, разделенных двоеточиями (:), описание на примере группы root:

полезначениеописание
Имя группыrootИмя группы
Парольxпароль группы (если зашифрован, используется символ — x)
id группы (GID)0идентификатор группы
Члены группыРазделенный запятыми список членов группы, за исключением тех членов, для которых это группа является основной.

Файл /etc/shadow

user-add-server:~# cat /etc/shadow | grep test
test123:$1$.ArJtddq$h499O2dO6aDa99UmDjJ7/1:14959:0:99999:7:::

Файл /etc/shadow должен быть доступен для чтения только для пользователя root. Пароли могут быть зашифрованы при помощи DES, но чаще для шифрования используется MD5. Описание полей файла:

полезначениеописание
имя пользователяtest123имя, используемое для входа в систему (логин)
Зашифрованный пароль$1$.ArJtddq$h499O2dO6aDa99UmDjJ7/1Пароль в зашифрованном виде
количество дней14959количество дней с 1 января 1970, после которых производилось последнее изменение пароля
количество дней0количество дней до смены пароля
количество дней99999количество дней, после которых пользователь должен сменить пароль
количество дней7количество дней, после которых пользователь получает предупреждение о необходимости смены пароля
количество днейпустоколичество дней, после истечения срока действия пароля, после которых учетная запись блокируется
количество днейпустоколичество дней, с 1 января 1970, до которых действует учетная запись
количество днейпустозарезервированное поле

Файл /etc/gshadow

Print-server:~# cat /etc/gshadow
root:*::
lp:*::
ssh:!::
test123:!::

Файл /etc/gshadow содержит информацию о группах, состоит из четырех полей для каждой записи:

полезначениеописание
Имя группыtest123Имя группы
Пароль!Поле используется для хранения зашифрованного пароля, если у группы имеется пароль. Если группа не имеет пароля, здесь можно увидеть ‘x’, ‘!’ или ‘!!’.
АдминистраторыпустоРазделенный запятыми список администраторов группы.
Члены группыпустоРазделенный запятыми список членов группы.

Вот такая ситуация с пользователями в Linux.

Подведу маленький итог:

Пользователи в Linux управляются командами указанными тут. Информация о пользователях и группах храниться в четырех файлах /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow. Данные файлы не редактируются стандартным редактором, только специальными командами управления пользователями и группами (useradd, userdel, usermod, groupadd, groupdel, groupmod, passwd и т.д.) или специальными командами редактирования (vipw, vigr и т.д.). Формат содержимого файлов представляет собой несколько строк, каждая из которых соответствует одному пользователю или группе.

До новых постов!

С Уважением, Mc.Sim!


Другие материалы в категории основы Linux


Теги: Linux, UNIX, vim, команды, основы

Команды для работы с пользователями и группами в Linux

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

# useradd admin7Добавление пользователя с именем «admin7»
# useradd -G developers admin7Добавление пользователя в существующую группу
# useradd -G admins,ftp,www,developers admin7Группы можно перечислять через запятую, к примеру, если необходимо добавить пользователя в несколько групп. В этом случае пользователь admin7 будет добавлен в группы admins,ftp,www,developers.
# passwd userЗадать пароль пользователя
# userdel admin7Удаление пользователя из системы
# groupadd adminСоздание новой группы «admin»
# usermod -a -G ftp admin7Добавляем существующего пользователя admin7 в вторичную группу ftp
# usermod -g www admin7Изменяем существующему пользователю admin7 первучную группу на www
# cat /etc/passwd | awk -F ‘:’ ‘{ print $1 }’Посмотреть всех пользователей
# getent passwdпосмотреть всех пользователей linux с доп. информацией
# cat /etc/passwd | awk ‘/bash/{print}’Просмотр списка несистемных пользователей
# cat /etc/passwdПросмотр детальной информации о пользователях
# cat /etc/groupВывод списка всех групп
# su -l usernameАвторизоваться под другим пользователем
# idПросмотр активных пользователей
# id admin7Просмотр информации о группах пользователя admin7
# lastПросмотр журнала авторизованных пользователей. Данные для команды last берутся из бинарного лога /var/log/wtmp (man wtmp), в который записываются удачные авторизации.
# whoПросмотреть кто авторизован в данный момент.

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

Пользователи и группы | Русскоязычная документация по Ubuntu

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

  • вступление

  • скриншоты

  • ссылки

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

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

Добавление пользователя осуществляется при помощи команды 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=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

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

sudo useradd -D -s /bin/bash

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

Таким образом могут быть заданы параметры, определяемые только ключами: -b -e -f -g -s

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

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

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

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

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

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

sudo passwd vasyapupkin

passwd может использоваться и обычным пользователем для смены пароля. Для этого пользователю надо ввести

passwd

и ввести старый и новый пароли.

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

КлючОписание
-dУдалить пароль пользователю. После этого пароль будет пустым, и пользователь сможет входить в систему без предъявления пароля.
-eСделать пароль устаревшим. Это заставит пользователя изменить пароль при следующем входе в систему.
-iЗаблокировать учетную запись пользователя по прошествии указанного количества дней после устаревания пароля.
-nМинимальное количество дней между сменами пароля.
-xМаксимальное количество дней, после которого необходимо обязательно сменить пароль.
-lЗаблокировать учетную запись пользователя.
-uРазблокировать учетную запись пользователя.

Установка пустого пароля пользователя

Супер пользователь с помощью утилит командной строки passwd и usermod или путем редактирования файла /etc/shadow может удалить пароль пользователь, дав возможность входить в систему без указания пароля.

sudo passwd -d vasyapupkin

или

sudo usermod -p "" vasyapupkin

Если учетная запись пользователя в этот момент была заблокирована командой passwd -l, то указанные выше команды так же снимут эту блокировку

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

sudo passwd -e vasyapupkin

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

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

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

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

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

  • id имя_пользователя – вывод о идентификаторах пользователя: его uid, имя_пользователя, gid и имя первичной группы и список групп в которых состоит пользователь

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

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

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

sudo userdel vasyapupkin

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

КлючОписание
-fПринудительно удалить пользователя, даже если он сейчас работает в системе.
-rУдалить домашний каталог пользователя.

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

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

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

sudo groupadd testgroup

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

КлючОписание
-gУстановить собственный GID.
-pПароль группы.
-rСоздать системную группу.

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

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

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

Опции groupmod:

КлючОписание
-gУстановить другой GID.
-nНовое имя группы.
-pИзменить пароль группы.

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

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

sudo groupdel testgroup

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

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

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

/etc/passwd

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

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

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

ПолеОписание
1vasyapupkinИмя пользователя для входа в систему.
2xНеобязательный зашифрованный пароль.
31000Числовой идентификатор пользователя (UID).
41000Числовой идентификатор группы (GID).
5Vasya PupkinПоле комментария
6/home/vpupkinДомашний каталог пользователя.
7/bin/bashОболочка пользователя.

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

/etc/group

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

vasyapupkin:x:1000:vasyapupkin,petya
ПолеОписание
1vasyapupkinНазвание группы
2xНеобязательный зашифрованный пароль.
31000Числовой идентификатор группы (GID).
4vasyapupkin,petyaСписок пользователей, находящихся в группе.

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

/etc/shadow

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

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

Здесь:

ПолеОписание
1vasyapupkinИмя пользователя для входа в систему.
2$6$Yvp9VO2s$VfI0t.o754QB3HcvVbz5hlOafmO.LaHXwfavJHniHNzq/bCI3AEo562hhiWLoBSqxLy7RJJNm3fwz.sdhEhHL0Необязательный зашифрованный пароль.
315803Дата последней смены пароля.
40Минимальный срок действия пароля.
599999Максимальный срок действия пароля.
67Период предупреждения о пароле.
7Период неактивности пароля.
9Дата истечения срока действия учётной записи.

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

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

Установка

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

sudo apt-get install gnome-system-tools

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

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

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

Смотрите также

Пользователи в Linux. Типы пользователей, управление пользователями.

Содержание статьи

Сегодня я хочу поговорить о пользователях в Linux. Мы познакомимся с типами пользователей и узнаем в каких файлах хранится связанная с ними информация. Изучим команды позволяющие управлять пользователями и изменять их данные. Рассмотрим примеры создания пользователей с различными параметрами и последующим изменениям пользовательских настроек.

Типы пользователей

В ОС Linux существует три типа пользователей:

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

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

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

Каждый пользователь помимо имени имеет числовой идентификатор пользователя UID (User IDentificator). Пользователь root имеет идентификатор 0. Системные пользователи имеют идентификаторы от 1 до 100. Обычные пользователи имеют UID от 100.

Пользователи могут объединяться в группы. Каждый пользователь обязательно входит в ту или иную группу. Группы имеют числовой идентификатор группы GID (Group IDentificator).

Информация пользователей

В системе присутствует следующая информация о каждом пользователе:

  • Имя пользователя (user name) — в рамках системы имя должно быть уникальным. В именах должны использоваться только английские буквы, числа и символы _ и . (точка).
  • Идентификационный номер пользователя (UID) — является уникальным идентификатором пользователя в системе. Система отслеживает пользователей по UID, а не по именам.
  • Идентификационный номер группы (GID) — обозначает группу, к которой относится пользователь. Каждый пользователь может принадлежать к одной или нескольким группам. Принадлежность пользователя к группе устанавливает системный администратор, чтобы иметь возможность ограничивать доступ пользователей к тем или иным ресурсам системы.
  • Пароль (password) — пароль пользователя в зашифрованном виде.
  • Полное имя (full name) — помимо системного имени может присутствовать полное имя пользователя, например фамилия и имя.
  • Домашний каталог (home directory) — каталог, в который попадает пользователь после входа в систему. Подобный каталог имеется у каждого пользователя, все пользовательские каталоги хранятся в директории /home.
  • Начальная оболочка (login shell) — командная оболочка, которая будет запускаться при входе в систему. Например, /bin/bash.

Вся информация о пользователях хранится в следующих файлах:

passwd (etc/passwd) — содержит информацию о пользователях, имеет следующий формат записи — «user_name:password:UID:GID:full_name:home_directory:login_shell». Элементы записи должны разделяться символом — «:» (двоеточие) и записываются без пробелов. Если пароль хранится в зашифрованном виде в файле /etc/shadow, то вместо пароля указывается — «x».

group (etc/group) — информация о группах, формат — «group_name:password:GID:user1,user2,user3». Элементы записи должны разделяться символом — «:» (двоеточие) записываются без пробелов. Имена пользователей записываются через запятую.

У файлов /etc/passwd и /etc/group всегда определенные права доступа: чтение и запись для root, для остальных только чтение.

shadow (etc/shadow) — в этом файле хранятся так называемые «теневые пароли», информация о паролях пользователей в зашифрованном виде. Cделано это для безопасности, так как файл /etc/passwd может читаться кем угодно, а файл /etc/shadow может прочитать только root.

gshadow (etc/gshadow) — то же самое что и shadow, только для паролей групп.

Помимо основных, в системе присутствуют дополнительные файлы.

useradd (etc/default/useradd) — файл задающий свойства «по умолчанию» для всех добавляемых пользователей. Можно просмотреть командой — useradd -D.

useradd -D

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

login.defs (/etc/login.defs) — содержит настройки для создания новых пользователей.

/etc/skel — каталог с дефолтными файлами, которые копируются в домашний каталог каждого пользователя при его создании.

Команды управления

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

useradd или adduser — добавить нового пользователя.

passwd — задать пароль для пользователя.

usermod — изменить параметры учетной записи пользователя.

userdel или deluser — удалить учетную запись пользователя.

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

groupadd — добавляет новую группу.

gpasswd — устанавливает пароль группы.

groupmod — изменение параметров группы.

groupdel — удаление группы.

Обычное добавление пользователя

При создании нового пользователя автоматически указываются несколько параметров. В файле /etc/passwd, заводится запись с указанием имени пользователя, домашнего каталога, UID, GID. В каталог помещаются файлы инициализации командной оболочки. Все можно указать вручную, при помощи дополнительных опций. Список опций можно просмотреть командой useradd —help или useradd -h.

useradd -h

Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]

Options:
  -b, --base-dir БАЗ_КАТ        базовый каталог для домашнего каталога новой
                                учётной записи
  -c, --comment КОММЕНТАРИЙ     поле GECOS новой учётной записи
  -d, --home-dir ДОМ_КАТ        домашний каталог новой учётной записи
  -D, --defaults                показать или изменить настройки
                                по умолчанию для useradd
  -e, --expiredate ДАТА_УСТ     дата устаревания новой учётной записи
  -f, --inactive НЕАКТИВНОСТЬ   период неактивности пароля новой учётной записи
  -g, --gid ГРУППА              имя или ID первичной группы новой
                                учётной записи
  -G, --groups ГРУППЫ           список дополнительных групп новой
                                учётной записи
  -h, --help                    показать данное сообщение и закончить работу
  -k, --skel КАБ_ШАБ            использовать альтернативный каталог с шаблонами
  -K, --key КЛЮЧ=ЗНАЧЕНИЕ       заменить значение по умолчанию
                                из /etc/login.defs
  -l, --no-log-init             не добавлять пользователя в базы данных lastlog и
                                faillog
  -m, --create-home             создать домашний каталог пользователя
  -M, --no-create-home          не создавать домашний каталог пользователя
  -N, --no-user-group           не создавать группу с тем же именем что и у
                                пользователя
  -o, --non-unique              разрешить создание пользователей с
                                повторяющимися (не уникальными) UID
  -p, --password ПАРОЛЬ         зашифрованный пароль новой учётной записи
  -r, --system                  создать системную учётную запись
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОЛОЧКА          регистрационная оболочка новой
                                учётной записи
  -u, --uid UID                 пользовательский ID новой учётной записи
  -U, --user-group              создать группу с тем же именем что и у
                                пользователя
  -Z, --selinux-user SEUSER     использовать указанного SEUSER для
                                пользовательского сопоставления SELin

Для создания пользователя достаточно выполнить команду useradd и указать его имя.

Синтаксис команды: useradd options username

useradd techlist

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

passwd techlist
Введите новый пароль UNIX: 
Повторите ввод нового пароля UNIX: 
passwd: пароль успешно обновлён

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

useradd -p password techlist
# password - заменить на свой пароль, пароль указывается в своем обычном виде

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

grep -E 'techlist' /etc/passwd
techlist:x:1001:1001::/home/techlist:/bin/bash

id techlist
uid=1001(techlist) gid=1001(techlist) группы=1001(techlist)

# Пользователь создан со следующими параметрами
user_name      techlist
password       x ( указывает что пароль хранится в зашифрованном виде)
UID            1001
GID            1001
home_directory /home/techlist
login_shell    /bin/bash

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

Чтобы создать пользователя с подобными параметрами в Debian & Ubuntu команда useradd должна выглядеть следующим образом.

useradd -m -d /home/techlist -s /bin/bash techlist

-d - указываем домашний каталог пользователя /home/techlist
-m - указывает что домашний каталог нужно создать автоматически
-s - задает пользовательскую оболочку /bin/bash

Поэтому в Ubuntu & Debian удобнее пользоваться утилитой adduser, при ее использовании нужно будет ответить на несколько вопросов, в процессе ее выполнения будут видны все шаги по созданию нового пользователя.

adduser techlist
Добавляется пользователь «techlist» ...
Добавляется новая группа «techlist» (1001) ...
Добавляется новый пользователь «techlist» (1001) в группу «techlist» ...
Создание почтового ящика: Файл существует
Создаётся домашний каталог «/home/techlist» ...
Копирование файлов из «/etc/skel» ...
Введите новый пароль UNIX: 
Повторите ввод нового пароля UNIX: 
passwd: пароль успешно обновлён
Изменение информации о пользователе techlist
Введите новое значение или нажмите ENTER для выбора значения по умолчанию
	Полное имя []: Techlist
	Номер комнаты []: 
	Рабочий телефон []: 
	Домашний телефон []: 
	Другое []: 
Данная информация корректна? [Y/n] y

Проверим как создался пользователь.

grep -E 'techlist' /etc/passwd
techlist:x:1001:1001:Techlist,,,:/home/techlist:/bin/bash
id techlist
uid=1001(techlist) gid=1001(techlist) группы=1001(techlist)

Пользователь создался как и в CentOS, за исключением того, что там мы не указывали полного имени «Techlist,,,», через запятые должны были быть указаны номера комнаты и телефонов, которые мы пропустили нажав на <Enter>.

Создание пользователя с домашней директорией, отличной от дефолтной директории

По умолчанию команда useradd создает домашний каталог пользователя в директории /home, имя домашнего каталога всегда совпадает с именем пользователя. Например при создании пользователя techlist, создается домашняя директория /home/techlist.

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

useradd -d /opt/tech techlist

Проверяем
grep -E 'techlist' /etc/passwd
techlist:x:1001:1001::/opt/tech:/bin/bash

Как можно видеть, пользователь techlist создался с домашним каталогом в /opt/tech.

Создание пользователя с определенным UID и GID

Каждому пользователю при его создании присваивается UID, присвоение идет по порядку: 1000, 1001 и т.д. При использовании опции -u пользователю можно задать определенный UID. Для примера создадим пользователя techlist c UID равным 777.

useradd -u 777 techlist

Проверяем
techlist:x:777:1001::/home/techlist:/bin/bash

Пользователь создался с UID равным 777, но GID был задан дефолтный — 1001, для того чтобы это исправить можно поступить следующим образом.

Сначала создадим группу techlist c GID равным 777.

groupadd -g 777 techlist

Проверяем
grep -E 'techlist' /etc/group
techlist:x:777:

Обратите внимание, группа создана но пользователей в нет, теперь можно создать пользователя с UID=777 и указать его принадлежность к группе techlist с помощью опции -g и указания GID 777.

useradd -u 777 -g 777 techlist

Проверяем
grep -E 'techlist' /etc/passwd
techlist:x:777:777::/home/techlist:/bin/bash

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

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

Допустим что новый пользователь techlist должен принадлежать к следующим группам: group_1, group_2 и group_3.

useradd -G group_1,group_2,group_3 techlist

Проверяем
id techlist
uid=1001(techlist) gid=1004(techlist) группы=1004(techlist),1001(group_1),1002(group_2),1003(group_3)

Создание пользователя без домашнего каталога

Иногда пользователю не требуется домашний каталог, для этого используется опция -M.

useradd -M techlist

Проверяем
cd home/techlist
-bash: cd: home/techlist: Нет такого файла или каталога

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

По умолчанию каждый пользователь не имеет срока действия аккаунта. Срок действия можно установить задав дату истечения аккаунта. Для этого следует использовать опцию -e после которой указывается дата истечения аккаунта в формате YYYY-MM-DD. Создадим пользователя techlist с истечением аккаунта в 2017-05-01, по достижении даты аккаунт будет недействителен.

useradd -e 2017-05-01 techlist

Проверяем командой chage
chage -l techlist
Последний раз пароль был изменён				: фев 07, 2017
Срок действия пароля истекает					: никогда
Пароль будет деактивирован через				: никогда
Срок действия учётной записи истекает				: май 01, 2017
Минимальное количество дней между сменой пароля		        : 0
Максимальное количество дней между сменой пароля		: 99999
Количество дней с предупреждением перед деактивацией пароля	: 7

Вот это интересует
Срок действия учётной записи истекает				: май 01, 2017

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

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

Устанавливаем срок действия пароля в течении 20-и дней, для пользователя techlist
chage -M 20 techlist

Проверяем
chage -l techlist
Последний раз пароль был изменён				: фев 07, 2017
Срок действия пароля истекает					: фев 27, 2017
Пароль будет деактивирован через				: никогда
Срок действия учётной записи истекает			        : май 01, 2017
Минимальное количество дней между сменой пароля		        : 0
Максимальное количество дней между сменой пароля		: 20
Количество дней с предупреждением перед деактивацией пароля	: 7

Вот это интересует
Максимальное количество дней между сменой пароля		: 20

Создание пользователя с указанием доп. информации

Иногда может возникнуть необходимость указать примечание для пользователя, в виде краткой заметки или указания имени и фамилии пользователя. Для этого можно воспользоваться опцией -c. Создадим пользователя vasek, с указанием имени и фамилии Vasya Pupkin.

useradd -c "Vasya Pupkin" vasek

Проверяем
grep -E 'vasek' /etc/passwd
vasek:x:1001:1001:Vasya Pupkin:/home/vasek:/bin/bash

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

Для того чтобы указать командную оболочку для пользователя используется опция -s

useradd -s /sbin/sh techlist

Проверяем
grep -E 'techlist' /etc/passwd
techlist:x:1001:1001::/home/techlist:/sbin/sh

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

Изменение существующего пользователя

Иногда может потребоваться внести некоторые изменения в аккаунт пользователя. Сделать это можно при помощи команды usermod.

Синтаксис команды: usermod options username

Команда usermod имеет дополнительные опции, посмотреть список доступных опций можно командой usermod -h.

usermod -h

  -c, --comment КОММЕНТАРИЙ     новое значение поля GECOS
  -d, --home ДОМ_КАТ            новый домашний каталог учётной записи
  -e, --expiredate ДАТА_УСТ     установить дату окончания действия
                                учётной записи в ДАТА_УСТ
  -f, --inactive НЕАКТИВНОСТЬ   установить период неактивности пароля после
                                устаревания учётной записи равным НЕАКТИВНОСТЬ
  -g, --gid ГРУППА              принудительно назначить первичную ГРУППУ
  -G, --groups ГРУППЫ           список дополнительных ГРУПП
  -a, --append                  добавить пользователя в дополнительные
                                ГРУППЫ, указанные в параметре -G не удаляя
                                пользователя из других групп
  -h, --help                    показать данное сообщение и закончить работу
  -l, --login НОВОЕ_ИМЯ         новое значение имени учётной записи
  -L, --lock                    заблокировать учётную запись
  -m, --move-home               переместить содержимое домашнего каталога в
                                новое место (использовать только вместе с -d)
  -o, --non-unique              разрешить создание учётной записи с уже
                                имеющимся (не уникальным) UID
  -p, --password ПАРОЛЬ         задать новый шифрованный пароль для
                                учётной записи
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОЛОЧКА          новая регистрационная оболочка для учётной
                                записи
  -u, --uid UID                 новый UID для учётной записи
  -U, --unlock                  разблокировать учётную запись
  -Z, --selinux-user SEUSER     новое пользовательское сопоставление
                                SELinux для учётной записи

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

useradd techlist

Пользователь был создан с дефолтными настройками.

Проверяем
grep -E 'techlist' /etc/passwd
techlist:x:1001:1001::/home/techlist:/bin/bash

# Пользователь создан с дефолтными параметрами
user_name      techlist
password       x ( указывает что пароль хранится в зашифрованном виде)
UID            1001
GID            1001
home_directory /home/techlist
login_shell    /bin/bash

Добавление доп. информации пользователю

Для начала добавим имя и фамилию пользователя, опцией -c.

usermod -c "Имя Фамилия" techlist

Проверяем
grep -E 'techlist' /etc/passwd
techlist:x:1001:1001:Имя Фамилия:/home/techlist:/bin/bash

Изменение домашнего каталога пользователя

По умолчанию домашним каталогом пользователя techlist является /home/techlist. Изменим его на каталог /opt/techlist, при помощи опции -d и опцией -m перенесем в новый каталог все содержимое старого.

usermod -d /opt/techlist -m techlist

Проверяем
grep -E 'techlist' /etc/passwd
techlist:x:1001:1001:Имя Фамилия:/opt/techlist:/bin/bash

Установка даты истечения срока аккаунта

Назначим дату истечения действия аккаунта, аккаунт будет действовать до 2017-05-01, дата задается опцией -e.

usermod -e 2017-05-01 techlist

Проверяем
chage -l techlist
Последний раз пароль был изменён				: фев 07, 2017
Срок действия пароля истекает					: никогда
Пароль будет деактивирован через				: никогда
Срок действия учётной записи истекает				: май 01, 2017
Минимальное количество дней между сменой пароля		        : 0
Максимальное количество дней между сменой пароля		: 99999
Количество дней с предупреждением перед деактивацией пароля	: 7

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

Изменим группу пользователя techlist. Сначала посмотрим к каким группам он принадлежит.

id techlist
uid=1001(techlist) gid=1001(techlist) группы=1001(techlist)

Добавим пользователя techlist к группе group_1, используя опцию -g.

usermod -g group_1 techlist

Проверяем
id techlist
uid=1001(techlist) gid=1002(group_1) группы=1002(group_1)

Как можно увидеть группа изменилась, если раньше была 1001(techlist), то теперь стала 1002(group_1).

Как добавить пользователя к новой группе без удаления из предыдущей? Для этого существует опция -G.

usermod -G group_2 techlist

Проверяем
id techlist
uid=1001(techlist) gid=1002(group_1) группы=1002(group_1),1003(group_2)

Теперь пользователь принадлежит одновременно к двум группам 1002(group_1) и 1003(group_2).

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

Для добавления пользователя в одну из дополнительных групп, одновременно используются две опции -a и -G.  В качестве дополнительной группы будет выступать группа wheel.

usermod -a -G wheel techlist

Проверяем
id techlist
uid=1001(techlist) gid=1002(group_1) группы=1002(group_1),10(wheel),1003(group_2)

Теперь пользователь techlist относится к дополнительной группе wheel, что может наделить его привилегиями выполнять root-команды.

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

Существующему пользователю можно изменить имя, изменим имя пользователя techlist на techlist_admin, делается это опцией -l.

usermod -l techlist_admin techlist

Проверяем
id techlist
id: techlist: такого пользователя нет

id techlist_admin (а такой пользователь есть)
uid=1001(techlist_admin) gid=1002(group_1) группы=1002(group_1),10(wheel),1003(group_2)

Блокировка аккаунта пользователя

Для блокировки аккаунта пользователя достаточно выполнить команду с опцией -L.

usermod -L techlist_admin

Проверяем
grep -E 'techlist_admin' /etc/shadow
techlist_admin:!$6$Xq90Qiae$lNbChGeX89upuE1vuXJtTXaC63Fddy.Xn8ebmuao9Fuid7xuJ66bMHYlWtlx6QIRltKtX1T5TYMKhyW1ZZXtQ/:17204:0:99999:7:::

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

Разблокировка аккаунта пользователя

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

usermod -U techlist_admin

Проверяем
grep -E 'techlist_admin' /etc/shadow
techlist_admin:$6$Xq90Qiae$lNbChGeX89upuE1vuXJtTXaC63Fddy.Xn8ebmuao9Fuid7xuJ66bMHYlWtlx6QIRltKtX1T5TYMKhyW1ZZXtQ/:17204:0:99999:7:::

Восклицательного знака нет, значит пользователь разблокирован.

Изменение командной оболочки пользователя

Чтобы изменить командную оболочку пользователя, надо выполнить следующую команду с опцией -s. Изменим пользовательскую оболочку для techlist_admin с /bin/bash/ на /bin/sh/.

usermod -s /bin/sh techlist_admin

Проверяем
grep -E 'techlist_admin' /etc/passwd
techlist_admin:x:1001:1002:Имя Фамилия:/opt/techlist:/bin/sh

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

Для изменения UID пользователя используется опция -u.

usermod -u 777 techlist_admin

Проверяем
id techlist_admin
uid=777(techlist_admin) gid=1002(group_1) группы=1002(group_1),10(wheel),1003(group_2)

Для изменения GID пользователя используется опция -g.

usermod -g 777 techlist_admin

Проверяем
id techlist_admin
uid=777(techlist_admin) gid=777(newgroup) группы=777(newgroup),10(wheel),1003(group_2)

Таким образом можно управлять пользователями и изменять их по своему усмотрению.

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

Для удаления пользователей в Linux существуют две команды userdel и deluser, команда userdel используется в RedHat — подобных системах, а deluser в Debian и производных системах. Помимо deluser в Debian можно использовать и userdel.

userdel

синтаксис команды: userdel options username

Для того чтобы удалить пользователя, выполняем команду userdel. Команда userdel не удаляет пользователя если он работает в системе, сначала необходимо завершить все связанные с ним процессы. Для просмотра дополнительных опций команды userdel, используется ключ -h.

userdel -h

-f, --force                   force some actions that would fail otherwise
                              e.g. removal of user still logged in
                              or files, even if not owned by the user
-h, --help                    показать данное сообщение и закончить работу
-r, --remove                  удалить домашний каталог и почтовый ящик
-R, --root КАТ_CHROOT         каталог, в который выполняется chroot
-Z, --selinux-user            удалить все пользовательские сопоставления
                              SELinux для пользователя

-f — позволяет удалить залогиненного т.е. работающего в системе пользователя. Рекомендуется использовать только в самых крайних случаях, данная опция может привести к краху системы.

deluser

синтаксис команды: deluser options username

Для просмотра справки используется команда deluser -h.

deluser -h
deluser ПОЛЬЗОВАТЕЛЬ
  удаляет обычного учётную запись пользователя из системы
  пример: deluser mike

  --remove-home             удалить домашний каталог пользователя
                            и почтовый ящик
  --remove-all-files        удалить все файлы принадлежащие пользователю
  --backup                  сделать резервные копии файлов перед удалением.
  --backup-to <КАТ>         каталог для резервных копий файлов.
                            По умолчанию используется текущий каталог.
  --system                  удалить только если учётная запись системная

delgroup ГРУППА
deluser --group ГРУППА
  удаляет группу из системы
  пример: deluser --group students

  --system                  удалить только если группа системная
  --only-if-empty           удалить, только если в ней нет пользователей

deluser ПОЛЬЗОВАТЕЛЬ ГРУППА
  удаляет пользователя из группы
  пример: deluser mike students

общие параметры:
  --quiet | -q              не выводить информацию при работе в stdout
  --help | -h               показать справку об использовании
  --version | -v            показать версию и авторские права
  --conf | -c ФАЙЛ          использовать ФАЙЛ в качестве конфигурационного

Настройки команды находятся в файле /etc/deluser.conf, здесь задается поведение утилиты при удалении пользователя.

Значения 0 или 1, нет или да соответственно.

REMOVE_HOME = 0
Удаляет домашний каталог и почтовый ящик пользователя. 
REMOVE_ALL_FILES = 0
Удаляет все файлы принадлежащие пользователю. Если этот параметр включен
то REMOVE_HOME бесполезен.
BACKUP = 0
Если REMOVE_HOME или REMOVE_ALL_FILES активированы, то перед удалением
делается резервная копия всех файлов. Утилита создаст архив username.tar 
в каталоге указанном в BACKUP_TO.
BACKUP_TO = "."
Если BACKUP активирован, то здесь указывается каталог куда будет
производиться резервное копирование.
ONLY_IF_EMPTY = 0
Удалять группу только если в ней нет пользователей.
EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs|afs)"
Список регулярных выражений задающих файловые системы которые нужно исключить
из поиска при удалении пользовательских файлов.

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

Под правильным удалением пользователя нужно понимать определенную последовательность команд позволяющих удалить пользователя не оставив мусора и не обрушив систему.

Блокировка пользователя

Удаляемый пользователь не должен быть залогинен в системе и использовать какие либо файлы или программы.

Блокировку пользователя мы рассматривали выше.

usermod -L techlist

Убить все пользовательские процессы

Если пользователь залогинен, то его нужно выкинуть из системы. Для этого найдем все процессы запущенные от его имени и завершим их.

pgrep -u techlist
1556
1558
1584
1585

Узнаем что это за процессы используя их pid.

ps -f --pid $(pgrep -u techlist)
UID        PID  PPID  C STIME TTY      STAT   TIME CMD
techlist  1556     1  0 06:21 ?        Ss     0:00 /lib/systemd/systemd --user
techlist  1558  1556  0 06:21 ?        S      0:00 (sd-pam)
techlist  1584  1554  0 06:21 ?        S      0:00 sshd: techlist@pts/3
techlist  1585  1584  0 06:21 pts/3    Ss+    0:00 -bash

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

killall -9 -u techlist

-9 - отправить сигнал завершения процессам
-u - задает пользователя

Для выполнения данной команды в системе должен быть установлен пакет psmisc

debian & ubuntu
apt-get install psmisc -y

centos и пр.
yum install psmisk -y

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

userdel -r techlist

deluser --remove-home techlist

--remove-home - указан для удаления домашнего каталога пользователя
или в /etc/deluser.conf изменить значение REMOVE_HOME = 0 на 1 REMOVE_HOME = 1

Как вывести список пользователей в Linux с помощью командной строки {3 простых способа}

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

В этой статье заработайте несколько команд , чтобы перечислить всех пользователей Linux вместе с их регистрационной информацией. Эти команды работают в CentOS, Ubuntu, Arch и других дистрибутивах Linux.

  • Дистрибутив Linux установлен и работает
  • Пользователь с привилегиями sudo
  • Доступ к терминалу / командной строке

Список всех пользователей Linux, 2 варианта

Список всех пользователей Linux с помощью файла / etc / passwd

Подробную информацию о локальных пользователях можно найти в файле / etc / passwd .Каждая строка в файле содержит информацию об одном пользователе.

Есть два варианта.

Откройте файл etc / passwd , набрав команду:

  кот и т. Д. / Пароль  

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

  меньше etc / passwd  

Список всех пользователей Linux с помощью команды getent

Записи базы данных, настроенные в файле / etc / nsswitch.conf включает базу данных passwd со всеми именами пользователей и информацией для входа.

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

  getent passwd  

И Option 1 , и Option 2 будут отображать всех пользователей и их данные для входа.

Каждая строка представляет одного пользователя и имеет семь (7) полей.

Поля разделены знаком : (двоеточия), и каждая строка содержит следующую информацию:

1.Имя пользователя
2. Зашифрованный пароль (представленный x , расположенный в файле / etc / shadow )
3. Номер идентификатора пользователя (известный как UID )
4. Идентификатор группы пользователей (известный как GID )
5. Полное имя пользователя
6. Домашний каталог пользователя
7. Оболочка входа (по умолчанию bin / bash )

Как вывести только список имен пользователей Linux

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

Вариант 1 : Использование команды awk или cut .

Чтобы вывести только имена пользователей, вы можете использовать любую из следующих двух (2) команд:

  awk –F: ‘{print $ 1}’ / etc / passwd  
  вырезать –d: –f1 / etc / passwd  

Вариант 2 : Использование команды getent с awk и cut .

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

  getent passwd | awk -F: ‘{print $ 1}’  

Или используйте команду:

  getent passwd | –D: –f1  

Как искать существующих пользователей Linux

Команда getent также позволяет проверить, присутствует ли пользователь в системе.

Любая из следующих двух команд предоставит вам эту информацию:

  getent passwd | grep имя пользователя  
  getent passwd имя пользователя  

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

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

Системный пользователь против обычного пользователя

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

С другой стороны, обычных пользователей — это все пользователи, которых создает root (или пользователь с привилегиями sudo). У каждого обычного и системного пользователя есть реальная оболочка входа в систему, домашний каталог, а также номер идентификатора пользователя (UID). Идентификационный номер пользователя присваивается автоматически в диапазоне от минимального до максимального значений.UID_MAX »/etc/login.defs

Выходные данные показывают, что все обычные пользователи имеют UID от 1000 (UID_MIN) до 6000 (UID_MAX).

Примечание : Измените значения в команде в соответствии с минимальным и максимальным значениями UID для вашей системы.

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

  getent parrwd {1000..6000}  

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

Прочитав это руководство, вы должны знать, как составить список всех пользователей Linux, найти пользователей и узнать количество пользователей Linux в любом дистрибутиве Linux (Ubuntu, CentOS, RHEL, Debian и Mint).

Далее вы можете узнать о правах доступа к файлам в Linux, а также о том, как составить список запланированных заданий cron для конкретных пользователей.

.

Как учетные записи пользователей, права и права собственности работают в Linux

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

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

Он также защищает системные файлы, поскольку они принадлежат пользователю root и могут быть изменены только пользователем root. Это включает запись в системные каталоги, поэтому только пользователь root может устанавливать там новое программное обеспечение. (Так как же установить программное обеспечение? См. Ответ в разделе «Став пользователем root».)

Одно слово предостережения при использовании данных на нескольких компьютерах, например, с внешним жестким диском. Хотя вы можете видеть свое имя пользователя как имя, скажем johnny99, компьютер видит и сохраняет его как число, UID или User ID.

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

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

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

У каждого пользователя есть домашний каталог.Обычно это home / username , но на самом деле это может быть где угодно — пользователь, созданный для запуска веб-сервера, будет иметь домашний каталог где-то вроде / var / www . Помимо пользователей, в Linux есть группы. Группа — это в основном набор пользователей.

Например, если у вас есть USB-сканер на вашем компьютере, вам часто нужно быть членом группы сканеров, чтобы иметь возможность его использовать.

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

sudo useradd -m -c «John Smith» -g users -G scanner, audio john

We используйте здесь sudo , потому что только пользователь root может создавать пользователей.Опция -m создает домашний каталог по адресу / home / john , -c указывает комментарий для сохранения для пользователя, который обычно является полным именем пользователя, — g устанавливает основную группу пользователя в то время как -G добавляет вторичные группы. Наконец, мы даем имя пользователя.

Не все из этих параметров необходимы: например, если вы опустите -g , будет использоваться группа по умолчанию. Некоторые дистрибутивы используют одну группу под названием users для всех несистемных пользователей, в то время как другие создают отдельную группу для каждого пользователя.Команда groupadd работает аналогичным образом, как и обе их копии для удаления: userdel и groupdel .

Добавить пароль

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

sudo passwd john

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

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

sudo passwd —maxdays 60 -warndays 7 john

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

Данные пользователя хранятся в / etc / passwd — сам пароль сбивает с толку в / etc / shadow — и оба могут быть отредактированы, если вы захотите их изменить.Однако ошибка может помешать вам войти в систему, поэтому используйте vipw для редактирования. Это загружает копию / etc / passwd в ваш предпочтительный редактор (как определено в $ EDITOR ) и проверяет его действительность при сохранении перед заменой существующего файла.

Формат / etc / passwd полностью объясняется с помощью man 5 passwd .

Передача права собственности

Если вы хотите изменить владельца файла, вам понадобится chown :

chown john somefile

chown john: users someotherfile

chown john: someotherfile

chown -R john: somedir

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

При применении к каталогу параметр -R также изменяет все файлы и подкаталоги в этом каталоге. Кроме того, вы можете изменить только группу с помощью chgrp . Эти команды должны запускаться от имени пользователя root. Изменение прав доступа к файлам выполняется с помощью chmod .

  • Эта статья была предоставлена ​​TechRadar Linux Format, журналом номер один, который расширит ваши знания о Linux, разработках с открытым исходным кодом, выпусках дистрибутивов и многом другом.Подпишитесь на печатную или цифровую версию Linux Format здесь

.

Командная строка Linux для начинающих

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

  mkdir / tmp / tutorial
cd / tmp / учебник
  

Обратите внимание на использование абсолютного пути, чтобы убедиться, что мы создали каталог tutorial внутри / tmp .Без косой черты в начале команда mkdir попытается найти каталог tmp внутри текущего рабочего каталога, а затем попытается создать внутри него каталог tutorial . Если он не может найти каталог tmp , команда завершится ошибкой.

Если вы не догадались, mkdir — это сокращение от « m a k e dir ectory». Теперь, когда мы в безопасности в нашей тестовой области (дважды проверьте с помощью pwd , если вы не уверены), давайте создадим несколько подкаталогов:

  mkdir dir1 dir2 dir3
  

В этой команде есть несколько отличий.До сих пор мы видели только команды, которые работают сами по себе ( cd , pwd ) или имеют один элемент после ( cd / , cd ~ / Desktop ). Но на этот раз мы добавили три вещи после команды mkdir . Эти вещи называются параметрами или аргументами , и разные команды могут принимать разное количество аргументов. Команда mkdir ожидает по крайней мере один аргумент, тогда как команда cd может работать с нулем или единицей, но не более.Посмотрите, что произойдет, если вы попытаетесь передать команде неправильное количество параметров:

  mkdir
cd / etc ~ / Рабочий стол
  

Вернуться в наши новые каталоги. Приведенная выше команда создаст три новых подкаталога внутри нашей папки. Давайте посмотрим на них с помощью команды ls ( l i s t):

  ls
  

Если вы выполнили несколько последних команд, ваш терминал должен выглядеть примерно так:

Обратите внимание, что mkdir создал все папки в одном каталоге.Это не создавало dir3 внутри dir2 внутри dir1 или любой другой вложенной структуры. Но иногда бывает удобно сделать именно это, и у mkdir есть способ:

  mkdir -p dir4 / dir5 / dir6
ls
  

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

  cd dir4
ls
cd dir5
ls
CD ../..
  

Используемый нами «-p» называется опцией или переключателем (в данном случае это означает «также создать каталоги p arent»). Параметры используются для изменения способа работы команды, позволяя одной команде вести себя по-разному.К сожалению, из-за причуд истории и человеческой природы параметры могут принимать разные формы в разных командах. Вы часто будете видеть их как отдельные символы, которым предшествует дефис (как в этом случае), или как более длинные слова, которым предшествуют два дефиса. Односимвольная форма позволяет комбинировать несколько параметров, хотя не все команды допускают это. И что еще больше запутывает ситуацию, некоторые команды вообще не идентифицируют свои параметры четко, независимо от того, является ли что-то одним из вариантов, определяется исключительно порядком аргументов! Вам не нужно беспокоиться обо всех возможностях, просто знайте, что варианты существуют, и они могут принимать разные формы.Например, все следующие слова означают одно и то же:

  # Не вводите их, они здесь только для демонстрационных целей.
mkdir --parents --verbose dir4 / dir5
mkdir -p --verbose dir4 / dir5
mkdir -p -v каталог4 / каталог5
mkdir -pv dir4 / dir5
  

Теперь мы знаем, как создать несколько каталогов, просто передав их в качестве отдельных аргументов команде mkdir . Но предположим, что мы хотим создать каталог с пробелом в имени? Давайте попробуем:

  mkdir другая папка
ls
  

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

  mkdir "папка 1"
mkdir 'папка 2'
папка mkdir \ 3
mkdir "папка 4" "папка 5"
mkdir -p "папка 6" / "папка 7"
ls
  

Хотя командную строку можно использовать для работы с файлами и папками с пробелами в их именах, необходимость экранировать их кавычками или обратной косой чертой немного усложняет задачу.Часто можно сказать человеку, который много пользуется командной строкой, просто по его именам файлов: они, как правило, используют буквы и цифры и используют символы подчеркивания («_») или дефисы («-») вместо пробелов.

Создание файлов с использованием перенаправления

Наша демонстрационная папка начинает наполняться каталогами, но в ней немного не хватает файлов. Давайте исправим это, перенаправив вывод команды таким образом, чтобы вместо вывода на экран он попал в новый файл. Во-первых, напомните себе, что сейчас показывает команда ls :

  ls
  

Предположим, мы хотим записать вывод этой команды в виде текстового файла, который мы можем просмотреть или изменить дальше.Все, что нам нужно сделать, это добавить символ «больше» («>») в конец нашей командной строки, а затем имя файла для записи:

  ls> output.txt
  

На этот раз на экран ничего не выводится, потому что вместо этого вывод перенаправляется в наш файл. Если вы просто запустите ls самостоятельно, вы увидите, что файл output.txt был создан. Мы можем использовать команду cat , чтобы посмотреть ее содержимое:

  cat output.текст
  

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

  echo "Это тест"
  

Да, echo просто снова выводит свои аргументы (отсюда и название). Но совместите его с переадресацией, и вы получите способ легко создавать небольшие тестовые файлы:

  echo "This is a test"> test_1.текст
echo "Это второй тест"> test_2.txt
echo "Это третий тест"> test_3.txt
ls
  

Вы должны cat каждый из этих файлов, чтобы отметить их содержимое. Но cat — это больше, чем просто программа для просмотра файлов — его название происходит от «con cat enate», что означает «связывать вместе». Если вы передадите более одного файла в cat , он выведет каждое из них, одно за другим, в виде одного блока текста:

  cat test_1.txt test_2.txt test_3.текст
  

Если вы хотите передать несколько имен файлов одной команде, есть несколько полезных сочетаний клавиш, которые могут сэкономить вам много времени при вводе, если файлы имеют похожие имена. Знак вопроса («?») Может использоваться для обозначения «любого отдельного символа» в имени файла. Звездочка («*») может использоваться для обозначения «нуля или более символов». Иногда их называют «подстановочными знаками». Несколько примеров могут помочь, все следующие команды делают одно и то же:

  cat test_1.txt test_2.txt test_3.txt
cat test _ ?. txt
кошка test_ *
  

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

Если вы посмотрите на вывод команды ls , то заметите, что единственные файлы или папки, начинающиеся с «t», — это три тестовых файла, которые мы только что создали, так что вы можете даже упростить эту последнюю команду до cat t * , что означает «объединить все файлы, имена которых начинаются с t и за которыми следует ноль или более других символов».Давайте воспользуемся этой возможностью, чтобы объединить все наши файлы в один новый файл, а затем просмотреть его:

  cat t * >common.txt
кот комбинированный.txt
  

Как вы думаете, что произойдет, если мы выполним эти две команды во второй раз? Будет ли компьютер жаловаться, потому что файл уже существует? Добавит ли он текст в файл, чтобы он содержал две копии? Или полностью заменит? Попробуйте посмотреть, что произойдет, но чтобы не вводить команды снова, вы можете использовать клавиши Стрелка вверх, и Стрелка вниз, для перемещения вперед и назад по истории команд, которые вы использовали.Нажмите Стрелка вверх пару раз, чтобы перейти к первому cat , и нажмите Введите , чтобы запустить его, затем повторите то же самое еще раз, чтобы перейти ко второму.

Как видите, файл выглядит так же. Это не потому, что его оставили нетронутым, а потому, что оболочка очищает все содержимое файла перед тем, как записать в него вывод вашей команды cat . Из-за этого вы должны быть особенно осторожны при использовании перенаправления, чтобы случайно не перезаписать нужный файл.Если вы все же хотите добавить, а не заменить содержимое файлов, удвойте знак «больше»:

  cat t * >> Commander.txt
echo "Я добавил строку!" >> Combined.txt
кот комбинированный.txt
  

Повторите первую cat еще несколько раз, используя для удобства Стрелку вверх и, возможно, добавьте еще несколько произвольных команд echo , пока ваш текстовый документ не станет настолько большим, что он не поместится полностью. терминал сразу, когда вы используете cat для его отображения.Чтобы увидеть весь файл, нам теперь нужно использовать другую программу, которая называется пейджером (потому что она отображает ваш файл по одной «странице»). Старый стандартный пейджер назывался или , потому что он помещает строку текста внизу каждой страницы с надписью «-More-», что означает, что вы еще не прочитали все. В наши дни есть гораздо лучший пейджер, который вы должны использовать вместо этого: поскольку он заменяет на , программисты решили назвать его минус .

  за вычетом комбинированного.txt
  

При просмотре файла через минус вы можете использовать клавиши Стрелка вверх , Стрелка вниз , Page Up , Page Down , Home и End для перемещения по файлу. Дайте им попробовать увидеть разницу между ними. По завершении просмотра файла нажмите q q uit минус и вернитесь в командную строку.

Примечание о регистре

Системы Unix чувствительны к регистру, то есть они учитывают «A.txt »и« a.txt »как два разных файла. Если бы вы запустили следующие строки, вы бы получили три файла:

  echo "Нижний регистр"> a.txt
echo "Верхний регистр"> A.TXT
echo "Смешанный регистр"> A.txt
  

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

У вас может возникнуть соблазн просто нажать клавишу Caps Lock и использовать верхний регистр для всех имен файлов. Но подавляющее большинство команд оболочки пишутся в нижнем регистре, поэтому вам часто придется включать и выключать его по мере ввода. Большинство опытных пользователей командной строки, как правило, придерживаются в основном строчных имен для своих файлов и каталогов, чтобы им редко приходилось беспокоиться о конфликтах имен файлов или о том, какой регистр использовать для каждой буквы в имени.

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

.

c — Я не понимаю, как работает execlp () в Linux

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *