Questão chown não está mudando link simbólico


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?


273


origem


Qual sistema operacional você usa? De acordo com a página manaul, a opção -h afeta apenas os sistemas que podem alterar a propriedade do link simbólico. - Jichao
Você está em uma montagem NFS? - Ortomala Lokni
Qualquer coisa que termine com / é um diretório. Você quer dizer mysymbolic, que é o link simbólico, não mysymbolic/ que é provavelmente o diretório para o qual ele aponta. - David Schwartz


Respostas:


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

341



não funciona para mim no Ubuntu - Radek
Uau, isso me levou horas para encontrar. - defines
@Radek Funcionou para mim no Ubuntu, desde que me lembrei do -hbandeira. - IQAndreas
Funciona para mim no Ubuntu com  -h e sem a barra final. - friederbluemle
Eu não posso acreditar depois de 4 anos, eu esbarrei no meu passado sofrendo o mesmo problema, a saudade -h '! - Antony D'Andrea


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


26



Por que vale a pena, a página man no OS X é muito mais clara na opção -h do que na opção (Arch) Linux. “-H Se o arquivo é um link simbólico, altere o ID do usuário e / ou o ID do grupo do link em si.” Vs. “-h, --no-dereference afeta links simbólicos em vez de qualquer arquivo referenciado (útil apenas em sistemas que podem alterar a propriedade de um symlink) ” - Matijs


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/

5





O alvo é um arquivo ou um diretório?

Se for um diretório, tente -H (maiúscula H)


4



o alvo é um diretório
veja minha resposta editada sobre o diretório
Desculpem o thread necromancy, mas gostaria de salientar que a sintaxe correta é com o minúsculo '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)


3



Sua resposta é sem detalhes e difícil de entender. Por favor, considere a revisão de sua resposta para fornecer mais detalhes. - KronoS


simplesmente.

chown -h myuser:mygroup <symlink>

deve ser o suficiente e trabalhar!


2





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.


1





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.


1





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/

1