Acabei de encontrar algo inesperado (para mim) em relação às permissões de arquivo no Linux (Arch Linux). Basicamente eu tenho:
userX
emgroupX
fileX userX:groupX ---rwx----
O que me intriga: não consigo executar nenhuma ação ( rwx
) fileX
. Isto está certo? Alguém pode confirmar que esse é realmente o comportamento esperado?
As únicas ações que posso executar são mv
e rm
porque tenho permissões de gravação no diretório pai.
O problema é que sempre pensei que essas permissões entrariam em colapso, começando pela mais geral (outra -> grupo -> usuário). Em outras palavras, se o=rwx
quem se importa com o que são as persuasões para grupo e usuário? Aparentemente, esse não é o caso, mas não faz muito sentido para mim; parece contra-intuitivo. A única coisa em que essa abordagem parece útil é excluir facilmente uma pessoa / grupo muito específico, o que não parece ser uma maneira inteligente de fazer isso (imho). Além disso, o proprietário (e o grupo?) Deve ser capaz de chmod
qualquer maneira, certo? Alguma opinião sobre este assunto?
id
Respostas:
Se fosse esse o caso, "outras" permissões se aplicariam a todos.
Isso é diferente da sua frase anterior. Aqui você está sugerindo que as permissões são unidas, por exemplo, que o userX tenha permissão de leitura se o userX for o proprietário do arquivo e o arquivo for legível pelo usuário ou se um grupo ao qual o userX pertence for o proprietário do arquivo e o arquivo for group -readable, ou se o arquivo for de outra leitura. Mas não é assim que funciona. De fato,
o=rwx
significa que asrwx
permissões se aplicam a outras pessoas, mas não diz nada sobre entidades que não são outras.Primeiro, não importa diretamente a quais grupos um usuário pertence. O kernel não tem uma noção de usuários pertencentes a grupos. O que o kernel mantém é, para cada processo, um ID do usuário (o UID efetivo ) e uma lista de IDs de grupo (o GID efetivo e os GIDs complementares). Os grupos são determinados no momento do login, pelo processo de login - é o processo de login que lê o banco de dados do grupo (por exemplo
/etc/group
). Os IDs de usuário e grupo são herdados por processos filhos¹.Quando um processo tenta abrir um arquivo, com permissões tradicionais do Unix:
Somente um conjunto de bits rwx é usado. O usuário tem precedência sobre o grupo, que tem precedência sobre outro. Quando há listas de controle de acesso , o algoritmo descrito acima é generalizado:
Consulte também Precedência da ACLS quando um usuário pertence a vários grupos para obter mais detalhes sobre como as entradas da ACL são usadas, incluindo o efeito da máscara.
Assim,
-rw----r-- alice interns
indica um arquivo que pode ser lido e gravado por Alice e que pode ser lido por todos os outros usuários, exceto estagiários. Um arquivo com permissões e propriedade----rwx--- alice interns
é acessível apenas para estagiários, exceto Alice (se ela é estagiária ou não). Como Alice pode ligarchmod
para alterar as permissões, isso não fornece nenhuma segurança; é um caso de ponta. Em sistemas com ACLs, o mecanismo generalizado permite remover permissões de usuários ou grupos específicos, o que às vezes é útil.Usar um único conjunto de bits, em vez de ordenar todos os bits para cada ação (leitura, gravação, execução), possui várias vantagens:
¹ Eles podem mudar quando um processo setuid ou setgid é executado. Isso não está relacionado ao problema em questão.
fonte
As permissões mais específicas têm precedência sobre as menos específicas.
Como você é o proprietário do arquivo, você receberá apenas permissões de proprietário. O proprietário não tem permissões. Assim, você não pode fazer nada. Se você não fosse o proprietário do arquivo e um membro do grupo, as permissões do grupo seriam aplicadas.
Por favor, leia esta seção da página wiki
https://en.wikipedia.org/wiki/File_system_permissions#Classes
fonte
-rwxrw----
significa que o proprietário tem permissões de leitura, gravação e execução, o grupo tem leitura e gravação e outros não têm permissão.As permissões que você forneceu dão ao grupo 'groupX' permissões para ler, gravar e executar o arquivo. Se você for um membro do grupo "groupX", mas não for o proprietário do arquivo, essas permissões serão aplicadas a você.
Nesse caso, estou assumindo que você é realmente o proprietário do arquivo. Somente as permissões definidas para o proprietário serão aplicadas a você. Obviamente, o proprietário pode substituir ou alterar as permissões no arquivo. O grupo, no entanto, não pode fazer isso. Por exemplo, o vim solicitará que você confirme se está gravando em um arquivo para o qual não tem permissão de gravação, mas é o proprietário.
Normalmente leio permissões da esquerda para a direita. Eu sou o dono? Se sim, as permissões do proprietário se aplicam. Se não; eu sou um membro do grupo? Se sim, as permissões de grupo se aplicam. Caso contrário, as permissões para "Outro" se aplicam a mim.
Em alguns casos, é útil ser o proprietário de um arquivo, mas não ter permissões de gravação. Ele protege você contra a exclusão ou modificação acidental do arquivo. Pessoalmente, configurei a permissão 400 em todos os meus arquivos de modelo, apenas para garantir que não os modifique por acidente. O mesmo vale para permissões de execução.
fonte
Consegui adicionar um usuário a um grupo, conceder permissões ao grupo em um diretório (070) e, em seguida, após o reinício, consegui acessar a pasta.
Criar grupo: sudo groupadd groupname
Adicionar usuário ao grupo: sudo gpasswd -a nome de usuário groupname
Verifique se o diretório inteiro está sob a propriedade correta do grupo (deve ser o membro atual do nome do grupo para executar): sudo chgrp -R nome do grupo nome_do_grupo / caminho
Dê apenas o grupo rwx para a pasta (pode ser apenas rw, ajuste conforme necessário): sudo chmod -R 070 directory_path
Depois de fazer o acima, certifique-se de sair e entrar novamente. Se isso não funcionar, reinicie a máquina. Fazer isso funcionou para mim.
fonte