GNU/Linux >> Znalost Linux >  >> Linux

Získání nových souborů k dědění skupinových oprávnění v systému Linux?

Mám problém s oprávněními na serveru Linux. Jsem zvyklý na BSD. Když je adresář ve vlastnictví skupiny, uživatel, který jej vlastní, není v, například www-data, soubory vytvořené v něm budou vlastněny touto skupinou. To je důležité, protože chci, aby byly soubory čitelné webovým serverem (který nebudu spouštět jako root), ale aby uživatel mohl stále vkládat nové soubory do adresáře. Nemohu umístit uživatele do www-data, protože pak mohou číst webové stránky všech ostatních uživatelů.

Chci, aby webový server četl všechny webové stránky, chci, aby uživatelé mohli měnit své vlastní.

Oprávnění jsou u složek v tuto chvíli nastavena takto….

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john

To je standardní chování na BSD, aby oprávnění fungovala tímto způsobem. Jak přiměju Linux, aby to udělal?

Přijatá odpověď:

Zní to, jako byste popisovali funkci setgid bit, kdy když adresář, který ji má nastavenou, přinutí všechny nové soubory v něm vytvořené, aby byla jejich skupina nastavena na stejnou skupinu, která je nastavena v nadřazeném adresáři.

Příklad

$ whoami
saml

$ groups
saml wheel wireshark

nastavit adresář s oprávněními a vlastnictvím

$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/

dotkněte se souboru jako saml v tomto adresáři

$ whoami
saml

$ touch somedir/afile
$ ll somedir/afile 
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile

To vám dá přibližně to, co zní, jak chcete. Pokud však skutečně chcete přesně to, co jste popsali, myslím, že se k tomu budete muset uchýlit k funkci seznamů řízení přístupu (ACL).

ACL

Pokud chcete získat trochu větší kontrolu nad oprávněními k souborům, které se vytvoří v adresáři, somedir , můžete přidat následující pravidlo ACL a nastavit tak výchozí oprávnění.

před

$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir

nastavit oprávnění

$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/

Všimněte si + na konci to znamená, že na tento adresář jsou aplikovány ACL.

$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---

po

$ touch somedir/afile
$ ll somedir/afile 
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$ 

$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x              #effective:r--
group:apache:r-x        #effective:r--
mask::r--
other::---

Upozornění s výchozími oprávněními (setfacl -Rdm ) nastavit tak, aby oprávnění byla (r-x ) ve výchozím nastavení (g:apache:rx ). To přinutí všechny nové soubory, aby měly pouze své r bit povolen.

Související:ShellScript Cheat Sheet
Linux
  1. Přidal jsem uživatele do skupiny, ale skupinová oprávnění k souborům stále nemají žádný vliv?

  2. Linux – Jak nastavit výchozí oprávnění k souborům pro všechny složky/soubory v adresáři?

  3. Linux – Problémy s oprávněními pro sdílený adresář na serveru?

  1. Dáváte skupinová oprávnění souborům jiných uživatelů?

  2. Vynutit nová oprávnění pro soubory po Rsync ze Seedboxu?

  3. Linux – získávání souborů pro aktuální datum v Linuxu?

  1. Jak používat Rsync k synchronizaci nových nebo změněných/upravených souborů v Linuxu

  2. Seznam členů skupiny v Linuxu

  3. Jak vynutím konkrétní oprávnění pro nové soubory/složky na souborovém serveru Linux?