As permissões de arquivo atuais são assim:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
Agora tento conceder permissões de gravação usando chmod
:
$ chmod +x+r+w file
Depois disso, as permissões do arquivo ainda ficarão assim:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
A permissão de gravação não é concedida aos demais. Por que isso está acontecendo?
Responder1
Quando você corre chmod +x+r+w file
,todos os bits estão definidos, exceto aqueles mascarados pelo seuumask
. Presumivelmente, você umask
mascara (pelo menos) o bit de gravação de outros usuários, então a +w
parte acaba sendo ignorada por eles.
Assim, para um típico umask
022, qualquer chmod
comando que não especifique para quem as permissões devem ser definidas acaba ignorando quaisquer alterações especificadas nos bits de gravação do grupo e de outros.
Para definir todos os bits, ignorando umask
, você precisa especificarQuemvocê deseja configurá-los para:
chmod a+rwx file
ou mais explicitamente,
chmod ugo+rwx file
(ou qualquer subconjunto de ugo
, conforme apropriado, para o usuário, grupo e/ou outros).
Também é possível especificar permissões numéricas em vez de permissões simbólicas; verNoções básicas sobre permissões e tipos de arquivo UNIXpara detalhes.
Observe que o umask
comportamento de mascaramento também se aplica quandocompensaçãobits, o que pode produzir resultados surpreendentes: chmod -w file
limpará apenas os bits de gravação que seriam definidos por chmod +w file
! Continuando com o típico umask
022, isso significa que chmod -w
não tocará nos bits de gravação do grupo ou de outros, deixando-os definidos se já estiverem. (GNU coreutils
' chmod
adverte sobre isso.)