Eu tenho uma unidade de disco externa USB 3 (capacidade de 2 TB) que provavelmente será movida de uma máquina para outra. O disco possui uma tabela de partição GUID e uma partição ext4. Não consigo gravar no disco, a menos que eleve o processo ( sudo
).
A partir de agora, estou pensando em tentar um ou ambos dos itens a seguir e gostaria de saber os contras de cada um -
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
Se eu conceder permissão ao 777 e o usuário1 (UID: 1005) gravar nele, e posteriormente mover o disco para outro computador em que o usuário7 seja o UID: 1005, o que acontece? O usuário7 se torna o proprietário do arquivo nesse computador? Parece-me que periodicamente terei que executar chown -R nobody:nogroup /mnt/externalDrive
no disco.
Alguma coisa que considero uma prática ruim óbvia? É provável que o disco contenha vídeos, músicas e imagens, nada disso precisa ser protegido como alguns dados financeiros.
fonte
Respostas:
Esse é o problema dos sistemas multiusuário, especialmente se você tiver mais de um deles. ;) Não há uma maneira muito legal de fazer o que você deseja. As abordagens que vêm à mente seriam
A abordagem mais eficaz seria voltar às práticas comuns. Na maioria (pelo menos) dos sistemas Linux, existem alguns grupos que geralmente têm GIDs comuns. Por exemplo seria
users
, que tem GID100
na maioria das distribuições Linux. Se você conseguir ter sua respectiva conta de usuário nesse grupo, poderáO primeiro e o segundo ponto são fáceis de realizar (
chown
,chmod
). O terceiro ponto é um pouco mais complicado.A parte "propriedade do grupo" é relativamente fácil: você pode definir o bit SGID em todos os diretórios da unidade. O bit SGID aplicado aos diretórios instrui o kernel a se comportar de uma maneira BSDish: O BSD faz com que cada arquivo / diretório criado em um grupo de diretórios específico seja de propriedade não do grupo principal do processo que cria o arquivo / diretório (como o Linux), mas pelo proprietário do diretório pai.
O bit de permissão é um pouco difícil. As permissões dos arquivos / diretórios recém-criados são (entre outros) influenciadas pelo
umask
, uma máscara de bits informando quais bits não devem ser definidos se não explicitamente declarados. Umumask
valor comum, por exemplo022
, é o que significa que os bits de gravação para »group« e »others« não devem geralmente ser definidos. Você pode alterarumask
para002
, dizendo que não deseja que as permissões de gravação sejam limpas para o grupo, mas a desvantagem é que você não pode definir esse valor com base em diretório e geralmente não deseja ter permissões de gravação para seu grupo principal definido para cada arquivo que você criar.Isso pode ser resolvido usando ACLs: em uma ACL, você pode definir um
mask
e umdefault
conjunto de permissões, que se aplicam a todos os arquivos e diretórios criados dentro de um diretório com este conjunto de ACL. Portanto, uma possível solução do seu problema seriaVeja
setfacl(1)
eacl(5)
para mais detalhes.fonte
Há outra pergunta semelhante e o bindfs é sugerido aqui:
Os usuários do OSX sugerem a
noowners
opção de montagem descrita desta forma:fonte
O proprietário e o grupo de um arquivo são armazenados como números. Portanto, o arquivo pertencerá a uid = 1005, independentemente de qual usuário (ou nenhum) que esteja no sistema ao qual está conectado.
Alterar o usuário / grupo para ninguém não solucionará seu problema. Somente o usuário de ninguém (ou membros do grupo de ninguém) teria permissão para acessar os arquivos.
Infelizmente, acho que não há uma maneira de desativar as verificações de permissão no ext4. Consulte, por exemplo, É possível desativar as permissões de arquivo em um sistema de arquivos ext3 ou ext4?
fonte
Andreas Wiese diz que, se você tiver um ID de grupo comum em todos os hosts, poderá resolver seu problema com
setgid
bit e ACLEu faço a pergunta IDs de grupo predefinidos nas distribuições Linux?
Depois que a própria pesquisa descobriu que esse grupo existe em todas as distros tocadas:
sys
ID de compartilhamento de grupo3
no Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris.Com isso:
e sabor disso:
você
user
poderá ler / gravar qualquer arquivo/dir
.A maioria dos trabalhos pode funcionar um
setgid
pouco, mas infelizmente você geralmente tem pouco controleumask
. Portanto, o ACL é usado para fornecer uma solução completa.Veja também:
fonte