Как управлять файлом / etc / passwd

Вот еще один sed :

sed 'h;s/\./_/g;G;s/=.*=/=/'

Он выполняет только две замены, независимо от количество точек, предшествующих = , поэтому при вводе типа:

my.var.an.other.var.with.many.dots=line.with.many:chars:and_numbers.and.stuff

результат будет

my_var_an_other_var_with_many_dots=line.with.many:chars:and_numbers.and.stuff

Это работает нормально, когда есть один = символ в строке (как в вашем примере ввода) .
Более общий подход, который всегда заменяет только до первого = (и только если строка содержит хотя бы один = ), даже если их несколько = символов в строке:

sed '/=/{                   # if line matches =
h                           # copy pattern space over the hold space
s/\./_/g                    # replace all . with =
G                           # append hold space content to pattern space
s/=.*\n[^=]*=/=/            # replace from the first = up to the first = after
}'                          # the newline character with a single =

или

sed -e '/=/{h;s/\./_/g;G;s/=.*\n[^=]*=/=/' -e '}'

, поэтому при вводе типа:

my.var.with.many.dots.but.no.equal.sign.and.stuff
my.var.with.many.dots=line.with.many:chars:numbers_and.stuff
other.var.with.many.dots=and.with.more.than=one.equal.sign=and.stuff

выводится:

my.var.with.many.dots.but.no.equal.sign.and.stuff
my_var_with_many_dots=line.with.many:chars:numbers_and.stuff
other_var_with_many_dots=and.with.more.than=one.equal.sign=and.stuff
2
24.03.2018, 10:43
2 ответа

Вы можете внимательно редактировать файл (! )с vipw. (Не используйте редактор непосредственно для файла, так как vipwпроверит результат на работоспособность -перед обновлением /etc/passwd. )Если вам нужен другой редактор, например nano, вы можете запросить его следующим образом:

vipw                # Uses default editor
EDITOR=nano vipw    # Uses nano as the preferred editor

Вы можете отсортировать файл по возрастанию UID. Это позволит отделить системные учетные записи, которые обычно имеют более низкие номера, от учетных записей пользователей, которые обычно имеют более высокие номера :

.
sort -n -t: -k3,4 /etc/passwd >/etc/passwd.old &&
    cp -fp /etc/passwd.old /etc/passwd

(При желании все это можно запустить в одной строке. )Неизмененная копия файла паролей остается в /etc/passwd.old.

4
27.01.2020, 21:52

Диапазоны UID определяют системные и пользовательские учетные записи.

Это если вы не используете глобальный сервер LDAP или аналогичный для управления пользователями и группами, которые по-прежнему будут соответствовать эталону, но просто расширят диапазоны.

Обычно системные учетные записи или учетные записи с UID менее 100 зарезервированы системой. Приложения, создающие локальную запись для помощи в решении проблем с повышением привилегий в случае дефекта дизайна, имеют номер 100 -499. 500 и выше предназначены для пользователей.

Обычно ручное редактирование локальной базы данных паролей не приветствуется и должно осуществляться с помощью таких инструментов, как useradd, userdel, passwd, usermodи т. д.

Если вы просто ищете способ аудита учетных записей и хотите, чтобы они сортировались на выходе, следующий бит будет работать.

sort -d: -k2 /etc/passwd

3
27.01.2020, 21:52

Теги

Похожие вопросы