- Shadow file format linux
- НАЗВАНИЕ
- ОПИСАНИЕ
- ФАЙЛЫ
- СМОТРИТЕ ТАКЖЕ
- Для чего нужен файл /etc/shadow
- Формат /etc/shadow
- Пример записи
- Выводы
- The /etc/shadow File Complete Guide for Linux
- What Will We Cover?
- Why Do We Need the Shadow File?
- Security Aspects of the Shadow File
- Syntax of the Shadow File
- Explanation for the Fields in the Shadow File
- Conclusion
- About the author
- Ali Imran Nagori
Shadow file format linux
НАЗВАНИЕ
shadow - файл теневых паролей
ОПИСАНИЕ
Файл shadow содержит шифрованные пароли учётных записей пользователей и необязательную информацию об устаревании пароля. Этот файл должен быть недоступен обычному пользователю, если нужно обеспечить безопасность паролей. Каждая строка файла содержит 9 полей, разделённых двоеточиями («:»), расположенных в следующем порядке: имя пользователя для входа в систему Должно содержать правильное имя учётной записи, которая существует в системе. шифрованный пароль Подробней о пароле смотрите в справочной странице crypt(3). Если поле пароля содержит строку, которая не удовлетворяет требованиям crypt(3), например содержит ! или *, то пользователь не сможет использовать этот пароль unix для входа (но может войти в систему под другими паролями). Это поле может быть пустым, то есть для указанной учётной записи не требуется аутентификация по паролю. Однако, некоторые приложения, читающие файл /etc/shadow, могут вообще отказать в доступе, если поле пароля пусто. Поле пароля может начинаться с восклицательного знака, означающего, что пароль заблокирован. Оставшиеся символы в строке представляют поле пароля до его блокировки. дата последней смены пароля Дата последней смены пароля в днях начиная с 1 января 1970 года. Значение 0 имеет специальное предназначение: оно указывает, что пользователь должен сменить пароль в следующий раз при входе в систему. Пустое значение обозначает, что проверка устаревания пароля выключена. минимальный срок действия пароля Минимальный срок действия пароля в днях, которые пользователь должен ждать, чтобы поменять пароль. Пустое значение поля и 0 отключают минимальный срок действия пароля. максимальный срок действия пароля Максимальный срок действия пароля в днях, после которого пользователь должен изменить пароль. По прошествии этого количества дней пароль может быть ещё действительным. Пользователя нужно попросить изменить пароль при следующем входе. Пустое значение поля означает, что нет максимального срока действия пароля, нет периода предупреждения о пароле и нет периода неактивности пароля (смотрите далее). Если максимальный срок действия пароля меньше чем минимальный срок действия пароля, то пользователь не сможет изменить свой пароль. период предупреждения о пароле Количество дней до устаревания пароля (смотрите максимальный срок действия пароля) во время которых пользователю выдаётся предупреждение. Пустое значение поля и 0 отключают период предупреждения о пароле. период неактивности пароля Количество дней после устаревания пароля (смотрите максимальный срок действия пароля) во время которых пароль всё ещё принимается (и пользователь должен обновить свой пароль при следующем входе). После устаревания пароля и истечения этого периода устаревания вход с текущим паролем становится невозможным. Пользователь должен обратиться к администратору. Пустое значение поля означает, что период неактивности отсутствует. дата истечения срока действия учётной записи Дата истечения срока действия учётной записи, указывается в днях начиная с 1 января 1970 года. Заметим, что устаревание учётной записи отличается от устаревания пароля. При устаревании учётной записи пользователь не сможет войти в систему. При устаревании пароля пользователь не может войти в систему по этому паролю. Пустое значение обозначает, что учётная запись никогда не устаревает. Значение 0 не должно использоваться, так как это может рассматриваться как неустаревающая учётная запись или что запись устарела 1 января 1970 года. зарезервированное поле Это поле зарезервировано для использования в будущем.
ФАЙЛЫ
/etc/passwd содержит информацию о пользователях /etc/shadow содержит защищаемую информацию о пользователях /etc/shadow- резервная копия файла /etc/shadow Заметим, что этот файл используется программами из комплекта утилит shadow, но не всеми инструментами управления пользователями и паролями.
СМОТРИТЕ ТАКЖЕ
chage(1), login(1), passwd(1), passwd(5), pwck(8), pwconv(8), pwunconv(8), su(1), sulogin(8).
© 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.
Для чего нужен файл /etc/shadow
В системах Linux можно использовать несколько различных схем аутентификации. Наиболее часто используемая и стандартная схема — аутентификация по файлам /etc/passwd и /etc/shadow .
/etc/shadow — это текстовый файл, содержащий информацию о паролях пользователей системы. Он принадлежит пользователю root и теневой группе и имеет 640 разрешений .
Формат /etc/shadow
Файл /etc/shadow содержит по одной записи в каждой строке, каждая из которых представляет учетную запись пользователя. Вы можете просмотреть содержимое файла с помощью текстового редактора или такой команды, как cat :
Обычно первая строка описывает пользователя root, за которым следуют учетные записи системного и обычного пользователя. Новые записи добавляются в конец файла.
Каждая строка файла /etc/shadow содержит девять полей, разделенных запятыми:
mark:$6$.n.:17736:0:99999:7. [--] [----] [---] - [---] ---- | | | | | |||+-----------> 9. Unused | | | | | ||+------------> 8. Expiration date | | | | | |+-------------> 7. Inactivity period | | | | | +--------------> 6. Warning period | | | | +------------------> 5. Maximum password age | | | +----------------------> 4. Minimum password age | | +--------------------------> 3. Last password change | +---------------------------------> 2. Encrypted Password +----------------------------------------> 1. Username
- Имя пользователя. Строка, которую вы вводите при входе в систему. Учетная запись пользователя, существующая в системе.
- Зашифрованный пароль. Пароль использует $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:$6$zHvrJMa5Y690smbQ$z5zdL. 18009:0:120:7:14::
Запись выше содержит информацию о пароле пользователя linuxize:
- Пароль зашифрован с помощью SHA-512 (пароль усечен для лучшей читаемости).
- Последний раз пароль менялся 23 апреля 2019 г. — 18009 .
- Нет минимального возраста пароля.
- Пароль необходимо менять не реже, чем каждые 120 дней.
- Пользователь получит предупреждающее сообщение за семь дней до истечения срока действия пароля.
- Если пользователь не попытается войти в систему через 14 дней после истечения срока действия пароля, учетная запись будет отключена.
- Срок действия учетной записи отсутствует.
Выводы
В /etc/shadow хранятся записи о зашифрованных паролях пользователей, а также другая информация, связанная с паролями.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
The /etc/shadow File Complete Guide for Linux
The shadow file and passwd file are commonly used for performing authentication processes on Linux. Shadow file is a text-based file that stores data of users on a system. Most importantly, the passwords here are kept in encrypted form or hashed format.
Storing passwords inside the /etc/passwd file is prone to system insecurity. The file permissions for the Shadow file are set to either 640 or 400.
What Will We Cover?
In this article, we will explore the Shadow file in Linux.
Why Do We Need the Shadow File?
The passwd file in Linux is readable for everyone and for this reason, the encrypted passwords have been transferred to a different file called the shadow file. It is only readable by root. The shadow file is also located inside the /etc folder at /etc/shadow.
Much like the passwd file, the first field in the shadow file contains the account name and uses a colon to separate different fields. Having a separate file containing encrypted passwords also facilitates adding new parameters for an account. Furthermore, this aids in controlling an account and also controls password aging.
The shadow file is kept read-protected to protect the encrypted passwords. This is an important security measure because anyone who has read access to the file can try to break the encrypted password.
Security Aspects of the Shadow File
The shadow file is a good tool to reset the root password of a Linux system. We can locate the account entry for the root user and manipulate some settings to recover our root password. However, the process of recovering passwords from the Shadow file is off-topic for now.
As mentioned earlier, the shadow file is readable by only the root. If a miscreant account holder tries to hack into the other system accounts, he is just going to hit his head against a wall. If somehow, a person gets access to the password, the time to crack it depends on the encryption algorithm used. Although, that’s not so easy as it can take a few minutes to years to crack an encrypted password.
Syntax of the Shadow File
The syntax of the shadow file is as:
The fields in the above line are represented in days. The lastchange and expiration are date fields. The time in these fields is taken from the date of the start of Unix time i.e., Jan 1, 1970.
Explanation for the Fields in the Shadow File
There are nine fields in this file that are delimited by colons’:’
Let me explain each field here:
login: Every line in a Shadow file starts with a username. The username links entries in the Shadow file from those found in /etc/passwd.
encryptedpassword: It is the placeholder for the encrypted password. So there is obviously no resemblance of it with the real password. If a * or ! is placed here, this means the account has no password.
lastchange date – It is basically a date in terms of the number of days taken from the beginning of Unix time. This is the time that gives the date when the password was last modified. If this value is 0, this means the password must be changed the next time when a user logins.
minage – This field says the password can only be changed when the date value is minage+lastage. If this field is empty, it means the password can be altered at any time.
maxage – This field says the password must be changed when the date value is maxage+lastage. It is actually the date when the password expires. For empty passwords, the expiration date is senseless and it is therefore maxage, warning, and inactivity fields are not required.
warning – This gives a warning to a user for changing the password when the date becomes lastchange+maxage-warning or the warning period of the password has started. If this value is 0 or blank(empty), this means there is no warning period.
inactivity – When the password has expired, the user can still alter their passwords until the inactivity days. If this field is not filled, there is no inactivity period.
expiration date – It is the date when the user account will expire. From this date onwards, the account will not be available for login. If this field is empty, the account will never expire. Also, do not use a ‘0’ value here.
Special flag: This place is normally not used and has been put for future use.
Now let’s take an example to clarify our understanding of the above fields. Take, for example, the below sample entry from the shadow file:
Let’s break down each field step by step:
1. linuxhint is the name of the user.
2. The next field is the encrypted password of the user. It is a long password. However, we have slightly truncated it for the sake of brevity.
3. The user has modified his password 12825 days or 35 Years, 1 Month and 11 days which is 11 Feb 2005 since Unix epoch time i.e. Jan 1, 1970.
4. The minimum time after which the user can change their password is 14 days. To make the password changeable at any time, set this field to 0.
5. The password will need to be reset after every 45 days.
6. The warning for resetting the password will appear 10 days before the date of changing it.
7. If the password expires and no login action is performed for 30 days, the user account will be disabled.
8. After 13096 days from Unix epoch time or 9 Nov 2005, the account will expire.
Conclusion
Shadow file is a very secure place to store your account information. There are security concerns in strong user passwords inside the passwd file. Making the Shadow file readable by root only eliminates the chances of password exploitation by miscreant users and attackers.
About the author
Ali Imran Nagori
Ali imran is a technical writer and Linux enthusiast who loves to write about Linux system administration and related technologies. You can connect with him on LinkedIn
.