2010-06-30 7 views
0

Je copie un fichier en ouvrant la source en mode lecture seule et la destination en mode écriture seule. C'est simple et ça marche. Le problème est que parfois je suis en train de copier un fichier qui se trouve sur un lecteur NFS, ou d'autres lecteurs réseau et dans ce cas, les permissions se fout tout et se plaint de SELinux. Je vais ensuite définir manuellement les permissions des fichiers que je viens de copier et c'est OK. Je peux y accéder à nouveau (via ftp, web, etc).Copier un fichier et modifier ses permissions sous Linux avec C

Existe-t-il un moyen de copier un fichier et de modifier les autorisations pour un utilisateur et un groupe donnés?

Le code est apprécié. Merci

EDIT:

serait quelque chose comme

open(argv[2], O_WRONLY | O_CREAT, 0666) 

travail?

+0

Voulez-vous dire changer le _permissions_ ('rwxrwxrwx'), ou changer le _ownership_ (utilisateur et groupe)? –

+0

david: soit. Je veux dire, j'ai essayé avec chown utilisateur: groupe et j'ai essayé chmod 666 et fonctionne aussi ... – Jessica

+0

Vous ne voulez probablement pas 0666; cela laisse le fichier publiquement accessible en écriture, ce qui est habituellement une erreur. Je recommanderais 0644; J'accepterais 0664. Je suis content que vous ne disiez pas 0777 ce que beaucoup de gens utilisent - négligemment. –

Répondre

2

Pour les modifications de paramètres d'utilisateur et de groupe, utilisez la fonction chown(). chmod() fonctionne sur les valeurs st_mode comme protections et setuid, setgid, sticky bit.