1
votes

la propriété du fichier change automatiquement

Comment puis-je empêcher la modification de la propriété d'un fichier? J'ai un fichier avec la permission comme suit:

-rw-r-----. 1 netcool ncoadmin 1689 May  8 14:54 NCI_Constellation.proj

Dans le cadre de l'installation du package RPM, j'exécute un script qui est censé écrire des données dans le fichier NCI_Constellation.proj. Alors que l'autorisation du fichier est modifiée comme suit pendant l'installation du package et que l'écriture dans le fichier ne se produit pas.

-rw-r-----. 1 root root 1689 May  8 14:54 NCI_Constellation.proj

Existe-t-il un moyen de ne pas changer la propriété de NCI_Constellation .proj et conservez-le tel quel comme suit afin que je puisse écrire des données dans le fichier?

-rw-r-----. 1 netcool ncoadmin 1689 May  8 14:54 NCI_Constellation.proj

Veuillez aider.


0 commentaires

3 Réponses :


1
votes

La question est: à quel package appartient ce fichier et avec quelles permissions?

%files
%attr(640,netcool,ncoadmin) /path/to/NCI_Constellation.proj

vous donnera le package propriétaire de ce fichier (disons NCI.rpm code >). Ensuite,

rpm -qlv NCI.rpm | grep NCI_Constellation.proj

vous donnera les propriétaires et les droits de ce fichier tel que conditionné par NCI.rpm . Si vous êtes celui qui conditionne NCI.rpm; vous devriez mettre quelque chose comme ceci dans votre section % files :

rpm -qf /path/to/NCI_Constellation.proj

En passant, assurez-vous que vous pouvez vraiment écrire dans le fichier avec ces autorisations ; testez cela en premier ... Qui exécute le script pour modifier ce fichier? En tant que quel utilisateur? puis exécutez-le manuellement en tant qu'utilisateur pour vous assurer que ces autorisations de fichiers suffiront.


2 commentaires

Merci pour votre réponse @Chris Maes, j'ai essayé votre suggestion mais cela n'a pas fonctionné pour moi. J'ai également essayé de définir le suid et le sgid. Mais cela n'a pas non plus fonctionné :-(


«cela n'a pas fonctionné» est plutôt vague. Vous devez creuser davantage. Qui définit les autorisations de fichier? Avec quelles autorisations de fichier les fichiers sont-ils installés? Est-ce que quelqu'un change vraiment les permissions ou est-il juste installé correctement par votre rpm? Que faire si vous changez les autorisations en 777 (pour les tests), ...



1
votes

vous avez deux options à mon avis,

d'abord: définissez netcool sur le groupe racine en faisant ceci: $ sudo usermod -a -G racine netcool avec cette commande, l'utilisateur peut changer et modifier le fichier même après la modification des autorisations.

second: définissez l'utilisateur netcool comme un deuxième utilisateur root en changeant le fichier / etc / passwd . pour cela, ouvrez le fichier avec chaque éditeur de fichier que vous voulez puis changez UID et GID en 0. Après cela, si vous exécutez $ grep netcool / etc / passwd , vous devriez voir: netcool: x: 0: 0: {le reste peut changer pour n'importe qui} .


0 commentaires

0
votes

Nous pouvons empêcher le changement de groupe de fichier en utilisant le bit setgid sur le répertoire. Donc, si vous ajoutez l'utilisateur netcool à ncoadmin et donnez l'autorisation d'écriture à ncoadmin, vous pouvez modifier le fichier. Voici comment définir le bit SetGid sur le répertoire.

chmod g + s your_directory_containing_file (NCI_Constellation.proj)

Un peu plus sur le setgid sur le répertoire:

setgid peut être utilisé sur les répertoires pour s'assurer que tous les fichiers à l'intérieur du répertoire appartiennent par le propriétaire du groupe de l'annuaire. Le bit setgid est affiché au même emplacement que le x autorisation pour le propriétaire du groupe. Le bit setgid est représenté par un s (ce qui signifie que x est également là) ou un S (lorsqu'il n'y a pas de x pour le propriétaire du groupe). Comme le montre cet exemple, même si root n'appartient pas au groupe proj55, les fichiers créés par root dans / project55 appartiendront à proj55 car le setgid est défini.

root@RHELv4u4:~# groupadd proj55
root@RHELv4u4:~# chown root:proj55 /project55/
root@RHELv4u4:~# chmod 2775 /project55/
root@RHELv4u4:~# touch /project55/fromroot.txt
root@RHELv4u4:~# ls -ld /project55/
drwxrwsr-x 2 root proj55 4096 Feb 7 17:45 /project55/
root@RHELv4u4:~# ls -l /project55/
total 4
-rw-r--r-- 1 root proj55 0 Feb 7 17:45 fromroot.txt


0 commentaires