Como criar uma unidade usb formatada para ext4 com permissões RW completas para qualquer máquina linux?

3

Eu quero formatar meu pendrive USB para ext4 e apenas usar como faria com qualquer outra unidade típica de formato não-linux ( FAT32 , exFAT , NTFS ).

Quer dizer, eu quero ser capaz de conectar o stick usb em qualquer uma das minhas máquinas linux, e ler / escrever para ele sem precisar ajustar permissões , como chmod ou chown stuff.

Eu preferiria usar software de particionamento GUI como o GParted, ao invés de comandos de linha de comando, embora eu agrade qualquer solução!

Tenho certeza de que um post como este é o paraíso das bandeiras duplicadas para alguns, mas depois de navegar 6 ~ 10 SO e postagens no fórum do google, não encontrei uma solução simples para a minha pergunta. Parecia que tudo estava relacionado a ajustar as permissões por usuário. Talvez você simplesmente não possa usar ext4 drives com a mesma conveniência sem cérebro de NTFS .

    
por Alnitak 07.02.2018 / 22:21

1 resposta

6

Como qualquer sistema de arquivos no estilo unix, o ext4 inclui a propriedade padrão de arquivo do Unix e as convenções de permissão. Ou seja, o usuário é identificado por um número de UID e cada usuário pertencerá a um ou mais grupos, cada grupo identificado pelo seu número de GID. Cada arquivo tem um proprietário UID e um proprietário de grupo GID. Os três conjuntos clássicos de permissões de arquivos do Unix são:

  • um conjunto de permissões para o proprietário, identificado pelo número UID do proprietário
  • um conjunto de permissões para o proprietário do grupo, identificado pelo número de GID do grupo
  • um conjunto de permissões para todos os outros

Para poder acessar o stick sem precisar ajustar as permissões, você deve garantir que todos os arquivos e diretórios criados no stick tenham permissões não restritivas automaticamente. O problema é que as permissões em qualquer novo arquivo criado são controladas pelo valor umask ... e você não deseja continuar alterando-o para 000 para criar arquivos no pendrive e voltar ao valor padrão ( geralmente 002 ou 022 ) para uso normal. Um único erro pode levar você a criar um arquivo de configuração importante com permissões abertas, que podem comprometer a segurança da sua conta de usuário ou causar outros problemas menores.

Se você puder ter certeza de que o número UID do seu usuário normal é o mesmo em todos os seus sistemas Linux, e você só se importa com o acesso daquele usuário (mais root claro), você pode simplesmente formatá-lo para ext4, montando-o pela primeira vez e atribuindo a propriedade de seu diretório raiz à sua conta de usuário regular antes de começar a usar o sistema de arquivos.

Assumindo que /dev/sdX1 é a partição USB stick na qual você deseja criar o sistema de arquivos e <username> é seu nome de usuário, você pode fazer isso ao configurar o pendrive USB para uso:

sudo mkfs.ext4 /dev/sdX1
sudo mount /dev/sdX1 /mnt
sudo chown <username>: /mnt
sudo umount /mnt

Mas se você não pode garantir números UID / GID correspondentes e / ou há vários usuários que podem querer usar o pendrive, você precisará fazer algo um pouco mais complicado, mas ainda assim uma operação única depois criando o sistema de arquivos ext4 no bastão.

Precisamos definir uma ACL padrão no diretório raiz do sistema de arquivos USB que atribua acesso total a todos em qualquer novo arquivo ou diretório. E para garantir que o bastão seja montado com o suporte a ACL ativado, precisamos usar tune2fs para ajustar as opções de montagem padrão armazenadas nos metadados do sistema de arquivos.

sudo mkfs.ext4 /dev/sdX1
sudo tune2fs -o acl /dev/sdX1
sudo mount /dev/sdX1 /mnt
sudo chown <username>: /mnt
chmod 777 /mnt
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt
sudo umount /mnt

Supondo que todos os seus sistemas suportam ACLs em sistemas de arquivos ext4, e que qualquer ferramenta de montagem de mídia removível que você usar não escolherá ignorar a opção acl mount, agora você deve ter um pendrive no qual todos os arquivos criados ele terá permissões -rw-rw-rw- e todos os subdiretórios criados serão drwxrwxrwx+ . O sinal de mais indica que o subdiretório terá uma ACL: o conjunto de permissões padrão personalizado configurado para o diretório raiz do bastão também será herdado pelos subdiretórios e se comportará da mesma forma.

O proprietário UID / GID ainda corresponderá ao UID e ao GID principal do usuário que criou o arquivo no sistema de arquivos, mas, devido às permissões relaxadas de arquivos e diretórios, isso não deve ser um grande problema.

O único problema que eu poderia esperar é que copiar arquivos para o pendrive USB por padrão tentará duplicar as permissões de arquivo do original, o que você não quer neste caso.

Por exemplo, se você criar um arquivo no Sistema A com permissões -rw-r - r-- e copiá-lo para o bastão, mova o bastão para o Sistema B com números UID não correspondentes. Você ainda pode ler o arquivo no Sistema B, mas não pode sobrescrevê-lo no bastão sem antes excluir ou renomear explicitamente o arquivo original. Mas você pode fazer isso, desde que tenha acesso de gravação ao diretório do arquivo em .

Isso pode realmente ser um recurso útil: se você modificar o mesmo arquivo em vários sistemas, isso o ajudará a salvar uma nova versão do arquivo a cada vez, em vez de sobrescrever o One True File ... e se o arquivo for importante, isso pode realmente ser uma coisa boa.

    
por 08.02.2018 / 01:08