Pregunta chown no está cambiando el enlace simbólico


Estoy intentando cambiar el usuario / grupo de un enlace simbólico con el comando:

$ chown -h myuser:mygroup mysymbolic/ 

Pero no está cambiando. Estoy conectado como root. El usuario / grupo actual está configurado como root: root. ¿Qué salió mal?


273


origen


¿Qué sistema operativo utilizas? De acuerdo con la página de manaul, la opción -h solo afecta a los sistemas que pueden cambiar la propiedad del enlace simbólico. - Jichao
¿Estás en un montaje NFS? - Ortomala Lokni
Cualquier cosa que termine con / es un directorio. Te refieres mysymbolic, que es el enlace simbólico, no mysymbolic/ que es probablemente el directorio al que apunta. - David Schwartz


Respuestas:


Estaba poniendo una barra en el final del objetivo:

chown -h myuser:mygroup mysymbolic/ 

acaba de quitar la barra al final y funciona. Esta es la forma correcta:

 chown -h myuser:mygroup mysymbolic

341



no funciona para mí en ubuntu - Radek
Wow, esto me llevó horas encontrarlo. - defines
@Radek Funcionó para mí en Ubuntu siempre que recordara la -hbandera. - IQAndreas
Funciona para mí en Ubuntu con  -h y sin la barra final. - friederbluemle
No puedo creer que después de 4 años, me haya tropezado con mi yo pasado sufriendo el mismo problema, la pérdida de tiempo. - Antony D'Andrea


Lo he intentado yo mismo y funciona para mí. Si tiene -h, cambia el propietario del enlace simbólico, pero si no lo hace, cambia el propietario del archivo y no el enlace.

Pero parece que no funciona el enlace simbólico está vinculado a un directorio


26



Por lo que vale, la página man de OS X es mucho más clara en la opción -h que la de (Arch) Linux. "-H Si el archivo es un enlace simbólico, cambie la ID de usuario y / o la ID de grupo del enlace." Vs. "-h, --no-dereference afecta los enlaces simbólicos en lugar de cualquier archivo referenciado (útil solo en sistemas que pueden cambiar la propiedad de un enlace simbólico) " - Matijs


No pude chown un directorio incluso con -h pero usando el camino completo funcionó.

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy   32 Dec 30 09:02 apps -> /u/apps/

5





¿El objetivo es un archivo o un directorio?

Si es un directorio, intente -H (mayúscula H)


4



el objetivo es un directorio
ver mi respuesta editada sobre el directorio
Perdón por la nigromancia del hilo, pero me gustaría señalar que la sintaxis correcta es con la letra minúscula 'h'.


Recrear ese enlace por myuser en la casa de myuser, y mv este enlace a la ubicación de destino por sudo.

Por ejemplo: (como mi usuario), ln -s somedir/ linkname (Será un enlace roto si existe / no existe en el directorio del usuario)

Entonces, sudo mv linkname targetlocation (se convertirá en un enlace válido proporcionado targetlocation/somedir/ existe)


3



Su respuesta es sin detalles y difícil de entender por completo. Considere revisar su respuesta para proporcionar más detalles. - KronoS


simplemente.

chown -h myuser:mygroup <symlink>

debería ser suficiente y funciona!


2





Tuve un problema similar. Para mí, no pude modificar el enlace simbólico ni siquiera como root, independientemente de cómo llamé a chmod. Para agregar confusión a esto, Nautilus mostraba al propietario / grupo como nada. El dueño estaba en blanco. Así que traté de cambiar el enlace simbólico usando nautilus corriendo como root ya que chmod no funcionaba y nautilus se estrelló !!

Pero creo que descubrí el problema. El directorio al que apuntaba el enlace simbólico tenía diferentes permisos que el enlace simbólico. Entonces modifiqué el directorio de destino (usando -h) para mi nombre de usuario / grupo. ¡Luego modificó el enlace simbólico al mismo y funcionó! Y ver los detalles del enlace simbólico en nautilus (con permisos de root) ya no se bloquea.

Entonces, para otros que tengan un problema similar, verifique los permisos del directorio / archivo de destino y asegúrese de que sea compatible con los permisos para los que está configurando el enlace simbólico.


1





Tenga en cuenta que cambiar el owner de un enlace simbólico solo puede funcionar si el objetivo es accesible por el nuevo usuario al que desea asignarlo.

Por ejemplo, si su objetivo está dentro de una carpeta que el usuario al que desea asignarle no tiene suficientes derechos, el ln -s command el comportamiento es tal que no hará nada en absoluto.


1





Para Solaris (verificado en S11.3) para un enlace simbólico a un directorio necesitará ejecutar

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP oracle:oinstall dumpdir
lrwxrwxrwx   1 oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/

1