Khi xử lý sự cố quyền phát sinh từ zfscác lệnh, hãy phân tích zfshoạt động theo các bước thành phần của nó.
Lệnh mẫu zfs receive -duvFgiải nén thành nhiều bước. Hai trong số các cờ đó không liên quan đến bất kỳ quyền đặc biệt nào:
-d ảnh hưởng đến việc đặt tên của tập dữ liệu mới (nếu có)
-v cho phép đầu ra dài dòng
Hai người kia làm.
-F có nghĩa là hệ thống tập tin sẽ được đưa trở lại ảnh chụp ban đầu của quá trình truyền tăng dần trước khi bắt đầu nhận
-u có nghĩa là hệ thống tập tin sẽ không được gắn kết sau khi kết thúc nhận
Linh cảm của tôi là bạn đang thiếu sự cho phép rollback. Cờ -F trong lệnh của bạn ngụ ý rằng zfs rollbacksẽ được thực hiện và zfs allowdanh sách của bạn không được liệt kê rollback.
Trong trường hợp chung, người ta có thể đoán suy đoán về các quyền cần thiết cho một zfslệnh đã cho .
Trang hướng zfsdẫn chỉ ra:
Tên quyền giống như tên tiểu ban và thuộc tính của ZFS.
và ...
Quyền nói chung là khả năng sử dụng một tiểu ban ZFS hoặc thay đổi thuộc tính ZFS. Các quyền sau đây có sẵn:
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
Ví dụ trong tay bao gồm -ucờ, vì vậy hệ thống tệp sẽ không được gắn vào cuối hoạt động nhận. Tuy nhiên, nếu -ukhông có, hệ thống tập tin sẽ được gắn vào cuối quá trình nhận. Kể lại, sự receivecho phép đòi hỏi sự mountcho phép.
Vì một zfs mountthao tác sẽ tự động tạo bất kỳ điểm gắn kết cần thiết nào, người dùng có thể có zfsquyền gắn dữ liệu, nhưng không có quyền hệ thống tệp để tạo điểm gắn kết. Trong trường hợp zfs mount, gắn kết sẽ thất bại. Trong một zfs createhoặc renamehoạt động, hệ thống tệp sẽ được tạo hoặc đổi tên, nhưng nó sẽ vẫn chưa được kết nối nếu người dùng không có đủ quyền hệ thống tệp để tạo điểm gắn kết.
Tương tự, một zfs renamelệnh có thể thất bại vì thiếu quyền tại một số điểm trong hoạt động đổi tên. Thể hiện một cách lỏng lẻo, các bước thành phần có thể là:
1) ngắt kết nối hệ thống tập tin ( mountquyền)
2) tạo hệ thống tập tin mới ( createquyền)
3) ánh xạ siêu dữ liệu hệ thống tập tin vào tên mới ( renamequyền)
Bước thứ tư là gắn lại hệ thống tập tin mới được đặt tên tại điểm gắn kết mới, có thể thay đổi của nó, một lần nữa sử dụng mountquyền và có thể là quyền hệ thống tệp để tạo điểm gắn kết mới.
Tôi chưa thử nghiệm các thủ thuật như vậy, nhưng có thể thấy rằng zfsphân biệt giữa createvà renamequyền, và giữa mountvà mountpointquyền. Người ta tưởng tượng có thể cho phép người dùng tạo các hệ thống tệp mới, nhưng một khi được tạo, người dùng không thể đổi tên chúng. Đối với các hệ thống tệp có các điểm gắn kết được kế thừa, việc đổi tên một hệ thống tệp thường cũng sẽ đổi tên điểm gắn kết của hệ thống tệp, như khi đổi tên tank/usr/localthành tank/usr/local.OLDthay đổi điểm gắn kết từ /usr/localthành /usr/local.OLD.
Việc tách mounthoặc renametừ mountpointquyền có nghĩa là người dùng có thể được phép đổi tên hệ thống tệp nhưng không được phép thay đổi điểm gắn kết của nó. Hoặc ngược lại, để có thể thay đổi nơi gắn hệ thống tệp, nhưng không thể thay đổi tên của hệ thống tệp.
Sự phong phú của các hoạt động hệ thống tập tin của nó và ủy thác các hoạt động đó, cùng với độ chi tiết của các quyền, có thể tạo ra zfsmột số thách thức, nhưng cũng rất mạnh mẽ.