Questão O membro do grupo que edita para o arquivo * automaticamente * altera a propriedade, o grupo e as permissões


Eu tenho um diretório que estou tentando configurar para que os membros de um grupo tenham privilégios rwx. Aqui está um subconjunto do diretório e suas permissões:

-rwxr-xr-x  1 myusrnm grpnm 21638 2015-04-22 14:14 correct
-rwxrwxr--  1 myusrnm grpnm 14403 2015-04-22 14:14 correct.c

Agora, mudo para um dos usuários do grupo, confirmo que ele está nele:

myusrnm@server:~/grpdir$ sudo su hisusrnm
hisusrnm@server:/grpdir$ whoami
hisusrnm
hisusrnm@server:/grpdir$ groups
hisusrnm sshusers grpnm

E edite corretamente. Agora, no outro terminal, eu verifico o diretório e encontro:

-rwxr-xr-x  1 myusrnm grpnm   21638 2015-04-22 14:14 correct
-rwxrwxr--  1 hisusrnm hisusrnm 14368 2015-04-22 14:23 correct.c

Eu acabei de perceber que a mesma coisa acontece quando eu edito um arquivo; seu grupo muda automaticamente para myusrnm, e suas permissões mudam automaticamente para 774. Por que isso está acontecendo? Como posso fazer com que os membros do grupo editem um arquivo sem alterar seu grupo, sua propriedade e suas permissões? Este comportamento padrão do Linux? Ou o meu sistema está se comportando de maneira especial?


1


origem




Respostas:


usar SetGID na pasta pai. Isso fará com que o proprietário do grupo permaneça como o das pastas pai.

você pode ligar o SetGID com chmod g+s folder/path ou coloque um 2 na posição mais alta do padrão numérico; por exemplo: chmod 2740 folder/path. se for uma nova pasta, você pode simplesmente aplicar a propriedade à pasta e os novos arquivos assumirão as pastas group-owner ou, em uma pasta existente, indicar a pasta em si, mas use a opção chmod -R para definir a permissão em todas as crianças existentes. se as crianças tiverem proprietários existentes, você precisará defini-las também

chown -R user:group /path/to/existing/dir
chmod -R 2640 /path/to/existing/dir

Quanto a por que suas permissões estão mudando, verifique sua umask. parece que está definido para 0003. você personalizou isso? considere alterá-lo para 0022.


1



Obrigado Frank. Minha umask já é 0022, e o cara da hisusrnm já está definido para 0022 também. - Frank Harris
Ok, depois de ter feito isso (Bem, eu queria 774 permissões, então eu usei chmod 2774; foi isto correto?), quando o hisusrnm edita o arquivo, o grupo e as permissões NÃO mudam, mas a propriedade FAZ. Este é o comportamento esperado? Mais uma pergunta, eu fiz alterações de permissão em que as permissões parecem ser -rwxrwxr-- ou -rwxrwsr--. O que há com a diferença x vs? - Frank Harris
sim, 2774 é 774 + SetGID. Entendo que, se um usuário tiver acesso de gravação a um arquivo, mas não ao diretório pai, o usuário proprietário mudará para ser o usuário de edição. Isto é aparentemente devido à maneira como a edição é manipulada pelo kernel, seja como uma edição no local ou como uma substituição. É esse o caso neste cenário. você poderia tentar aplicar o SetUID se quiser consertar o usuário para todos os arquivos no diretório, mas cuidado, o SetUID muda a maneira como os executáveis ​​são executados. - Frank Thomas
Então, estou inclinado a instalar o ACL. Eu acho que o que queremos fazer aqui será mais fácil com isso, e há poucos usuários suficientes no sistema, especialmente quando se trata de usuários que até mesmo sabem quais são as permissões, que não parece que causará problemas . - Frank Harris