Etc shadow linux что это
Перейти к содержимому

Etc shadow linux что это

  • автор:

What is /etc/passwd and /etc/shadow files

In Linux, a user is identified using a unique identifier called as user id (UID). Each user belongs to at least one group called the user’s primary group. Like user, a group is also identified with the help of a unique identifier called as group id (GID). UID and GID controls the accessibility of the files and folders in Linux.

/etc/passwd

/etc/passwd file stores essential information, which required during login. In other words, it stores user account information. The /etc/passwd is a plain text file. It contains a list of the system’s accounts, giving for each account some useful information like user ID, group ID, home directory, shell, and more. The /etc/passwd file should have general read permission as many command utilities use it to map user IDs to user names. However, write access to the /etc/passwd must only limit for the superuser/root account.

Let’s take this line from an /etc/passwd output kam:x:502:502:Kam Aggarwal:/home/kam:/bin/bash

Each entry in Linux passwd file corresponds to a user and contains seven fields separeated by : as shown below.

field1: Username

This contains the user’s login id. This is the username which is used for login. Username uniquely identifies a user on a Linux system. We can’t have multiple users with same username.

field2: password

this field contain the encrypted password for the user if the value is x it means that the password is stored in /etc/shadow file like that: kam:$1$8zowrENV$XL8nvq94dwqU4kTmDlBQk.:15595:0:99999:7.

field3: User-id

Each user must be assigned a user ID (UID). UID 0 (zero) is reserved for root and UIDs 1-99 are reserved for other predefined accounts. Further UID 100-999 are reserved by system for administrative and system accounts/groups.

field4: Group-id

Group-Id represents a unique number identifying the primary group id for the user. Linux maintains the group name and group id mapping in a separate world readable file /etc/group. Following is the entry for GID ’502′ in the group file. kam:x:502:

field5: User information

The comment field. It allow you to add extra information about the users such as user’s full name, phone number etc. This field use by finger command.

field6: home Directory

User’s home directory contains all user specific configuration files. A user is provided full access to it’s home directory. Which means that the user is free to add, modify and delete any file or folder in its home directory.

field7: User’s shell

The absolute path of a command or shell (/bin/bash). Typically, this is a shell. Please note that it does not have to be a shell. For example, sysadmin can use the nologin shell, which acts as a replacement shell for the user accounts. If shell set to /sbin/nologin and the user tries to log in to the Linux system directly, the /sbin/nologin shell closes the connection. there is not only /bin/bash it can be any type of shell

/etc/shadow

is the file where important information (like an encrypted form of the password of a user, the day the password expires, whether or not the passwd has to be changed, the minimum and maximum time between password changes, …) is stored when a new user is created. let’s take this example: bob:$1$9691cSVC$zN/LWa6NNAYADAZXUMGIV0:15582:10:30:7:20:15631:

Each line in the /etc/shadow file corresponds to a user account. Each entry is divided in to 9 fields with the help of a delimiter :.

field1: Username

Login name (no surprise)

field2: Password

It is your encrypted password. The password should be minimum 8-12 characters long including special characters, digits, lower case alphabetic and more. Usually password format is set to $id$salt$hashed, The $id is the algorithm used On GNU/Linux as follows:

  1. $1$ is MD5
  2. $2a$ is Blowfish
  3. $2y$ is Blowfish
  4. $5$ is SHA-256
  5. $6$ is SHA-512

if a password field start with ! it means it’s locked.

field3: last password change

Last password change (lastchanged) : Days since Jan 1, 1970 that password was last changed

field4: Minimum

The minimum number of days required between password changes i.e. the number of days left before the user is allowed to change his/her password

field5: maximum

The maximum number of days the password is valid (after that user is forced to change his/her password)

field6: warn

The number of days before password is to expire that user is warned that his/her password must be changed

field7: Inactive

The number of days after password expires that account is disabled

field8: expire

days since Jan 1, 1970 that account is disabled i.e. an absolute date specifying when the login may no longer be used.

you can use command chage -l username to know more about a user password expiry information

how to create a /shadow password

you can create a new password and encrypt to paste it directrly in /etc/shadow password field

write the command openssl passwd -6 mypass to generate a SHA-512 from the word mypass

paste the output $6$pe5OcjXg8Ovu6QkA$W8ft0h1ME4sgqoqb5aJXjVNPOiKh.G8Mk6NIQu5vhNXju/HbozoHbhT.sfQ9/HoBPI/GqdftXCmyImc4BGJui0 in password field of you desired user

