Je suis confronté à un problème de création de liens souples. Voici le fichier d'origine.
$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11 2014 /etc/init.d/jboss
La création de lien échoue avec un problème d'autorisation pour le propriétaire du fichier:
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)
J'ai donc créé le lien avec les privilèges 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
Ensuite, j'ai essayé de changer la propriété du lien logiciel en faveur de l'utilisateur d'origine.
$ 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
Mais la permission du lien virtuel ne change pas.
Qu'est-ce qui me manque ici pour changer la permission du lien?
Réponses:
Sur un système Linux, lors du changement de propriétaire d'un lien symbolique à l'aide de
chown
, la cible du lien symbolique est modifiée par défaut (c'est-à-dire quel que soit le lien symbolique pointé ).Si vous souhaitez modifier la propriété du lien lui-même, vous devez utiliser l'
-h
option pourchown
:Par exemple:
Notez que la cible du lien appartient maintenant à root.
Et encore une fois, le lien
test1
appartient toujours à root, même s’iltest
a changé.Et finalement nous changeons la propriété du lien en utilisant l'
-h
option.la source
cp -as
niinstall
niln
peut directement créer des liens symboliques avec un utilisateur / groupe spécifié.Lorsque vous agissez sur des liens symboliques, vous devez indiquer à la plupart des outils (chown, chmod, ls ...) de ne pas déréférencer le lien: vous devez ajouter le
-h
paramètre, comme indiqué dans la page de manuel:Alors essayez:
sudo chown -h askar.admin /etc/init.d/jboss1
la source
Notez également que l'erreur que vous avez donnée ci-dessus
n’est pas dû au fait que le propriétaire du lien symbolique soit une personne autre que le propriétaire du fichier original. Cela est probablement dû au fait que l'utilisateur askar n'a pas accès en écriture au répertoire
/etc/init.d
.la source