Linux -сортировка с сохранением заголовка

Такие записи, как +::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 через приложение, вероятно, дает сообразительному злоумышленнику достаточно рычагов для получения полного доступа к корневой оболочке вскоре после этого.

-1
14.02.2020, 20:58
2 ответа

Вот небольшой скрипт, который помогает:

#!/bin/bash

ARGS=()

while (( $# > 0 )) ; do
    [[ -f "$1" ]] && break
    ARGS+=( "$1" )
    shift
done

awk -v SORT_ARGS="${ARGS[*]}" '
    ( NR == 1 ) {
        print
        next
    }
    {
        print | "sort " SORT_ARGS
    }
' $@

Небольшая жирность в случае, когда аргумент сортировки на самом деле может быть файлом; эту логику, вероятно, можно было бы ужесточить. Хотя в целом у меня работает хорошо..

-1
28.04.2021, 23:23

Это сортирует все, что предоставляется как стандартный ввод:

perl -e 'print scalar <>, sort <>;'

Пример:

# echo -e "Heading\n2\n1"|perl -e 'print scalar <>, sort <>;'
Heading
1
2

Если вы хотите отсортировать файл, просто направьте его:

echo -e "Heading\n2\n1" >/tmp/test
</tmp/test perl -e 'print scalar <>, sort <>;'

Единственное, чего следует опасаться, это попытки отсортировать файл в -месте.

1
28.04.2021, 23:23

Теги

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