warning

if you leave your passwd file writable by anyone, thinking that /etc/shadow only must be secure, well if someone change the value x in /etc/passwd to a custom encrypted password generated by openssl like we demonstrated. well the password will change and Unix won’t look at /etc/shadow password entry.

Для чего нужен файл /etc/shadow

В системах Linux можно использовать несколько различных схем аутентификации. Наиболее часто используемая и стандартная схема — аутентификация по файлам /etc/passwd и /etc/shadow .

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

Формат /etc/shadow

Файл /etc/shadow содержит по одной записи в каждой строке, каждая из которых представляет учетную запись пользователя. Вы можете просмотреть содержимое файла с помощью текстового редактора или такой команды, как cat :

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

Каждая строка файла /etc/shadow содержит девять полей, разделенных запятыми:

  1. Имя пользователя. Строка, которую вы вводите при входе в систему. Учетная запись пользователя, существующая в системе.
  2. Зашифрованный пароль. Пароль использует $type$salt$hashed формат $type$salt$hashed . $type — это алгоритм криптографического хеширования метода и может иметь следующие значения:
    • $1$ — 5 MDL
    • $2a$ — Blowfish
    • $2y$ — Eksblowfish
    • $5$ — SHA-256
    • $6$ — SHA-512

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

Файл /etc/shadow не следует редактировать вручную, если вы не знаете, что делаете. Всегда используйте команду, предназначенную для этой цели. Например, чтобы изменить пароль пользователя, используйте команду passwd , а чтобы изменить информацию об устаревании пароля, используйте команду chage .

Пример записи

Давайте посмотрим на следующий пример:

Запись выше содержит информацию о пароле пользователя linuxize:

  • Пароль зашифрован с помощью SHA-512 (пароль усечен для лучшей читаемости).
  • Последний раз пароль менялся 23 апреля 2019 г. — 18009 .
  • Нет минимального возраста пароля.
  • Пароль необходимо менять не реже, чем каждые 120 дней.
  • Пользователь получит предупреждающее сообщение за семь дней до истечения срока действия пароля.
  • Если пользователь не попытается войти в систему через 14 дней после истечения срока действия пароля, учетная запись будет отключена.
  • Срок действия учетной записи отсутствует.

Выводы

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Основы Linux от основателя Gentoo. Часть 3 (3/4): Управление аккаунтами в Linux

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

drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash

Как видите, в одной строке не так уж много информации. Каждая из них содержит несколько полей, разделённых «:». Первое поле отвечает за имя пользователя (drobbins), второе поле содержит «x». На устаревших Linux-системах второе поле содержало зашифрованных пароль для аутентификации, но фактически, сейчас все Linux-системы хранят эту информацию в другом файле. Третье поле отвечает за числовой пользовательский идентификатор, связанный с конкретным пользователем, а четвертое поле ассоциирует этого пользователя с конкретной группой; скоро мы увидим, где определена группа 1000. Пятое поле содержит текстовое описание аккаунта, в нашем случае это имя пользователя. Шестое поле определяет домашний каталог пользователя, седьмое — устанавливает стартовую оболочку пользователя, которая будет автоматически запускаться когда пользователь входит в систему.

/etc/passwd, советы и хитрости

Вы вероятно заметили, что в системе намного больше пользовательских аккаунтов, которые определены в /etc/passwd, чем тех, которые логинятся в систему на самом деле. Всё это потому, что различные компоненты Linux используют некоторые аккаунты для повышения безопасности. Обычно, такие системные аккаунты имеют идентификатор (uid) меньший 100, и у многих из них в качестве стартовой оболочки установлена /bin/false. Так как эта программа ничего не делает, кроме как выходит и возвращает код ошибки, это эффективно препятствует использованию этих аккаунтов в качестве обычных аккаунтов для логина — т.е. они предназначены только для внутрисистемного пользования.

/etc/shadow

Итак, сами пользовательские аккаунты определены в /etc/passwd. Системы Linux вдобавок к /etc/passwd содержат его файл-компаньон /etc/shadow. Он, в отличие от /etc/passwd, доступен для чтения только суперпользователю и содержит зашифрованную информацию о паролях. Взглянем на образец строки из /etc/shadow:

drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Каждая строка определяет информацию о пароле конкретного аккаунта, поля в ней разделены знаком «:». Первое поле определяет конкретный пользовательский аккаунт, которому соответствует данная «теневая» запись. Во втором поле содержится зашифрованный пароль. Оставшиеся поля описаны в таблице ниже:

