GNU/Linux >> Tutoriels Linux >  >> Linux

Créer un fichier en tant qu'utilisateur et groupe différents ?

J'ai un script bash qui doit se synchroniser pour télécharger des fichiers en les écrivant localement, puis définir le propriétaire sur apache et le groupe sur un groupe d'utilisateurs particulier (dont apache n'est pas membre).

Existe-t-il un moyen de créer ces fichiers avec ces propriétés au fur et à mesure qu'ils sont écrits par le processus rsync, sans avoir à les modifier après coup à l'aide de chmod ? Il y a tellement de fichiers que le temps nécessaire pour les parcourir plus tard est prohibitif.

Je dois le faire pour plusieurs groupes d'utilisateurs, donc je ne devrais pas ajouter apache à ces groupes, et je ne peux certainement pas tous les définir comme groupe par défaut.

En d'autres termes :existe-t-il un moyen pour root de créer un fichier en tant qu'utilisateur X et groupe Y lorsque X n'est pas membre de Y ?

J'ai essayé d'utiliser runuser, mais je ne parviens pas à définir le groupe (probablement parce qu'Apache n'appartient pas au groupe).

Je sais que vous pouvez utiliser chmod pour modifier les autorisations et ajouter n'importe quelle combinaison utilisateur/groupe. Ce que je demande, c'est s'il existe un moyen d'ouvrir un fichier pour l'écriture et d'utiliser n'importe quel combo utilisateur/groupe lors de sa création.

Essayez d'utiliser sudo :

[[email protected] tmp]# groups angelo
angelo : angelo wheel
[[email protected] tmp]# groups apache
apache : apache
[[email protected] tmp]# sudo -u angelo -g apache touch angelo-file
Sorry, user root is not allowed to execute '/bin/touch angelo-file' as angelo:apache on centos7
[[email protected] tmp]# ls -ld angelo-file
ls: cannot access angelo-file: No such file or directory
[[email protected] tmp]# sudo -u angelo -g angelo touch angelo-file
[[email protected] tmp]# ls -ld angelo-file
-rw-r--r-- 1 angelo angelo 0 Nov 12 03:13 angelo-file

Réponse acceptée :

Si vous souhaitez créer un fichier en tant qu'utilisateur et groupe spécifiques sans utiliser chown , vous pouvez utiliser sudo et spécifiez l'utilisateur et le groupe :

sudo -u #49 -g #58 touch /tmp/something

Notez que l'utilisateur que vous spécifiez doit avoir l'autorisation d'écrire dans le répertoire où vous tentez cela.

Ou, vous pouvez démarrer un shell en tant qu'utilisateur actuel, avec le groupe défini sur autre chose :

sudo runuser "$USER" -g somegroup

J'ai essayé ceci sur une boîte Vagrant avec succès :

[[email protected] ~]$ sudo runuser "$USER" -g floppy
[[email protected] ~]$ touch testfile
[[email protected] ~]$ ls -l testfile
-rw-r--r--. 1 vagrant floppy 0 Nov  9 15:57 testfile
[[email protected] ~]$ 

Ceci malgré le fait que l'utilisateur "vagabond" ne fasse pas partie du groupe "disquette".

Connexe :Php :image2wbmp — Exporter l'image vers un navigateur ou un fichier
Linux
  1. Créer et modifier des utilisateurs dans MySQL

  2. Créer et supprimer des fichiers d'échange dans Ubuntu

  3. Comment gérer les autorisations/propriétés des fichiers et des répertoires sous Linux

  4. Guide du débutant pour l'administration des utilisateurs et des groupes sous Linux

  5. Comment créer et interroger un système de fichiers BTRFS

Commande Chown sous Linux (propriété des fichiers)

Commande Linux id - Imprimer les informations d'ID utilisateur et d'ID de groupe

Comment créer et utiliser un fichier d'échange sous Linux

Comment créer un utilisateur Sudo sur Ubuntu et Debian

Créer et configurer un utilisateur dans MSSQL

Créer un fichier zip et ignorer la structure du répertoire