Вот решение в чистом bash
, так как Ваш вопрос ясно указывает, что у Вас есть удар 3 доступных:
#!/bin/bash
if [[ -t 0 ]]; then
printf '%s\n' 'No input!'
exit 1
fi
while read -ra _file; do
_file="${foo[*]:8}"
for _file_name_already_known in "${_files[@]}"; do
if [[ ${_file_name_already_known} == "${_file}" ]]; then
for _file_name_already_printed in "${_already_printed[@]}"; do
[[ ${_file_name_already_printed} == "${_file}" ]] && continue 3
done
printf '%s\n' "${_file}"
_already_printed+=( "${_file}" )
fi
done
_files+=( "${_file}" )
done
Вывод:
$ ./lsdups < f.txt
f3.txt
Выполненный как ./lsdups < file
.
Примите во внимание это ls
вывод не является лучшей вещью использовать, как бы то ни было. http://mywiki.wooledge.org/ParsingLs пробегается через некоторые причины, почему Вы не должны делать этого.
Для записи, альтернатив bindfs
aufs
, unionfs-fuse
и rofs
. Из тех aufs
единственный, который не является fuse
основанный.
Все, (включая aufs
и bindfs
) имейте ограничения как не поддержка ACLs (можно перечислить их, но они не в действительности). Другая альтернатива при необходимости в ACLs, должна использовать NFS.
Создайте представление только для чтения того каталога в другом месте. Можно сделать это с bindfs.
Скажем, то, что рассматриваемый каталог /home/confidential/reboot
и это Вы хотите дать доступ только для чтения пользователям в группе mygroup
. Создайте каталог /views/mygroup/reboot
который доступен для той группы.
mkdir -p /views/mygroup/reboot
chown root:mygroup /views/mygroup
chmod 750 /views/mygroup
Создайте представление только для чтения с bindfs
. Процесс bindfs должен иметь разрешение считать файлы и получить доступ к точке монтирования; здесь Вы, по-видимому, выполнили бы его как корень.
bindfs -p a-w /home/confidential/reboot /views/mygroup/reboot
Если файлы под /home/confidential/reboot
не читаемы пользователями в mygroup
и Вы хотите сделать их так, изменить спецификацию полномочий на -p a=rX
.
Для создания представления только для чтения во время начальной загрузки добавьте его к /etc/fstab
:
bindfs#/home/confidential/reboot /views/mygroup/reboot fuse perms=a=rX
mount --bind
может переключить ограниченное содержание на RO, IIRC.
– poige
17.10.2012, 23:31
mkdir /tmp/ro && mount -r --bind /etc /tmp/ro && touch /tmp/ro/TOUCH; umount /tmp/ro; uname -r
→ касание: не может коснуться '/tmp/ro/TOUCH': файловая система только для чтения, 2.6.32-042stab057.1' (Это - версия RHEL + патчи OpenVZ)
– poige
17.10.2012, 23:54
mount --bind -r
от чтения-записи файловая система производит точку доступа для чтения-записи. Mount предупреждает меня mount: warning: /tmp/ro seems to be mounted read-write.
, и это действительно имеет место. Не полагайтесь на него, если Вы не знаете, что ядро Вашего (распределения) имеет патч. любовь
– Gilles 'SO- stop being evil'
18.10.2012, 12:32
man setfacl
)-x
на dir в пути. И к № 2 — мы говорим доступ каталога поединка или доступ к файлу? Изменение
– poige
18.10.2012, 14:48