Qual é o equivalente do Ubuntu para o sinalizador OSX 'chmod -h'?

13

No OSX eu posso definir as permissões do link simbólico em si (ao invés da coisa que ele aponta para usar o -h). Na página do manual:

 -h      If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.

No Ubuntu 14.04, tento definir permissões de um link simbólico, mas ele só é definido no destino do symlink.

Trata-se de um link simbólico de /home/nagios/.ssh/someprivatekey para /somewhere/else/privatekey , então as permissões são importantes para o ssh. Como posso conseguir isso?

    
O
por Ray Burgemeestre 22.05.2015 / 15:16

2 respostas

18

Não é possível. Não há como as permissões em um symlink serem insignificantes (um link simbólico não é um arquivo; ele apenas aponta para um arquivo). A maneira de fazer isso com o Linux é através da ACL .

symlink são explicados como ...

  

Os valores dos bits do modo de arquivo para o link simbólico criado não são especificados. Todas as interfaces especificadas por POSIX.1-2008 devem se comportar como se o conteúdo dos links simbólicos sempre pudesse ser lido, exceto que o valor dos bits do modo de arquivo retornados no campo st_mode da estrutura de estatísticas não é especificado.

A diferença está aqui: chmod e chmod ... é BSD versus Linux.

Não tenho certeza se é importante, mas em relação ao SSH: ele usa stat (2) , não lstat (2 ) para obter as permissões.

  • stat () indica o arquivo apontado pelo caminho e preenche o buf.
  • lstat () é idêntico a stat (), exceto que se path é um link simbólico, então o link em si é stat-ed, não o arquivo a que se refere.
por Rinzwind 22.05.2015 / 15:26
9

Você não pode. A chamada do sistema chmod subjacente simplesmente não suporta isso no Linux e, por falar nisso, o Linux também não se importa com as permissões do link. De man chmod :

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.

Quanto a hard links ou bind mounts, as permissões da fonte são usadas, então nenhuma das três maneiras padrão de refletir o conteúdo de um arquivo em outro lugar pode ajudá-lo nisso.

    
por muru 22.05.2015 / 15:22