Mám bash skript, který se musí rsyncovat, aby si mohl stáhnout soubory, které je zapisuje lokálně, a pak potřebuje nastavit vlastníka na apache a skupinu na konkrétní skupinu uživatelů (která apache není členem).
Existuje způsob, jak tyto soubory s těmito vlastnictvími vytvořit, když jsou zapisovány procesem rsync, aniž byste je museli následně procházet a měnit pomocí chmod? Existuje tolik souborů, že čas potřebný k jejich procházení později je neúměrný.
Musím to udělat pro více skupin uživatelů, takže bych do těchto skupin neměl přidávat apache a rozhodně je nemohu všechny nastavit jako výchozí skupinu.
Jinými slovy:existuje způsob, jak může root vytvořit soubor jako uživatel X a skupina Y, když X není členem Y?
Zkoušel jsem použít runuser, ale nemohu nastavit skupinu (pravděpodobně proto, že apache do skupiny nepatří).
Vím, že můžete použít chmod ke změně oprávnění a přidání libovolné kombinace uživatele/skupiny. Ptám se, zda existuje způsob, jak otevřít soubor pro zápis a použít při jeho vytváření libovolnou kombinaci uživatelů/skupin.
Pokuste se použít 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
Přijatá odpověď:
Pokud chcete vytvořit soubor jako konkrétní uživatel a skupina bez použití chown
, můžete použít sudo
a zadejte uživatele a skupinu:
sudo -u #49 -g #58 touch /tmp/something
Všimněte si, že zadaný uživatel musí mít oprávnění k zápisu do adresáře, kde se o to pokoušíte.
Nebo můžete spustit shell jako aktuální uživatel se skupinou nastavenou na něco jiného:
sudo runuser "$USER" -g somegroup
Zkoušel jsem to s úspěchem na krabici Vagrant:
[[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] ~]$
A to navzdory tomu, že „tulák“ uživatel není součástí „disketové“ skupiny.
Související:Php:image2wbmp — Výstup obrázku do prohlížeče nebo souboru