13 votos

¿Cuál es el Ubuntu equivalente de OSX `chmod -h` de la flag?

En OSX me pueden establecer los permisos de un enlace simbólico en sí mismo (en lugar de la cosa apunta a la utilización de la -h). Desde la página del 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.

En Ubuntu 14.04 yo trato de establecer los permisos de un enlace simbólico, pero sólo se establece en el enlace de destino.

Es sobre un enlace simbólico desde /home/nagios/.ssh/someprivatekey a /somewhere/else/privatekey, de modo que los permisos son importantes para ssh. ¿Cómo puedo lograr esto?

9voto

muru Puntos 43315

Usted no puede. El subyacente chmod llamada de sistema simplemente no apoyo esta en Linux, y para esa materia, Linux no se preocupa por el link de los permisos. 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.

Como para los enlaces duros o enlazar los montajes, la fuente de los permisos son utilizados, por lo que ninguno de los tres métodos estándar para reflejar el contenido de un archivo en otro lugar puede ayudarte en esto.

0voto

Ayush Goyal Puntos 141

No es posible. No hay ninguna manera ya que los permisos de un enlace simbólico son de sentido (un enlace no es un archivo; sólo señala a un archivo). La forma de hacerlo con Linux es a través de la ACL , aunque.

enlace se explica como...

Los valores del archivo de modo de bits para la crea el enlace simbólico no se especifican. Todas las interfaces especificadas por POSIX.1-2008 debe comportarse como si el contenido de los enlaces simbólicos pueden ser leídas siempre, excepto que el valor del modo de archivo de bits devuelto en el st_mode campo de la estadística estructura no está especificado.


La diferencia está aquí: chmod y chmod... es BSD y Linux.


No se si es importante pero sobre SSH: se utiliza stat(2), no lstat(2) para obtener los permisos.

  • stat() estadísticas del archivo apuntado por la ruta y se llena en buf.
  • lstat() es idéntica a la de stat(), excepto que, si la ruta de acceso es un enlace simbólico, a continuación el enlace en sí es stat-ed, no el archivo al que se refiere.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: