GNU/Linux >> Znalost Linux >  >> Linux

Udělte oprávnění k zápisu více uživatelům do složky v Ubuntu

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/common nebo dokonce (pro nemilosrdně krátké cesty...) /repo nebo 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)
  • root je 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 , nikoli frank: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 {} \\\;

Linux
  1. Linux – změnit oprávnění složky?

  2. Oprávnění souborů v Linuxu – čtení/zápis/spouštění

  3. Zápis do složky tmp

  1. Co je .Trash a .Trash-1000?

  2. Proč mohou „Ostatní“ číst soubory ve výchozím nastavení v Ubuntu?

  3. Jak nastavit oprávnění linux pro složku WWW?

  1. Správa účtů místních skupin v Linuxu

  2. Skutečně sdílet složku s více uživateli na počítači?

  3. Oprávnění pro složku Apache Webroot na Dev Server?