Как поместить комментарии в мой файл / etc / shadow?

10

Я выполняю некоторые обновления системы, и мой менеджер пакетов показывает изменения между исходным / etc / shadow и моим.

Я хотел бы поместить некоторые комментарии в файл для следующего раза, когда это произойдет. Как мне сделать так, чтобы комментарии в файле / etc / shadow не ломались?

Я думаю, что по умолчанию "#", скорее всего, сделает это, но если я ошибусь, перезагрузка не будет такой приятной.

DarkSheep
источник
Используйте etckeeper и записывайте свои комментарии в сообщениях коммитов.
Жиль "ТАК - перестать быть злым"

Ответы:

14

В системах Linux, использующих GNU libc, строки, начинающиеся с #, игнорируются /etc/shadow. Синтаксический анализ выполняется __fgetspent_r(), и его исходный код явно обрабатывает (и документирует) это поведение.

Таким образом , на подавляющем большинстве систем Linux вы можете комментировать строки в /etc/shadowс , #не вызывая проблем.

К сожалению, комментарии /etc/shadowобновляются при обновлении, например, пользователем passwd; поэтому хранение комментариев на самом деле небезопасно (с точки зрения комментариев).

Это означает , что вам нужно найти где -то еще , чтобы сохранить свои комментарии: два хороших предложения являются dr01 «ы идея использования /etc/shadow.README, или еще лучше Жиля » идея использования фиксации сообщений с etckeeper .

Стивен Китт
источник
Просто о любой недействительной записи появляется заблудиться с passwd. Я попытался использовать поддельную запись пользователя или действительную и добавить символы в окончательную запись, но все безрезультатно.
Отей
7

Каждая строка /etc/shadowсчитается пользовательской записью. Как написал Стивен Китт, который просматривал исходный код синтаксического анализатора, вы можете поместить строки, начинающиеся #как комментарии, или даже пустые строки, и они будут игнорироваться.

Тем не менее, я никогда не видел /etc/shadowфайл с комментариями к нему. Похоже, что это не обычная практика, и для этого есть очень веская причина: редактирование вручную не рекомендуется . По этой причине я бы лучше предложил вам создать /etc/shadow.READMEфайл, чтобы хранить ваши комментарии. Запомните chmod 000этот файл, чтобы пользователи, не являющиеся суперпользователями, не могли его отследить.

dr_
источник
Так почему же 000? Принадлежит, root:rootа то ug=r,o=не хватит?
0xC0000022L
000 являются разрешениями /etc/shadow(по крайней мере в Red Hat, я не смотрел другие дистрибутивы) и гарантируют, что только root имеет доступ к файлу. 440, как вы предлагаете, сделать файл доступным для чтения обычному пользователю, если он / она по ошибке присоединится к корневой группе. На правильно управляемой машине и для всех практических целей они стоят того же. Я думаю, что 000 лучше передает значение «критический файл безопасности - держите руки подальше», но это только мое мнение.
Dr_
@ dr01: не уверен, как обычный пользователь может присоединиться к корневой группе без суперпользователя. И если суперпользователь делает такую ​​ошибку, все ставки отменены. Например, есть большая вероятность того, что человек уже является sudoer и может получить доступ к файлу независимо. Я считаю это безопасностью по неизвестности, но YMMV.
0xC0000022L
Это именно то, что я имел в виду, когда «обычный пользователь по ошибке присоединяется к корневой группе». В моем случае суперпользователь может (хотя шансы невелики) по ошибке поместить его в корневую группу. Хотя разрешение 000 позволит только root получить доступ к файлу. Я понимаю, что это, вероятно, крайний случай, но я считаю, что этот способ намного чище, так как файл комментариев имеет те же разрешения, что и /etc/shadow.
Dr_
3

Конечно, у вас есть изменения в вашем /etc/shadow. Вы не хотите, чтобы информация об учетной записи /etc/shadowна вашем сервере - хэшированные пароли, срок действия учетной записи и т. Д. - была побайтовой копией восходящего потока /etc/shadow.

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

Эндрю Хенле
источник