import zpool sobrescrevendo propriedade / permissões (cf. -o uid =, gid =, umask = opções de montagem)

0

Eu tenho um zpool de um sistema com usuários diferentes da máquina em que estou trabalhando e dos quais quero copiar dados. Portanto, preciso importar e montar o zpool com permissões de leitura. No entanto, como os UIDs não correspondem, não tenho permissões para muitos arquivos.

Eu não quero alterar as permissões no zpool, apenas leio a partir dele. Eu poderia ler os arquivos como root e transferir a propriedade das cópias locais para o usuário local desejado, mas não tenho sudo cp ou sudo chown permissões neste sistema (multiusuário).

Eu tenho sudo mount e sudo zpool / sudo zfs permissões embora. Com um sistema não-zfs, eu faria

  1. sudo mount -o uid=$UID,gid=$GID,umask=0770[,ro] <device> <mountpoint> ou algo assim,
  2. cp <mountpoint>/<source> <target> dos arquivos que preciso e
  3. sudo umount <mountpoint>

Como posso conseguir o mesmo para um sistema zfs?

Não encontrei nenhuma opção semelhante para zpool import . Eu já tentei

  1. sudo zpool import -N <pool> ,
  2. sudo zfs set mountpoint=legacy <pool> ,
  3. sudo mount -t zfs -o uid=$UID,gid=$GID,umask=0770[,ro] <pool> ,<mountpoint>
  4. cp <mountpoint>/<source> <target> dos arquivos que eu preciso,
  5. sudo umount <mountpoint> ,
  6. 'sudo zfs set mountpoint = e
  7. sudo zpool export <pool> ,

mas mount.zfs também não suporta essas opções.

    
por mschilli 14.09.2018 / 12:32

1 resposta

2

With a non-zfs system

Não, apenas com um pequeno subconjunto de sistemas de arquivos que tradicionalmente não armazenam permissões compatíveis com POSIX. Você não pode fazer isso com ext4 ou XFS ou ReiserFS.

I do have sudo mount

Se você usa o Linux e também tem o FUSE disponível, instale o sistema de arquivos de sobreposição bindfs (por exemplo, compile no seu diretório home) e monte-o usando:

sudo mount -t fuse./home/mschilli/bindfs \
           -o [ro,]mirror=mschilli \
           /zfs_mountpoint /new_mountpoint

O daemon bindfs terá privilégios de root para acessar livremente o ponto de montagem 'source' e apresentará todos os arquivos de sua propriedade sob o ponto de montagem 'target'. (Esse é o propósito de -o mirror=… )

Curiosamente, tanto -t fuse.<type> como o modo antigo de especificar <type>#<source> como fonte de montagem permitem que o tipo de sistema de arquivos contenha barras, ou seja, ser um caminho absoluto para o daemon FUSE desejado.

Na verdade, usando esse método você pode executar binários arbitrários , desde que eles não se importem de receber argumentos inúteis da linha de comando. (E isso não é nem mesmo contar as muitas escalações de privilégios que mount --bind poderia fornecer.)

Verifique com o administrador do sistema antes de executar qualquer um dos itens acima. Talvez eles apenas conceda a você sudo cp direitos, se você perguntar bem a eles. Talvez eles tenham você demitido se eles pegarem você tentando ignorar a segurança por conta própria.

    
por 14.09.2018 / 13:24