Estou enfrentando algum problema com a criação de links flexíveis. A seguir está o arquivo original.
$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11 2014 /etc/init.d/jboss
A criação do link está falhando com um problema de permissão para o proprietário do arquivo:
ln -sv jboss /etc/init.d/jboss1
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied
$ id
uid=689(askar) gid=500(admin) groups=500(admin)
Então, eu criei o link com privilégios sudo:
$ sudo ln -sv jboss /etc/init.d/jboss1
`/etc/init.d/jboss1' -> `jboss'
$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Em seguida, tentei alterar a propriedade do link virtual para o usuário original.
$ sudo chown askar.admin /etc/init.d/jboss1
$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Mas a permissão do link não está sendo alterada.
O que estou perdendo aqui para alterar a permissão do link?
Respostas:
Em um sistema Linux, ao alterar a propriedade de um link simbólico usando
chown
, por padrão, ele altera o destino do link simbólico (ou seja, o que o link simbólico está apontando ).Se você deseja alterar a propriedade do próprio link, precisa usar a
-h
opção parachown
:Por exemplo:
Observe que o destino do link agora pertence à raiz.
E, novamente, o link
test1
ainda pertence à raiz, emboratest
tenha mudado.E, finalmente, alteramos a propriedade do link usando a
-h
opçãofonte
cp -as
neminstall
nemln
podemos criar links simbólicos diretamente com um usuário / grupo especificado.Ao atuar em links simbólicos, você deve informar a maioria das ferramentas (chown, chmod, ls ...) para não desreferenciar o link: você deve adicionar o
-h
parâmetro, conforme indicado na página de manual:Então tente :
sudo chown -h askar.admin /etc/init.d/jboss1
fonte
Observe também que o erro que você deu acima
não se deve ao fato de o proprietário do link simbólico ser outra pessoa que não o proprietário do arquivo original. É (provavelmente) causado pelo usuário askar não ter acesso de gravação ao diretório
/etc/init.d
.fonte