Por que não consigo conceder permissão de gravação aos usuários que usam chmod no Linux?

Por que não consigo conceder permissão de gravação aos usuários que usam chmod no Linux?

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ê umaskmascara (pelo menos) o bit de gravação de outros usuários, então a +wparte acaba sendo ignorada por eles.

Assim, para um típico umask022, qualquer chmodcomando 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 umaskcomportamento de mascaramento também se aplica quandocompensaçãobits, o que pode produzir resultados surpreendentes: chmod -w filelimpará apenas os bits de gravação que seriam definidos por chmod +w file! Continuando com o típico umask022, isso significa que chmod -wnão tocará nos bits de gravação do grupo ou de outros, deixando-os definidos se já estiverem. (GNU coreutils' chmodadverte sobre isso.)

informação relacionada