Я занимаюсь обновлением 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}'