поле 3 — количество дней с 01.01.1970 до момента, когда пароль был изменен
поле 4 — количество дней до того, как будет разрешено сменить пароль («0» — «менять в любое время»)
поле 5 — количество дней до того, как система заставит пользователя сменить пароль («-1» — «никогда»)
поле 6 — количество дней до истечения срока действия пароля, когда пользователь получит предупреждение об этом («-1» — «не предупреждать»)
поле 7 — количество дней после истечения срока действия пароля, по прошествии которых аккаунт будет автоматически отключен системой («-1» — «не отключать»)
поле 8 — количество дней, прошедшее с момента отключения этого аккаунта («-1» — «этот аккаунт включен»)
поле 9 — зарезервировано для будущего использования

/etc/group

Теперь взглянем на файл /etc/group, который определяет группы в системе Linux. Вот примерная строка из него:

drobbins:x:1000:

Формат полей файла /etc/group следующий: первое поле определяет имя группы, второе поле — это поле остаточного пароля, которое сейчас просто зарезервировано x, и третье поле определяет числовой идентификатор для конкретной группы. Четвертое поле (которое пусто в примере выше) определяет всех членов группы.

Вспомните, что в нашем образце строки из /etc/passwd есть «ссылка» на группу с идентификатором 1000. Мы сможем поместить пользователя drobbins в группу drobbins, даже несмотря на отсутствие имени drobbins в четвертом поле /etc/group.

Примечания о группах

Замечание насчет соответствия пользователей с группами: на некоторых системах каждый новый логин-аккаунт связан с группой, имеющей то же имя (и обычно идентификатор). На других системах все логин-аккаунты будут принадлежать к одной группе пользователей. Какой из этих методов выбрать зависит от вас. Создание соответствующей группы для каждого пользователя имеет преимущество в том, что позволяет им более легко контролировать их собственный доступ просто помещая доверенных друзей в свою личную группу.

Ручное создание пользователей и групп

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

# echo $EDITOR
vim

Если это не так, то вы можете установить переменную EDITOR, набрав что-то, вроде:

# export EDITOR=/usr/bin/emacs
# vipw

Теперь ваш редактор должен быть запущен с уже загруженным /etc/passwd экране. Изменяя системные файлы passwd и group обязательно используйте команды vipw и vigr. Они имеют повышенные меры предосторожности, оберегая ваши файлы от участи быть испорченными.

Редактирование /etc/passwd

Итак, у вас уже есть готовый файл /etc/passwd, добавьте теперь следующую строку:

testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false

Мы только что добавили пользователя «testuser» с идентификатором 3000. Мы определили его в группу с таким же идентификатором, которую еще не создали. Но мы можем добавить его к уже имеющейся группе пользователей, если нужно. У этого пользователя установлен комментарий, гласящий «LPI tutorial test user», домашний каталог установлен как «/home/testuser», а командная оболочка — как «/bin/false», в целях безопасности. Если бы мы создавали не тестовый аккаунт, мы бы установили командную оболочку как «/bin/bash». Отлично, теперь сохраните файл и выходите.

Редактирование /etc/shadow

Сейчас нам нужно добавить запись в /etc/shadow для этого пользователя. Для этого наберите vipw -s. Вас как всегда встретит ваш любимый редактор в котором уже открыт файл /etc/shadow. Теперь скопируйте строку существующего пользовательского аккаунта (того, у которого есть пароль и запись которого длиннее стандартных записей системных аккаунтов)

drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Замените имя пользователя в скопированной строке на имя вашего пользователя и убедитесь что все поля (особенно старый пароль) установлены как вам надо:

testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Теперь сохраните и закройте.

Установка пароля

Вы вернетесь к командной строке. Теперь, самое время задать пароль для вашего нового пользователя.

# passwd testuser
Enter new UNIX password: (enter a password for testuser)
Retype new UNIX password: (enter testuser’s new password again)

Редактирование /etc/group

Теперь /etc/passwd и /etc/shadow готовы и самое время как следует настроить /etc/group. Для этого, наберите:

# vigr

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

testuser:x:3000:

Теперь сохраните и закройте.

Создание домашней директории

Мы почти закончили. Выполните следующие команды для создания домашнего каталога testuser’а:

