Nous utilisons RedHat Enterprise ES 5 sur x86_64. Nous avons un script Perl qui fait, entre autres:
- faire un répertoire
- copier des fichiers à points
- chown le tout
Le répertoire cible est un répertoire monté automatiquement, qui a en réalité la même chose.
Si nous faisons cela en tant que script shell, cela fonctionne:
mkdir /net/host/drive/directory/new
cp /some/stuff/.??* /net/host/drive/directory/new
chown -R user:group /net/host/drive/directory/new
Si nous faisons cela dans un script Perl, que ce soit en tant que system () ou en antécédents, nous obtenons "opération non autorisée".
Ce script fonctionne parfaitement sur Solaris, d'où il provient.
Le script est exécuté en tant que root, pas avec n'importe quel sous-programme ou setuid.
Quelqu'un a une idée de ce qui se passe?
redhat-enterprise-linux
root
perl
David Mackintosh
la source
la source
Réponses:
Je vais aller un peu ici et supposer que vous avez probablement ce système de fichiers monté en tant que NFS avec root-squash. Il s’agit là d’une fonctionnalité de sécurité, car toute personne ayant un accès physique au réseau et un accès en lecture au système de fichiers exporté pourrait alors, avec un accès root sur la machine cliente, accéder à n’importe quel fichier de ce système de fichiers.
Si vous voulez vraiment que root sur les ordinateurs clients ait des privilèges root sur le système de fichiers exporté, exportez-le avec l'option "pas de racine root".
Regarde ça Exemple . Notez que la valeur par défaut de cette option sur votre implémentation de serveur NFS peut être root-squash. Vous devez donc vérifier cette documentation.
la source