cp - impossible de créer un fichier normal: autorisation refusée

23

Je veux copier /lib/udevmais donne une erreur

cp -f /tmp/ok_pcscd_hotplug.sh /lib/udev

cp:cannot create regular file /lib/udev/ok_pcscd_hotplug : Permission denied

Je suis root, mais je ne peux pas comprendre. Que puis-je faire ?

user278122
la source
Dans mon cas, quand j'avais besoin de copier quelque chose sur exFAT, cela a échoué à chaque fichier qui avait un "|" dans son nom de fichier.
neverMind9

Réponses:

24

Vérifiez si vous êtes vraiment superutilisateur avec:

whoami

si la sortie est root, alors vous êtes superutilisateur et vous pouvez faire la copie du fichier avec:

cp -f /tmp/ok_pcscd_hotplug.sh /lib/udev/.

sinon vous devez utiliser sudo:

sudo cp -f /tmp/ok_pcscd_hotplug.sh /lib/udev/.

Si vous n'êtes toujours pas en mesure d'écrire dans le répertoire, il est possible que:

  1. le répertoire a le drapeau immuable activé. vérifier avec lsattr.
  2. le répertoire est monté avec des autorisations en lecture seule: saisissez terminal:

    cat /proc/mounts(ou mountou cat /etc/mtab)

    et vérifiez la sortie, si le répertoire est monté en lecture seule.

Si vous êtes dans le premier cas, changez les attributs de répertoire avec chattr;

  • supprimer l'indicateur immuable du fichier ou du répertoire chattr -i <file/dir>
  • ajout d'indicateur immuable sur le fichier ou le répertoire chattr +i <file/dir>

Si vous êtes dans ce dernier cas, modifiez le fichier /etc/fstab.

Girardengo
la source
whoami - sortie root j'ai essayé cp -f et sudo cp -f, mais donne à nouveau une erreur
user278122
J'ai apporté une petite modification à ma réponse: j'ai copié la commande de votre question, mais il y a une erreur: la commande telle que vous l'avez écrite, elle écrasera udev, vous devez ajouter /.à la fin de la commande pour copier les fichiers dans le répertoire
girardengo
j'ai essayé: cp -f /tmp/ok_pcscd_hotplug.sh / lib / udev /. cp -f /tmp/ok_pcscd_hotplug.sh / lib / udev / cp /tmp/ok_pcscd_hotplug.sh / lib / udev je ne comprends pas, je suis root mais je ne copie pas où est le problème
user278122
J'ai édité ma réponse, postez dans votre question également sortie de mountetlsattr /lib/
girardengo
mount / lib / - mount: impossible de trouver / lib / dans / etc / fstab ou / etc / mtab lsattr / lib / - ioctl inapproprié pour le périphérique lors de la lecture des indicateurs sur la sortie lib / filename pour chaque fichier
user278122
3

Ce n'est pas nécessaire à chaque fois que vous avez besoin d'être root à cet effet Donc, si vous voulez le faire avec l'utilisateur root, c'est bien, mais si vous voulez le faire sans root, alors vous avez 2 options:

  1. Vérifiez les autorisations du fichier. Vous devez avoir des autorisations de lecture
  2. Vérifiez que le fichier ou le lien portant le même nom n'est pas présent dans le répertoire de destination. Parce que si le lien avec le même nom est là dans le répertoire de destination, il ne vous permettra pas de le faire et ne préviendra pas non plus que le lien avec le même nom est présent
Kailas Andhale
la source
1

Essayez cp /tmp/ok_pcscd_hotplug.sh /lib/udev/en tant qu'utilisateur root.

Sambit
la source
ne change pas, donne à nouveau une erreur - root @ atrust-00351A: / lib # ls-l drwxrwxrwx 4 root root 324 2009-05-22 11:40 udev
user278122
Veuillez poster la sortie whoamietls -al /tmp/ok_pcscd_hotplug.sh
Sambit
whoami - sortie racine ls -al /tmp/ok_pcscd_hotplug.sh - sortie -rwxr-xr-x 1 racine racine 229
user278122
Assurez-vous ensuite qu'il ok_pcscd_hotplug.shn'est pas corrompu et qu'il /lib/udev/existe dans votre système.
Sambit
soit ok_pcscd_hot_plug.sh ou / lib / udev disponible sur le système
user278122
1

Vous devez d'abord créer un répertoire s'il /lib/udevn'existe pas

mkdir -p /lib/udev
Farid Movsumov
la source
0

Faites d'abord "ls -l" et vérifiez les autorisations pour ce répertoire. Si vous voyez quelque chose comme -rw-r - r--, cela signifie que le propriétaire peut lire-écrire, le groupe d'utilisateurs ne peut que lire, World ne peut que lire. Tapez la commande suivante si c'est le cas: "chmod 766". Cela vous permettra d'effectuer des opérations de lecture-écriture sur ce fichier. Essayez maintenant de copier ce fichier de la même manière. Ça devrait marcher

passant
la source
* chmod 766 <file / dir>
passerPar
1
Vous pouvez toujours modifier la réponse et l'ajouter. Et je ne crois pas à accorder toutes les autorisations aux utilisateurs. Au lieu de cela, si le dossier / fichier doit être créé, connectez-vous en tant qu'utilisateur disposant de privilèges. Merci. :-)
Kulfy