o link simbólico não altera suas permissões se eu remover permissões no arquivo real?

1

Na verdade, comecei a aprender Unix e, ao fazer isso, fiquei aqui. Embora possa parecer uma pergunta boba, na verdade não estou claro com isso, então por favor me ajude.

Eu tenho um arquivo como somefile.txt e um link simbólico que se refere a somefile.txt , e eu encontrei permissões padrão para ambos são rw-r--r-- .

Quando altero as permissões de somefile.txt ( chmod ugo=rwx somefile.txt ), descobri uma alteração nos dois arquivos como rwxrwxrwx . Mas, novamente, quando tento alterar as permissões dando chmod u-rx somefile.txt , encontrei a alteração apenas em somefile.txt , mas não no link simbólico. Eu quero saber porque? Estou usando o RedHat cygwin.

    
por Kishore Kumar Korada 06.12.2014 / 05:29

1 resposta

4

Você confundiu a saída de pelo menos um comando. As permissões de um link simbólico são sempre rwxrwxrwx , ou melhor, elas não têm permissões:

$ touch file
$ ls -l 
total 0
-rw-rw-r-- 1 muru muru 0 Dec  5 20:53 file
$ ln -s file link
$ ls -l 
total 0
-rw-rw-r-- 1 muru muru 0 Dec  5 20:53 file
lrwxrwxrwx 1 muru muru 4 Dec  5 20:53 link -> file
$ chmod a+x file
$ ls -l
total 0
-rwxrwxr-x 1 muru muru 0 Dec  5 20:53 file
lrwxrwxrwx 1 muru muru 4 Dec  5 20:53 link -> file

Veja esta FAQ do FreeBSD para obter mais informações.

E como você está no Linux, man chmod diz:

   chmod never changes the permissions of symbolic links; the chmod system
   call cannot change their permissions.  This is not a problem since  the
   permissions  of  symbolic  links  are  never  used.   However, for each
   symbolic link listed on the command line, chmod changes the permissions
   of  the  pointed-to  file.   In  contrast, chmod ignores symbolic links
   encountered during recursive directory traversals.
    
por 06.12.2014 / 05:57