GNU/Linux >> Linux Esercitazione >  >> Linux

Creare un file come utente e gruppo diversi?

Ho uno script bash che deve sincronizzarsi per scaricare i file scrivendoli in locale, quindi deve impostare il proprietario su apache e il gruppo su un particolare gruppo di utenti (di cui apache non è un membro).

C'è un modo per creare quei file con quelle proprietà mentre vengono scritti dal processo rsync, senza doverli modificare a posteriori usando chmod? Ci sono così tanti file che il tempo necessario per esaminarli in un secondo momento è proibitivo.

Devo farlo per più gruppi di utenti, quindi non dovrei aggiungere Apache a questi gruppi e certamente non posso renderli tutti il ​​gruppo predefinito.

In altre parole:c'è un modo in cui root può creare un file come utente X e gruppo Y quando X non è un membro di Y?

Ho provato a utilizzare runuser, ma non riesco a impostare il gruppo (presumibilmente perché apache non appartiene al gruppo).

So che puoi usare chmod per modificare i permessi e aggiungere qualsiasi combinazione utente/gruppo. Quello che sto chiedendo è se esiste un modo per aprire un file per la scrittura e utilizzare qualsiasi combinazione utente/gruppo durante la creazione.

Tentativo con 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

Risposta accettata:

Se vuoi creare un file come utente e gruppo specifico senza usare chown , puoi usare sudo e specificare l'utente e il gruppo:

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

Tieni presente che l'utente specificato deve disporre dell'autorizzazione per scrivere nella directory in cui si tenta di eseguire questa operazione.

Oppure puoi avviare una shell come utente corrente, con il gruppo impostato su qualcos'altro:

sudo runuser "$USER" -g somegroup

L'ho provato su una scatola Vagrant con successo:

[[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] ~]$ 

Questo nonostante l'utente "vagabondo" non faccia parte del gruppo "floppy".

Correlati:Php:image2wbmp — Invia l'immagine al browser o al file
Linux
  1. Crea e modifica utenti in MySQL

  2. Crea e rimuovi i file di scambio in Ubuntu

  3. Come gestire le autorizzazioni/proprietà di file e directory in Linux

  4. Guida per principianti all'amministrazione di utenti e gruppi in Linux

  5. Come creare e interrogare un file system BTRFS

Comando Chown in Linux (proprietà dei file)

Comando Linux id - Stampa le informazioni sull'ID utente e sull'ID gruppo

Come creare e utilizzare file di scambio su Linux

Come creare un utente Sudo su Ubuntu e Debian

Crea un nuovo utente e concedi i permessi in MySQL

Crea e configura un utente in MSSQL