Как "what" может найти команды внутри каталогов, где у меня нет прав на чтение?

Насколько я могу судить, этот принтер поддерживается драйверами HPLIP .У меня нет одного из этих принтеров, поэтому я не могу его проверить. См. список C4280 на этой странице. В целом принтеры HP имеют хорошую поддержку Linux, и их драйверы принтеров обычно также являются бесплатным программным обеспечением.

Вы не указываете свой дистрибутив, но эти драйверы упакованы для Debian и, следовательно, для Ubuntu, а также, предположительно, для других основных дистрибутивов Linux. Если достаточно свежая версия драйвера недоступна для вашего дистрибутива, ее резервное копирование должно быть тривиальным.

0
30.09.2019, 23:25
1 ответ

Это работает, потому что команде which нужно только проверить, существует ли /usr/sbin/logrotateи есть ли у пользователя права на ее выполнение.

При отсутствии разрешений на чтение(chmod -r /usr/sbin)на /usr/sbinневозможно просмотреть список каталогов и, таким образом, предотвратить завершение вкладки -или раскрытие подстановочных знаков, для проверки существования определенного имени требуется только бит выполнения (chmod +x /usr/sbin), который разрешает доступ метаданные файла с известным именем.

С другой стороны, отключение прав на выполнение каталога приведет к тому, что команда станет недоступной для whichи невыполнимой, несмотря на то, что у пользователя есть права на выполнение файла. Мы просто больше не можем получить к нему доступ.

$ sudo chmod -x /usr/sbin/
$ which logrotate # finds nothing
$ logrotate

Command 'logrotate' not found, but can be installed with:

sudo apt install logrotate

См.https://unix.stackexchange.com/a/62476/120312для более подробного обсуждения.

2
28.01.2020, 02:29

Теги

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