setguid
Existem 2 forças aqui no trabalho. O primeiro é o bit setgid que está habilitado na pasta, folder
.
drwxr-s---. user group folder
Esse é o s
no pacote de caracteres no início desta linha. Eles estão agrupados assim:
d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users
O r-s
significa que quaisquer arquivos ou diretórios criados dentro dessa pasta terão o grupo configurado automaticamente para o grupo group
.
Isso fez com que os arquivos foo.txt
e bar.txt
fossem criados da seguinte forma:
-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt
permissões & umask
As permissões que você está vendo são outro assunto. Eles são regidos pelas configurações do seu umask
. Você pode ver com o que seu umask
está definido com o comando umask
:
$ umask
0002
NOTA: esses bits também são chamados de bits "mode".
É uma máscara, por isso irá desabilitar qualquer um dos bits relacionados às permissões que estão habilitadas. Neste exemplo, o único bit que eu quero desativar são as permissões de gravação para outras.
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. Então, um 2 equivale a 010 na forma binária, que é o bit de gravação. Um 4 (100) significaria que você quer ler desativado. Um 7 (111) significa que você quer ler / gravar / executar todos os desabilitados. Construindo a partir daqui:
$ umask 007
Desabilitaria os bits de leitura / gravação / execução para outros usuários.
Então, e os seus arquivos?
Bem, o umask
controla as permissões que serão definidas quando um novo arquivo for criado. Então, se tivéssemos o seguinte umask
set:
$ umask 007
e começamos a tocar em novos arquivos, nós 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 isto:
$ 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
Não terá 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?
O umask
é o que eu chamei de configuração "soft". Não é absolutamente absoluto e pode ser ignorado com bastante facilidade no Unix de diversas maneiras. Muitas das ferramentas usam switches que permitem especificar as permissões como parte de sua operação.
Tome mkdir
, por exemplo:
$ umask
0037
$ mkdir -m 777 somedir1
$
$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov 3 22:44 somedir1
Com a opção -m
, podemos substituir umask
. O comando touch
não tem esse recurso, portanto, você precisa ser criativo. Veja este P & D Q & A intitulado: Os arquivos podem ser criados com permissões definidas na linha de comando? para esses métodos.
Outras maneiras? Apenas substitua umask
. O navegador de arquivos provavelmente está fazendo isso ou ignorando completamente o umask
e estabelecendo o arquivo usando as permissões para as quais ele está configurado.