setguid
Existem 2 forças aqui no trabalho. O primeiro é o bit setgid ativado na pasta folder
.
drwxr-s---. user group folder
Esse é o s
pacote de caracteres no início desta linha. Eles estão agrupados da seguinte forma:
d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users
Os r-s
meios que quaisquer arquivos ou diretórios criados dentro desta pasta terão o grupo definido automaticamente para o grupo group
.
Isso foi o que causou os arquivos foo.txt
e bar.txt
a serem criados assim:
-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt
permissões & umask
As permissões que você vê são outra questão. Eles são regidos pelas configurações do seu umask
. Você pode ver como umask
está definido com o comando umask
:
$ umask
0002
NOTA: esses bits também são chamados de bits "mode".
É uma máscara, portanto, desativará qualquer um dos bits relacionados às permissões ativadas. Neste exemplo, o único bit que eu quero é as permissões de gravação para outros.
0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits
A representação dos "bits" neste comando está na forma decimal. Portanto, 2 equivale a 010 na forma binária, que é o bit de gravação. Um 4 (100) significa que você deseja que a leitura seja desativada. Um 7 (111) significa que você deseja ler / gravar / executar todos desativados. Construindo a partir daqui:
$ umask 007
Desativaria os bits de leitura / gravação / execução para outros usuários.
Então e os seus arquivos?
Bem, ele umask
governa as permissões que serão definidas quando um novo arquivo for criado. Portanto, se tivéssemos o seguinte umask
conjunto:
$ umask 007
E começamos a tocar em novos arquivos, os veríamos criados assim:
$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile2.txt
Se mudarmos para outra coisa, diga o seguinte:
$ umask 037
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
No entanto, não terá nenhum impacto nos arquivos que já criamos. Veja aqui:
$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
Então, o que está acontecendo com o navegador de arquivos?
Era o umask
que eu chamava de configuração "suave". Não é absolutamente absoluto e pode ser ignorado facilmente no Unix de várias maneiras. Muitas das ferramentas utilizam switches que permitem especificar as permissões como parte de sua operação.
Tomemos mkdir
por exemplo:
$ umask
0037
$ mkdir -m 777 somedir1
$
$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov 3 22:44 somedir1
Com o -m
interruptor, podemos substituir umask
. O touch
comando não possui esse recurso, então você precisa ser criativo. Consulte esta seção de perguntas e respostas da U&L intitulada: Arquivos podem ser criados com permissões definidas na linha de comando? apenas para esses métodos.
Outras maneiras? Apenas substitua umask
. O navegador de arquivos provavelmente está fazendo isso ou simplesmente ignorando umask
e definindo o arquivo usando as permissões que ele está configurado para fazer.
0002
. Se umask definir permissões em vez de remover permissões, o bit de execução será definido para o usuário e o grupo quando eu fizer issotouch
, mas não é.touch
comando. Veja o link que eu incluí no meu A. Este link: unix.stackexchange.com/questions/47178/…