Разница между ! против !! vs * в / etc / shadow

38

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

  1. Некоторые из полей пароля могут иметь один восклицательный знак

    <account>:!:.....
    
  2. Некоторые поля пароля могут иметь двойной восклицательный знак

    <account>:!!:.....
    
  3. Некоторые поля пароля могут иметь знак звездочки

    <account>:*:.....
    

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

Может кто-нибудь объяснить, что означает двойной восклицательный знак ( !!)? и чем он отличается от ( !)?

JavaTec
источник
Какой дистрибутив вы используете?
Муру
Привет Муру, я новичок в Unix и пытаюсь создать скрипт, который будет работать на RHEL 6.6 и HP-UX B.11.23
JavaTec
3
«По соглашению, учетные записи, которые не предназначены для входа в систему (например, bin, daemon, sshd), содержат только одну звездочку в поле пароля. Обратите внимание, что в« * »нет ничего особенного, это всего лишь один из многих символов это не может произойти в действительном зашифрованном пароле (см. crypt (3)). " - Страница руководства OpenBSD для passwd (5) . Я ожидаю! или !! технически не должны отличаться относительно того, является ли это действительный файл passwd, или относительно логинов. Однако некоторые инструменты могут иметь специальную поддержку.
ТООГАМ
1
Не используйте документацию BSD в качестве ссылок для этого. База данных их учетных записей обрабатывает вещи по-другому и даже не имеет /etc/shadowфайла. Не помещайте ответы в комментарии . ☺
JdeBP

Ответы:

31

И то и другое "!" а также "!!" присутствие в поле пароля означает, что учетная запись заблокирована.

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

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/System_Administration_Guide/s2-redhat-config-users-process.html

Руи Ф Рибейро
источник
4
Это может быть правдой в системах Red Hat, но не обязательно в других местах - в Ubuntu или Arch Linux только что созданная учетная запись без пароля по-прежнему есть !, нет !!.
Муру
2
Правда, что я никогда не видел "!!" в системе Debian. Я предполагаю, что OP использует какую-то систему, основанную на RH, или SuSE.
Руи Ф Рибейро
Спасибо за ваши быстрые ответы, будет ли приведенное выше объяснение, предоставленное Руи, подходящим и для hp-ux?
JavaTec
4
@JavaTec Не обязательно: я думаю, что все блоки, имеющие одно /etc/shadowи то же , имеют одно и то же поле, но то, как поле пароля хранит информацию, не связанную с паролем, различается. Проверьте документацию HP-UX, начиная со shadowстраницы руководства .
Жиль "ТАК - перестань быть злым"
1
HP-UX даже не имел /etc/shadowдо относительно недавнего времени: до HP-UX 11.11, варианты были либо классические без тени, /etc/passwdлибо «Trusted Computing Base», в котором хэши паролей каждого пользователя и другая информация об учетной записи хранились в отдельных именованных файлах /tcb/files/auth/<initial>/<username>, доступных для чтения только root. В HP-UX 11.11 /etc/shadowбыла представлена ​​как дополнительная опция , в 11.23 это была опция в базовой ОС, а в 11.31 TCB окончательно устарела.
Телеком
10

Также стоит отметить, <account>::.....что пароль не требуется (пустой пароль).

Если вы создаете пользователя только для ssh, вы можете <account>::0:0:99999:7:::потребовать, чтобы пользователь установил свой пароль (то есть, чтобы он использовал для sudo) при первом входе в систему.

CoolAJ86
источник
8
Остерегайтесь этого. Пустое поле означает, что пароля нет, и вам нужно просто нажать ENTER, чтобы войти, по крайней мере, в консоли.
Руи Ф. Рибейро
Из man shadowотносительно зашифрованного поля пароля: «Это поле может быть пустым, в этом случае паролей не требуется для аутентификации указанного имени пользователя.» <- Если оставить это поле, emtpy приведет к открытию счета, и этого действительно следует избегать!
Лаас
Обратите внимание, что многие реализации SSH по умолчанию блокируют вход в учетные записи с нулевым паролем: sudo /usr/sbin/sshd -T| grep emptyбудет возвращено: «permitemptypasswords no»
Брайан Хантли,