Решение, которое не печатает запятую в конце строки:
{printf("%s", NR == 1 ? $0 : ","$0);} END {printf("\n");} file
Пояснение
Когда видна первая строка (NR == 1
), печатается только она; в противном случае запятая и строка передаются в качестве аргументов printf
.
Это решение использует троичный оператор AWK
?:
, то есть:
NR == 1 ? $0 : ","$0
Если переменная NR
равна 1
, то в качестве аргумента в printf
отправляется первая строка; в противном случае отправляется запятая, скомпонованная с текущей строкой.
Такие записи, как +::0:0:::
, могут работать должным образом, только если в вашем файле /etc/nsswitch.conf
есть passwd: compat
. Если вместо этого вы используете passwd: files nis
, эта запись не будет иметь ожидаемого эффекта.
По крайней мере, согласно nsswitch.conf(5)
справочной странице моей системы Debian 9, этот синтаксис в любом случае не кажется допустимым :он должен быть либо +user::0:0:::
, где user
будет именем пользователя NIS, которому будет предоставлен root доступ в этой системе или просто +
, который включает всех пользователей NIS, за исключением тех, которые ранее были исключены с помощью синтаксиса -user
или -@netgroup
, без переопределения указанных NIS -значений UID/primaryGID.
В более широком смысле +::0:0:::
может означать, что «каждый пользователь NIS является пользователем root в этой системе», что в первую очередь кажется плохой идеей.
Опасность заключается в том, что для приложения, которое выполняет аутентификацию самостоятельно путем чтения /etc/passwd
и /etc/shadow
, но не реализует расширения синтаксиса стиля passwd: compat
, эта строка буквально означает «пользователь +
имеет UID 0 и GID 0 и не имеет пароля".
Если вы используете такое приложение, это уязвимость «введите +
в приглашение имени пользователя, просто нажмите введите в приглашении пароля; теперь у вас есть root-доступ». Поскольку действительной оболочки нет, вы можете не получить доступ к оболочке немедленно :, но просто наличие доступа с UID 0 через приложение, вероятно, дает сообразительному злоумышленнику достаточно рычагов для получения полного доступа к корневой оболочке вскоре после этого.