Bir ZFS veri kümesi almak için kullanıcımın hangi izinlerin eksik olduğunu nasıl belirleyebilirim?


9

FreeNAS (11.1-U1) ve FreeBSD (11.1-RELEASE-p6) makinem var. FreeNAS'ta zfs receive, yetkilendirilmiş ayrıcalıklara sahip kök olmayan bir kullanıcı olarak özyinelemeli anlık görüntüler istiyorum . Bu, çocuk veri kümelerinin çoğu için iyi çalışıyor gibi görünüyor. Ancak datahapse monte edilebilen ve oradan yönetilebilen iocage'ın veri kümeleri başarısız oluyor:

root@freebsd:~> zfs send -RI "dozer@2018-02-21" "dozer@2018-03-08"  | ssh -T -i /root/backup_key backupuser@freenas zfs receive -dvuF neo/backups/freebsd
receiving incremental stream of dozer@2018-03-03 into neo/backups/freebsd@2018-03-03
received 312B stream in 1 seconds (312B/sec)
receiving incremental stream of dozer@2018-03-07 into neo/backups/freebsd@2018-03-07
received 312B stream in 1 seconds (312B/sec)
receiving incremental stream of dozer@2018-03-08 into neo/backups/freebsd@2018-03-08
received 312B stream in 1 seconds (312B/sec)
receiving incremental stream of dozer/ROOT@2018-03-03 into neo/backups/freebsd/ROOT@2018-03-03
.
.
.
receiving incremental stream of dozer/iocage/jails/owncloud/root@2018-03-08 into neo/backups/freebsd/iocage/jails/owncloud/root@2018-03-08
received 578MB stream in 110 seconds (5.25MB/sec)
receiving incremental stream of dozer/iocage/jails/owncloud/root/data@2018-03-03 into neo/backups/freebsd/iocage/jails/owncloud/root/data@2018-03-03
cannot receive incremental stream: permission denied
warning: cannot send 'dozer/iocage/jails/owncloud/root/data@2018-03-03': signal received
warning: cannot send 'dozer/iocage/jails/owncloud/root/data@2018-03-07': Broken pipe
warning: cannot send 'dozer/iocage/jails/owncloud/root/data@2018-03-08': Broken pipe

Söz konusu çocuğun izinleri, üst veri kümesinin izinleriyle tamamen aynıdır:

root@freenas:~ # zfs allow neo/backups/freebsd/iocage/jails/owncloud/root/data
---- Permissions on neo/backups/freebsd -----------------------------
Local+Descendent permissions:
        user backupuser atime,compression,create,dedup,exec,jailed,mount,mountpoint,quota,receive,rename,reservation,setuid,userprop

Koşu zfs receivekök eser olarak FreeNAS beklendiği gibi.

Kullanıcımın hapse atılan iocage veri kümelerini alması için hangi yetki verilen ayrıcalıklar gerekiyor ve daha genel olarak, zfs receivehangi iznin eksik olduğunu bildiren daha ayrıntılı bir hata mesajı vermenin bir yolu var mı?

Yanıtlar:


3

zfsKomutlardan kaynaklanan izin sorunlarını giderirken , zfsişlemi bileşen adımları açısından analiz edin.

zfs receive -duvFPaket açma örnek komut birkaç adımda. Bu bayraklardan ikisi özel izinlerle ilgili değildir:

-d yeni veri kümesinin (varsa) adlandırılmasını etkiler
-v ayrıntılı çıktı sağlar

Diğer ikisi yapar.

-F, dosya sistemi, alma başlamadan önce artımlı aktarımın ilk anlık görüntüsüne geri alınacağı
anlamına gelir -u, dosya alma işlemi bittikten sonra monte edilmeyeceği anlamına gelir

Benim önsezim geri alma iznini kaçırmış olmanız. Komutunuzdaki -F bayrağı a'nın zfs rollbackgerçekleştirileceğini ve zfs allowlistelemenizin olmadığını gösterir rollback.

