Пример /etc/group
файла содержит следующие записи:
root:*:0:
adm:!:4:logcheck
antoine:x:1000:
Страницы руководства, которые я прочитал (Debian & OSX), говорят, что второе поле - это сохранение пароля группы. Поскольку они используются редко, *
в x
них обычно ставится звездочка или знак, а не остается пустым.
Страница shadow
man также говорит, что это второе поле должно хранить результат crypt
функции. И если сохранен недопустимый результат (например, *
или !
), это означает, что пароль не может использоваться в качестве метода аутентификации.
Это верно и для group
файла? Почему в моем group
файле 3 разных символа имеют одинаковое значение? Могу ли я смело все поменять на *
?
*
?!
что используется для одной группы на одном сервере из 10+, которыми я сейчас управляю. Для простоты некоторых проверочных скриптов, всегда имеющих один и тот же символ, все прояснилось бы. Ну, если это действительно означает то же самое, конечно.Ответы:
Вы думаете , что
!
,*
илиx
имеет особое значение здесь, и, следовательно , опасаясь , что там могут быть некоторые различия между ними.Дело в том, что эти персонажи выбраны просто потому, что они выделяются, по крайней мере, на западные глаза. Эти символы обозначают пропущенное значение, либо исключение, либо предупреждение. Вы можете поставить
boogabooga
здесь и получить точно такой же эффект.Это связано с тем, как пароли обрабатываются в системах типа Unix. Когда система получает ввод пароля, она хэширует его и сравнивает с сохраненным хэшем. Поэтому здесь важно только то, что вы используете какой-либо символ или последовательность символов, которые не могут быть действительным хэшем пароля. (Это также не должно включать двоеточие по очевидным причинам.)
Хотя нет никакой разницы между этими символами с точки зрения ядра ОС, существуют некоторые соглашения:
Когда программа Linux
pwconv(8)
видитx
, это означает, что «я уже переместил этот хэш общедоступного пароля в файл теневого пароля».Это не важный случай на практике, потому что дни преобразований в (или, черт возьми, вам, из ) теневых паролей уже позади.
Если вы используете
usermod -L
илиpasswd -l
для блокировки пользователя, это!
имеет особое значение,/etc/shadow
потому что это соглашение «разбить этот хеш, чтобы он больше не соответствовал».Добавление любого другого символа в сохраненный хеш также нарушит его. Нарушив это соглашение только предотвращает
usermod -U
илиpasswd -u
от отпирания логин пользователя. Точно так же верно, поскольку вы заблокировали его вручную, добавив поддельный символ, вы можете разблокировать его вручную, удалив его.Однако это все пустяки по этому вопросу. Там нет
groupmod -L
илиgpasswd -l
, следовательно, нет!
соглашения в/etc/group
.Более мелочь: если вы которые собираетесь пользователь блокировки учетных записей вручную, вы должны держаться подальше от
[A-Za-z0-9/\]
множества, так как те правовые символы для хэша. Это одна из причинusermod
использования!
здесь вместоx
.Я не вижу ничего плохого в нормализации всех
/etc/group
полей вашего пароля, если это заставляет вас чувствовать себя лучше. Поступая так, вы уже говорите, что счастливы, взламывая эти файлы вручную, так что вы, вероятно, не из тех, кто использует инструменты, которые все равно заботятся о различиях. В любом случае, изменение не повлияет на повседневную работу системы.источник
getpwent(3)
и друзьям. Perl имеет обертки для них в своей стандартной библиотеке, как и любой другой язык сценариев Unix, ориентированный на sysadmin. Если вы используете язык без таких оболочек, это будет хорошим поводом для обмена. :)x
и*
для пометки "неиспользуемого" поля пароля. Просто любопытно, что ... страница руководства говорит, что поле вполне можно оставить пустым (то, что в поле базы данных может называться NULL - особенно в Oracle, который определяет NULL и пустую строку как одинаковые). Итак, вернемся к / etc / group: зачем использоватьx
или!
или*
вместо того, чтобы просто оставить поле пустым? Два последовательных двоеточия выделяются так же, как и любой из этих персонажей. Не важно - просто любопытно/etc/shadow
. Кроме того, я отвергаю идею о том, что двойное двоеточие так же ясно. Быстрый, сколько пустых полей находитесь здесь:::::::
? Теперь сколько::x:*:!:x:*:
? Такое же количество двоеточий, но разные ответы, я верю.