Estou tentando mudar o usuário / grupo de um link simbólico com o comando:
$ chown -h myuser:mygroup mysymbolic/
Mas isso não está mudando. Estou logado como root. O usuário / grupo atual está configurado para root: root. O que deu errado?
Estou tentando mudar o usuário / grupo de um link simbólico com o comando:
$ chown -h myuser:mygroup mysymbolic/
Mas isso não está mudando. Estou logado como root. O usuário / grupo atual está configurado para root: root. O que deu errado?
Eu estava colocando uma barra no final do alvo:
chown -h myuser:mygroup mysymbolic/
acabou de remover a barra no final e funciona. Aqui está o caminho correto:
chown -h myuser:mygroup mysymbolic
Eu tentei isso sozinho e funciona para mim. Se você tiver o -h, ele mudará o proprietário do link simbólico, mas se você não o fizer, ele mudará o proprietário do arquivo em si e não o link.
Mas parece que não funciona o link simbólico está ligado a um diretório
Não consegui chown
um diretório mesmo com -h
mas usando 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/
O alvo é um arquivo ou um diretório?
Se for um diretório, tente -H (maiúscula H)
Recrie esse link pelo myuser na home do myuser, e mv este link para o local de destino pelo sudo.
Por exemplo:
(como myuser), ln -s somedir/ linkname
(será um link quebrado se algum / não existir no diretório do usuário)
Então, sudo mv linkname targetlocation
(se tornará um link válido fornecido targetlocation/somedir/
existe)
simplesmente.
chown -h myuser:mygroup <symlink>
deve ser o suficiente e trabalhar!
Eu tive um problema parecido. Para mim, eu não poderia chmod o link simbólico, mesmo como raiz, independentemente como eu chamei chmod. Para adicionar confusão a isso, o nautilus estava mostrando o proprietário / grupo como nada. O dono estava em branco. Então eu tentei mudar o link simbólico usando o nautilus rodando como root já que o chmod não estava funcionando e o nautilus travou !!
Mas acho que descobri o problema. O diretório para o qual o link simbólico estava apontando tinha permissões diferentes do link simbólico. Então eu chmod'ed o diretório de destino (usando -h) para o meu nome de usuário / grupo. Então chmod'ed o link simbólico para o mesmo e funcionou! E visualizar os detalhes do link simbólico no nautilus (com permissões de root) agora não trava mais.
Portanto, para outras pessoas que tenham um problema semelhante, verifique as permissões do diretório / arquivo de destino e verifique se ele é compatível com as permissões para as quais você está definindo o link simbólico.
Note que mudar o owner
de um symlink só pode funcionar se o alvo for acessível pelo novo usuário que você deseja atribuir.
Por exemplo, se o seu destino estiver dentro de uma pasta em que o usuário para o qual você deseja atribuí-lo não tiver direitos suficientes, o ln -s command
o comportamento é tal que não fará absolutamente nada.
Para o Solaris (verificado no S11.3) para um link simbólico para um diretório, você precisará executar
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/