Как отладить разрешения файловой системы?

У вас есть два варианта, чтобы получить желаемый результат:

for k in /path/to/*.txt; do
    some_command -i "$k" >> /path/to/output.txt
done

ИЛИ

for k in /path/to/*.txt; do
    some_command -i "$k"
done >> /path/to/output.txt

Если ваша программа не выполняет запись в стандартный вывод, а только записывает в файл, указанный с помощью -o , вы можете сделать это:

for k in /path/to/*.txt; do
    some_command -i "$k" -o /tmp/output.txt
    cat /tmp/output.txt >> /path/to/real_output.txt
done
rm /tmp/output.txt
3
12.05.2019, 23:42
2 ответа

Ага, вот и все:

sudo -H -u www-data namei /my/long/symlink/chain

где www-data— это пользователь, которого я пытаюсь отладить

8
27.01.2020, 21:12

Как правило, у меня есть несколько тактик для устранения проблем с правами доступа к файловой системе.

Предполагая, что пример пользователя с именем userWhoShouldHaveAccessдолжен иметь возможность отображать содержимое каталога /dir/with/access/issues, я запущу это в терминале, чтобы узнать, сработало ли то, что я пробовал:

watch sudo -u userWhoShouldHaveAccess ls /dir/with/access/issues

Следующее позволяет мне следить за разрешениями от корневого каталога к каталогу, к которому я хочу, чтобы пользователь имел доступ:

cd / && watch namei -l /dir/with/access/issues

Я буду иметь в виду, что для того, чтобы получить список файлов в каталоге, пользователь должен пройти весь путь /dir/with/access/issues, то есть пользователь должен иметь права на выполнение в целевом каталогеи во всех родительских каталогах .

Я буду помнить, что групповые изменения пользователя вступают в силу только после выхода из системы и повторного входа в систему, хотя для этого существуют обходные пути .

Я могу показать идентификатор пользователя и группы, к которым принадлежит пользователь, с помощью id userWhoShouldHaveAccess.

Так как существуют также списки управления доступом в дополнение к разрешениям владельца/группы/другим, определяющим доступ, я проверю те, у которых есть

getfacl /dir/with/access/issues

Если пользователь должен иметь возможность писать, я могу запустить это в фоновом режиме, чтобы узнать, когда пишут работы:

while true; do sudo -u userWhoShouldHaveAccess bash -c '(echo "Test at $(date) by $(whoami)" >> /dir/with/access/issues/test_file);sleep 1';done

Вот некоторые основы прав доступа к файлам в Linux.

0
13.12.2020, 16:54

Теги

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