# cd /home
# mkdir testuser
# chown testuser:testuser testuser
# chmod o-rwx testuser

Наш каталог пользователя на месте и аккаунт готов к использованию. Уже почти готово. Если вы собираетесь использовать этот аккаунт, вам надо будет воспользоваться vipw для смены стартовой оболочки на /bin/bash, так, чтобы пользователь смог войти.

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

Вы уже знаете как вручную добавить новые аккаунты и группы, давайте же теперь рассмотрим различные, экономящие время, утилиты для управления аккаунтами под Linux. Из-за некоторых ограничений мы не будем рассматривать множество деталей, описывающих эти команды. Запомните — вы всегда можете получить больше информации о какой-либо команде если посмотрите её man-страничку. Если вы планируете сдавать LPIC 101 экзамен, вам следует провести побольше времени на ознакомление с каждой из этих команд.

newgrp — По умолчанию, любой файл, который создает пользователь, сразу же присваивается к группе, в которой он состоит, определенной в /etc/passwd. Если пользователь принадлежит к другим группам, он или она может набрать newgrp thisgroup чтобы стать членом группы thisgroup. Затем, любые новые созданные файлы унаследуют членство в thisgroup.
chage — Команда chage используется для просмотра и изменения настроек срока действия паролей, сохраненных в /etc/shadow.
gpasswd — Основная утилита управления группами
groupadd/groupdel/groupmod — Используются для добавления/удаления/изменения групп в /etc/group
useradd/userdel/usermod — Используются для добавления/удаления/изменения пользователей в /etc/passwd. Эти команды могут выполнять и другие полезные функции. Смотрите man для получения дополнительной информации.
pwconv/grpconv — Используются для преобразования passwd и group файлов старого образца в новые shadow passwords. Фактически, все Linux системы уже используют shadow passwords, так что вам никогда не придется использовать эти команды.

Перевод выполнил коллективный разум с помощью notabenoid.com. Спасибо следующим benoid-юзерам (в алфавитном порядке): kindacute, nekjine, Rich. А также инициатору всей серии переводов, VBart.

Продолжение следует.

Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

man pages section 5: File Formats

/etc/shadow is an access-restricted ASCII system file that stores users’ hashed passwords and related information. The shadow file can be used in conjunction with other shadow sources, including the NIS maps passwd.byname and passwd.byuid or password data stored on an LDAP server. Programs use the getspnam(3C) routines to access this information. Shell scripts use the getent(8) command to access this information.

Unlike the /etc/passwd file, /etc/shadow does not have general read permission.

The fields for each user entry are separated by colons. Each user is separated from the next by a newline. Each entry in the shadow file is a single line of the form:

The fields are defined as follows:

The user’s login name (UID).

A cryptographically hashed password for the user generated by crypt(3C) or pwhash(1), a lock string to indicate that the login is not accessible, or no string, which shows that there is no password for the login.

The lock string is defined as *LK* in the first four characters of the password field if the account was manually locked, or *AL* if the account was automatically locked due to the number of authentication failures reaching the configured maximum allowed. See policy.conf(5) and user_attr(5).

The number of days between January 1, 1970, and the date that the password was last modified. The lastchg value is a decimal number, as interpreted by strtol(3C).

The minimum number of days required between password changes. This field must be set to 0 or above to enable password aging.

The maximum number of days the password is valid.

The number of days before password expires that the user is warned.

The number of days of inactivity allowed for that user. This is counted on a per-machine basis; the information about the last login is taken from the machine’s lastlog file.

An absolute date expressed as the number of days since the UNIX Epoch (January 1, 1970). When this number is reached the login can no longer be used. For example, an expire value of 17410 specifies a login expiration of September 1, 2017.

Reserved. May be set to arbitrary values. Traditionally, the low order for bits are a failed login count.

The bits in the remainder may or may not be zero. They may be used at any time for any other purposes.

A value of −1 for min , max , or warn disables password aging.

The encrypted password consists of at most CRYPT_MAXCIPHERTEXTLEN characters chosen from a 64-character alphabet (., /, 0–9, A–Z, a–z). Two additional special characters: the dollar sign ($) and the comma (,), can also be used and are defined in crypt(3C).

To make system administration manageable, /etc/shadow entries should appear in exactly the same order as /etc/passwd entries.

Values for the various time-related fields are interpreted as Coordinated Universal Time (UTC).

Authorizations

The authorizations, as defined in user_attr(5), which are required to modify the various shadow fields are as follows:

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

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