Назад | Перейти на главную страницу

Есть ли способ рекурсивно сбросить все права собственности на каталог и его режимы в Linux

Я занимаюсь обновлением Samba на нескольких серверах, на каждом из которых есть несколько общих каталогов. Пользователи проходят аутентификацию в домене Windows AD, поэтому я ожидаю изменения локальных UID в Linux. Я хотел бы знать, есть ли способ сбросить владение всеми общими каталогами, чтобы мне не приходилось устанавливать его вручную, а восстанавливать его после обновления.

Вы можете использовать getfacl инструмент (часть пакета acl) для сброса и восстановления как обычных разрешений unix, так и acls:

Использовать getfacl -R выгрузить ACL в файл и использовать setfacl --restore=file чтобы восстановить их:

   --restore=file
       Restore a permission backup created by 'getfacl -R' or similar. All
       permissions of a complete directory subtree are restored using this
       mechanism.  If the input contains owner comments or group comments,
       setfacl attempts to restore the owner  and  owning  group.  If  the
       input contains flags comments (which define the setuid, setgid, and
       sticky bits), setfacl sets those three bits accordingly; otherwise,
       it  clears  them.  This  option  cannot be mixed with other options
       except '--test'.

Это работает, даже если у вас не заданы списки контроля доступа - инструмент сбросит и восстановит стандартные разрешения unix fs. Он также будет работать, если в вашей файловой системе не включена поддержка acl (это не параметр монтирования по умолчанию для большинства файловых систем)

вы можете сделать это с помощью сценария.

1) Выгрузить каталоги (имена) в файл. 2) Использование find path -type d (Это для печати каждого каталога по пути). 3) Найдите общие элементы и примените ls -lah

Грязный способ сделать это. Рекомендуется только в случае отчаяния:>

Также вы можете найти полезные find . -type d -print0 {} \; | xargs ls -lah

Здесь у Solaris есть преимущество, так как в нем есть хорошая команда под названием pkgproto.

Но вы могли бы использовать что-то вроде

find /home/elao/ -type d | xargs ls -lnd | awk '{print "chown "$3":"$4,$8}'