Jak mogę udostępnić katalog innemu użytkownikowi?

8

Nie chcę, aby udostępniony folder był dostępny dla każdego w systemie, chcę, aby był on dostępny tylko dla ograniczonego zestawu użytkowników.

Jak to zrobić?

Emanuele
źródło

Odpowiedzi:

9

Zaczerpnięte z tego doskonałego postu na forach Ubuntu autorstwa Morbius1.

Klasyczny sposób Linux na robienie tego typu rzeczy wygląda mniej więcej tak:

  1. Utwórz folder współdzielony:

    sudo mkdir /home/Shared
    
  2. Utwórz grupę nowego użytkownika:

    sudo addgroup newgroup
    
  3. Zmień własność folderu współdzielonego na nową grupę:

    sudo chown :newgroup /home/Shared
    
  4. Dodaj żądanych użytkowników do tej grupy:

    sudo adduser user1 newgroup
    

Powtórz dla wszystkich użytkowników.

Teraz musisz podjąć kilka decyzji dotyczących tego, co chcesz, aby ci użytkownicy mogli robić:

  • [a] Wszyscy użytkownicy grupy mogą dodawać i usuwać z folderu oraz mogą odczytywać, ale nie zapisywać do siebie:

    sudo chmod 0770 /home/Shared
    
  • [b] Tak jak powyżej, ale tylko właściciel pliku może go usunąć:

    sudo chmod 1770 /home/Shared
    
  • [c] Wszyscy użytkownicy grupy mogą dodawać i usuwać z folderu oraz mogą odczytywać i zapisywać pliki:

    sudo chmod 2770 /home/Shared
    
  • [d] To samo co [c], tyle że tylko właściciel pliku może go usunąć:

    sudo chmod 3770 /home/Shared
    

1W pierwszym położeniu chmod jest bit lepkości co uniemożliwia usunięcie pliku do kogoś innego niż jego właściciel.

2W pierwszej pozycji polecenia chmod jest setgid nieco który zmusza wszystkich nowych lub skopiowane pliki mieć grupę tego folderu.

3W pierwszym położeniu chmod jest połączenie lepkiej ( 1) (i setgid +2) bitów.

Jest jedno zastrzeżenie, jeśli chodzi o bit setgid. Wszystkie nowe pliki utworzone i wszystkie pliki skopiowane do tego folderu w rzeczywistości odziedziczą grupę folderu. Ale nie pliki zostały przeniesione do tego folderu. Przeniesione pliki zachowują własność z dowolnego miejsca, z którego zostały przeniesione. Jednym ze sposobów na obejście tego problemu jest użycie bindfs.

Na koniec, jeśli chcesz, aby inni spoza grupy mogli widzieć pliki, ale ich nie zmieniać, zmień końcowe 0 w chmodpoleceniu na 5, np .:

sudo chmod 0775 /home/Shared
Warren Hill
źródło