Genel durumda, belirli bir zfskomut için gerekli izinler hakkında tümdengelimsel tahminler yapılabilir .

Dikkat çeken adam sayfası zfs:

İzin adları ZFS alt komutuyla ve özellik adlarıyla aynıdır.

ve ...

İzinler genellikle bir ZFS alt komutunu kullanma veya bir ZFS özelliğini değiştirme yeteneğidir. Aşağıdaki izinler kullanılabilir:

   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

Eldeki örnek -ubayrağı içerir , bu nedenle dosya sistemi alma işleminin sonunda bağlanmaz. Ancak, -ueksik olsaydı, dosya sistemi alma işleminin sonunda monte edilirdi. Anlaşılır olarak, receiveizin izni gerektirir mount.

Bir zfs mountişlem gerekli bağlantı noktalarını otomatik olarak oluşturacağından, kullanıcının zfsveri kümesini bağlama iznine sahip olması ancak bağlantı noktasını oluşturmak için dosya sistemi izinlerine sahip olmaması mümkündür. Durumunda, zfs mountmontaj başarısız olur. A zfs createveya renameişleminde, dosya sistemi oluşturulur veya yeniden adlandırılır, ancak kullanıcının bağlama noktasını oluşturmak için yeterli dosya sistemi izinleri yoksa bu bağlantı kaldırılır.

Benzer şekilde, bir zfs renamekomut yeniden adlandırma işlemi içindeki çeşitli noktalarda izin eksikliği nedeniyle başarısız olabilir. Gevşek olarak ifade edildiğinde, bileşen adımları şöyle olabilir:

1) dosya sisteminin bağlantısını kesin ( mountizin)
2) yeni bir dosya sistemi oluşturun ( createizin)
3) dosya sistemi meta verilerini yeni adla eşleyin ( renameizin)

Dördüncü adım, yeni adlandırılmış dosya sistemini yeniden mountizin ve muhtemelen dosya sistemi izinlerini kullanan yeni bağlama noktasında yeni bağlama noktasını yeniden oluşturmaktır.

Bu tür hileleri test etmedim, ancak izinler ile izinler arasında ve aynı zamanda ve izinler zfsarasında ayrım yapan görülebilir . Biri, bir kullanıcının yeni dosya sistemleri oluşturmasına izin vermek mümkün olabilir, ancak bir kez oluşturulduktan sonra kullanıcı onları yeniden adlandıramaz. Adlandırma olduğu gibi, dosya sisteminin mountpoint yeniden adlandırır genellikle aynı zamanda bir dosya sistemi yeniden adlandırma kalıtsal mountpoints ile dosya sistemleri için için gelen değişikliklere mountpoint için .createrenamemountmountpointtank/usr/localtank/usr/local.OLD/usr/local/usr/local.OLD

Ayrılması mountveya renamegelen mountpointbir kullanıcı bir dosya sistemini yeniden adlandırmak için izin ancak mountpoint değiştirmesine izin verilmez olabilir izinler aracı. Ya da tam tersi, bir dosya sisteminin monte edildiği yeri değiştirebilmek, ancak dosya sisteminin adını değiştirememek.

Dosya sistemi işlemlerinin zenginliği ve bu işlemlerin devri, izinlerin ayrıntılarıyla birleştiğinde, zfsbiraz zorlayıcı olabilir, ancak aynı zamanda çok güçlü olabilir.


Bu cevap orijinalden genişletilir. Umarım önceki oylarını hak etmeye devam eder.
Jim L.

0

Bu, iznin eksik olduğu bir anlık görüntünüz olduğu anlaşılıyor.

receiveİzni ayarlamayı deneyin neo/backups/freebsd/iocage/jails/owncloud/root/data@2018-03-03.

Ses düzeyinde düzgün ayarlanmış gibi görünüyor, ancak anlık görüntüde eksik.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.