Existují dva způsoby, jak to udělat:nastavit adresář na zapisovatelný "world" nebo vytvořit novou skupinu pro dva uživatele a umožnit zápis do adresáře této skupině.
Je zřejmé, že to, aby se to dalo světově zapisovat, je špatná věc, takže je vhodnější druhá možnost.
Uživatelé v Linuxu mohou patřit do více než jedné skupiny. V tomto případě chcete vytvořit zcela novou skupinu, nazvěme ji tomandruser :
sudo groupadd tomandruser
Nyní, když skupina existuje, přidejte do ní dva uživatele:
sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser
Nyní zbývá pouze nastavit oprávnění k adresáři:
sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory
Nyní mohou číst, zapisovat nebo spouštět cokoli v adresáři pouze členové skupiny tomandruser. Všimněte si argumentu -R u příkazů chmod a chgrp:ten jim říká, že se mají vrátit do každého podadresáře cílového adresáře a upravit každý soubor a adresář, který najde.
Můžete také chtít změnit 770 na něco jako 774 pokud chcete, aby ostatní mohli číst soubory, 775 pokud chcete, aby ostatní četli a spouštěli soubory atd. Změny přiřazení skupin se neprojeví, dokud se uživatelé neodhlásí a znovu nepřihlásí.
Pokud také chcete (pravděpodobně chcete), aby nové soubory vytvořené v adresáři jedním z uživatelů byly automaticky zapisovatelné ostatními ve skupině, podívejte se sem.
Následující skript ukazuje příklad r (read) / w (write) / x (execute) oprávnění k dané cestě ke složce /path/to/the/directory pro USER1 a USER2 . Pokud chcete udělit pouze přístup pro zápis, nahraďte rwx s w .
#!/bin/bash
# Block others and people in the same group to do `r/w/x` on the give folder:
sudo chmod 700 /path/to/the/directory
# Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx /path/to/the/directory
# Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx /path/to/the/directory
Názorová odpověď:
- Rád dávám svou sdílenou složku na centrální místo. Ne v domovské složce někoho jiného, ale
/srv/commonnebo dokonce (pro nemilosrdně krátké cesty...)/reponebo podobně. - definujte novou skupinu (obvykle pro všechny místní uživatele, ke kterým se chcete připojit. Ne však někteří techničtí uživatelé jako
wwwuser, pokud neexistuje pádný důvod) rootje dobré mít jako člena, také mít neutrálního vlastníka této sdílené složky- setGid je velmi důležité, aby se nové soubory staly společným členstvím ve skupině, tedy
frank:common, nikolifrank:frank
sudo groupadd -f common
usermod -aG common root
usermod -aG common frank
usermod -aG common mike
# sort of hack for instant group refresh w/o logout
# superuser.com/a/345051
su - frank
# sanity test1:
cat etc/group | grep common
common:x:1008:root,frank,mike
# sanity test2:
groups
frank adm cdrom ... common
sudo chown root:common /repo
# (if you have shareable stuff setting somewhere else,
# copy it to here now)
# no right to the world, the right rights to user and group
chmod -R ug+rwXs,o-rwx $dest
# why uppercase X ? → unix.stackexchange.com/a/416885
# why s ? → superuser.com/a/277785
# as there is no such thing as an uppercase S (directories only)
# settings the s attribute on preexisting content would have to happen
# like so:
# find /repo -type d -exec chmod g+s {} \\\;