chown no está cambiando el enlace simbólico


312

Estoy tratando de 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 en root: root. ¿Qué salió mal?


¿Qué sistema operativo utiliza? Según la página de administración, la opción -h solo afecta a los sistemas que pueden cambiar la propiedad del enlace simbólico.
Jichao

¿Estás en una montura NFS?
Ortomala Lokni

Todo lo que termina con /es un directorio. Es decir mysymbolic, cuál es el enlace simbólico, no mysymbolic/cuál es probablemente el directorio al que apunta.
David Schwartz

Respuestas:


381

Estaba poniendo una barra al final del objetivo:

chown -h myuser:mygroup mysymbolic/ 

acaba de quitar la barra al final y funciona. Aquí está la forma correcta:

 chown -h myuser:mygroup mysymbolic

99
no funciona para mí en ubuntu
Radek

2
Wow, esto me llevó horas encontrarlo.
define el

54
@Radek Me funcionó en Ubuntu siempre que recordara la -hbandera.
IQAndreas

29
Funciona para mí en Ubuntu con -h y sin la barra diagonal final.
friederbluemle

8
No puedo creer que después de 4 años, me he topado con mi pasado sufriendo el mismo problema, ¡la falta '-h'!
Antony D'Andrea

29

Lo he intentado yo mismo y me funciona. 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 no parece funcionar si el enlace simbólico está vinculado a un directorio


2
Para lo que vale, la página de manual de OS X es mucho más clara en la opción -h que la de Linux (Arch). "-H Si el archivo es un enlace simbólico, cambie la ID del usuario y / o la ID del grupo del enlace en sí mismo". Vs. sistemas que pueden cambiar la propiedad de un enlace simbólico) "
Matijs

6

No pude hacer chownun directorio incluso con, -hpero el uso de la ruta completa 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 destino es un archivo o un directorio?

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


el objetivo es un directorio

ver mi respuesta editada sobre el directorio

66
Perdón por la nigromancia del hilo, pero me gustaría señalar que la sintaxis correcta es con la 'h' minúscula.

4

simplemente.

chown -h myuser:mygroup <symlink> [without trailing slash]

debería ser suficiente y trabajar!  


3

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

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

Entonces, sudo mv linkname targetlocation(se convertirá en un enlace válido siempre que targetlocation/somedir/exista)


Su respuesta es sin detalles y difícil de entender completamente. Considere revisar su respuesta para proporcionar más detalles.
James Mertz

1

Tuve un problema similar. Para mí, no podía cambiar el enlace simbólico ni siquiera como raíz, independientemente de cómo lo llamara. Para agregar confusión a esto, nautilus mostraba al propietario / grupo como nada. El dueño estaba en blanco. ¡Así que intenté cambiar el enlace simbólico usando nautilus ejecutándose como root ya que chmod no funcionaba y nautilus se bloqueó!

Pero creo que descubrí el problema. El directorio al que apuntaba el enlace simbólico tenía permisos diferentes que el enlace simbólico. Así que modifiqué el directorio de destino (usando -h) a 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 ownerenlace simbólico solo puede funcionar si el nuevo usuario al que desea asignarlo puede acceder al destino .

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


1

Para Solaris (verificado en S11.3) para un enlace simbólico a un directorio, deberá 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/
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.