2016-04-26 1 views
1

Je suis connecté sous root sous Linux. J'ai un fichier avec 777 permissions. J'ai copié le fichier dans le même répertoire avec cp.Pourquoi le fichier copié a des permissions différentes sous Linux?

cp settings.php settings_copy.php 

Cependant, le fichier copié a des autorisations de fichier différentes.

[[email protected] default]# ls -l setting* 
-rwxr-xr-x. 1 root root 29105 Apr 26 11:48 settings_copy.php 
-rwxrwxrwx. 1 root root 29105 Apr 26 09:48 settings.php 

Est-ce normal? Comment puis-je m'assurer que le fichier copié obtient les mêmes autorisations? Je crois que c'est le comportement par défaut pour la commande de copie dans n'importe quel système d'exploitation.

+0

Vérifiez les paramètres umask en plus des suggestions 'cp -p' ci-dessous. L'umask est appliqué par rapport aux autorisations sur la copie. Surtout avec la racine, c'est une considération importante. Voir, par exemple, http://unix.stackexchange.com/questions/115246/file-inheriting-permission-of-directory-it-is-copied-in. Cette question serait probablement meilleure dans la zone "Unix & Linux". – KevinO

Répondre

3

Utilisez l'option -p pour préserver les autorisations:

cp -p settings.php settings_copy.php 

Lorsque vous copiez un fichier, vous créez un nouveau fichier. Ainsi, ses autorisations (nouveau fichier) dépendent du masque de création de fichier actuel, que vous modifiez via la commande umask. Lisez man umask pour plus d'informations.

1

Avez-vous regardé man cp

Ceci est la section pertinente:

-p  same as --preserve=mode,ownership,timestamps 

--preserve[=ATTR_LIST] 
    preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all 

Donc, pour garder la même propriété et le mode que vous exécutez la commande:

cp --preserve=mode,ownership 

Si vous connaissez c'est toujours ce que vous voulez et ne voulez pas vous en souvenir, vous pouvez l'ajouter comme un alias à votre .bashrc;

alias cp='cp --preserve=mode,ownership'