Linux перечисляет только избранные группы, частью которых является пользователь?

update-alternativesдействительно можно использовать для управления символическими ссылками в /binили где-либо еще; это его цель . Для этого требуются взаимодействующие пакеты или ручная настройка — необходимо зарегистрировать различные варианты.

dpkg-reconfigureне является чем-то конкретным, он просто запускает сценарий -после установки пакета. Таким образом, его поведение полностью зависит от конкретного пакета, который он использует для настройки. В случае bashи dashскрипты сопровождающего обрабатывают символическую ссылку /bin/sh, так что да, в данном конкретном случае dpkg-reconfigureиспользуется для управления символической ссылкой.

Причина, по которой bashи dashне используют update-alternativesдля управления /bin/sh, заключается просто в том, что когда эта возможность была включена, update-alternativesне считалась достаточно надежной, чтобы на нее можно было положиться в таких случаях. конфиденциальный файл как /bin/sh. Если что-то когда-нибудь пойдет не так и /bin/shбудет удалено,или указывая на -несуществующий файл, система оказывается в значительной степени бесполезной и ее трудно исправить; он даже не загрузится должным образом... Так что bashи dashочень внимательно следят за тем, чтобы /bin/shвсегда можно было использовать. Это включает в себя некоторую тщательную обработку их «сценария» перед -установкой (, который на самом деле является двоичным, чтобы избежать предварительных -циклов зависимостей ), трюка с участием dpkg-divertи некоторых последних -канав обработка в их посте -скриптов установки. Детали конструкции всего этого вы найдете в ошибка #34717(девятнадцать лет назад ).

Чтобы узнать, какие двоичные файлы в системе обрабатываются с помощью альтернатив, а какие обрабатываются с помощью отклонений (из сценариев сопровождающего ), вы можете использовать соответствующие инструменты, в частности dpkg-divert --list, которые будут отображать все отклонения. Для update-alternatives --listвам нужно знать интересующую вас альтернативную группу, но альтернативы легко обнаружить, потому что все они являются символическими ссылками на файл в /etc/alternatives.

3
22.12.2020, 23:57
2 ответа

Попробуйте это:

groups <username> | tr ' ' '\n' | grep "abc"

Дело в том, что groups <username>разделяет каждую группу пробелом, а grepработает с строками . Вот почему вы можете просто поменять местами пробелы с символом новой строки \nс помощью tr, а затем использовать grep.

Вы можете попробовать использовать эту команду без | grep "abc"в конце, чтобы также увидеть промежуточный результат.

3
18.03.2021, 22:41

Во-первых, давайте сопоставим только указанные имена групп, избегая совпадений подстрок в других именах групп:

$ groups
foo foobar baz ban bat
$ groups | grep --regexp=foo --regexp=ban --word-regexp
[outputs "foo foobar baz ban bat" with only "foo" and "ban" highlighted]

Чтобы перечислить только фактические совпадения:

$ groups | grep --only-matching --regexp=foo --regexp=ban --word-regexp
foo
ban
2
18.03.2021, 22:41

Теги

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