Ketika memecahkan masalah izin yang timbul dari zfs
perintah, menganalisis zfs
operasi dalam hal langkah-langkah komponennya.
Perintah sampel zfs receive -duvF
membongkar menjadi beberapa langkah. Dua dari bendera itu tidak terkait dengan izin khusus apa pun:
-d mempengaruhi penamaan dataset baru (jika ada)
-v memungkinkan keluaran verbose
Dua lainnya melakukannya.
-F berarti filesystem akan digulirkan kembali ke snapshot awal dari transfer tambahan sebelum penerimaan dimulai
-u berarti filesystem tidak akan dipasang setelah penerimaan selesai
Firasat saya adalah bahwa Anda kehilangan izin rollback. Bendera -F dalam perintah Anda menyiratkan bahwa zfs rollback
akan dilakukan, dan Anda zfs allow
tidak mencantumkan rollback
.
Dalam kasus umum, seseorang dapat membuat dugaan deduktif tentang izin yang diperlukan untuk zfs
perintah yang diberikan .
Halaman manual untuk zfs
menunjukkan:
Nama izin sama dengan sub-perintah ZFS dan nama properti.
dan ...
Izin umumnya kemampuan untuk menggunakan sub-perintah ZFS atau mengubah properti ZFS. Izin berikut tersedia:
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
Contoh yang ada meliputi -u
flag, sehingga sistem file tidak akan dipasang pada akhir operasi penerimaan. Namun, jika -u
tidak ada, sistem file akan dipasang pada akhir proses penerimaan. Tellingly, receive
izin tersebut memerlukan mount
izin.
Karena zfs mount
operasi akan secara otomatis membuat mountpoint yang diperlukan, dimungkinkan bagi pengguna untuk memiliki zfs
izin untuk me-mount dataset, tetapi tidak memiliki izin sistem file untuk membuat mountpoint. Jika demikian zfs mount
, mount akan gagal. Dalam suatu zfs create
atau rename
operasi, sistem file akan dibuat atau diganti namanya, tetapi akan tetap dilepas jika pengguna tidak memiliki izin sistem file yang memadai untuk membuat mountpoint.
Demikian pula, sebuah zfs rename
perintah bisa gagal karena kurangnya izin di beberapa titik dalam operasi ganti nama. Secara longgar diungkapkan, langkah-langkah komponen mungkin:
1) unmount filesystem ( mount
izin)
2) buat filesystem baru ( create
izin)
3) memetakan meta-data filesystem ke dalam nama baru ( rename
izin)
Langkah keempat adalah memasang kembali filesystem yang baru dinamai pada mountpoint barunya, yang mungkin diubah, yang lagi-lagi menggunakan mount
izin, dan mungkin izin filesystem untuk membuat mountpoint baru.
Saya belum menguji trik seperti itu, tetapi dapat dilihat bahwa zfs
membedakan antara create
dan rename
izin, dan juga antara mount
dan mountpoint
izin. Seseorang membayangkan itu mungkin untuk memungkinkan pengguna untuk membuat sistem file baru, tetapi sekali dibuat, pengguna tidak dapat mengubah nama mereka. Untuk filesystem dengan mountpoints yang diwarisi, mengubah nama filesystem sering juga akan mengubah nama mountpoint filesystem, seperti ketika mengganti nama tank/usr/local
untuk tank/usr/local.OLD
mengubah mountpoint dari /usr/local
ke /usr/local.OLD
.
Pemisahan dari mount
atau rename
dari mountpoint
izin berarti bahwa pengguna dapat diizinkan untuk mengubah nama sistem file tetapi tidak diizinkan untuk mengubah mountpoint-nya. Atau sebaliknya, untuk dapat mengubah di mana sistem file dipasang, tetapi tidak dapat mengubah nama sistem file.
Kekayaan operasi sistem berkasnya dan pendelegasian operasi tersebut, ditambah dengan perincian izin, dapat membuat zfs
agak sulit, tetapi juga sangat kuat.