Можно по-прежнему кошка / хвост / голова / и т. д. файл без разрешения на чтение

Вы можете сделать:

ls | grep -vx filelist > filelist

Опция -v исключает совпадающие строки из вывода, а -x заставляет его искать всю строку (поэтому он не пропустит otherfilelist).

2
19.04.2019, 16:43
1 ответ

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

Читайте также о setuid .

Поскольку программа -даже headили оболочка, даже при запуске root(, чей uid равен 0 по определению )-, использует системные вызовы (, перечисленные в системные вызовы (2)...)

См. также путь _разрешение (7)и возможности (7)и учетные данные (7). Вместе они объясняют, что когда open (2)-выполняется процесс , работающий /usr/bin/head-, завершается ошибкой. Кстати, чтение (2)не проверяет разрешения.

Обратите внимание, что выполнение некоторых исполняемых файлов выполняется с помощью execve (2 ), который документирует, когда он может дать сбой. Ваша оболочка выполняет множество вызовов fork (2)и execve.

В хорошей книге по программированию для Unix, такой как старая ALP , есть несколько глав, объясняющих все это. Ваша оболочка — это просто еще одна программа (прочтите также философию Unix)и вы можете написать оболочку на C (или изучить исходный код существующих программ-оболочек свободного программного обеспечения, например из GNU bash).

-1
27.01.2020, 23:09

Теги

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