У вас есть два варианта, чтобы получить желаемый результат:
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
Ага, вот и все:
sudo -H -u www-data namei /my/long/symlink/chain
где www-data
— это пользователь, которого я пытаюсь отладить
Как правило, у меня есть несколько тактик для устранения проблем с правами доступа к файловой системе.
Предполагая, что пример пользователя с именем 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.