При определении разрешений на доступ с использованием разрешений в стиле Unix текущий пользователь сравнивается с владельцем файла, затем с группой, и применяемые разрешения совпадают с разрешениями первого совпадающего компонента. Таким образом, владелец файла имеет права владельца (и только те), члены группы файла имеют права группы (и только те), все остальные имеют права «других пользователей».
Таким образом:
642
Джон мог читать файл. 604
: это позволяет исключить группу, что может быть удобно в некоторых ситуациях - я видел это в академических системах с учениками
, где сотрудники могли создавать файлы, доступные всем, кроме студентов. root
имеет доступ ко всему, независимо от разрешений, определенных для файла.
Для более сложного контроля доступа вам следует изучить списки ACL SELinux и POSIX . (SELinux, в частности, может даже ограничить доступ к root
).
Стандартный инструмент, который это делает, - pax
- хотя он лучше работает с жесткими ссылками и копиями, чем с прямыми перемещениями. Конечно, все действия сводятся к созданию новой ссылки и удалению старой.
Я предпочитаю отключать эти шаги - на короткое время у меня есть две копии одного и того же дерева, и я могу сравнивать и противопоставлять их. Это особенно важно при динамическом переименовании файлов - возможно, что результат операции редактирования для имени файла может быть идентичен существующему имени ссылки, и в этом случае какой файл получит имя?
спросил POSIXly, вы можете сделать:
pax -rwls'|^\(bar\)_\(foo\).txt$|\2_\1.txt|' -s'|.*||' *_*.txt .
Результатом будут отдельные ссылки на файлы, о которых идет речь, когда вы закончите. Убедитесь, что результаты такие, как вам нравится, и удалите старые.
И стиль регулярных выражений sed
, vim
является стандартным BRE
С помощью util-linux переименовать
, нет, здесь выполняется только базовая замена строк. Используя Perl переименовать
, да, см. ответ choroba .
С помощью zsh zmv
:
autoload -U zmv # поместите это в свой ~ / .zshrc
zmv '(*) _ (*). (*)' '$ {2} _ $ 1. $ 3 '
zmv -w' * _ *. * '' $ {2} _ $ 1. $ 3 '
Два zmv
вызовы выше эквивалентны. Чтобы действовать и в подкаталогах, вы можете использовать zmv -w '** / * _ *. *' '$ 1 / $ {3} _ $ 2. $ 4'
Vi (m) и sed использовать (расширения of) основные регулярные выражения . См. Также Почему мое регулярное выражение работает в X, но не в Y?