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?


fuente
¿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
rizidoro
fuente
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

Arto Uusikangas
fuente
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/
Steve Tauber
fuente
5

¿El destino es un archivo o un directorio?

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


fuente
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!  

Aziz Zoaib
fuente
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)

wangdong
fuente
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.

cgrey
fuente
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.

Anomalía Smith
fuente
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/
RaamEE
fuente