Nadaj uprawnienia do zapisu wielu użytkownikom w folderze w Ubuntu

80

Istnieje folder, którego właścicielem jest użytkownik tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Chcę zezwolić innemu użytkownikowi (ruser) na pisanie w folderze dokumentów. Dwaj użytkownicy (tomcat6 i ruser) nie należą do tej samej grupy. Próbowałem użyć setfacl:

sudo setfacl -m  u:ruser:rwx document

ale to daje mi setfacl: document: Operation not supportedbłąd. Proszę mi pomóc.

TheVillageIdiot
źródło

Odpowiedzi:

143

Można to zrobić na dwa sposoby: ustaw katalog na „świat” do zapisu lub utwórz nową grupę dla dwóch użytkowników i ustaw katalog do zapisu dla tej grupy.

Oczywiście uczynienie go światowym do zapisu jest Złą Rzeczą, więc druga opcja jest lepsza.

Użytkownicy w systemie Linux mogą należeć do więcej niż jednej grupy. W tym przypadku chcesz utworzyć zupełnie nową grupę, nazwijmy to tomandruser:

sudo groupadd tomandruser

Teraz, gdy grupa istnieje, dodaj do niej dwóch użytkowników:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Teraz pozostało tylko ustawić uprawnienia do katalogu:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Teraz tylko członkowie grupy tomandruser mogą czytać, pisać lub wykonywać cokolwiek w katalogu. Zwróć uwagę na argument -R w komendach chmod i chgrp: nakazuje im to powtarzać się w każdym podkatalogu katalogu docelowego i modyfikować każdy znaleziony plik i katalog.

Możesz także zmienić 770 na coś takiego, 774jeśli chcesz, aby inni mogli czytać pliki, 775jeśli chcesz, aby inni czytali i wykonywali pliki itp. Zmiany przypisania grupy nie zostaną wprowadzone, dopóki użytkownicy się nie wylogują i nie wylogują w.

Jeśli chcesz również (prawdopodobnie chcesz), aby nowe pliki utworzone w katalogu przez jednego z użytkowników były automatycznie zapisywane przez inne osoby w grupie, zobacz tutaj .

Andrew Lambert
źródło
2
Prawdopodobnie chcesz również ustawić flagę set-group-ID dla katalogów, aby nowe pliki i podkatalogi były automatycznie własnością odpowiedniej grupy:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio,
8
Unikałbym używania chmod 770, 775 lub cokolwiek innego. To zadziera z uprawnieniami wszystkich plików. Zamiast tego użyj czegoś takiego, chmod -R g+waby dodać uprawnienia do zapisu bez pomieszania wszystkiego innego.
Christian Varga
2
Jeśli użytkownik utworzy tam nowy plik (powiedzmy mysql by SELECT INTO OUTFILE), ustawi uprawnienia do swojej grupy podstawowej ( mysqlw tym przypadku), a plik i tak nie będzie dostępny dla innego użytkownika. Jak to obejść?
Olexa
2
Co jeśli chcesz przyznać użytkownikom dostęp do zapisu do folderu bez zmiany właściciela folderu, np. Nie chcesz zadzierać z uprawnieniami apache w folderze public_html?
codecowboy
2
Uwaga: „Zmiany przypisania grupy nie zostaną wprowadzone, dopóki użytkownicy się nie wylogują i nie wylogują”.
Tęskniłem
3

Przykładowy skrypt pokazuje przykład w (write)/ r (read) / x (execute)zezwolenia na daną ścieżkę folderu /path/to/the/directorydla USER1i USER2. Jeśli chcesz dać dostęp tylko do zapisu należy wymienić rwxz w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on 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 
Alper
źródło