Autorisation `cp` refusée lors de la copy d'un file appartenant à` root`

J'ai un dossier udp_folder2

 d------rT 41 root root 4096 Apr 26 21:17 udp_folder2 

quand je suis avec un user autre que root , je ne peux pas le cp -r dans un nouveau dossier, il dit: Autorisation refusée

Pourquoi? et comment puis-je le copyr avec un user autre que root

Bien,

Ce serait parce que la façon dont vos permissions actuelles sont définies, personne ne peut déplacer ce file. (Autre que root, car root ne suit pas les mêmes règles.)

Vous devez soit changer le propriétaire du file (chown), soit append l'autre user au groupe 'root' et le chmod afin que le groupe puisse s'exécuter sur le directory, OU permettre à tout le monde d'exécuter le file.

Donc, une solution rapide serait:

 chmod -R o+rwx udp_folder2 

Cela donnera à chacun la possibilité de lire, écrire et exécuter sur ce directory.

Aussi … si vous essayez de copyr 'udp_folder2' dans le même directory que celui-ci, vous aurez également besoin de l'autorisation 'w' sur ce directory. Par exemple:

/ foo / udp_folder2 – vous aurez besoin de 'w' sur / foo pour copyr ce directory dans / foo

Je vous suggère d'apprendre les permissions de file linux: Linux File Permission Tutorial

Le directory n'a pas d'autorisation x , donc les autres (c'est-à-dire, dans ce cas, n'importe quel user) peuvent utiliser le directory pour atteindre les files à l'intérieur. Le T signifie qu'il est collant (seul le propriétaire d'un file peut le supprimer). Avec la permission x et le bit collant, vous verriez un t minuscule; le T majuscule dit "pas de permission d'access mais un bit collant, qui est une combinaison étrange".

Lisez les permissions sur les files / directorys Unix. Ce n'est pas trop dur, et vous en aurez besoin.

Vous ne voulez pas donner à tout le monde rwx sur le directory parce que vous rwx un risque de security. Et vous ne voudriez pas -R le chmod parce que cela écrirait les changements récursivement.

Juste chmod 755 "filename" et vous êtes bon.

Voici une ventilation des numbers:

  • Lecture = 4
  • Ecrire = 2
  • Exécuter = 1

Ensuite, vous avez 3 groupes:

  • Propriétaire.
  • Ceux qui appartiennent au groupe.
  • Tous les autres.

Donc, si vous voulez donner au propriétaire rwx , ceux qui appartiennent au groupe rw , et tout le monde rw vous ajoutez simplement les permissions: rwx = 7, parce que r + w + x est 4 + 2 + 1 et rw = 6 parce que r + w = 4 + 2.

Pour copyr le dossier dans lequel le propriétaire n'a pas l'autorisation, vous devez modifier ces permissions.

Si le dossier est restreint même pour le propriétaire, il y a une raison pour cela et donner les permissions pour tout le monde ( o ) n'est pas une bonne solution (comme indiqué dans la première réponse).

Pour que le propriétaire puisse accéder au dossier, il doit avoir read ( r ) et execute / search bits ( X ) set. Si vous avez des dossiers dans les dossiers, chacun devrait suivre les mêmes règles. Pour les files, seul le bit de lecture ( r ) suffit.

Donc, pour donner récursivement les permissions de lecture au dossier, vous devez exécuter:

 chmod -vR u+rX folder/ 

Si vous exécutez la command ci-dessus en tant qu'user, préfixez sudo (si vous avez des privilèges de superuser), sinon exécutez en tant que root.

Si certains files du dossier n'appartiennent pas à root, changez-le récursivement en:

 sudo chown -vR root folder/ 

Puis copyz-le comme d'habitude ou utilisez rsync comme suit:

 rsync -vuar src/ dst/ 

Pour plus d'explications sur les commands ci-dessus, vérifiez: man chmod et man chown .