2009-11-09 13:02:39 +0000 2009-11-09 13:02:39 +0000
319
319

chown não está a mudar a ligação simbólica

Estou a tentar mudar o utilizador/grupo de uma ligação simbólica com o comando:

$ chown -h myuser:mygroup mysymbolic/

Mas não está a mudar. Estou autenticado como root. O utilizador/grupo actual está definido como root:root. O que correu mal?

Respostas (8)

391
391
391
2009-11-09 13:16:42 +0000

Estava a colocar uma barra no fim do alvo:

chown -h myuser:mygroup mysymbolic/

acabou de remover a barra no final e funciona. Aqui está a forma correcta:

chown -h myuser:mygroup mysymbolic
29
29
29
2009-11-09 13:08:43 +0000

Eu próprio já tentei isto e funciona para mim. Se tiver o -h muda o dono do link simbólico, mas se não o tiver, muda o dono do ficheiro em si e não o link.

Mas não parece funcionar do link simbólico está ligado a um directório

7
7
7
2013-12-30 16:43:51 +0000

Não fui capaz de chown um directório mesmo com -h mas utilizando o caminho completo funcionou.

# 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/
4
4
4
2017-12-05 11:02:14 +0000

simplesmente.

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

deve ser suficiente e funcionar!  

3
3
3
2012-04-26 09:15:50 +0000

Recriar esse link pelo meu utilizador na casa do meu utilizador, e criar este link para o local alvo pelo sudo.

Por exemplo: (como myuser), ln -s somedir/ linkname(será um link quebrado se somedir/ não existir no directório do utilizador)

Então, sudo mv linkname targetlocation (tornar-se-á um link válido se targetlocation/somedir/ existir)

1
1
1
2014-09-16 17:46:29 +0000

Eu tinha um problema semelhante. Para mim, não podia chmod o vínculo simbólico, mesmo como raiz, independentemente de como eu chamava chmod. Para acrescentar confusão a isto, o nautilus estava a mostrar o dono/grupo como nada. O dono estava apenas em branco. Então eu tentei mudar o link simbólico usando o nautilus como raiz, já que o chmod não estava funcionando e o nautilus caiu!!

Mas eu acho que descobri o problema. O directório que o link simbólico estava a apontar tinha permissões diferentes do que o link simbólico. Por isso chmod'ed o directório alvo (usando -h) para o meu nome de utilizador/grupo. Então chmod'ed o link simbólico para o mesmo e funcionou! E ver os detalhes do link simbólico no nautilus (com as permissões da raiz) agora já não falha.

Então para outros que tenham um problema semelhante, verifique as permissões do directório/arquivo de destino e certifique-se que é compatível com as permissões para as quais está a definir o link simbólico.

1
1
1
2016-08-11 05:24:48 +0000

Para Solaris (verificado em S11.3) para uma ligação simbólica a um directório, terá de correr

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
1
1
2015-11-01 19:12:57 +0000

Note que mudar o owner de um link simbólico só pode funcionar se o alvo for acessível pelo novo utilizador a quem o quer atribuir.

Por exemplo, se o seu alvo estiver dentro de uma pasta à qual o utilizador a quem o quer atribuir não tem direitos suficientes, o comportamento do ln -s command é tal que não fará absolutamente nada.