Під час вирішення проблем з дозволом, що виникають у результаті zfs
команд, проаналізуйте zfs
операцію з точки зору її компонентів.
Зразок команди zfs receive -duvF
розпаковує на кілька етапів. Два з цих прапорів не стосуються жодних спеціальних дозволів:
-d впливає на іменування нового набору даних (якщо такий є)
-v дозволяє докладно виводити
Інші два роблять.
-F означає, що файлова система буде повернута до початкового знімка поступового передачі до початку прийому
-u означає, що файлова система не буде змонтована після завершення прийому
Моя думка, що вам не вистачає дозволу на відкат. Прапор -F у вашій команді означає, що zfs rollback
буде виконано а, а ваш zfs allow
не вказаний rollback
.
У загальному випадку можна зробити дедуктивні здогадки про дозволи, необхідні для даної zfs
команди.
Сторінка людини для zfs
балів:
Імена дозволів такі ж, як підкоманда ZFS та назви властивостей.
і ...
Дозволи мають, як правило, можливість використовувати підкоманду ZFS або змінити властивість ZFS. Доступні такі дозволи:
NAME TYPE NOTES
allow subcommand Must also have the permission
that is being allowed
clone subcommand Must also have the 'create'
ability and 'mount' ability in
the origin file system
create subcommand Must also have the 'mount'
ability
destroy subcommand Must also have the 'mount'
ability
diff subcommand Allows lookup of paths within a
dataset given an object number,
and the ability to create
snapshots necessary to 'zfs diff'
hold subcommand Allows adding a user hold to a
snapshot
mount subcommand Allows mount/umount of ZFS
datasets
promote subcommand Must also have the 'mount' and
'promote' ability in the origin
file system
receive subcommand Must also have the 'mount' and
'create' ability
release subcommand Allows releasing a user hold
which might destroy the snapshot
rename subcommand Must also have the 'mount' and
'create' ability in the new
parent
rollback subcommand Must also have the 'mount'
ability
send subcommand
share subcommand Allows sharing file systems over
the NFS protocol
snapshot subcommand Must also have the 'mount'
ability
groupquota other Allows accessing any
groupquota@... property
groupused other Allows reading any groupused@...
property
userprop other Allows changing any user property
userquota other Allows accessing any
userquota@... property
userused other Allows reading any userused@...
property
aclinherit property
aclmode property
atime property
canmount property
casesensitivity property
checksum property
compression property
copies property
dedup property
devices property
exec property
filesystem_limit property
logbias property
jailed property
mlslabel property
mountpoint property
nbmand property
normalization property
primarycache property
quota property
readonly property
recordsize property
refquota property
refreservation property
reservation property
secondarycache property
setuid property
sharenfs property
sharesmb property
snapdir property
snapshot_limit property
sync property
utf8only property
version property
volblocksize property
volsize property
vscan property
xattr property
Наведений приклад включає -u
прапор, тому файлова система не буде монтуватися в кінці операції прийому. Однак, якщо -u
вони відсутні, файлова система буде встановлена в кінці процесу прийому. Характерно, що receive
дозвіл вимагає mount
дозволу.
Оскільки zfs mount
операція автоматично створить будь-які необхідні zfs
точки монтажу, користувач може мати дозвіл на встановлення набору даних, але не має дозволів файлової системи для створення точки монтажу. У випадку zfs mount
, якщо кріплення вийде з ладу. В операції zfs create
або rename
операції файлова система буде створена або перейменована, але вона залишиться відключеною, якщо користувач не має достатніх дозволів файлової системи для створення точки монтажу.
Аналогічно, zfs rename
команда може відмовитись через відсутність дозволів у декількох точках операції з перейменуванням. Слабо вираженими кроками компонента можуть бути:
1) відключити файлову систему ( mount
дозвіл)
2) створити нову файлову систему ( create
дозвіл)
3) зіставити метадані файлової системи в нове ім'я ( rename
дозвіл)
Четвертий крок - це знову встановити нову назву файлової системи на її новій, можливо, зміненій точці монтажу, яка знову використовує mount
дозвіл та, можливо, дозволи файлової системи для створення нової точки монтажу.
Я не перевіряв таких хитрощів, але видно, що zfs
розрізняють create
і rename
дозволи, а також між mount
і mountpoint
дозволами. Можна уявити, що можна дозволити користувачеві створювати нові файлові системи, але колись створений, користувач не може їх перейменовувати. У файлових системах із успадкованими точками кріплення перейменування файлової системи також часто перейменовує точку кріплення файлової системи, як при перейменуванні tank/usr/local
для tank/usr/local.OLD
зміни точки монтування з /usr/local
на /usr/local.OLD
.
Відокремлення дозволів mount
або rename
від них mountpoint
означає, що користувачеві може бути дозволено перейменувати файлову систему, але не дозволяти змінювати її точку монтажу. Або навпаки, мати змогу змінити місце встановлення файлової системи, але не мати змоги змінити ім’я файлової системи.
Багатство операцій з її файловою системою та делегування цих операцій у поєднанні із деталізацією дозволів може зробити zfs
дещо складним, але й дуже потужним.