Unix: Jak mogę pozwolić, aby tylko jedna osoba widziała mój folder w tym samym systemie plików?

9

Chcę dać znajomemu dostęp do katalogu. Ma dostęp do systemu plików, w którym znajduje się katalog. Nie chcę ustawiać uprawnień wszystkim użytkownikom. Jak mogę pozwolić, aby tylko jedna osoba widziała reż? Nikt z nas nie jest superużytkownikiem.

[BOUNTY CHALLENGE] Żadna z odpowiedzi nie działa, używając Ubuntu:

1. Podejście jamuraa nie działa

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. Podejście nik nie działa: nie można uzyskać dostępu do nieistniejącego pliku

3. Podejście ba nie działa: nie mogę tworzyć grup, a nie root.

4. Podejście ToK nie działa, użytkownicy dzielą się na dwie grupy: „users” i „field”

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

źródło
1
Byłoby użyteczne, gdybyś podał jedno linijkę, w jaki sposób te odpowiedzi stanowią dla ciebie problem - dałby lepszą definicję problemu dla formułowania innych opcji.
nik
nik: Dodano profile błędów.

Odpowiedzi:

12

Przy zwykłych uprawnieniach UNIX (użytkownik, grupa, wszyscy) nie można tego łatwo zrobić. Jeśli nie potrzebujesz już dostępu do katalogu, możesz zmienić właściciela katalogu na swojego przyjaciela, co jest ważne w niektórych Uniksach, ale większość z nich tak nie jest.

Jednak - jeśli masz włączone listy ACL w systemie Linux, możesz to zrobić, jeśli jesteś właścicielem pliku. Po prostu uruchom polecenie, w setfacl -m user:friend:rwx filenamektórym przyjaciel to nazwa konta twojego znajomego, a nazwa pliku to plik. Możesz sprawdzić, czy zadziałał getfacl filename, uruchamiając. Powinieneś zobaczyć triadę user:friend:rwxna liście. Jednak nie widziałem zbyt wielu systemów Linux z włączonymi listami ACL.

jamuraa
źródło
Listy ACL są standardowym rozwiązaniem tego problemu, przy założeniu, że system plików ma je włączone.
Ryan C. Thompson,
HHH wydaje się mówić, że to nie zadziała. Myślę, że tak, chyba że z jakiegoś dziwnego powodu listy ACL nie są włączone. HHH, co daje?
pboin
pboin: ta metoda nie działa, więc najwyraźniej przyczyną może być to, że listy ACL nie są włączone lub s / coś innego, nie jestem pewien.
11

O tym rozmawialiśmy już w szkole.
Idzie mniej więcej tak

  1. Utwórz katalog (o nazwie data, dla odniesienia tutaj)
    • zmień uprawnienia jako „ chmod 711 data
    • grupa i inne mają tylko x- dostęp do wejścia do katalogu
    • nie mogą wyświetlić katalogu
    • Teraz utwórz katalog difficult-name-here(może to być ciąg mieszany)
    • zmień uprawnienia jako „ chmod a+rx difficult-name-here
    • zawartość tego katalogu jest bezpieczna, a katalogu zewnętrznego nie można wymienić
    • ludzie znający „trudne imię” mogą przejść do tego drugiego katalogu
      • cd path/to/data/difficult-name-here
      • inni nie widzą nazwy i nie mogą uzyskać dostępu do zawartości katalogu
      • Jednak rootzawsze mogą uzyskać dostęp do wszystkiego (co nie jest tutaj problemem)
    • udostępnij difficult-name-hereosobom, którym chcesz przekazać te dane
    • Zachowaj udostępnione pliki w tym drugim katalogu

Dość prymitywne, ale jeśli można to naprawić bez złamania kontroli dostępu w systemie Unix, chciałbym wiedzieć.


Aktualizacja na komentarz od dmckee, do
tego właśnie doszliśmy!
„bezpieczeństwo przez zaciemnienie” ma ograniczone bezpieczeństwo .

To powiedziawszy, projektując ochronę danych,
należy określić jej wartość.

Powinieneś celować w

  • Koszt złamania zabezpieczeń wyższy niż,
  • Koszt zabezpieczonych treści,
  • Przez współczynnik proporcjonalny do twojej paranoi

W takim przypadku, jeśli rootzdecydujesz się wyliczyć drzewo katalogów gdzieś w publicznym dostępie,
twój sekret zostanie wydany! Ale czy chronisz przed korzeniem lub jego potencjalną nieodpowiedzialnością?
W takim przypadku masz o wiele więcej powodów do zmartwień niż udostępnione pliki.


Zaktualizuj informacje o niedziałającej notatce w pytaniu .
Użyłem tego na początku Linuksa, aby wiedzieć, że to działa.
Jeśli dostaniesz „ cannot access non-existant filezamiast 'permissions denied”, najprawdopodobniej popełniłeś błąd w sekwencji. To, czego chcesz, powinno wyglądać tak,

 755 711 755 cokolwiek - === Uprawnienia dostępu

 BasePath / CoverDir / Obscure / protectedFile.txt
          | | ^^^^^^^^^^^^^^^^^ Nie można zobaczyć bez
          | ^^^^^^^ Nazwa katalogu Dostęp do odczytu
          ^^^^^ Publiczne udostępnione przyjacielowi. Niewyraźny katalog.
                dostępny 
                informator.
  1. Jeśli ustawisz „ CoverDirdostęp jako 'rwx--x--x”,
    grupa i inne osoby będą mogły tylko wejść do katalogu, ale nie będą mogły odczytać jego zawartości.
  2. Teraz, jeśli użyjesz niejasnej nazwy katalogu
    Obscure” w środku i zapewnisz pełny dostęp do odczytu za pomocą „ rwxr-xr-x”,
    każdy , kto zna tę nazwę, może wyświetlić jej zawartość.
  3. Dostęp ten będzie musiał być wykonane od zewnątrz „ ls BasePath/CoverDir/Obscure
    Bo ludzie w grupie, a inni nie będą w stanie „ ls BasePath/CoverDir”.
nik
źródło
7
„jeśli można to złamać [...], to wiedzieć”. Cóż, jest to bardzo dobry przykład bezpieczeństwa przez niejasność, a przez to kruchy. Nie licz na to w dłuższej perspektywie. Schludnie.
dmckee --- były moderator kociak
Jeśli twoja kontrola dostępu do systemu uniksowego jest bezpiecznie zaimplementowana, jest to prawie tak samo bezpieczne, jak baza danych z ukrytym hasłem (lub sshklucz prywatny).
nik
5

Ryan był w 100% poprawny, po prostu zacofany. Ponieważ twój przyjaciel (prawdopodobnie) ma unikalną grupę powiązaną z jego / jej nazwą użytkownika, zmień własność grupy danego katalogu na tę grupę, najprawdopodobniej nazwę użytkownika znajomego. Aby móc dzielić się zawartością między wami, należy zachować własność jako użytkownik:

chown -R youruser:friendgroup ~/foo/bar

Następnie przypisz odpowiednie uprawnienia do katalogu, w zależności od tego, jaki dostęp chcesz mieć inny użytkownik:

chmod -R 770 ~/foo/bar

przyznałby wam obojgu pełny dostęp rwx do katalogu i całej jego zawartości.

Pamiętaj, że zakłada to, że żaden inny użytkownik nie został dodany do grupy Twojego znajomego. System prawdopodobnie nie wykonałby tego zadania, jednak, jak wspomniano wcześniej, użytkownik root może zrobić to, co wybierze. Możesz użyć polecenia groups, aby zobaczyć każdą grupę, do której należy twój przyjaciel lub dowolny użytkownik. Dodatkowo, chyba że uprawnienia zostały zmienione z jakiegoś powodu, powinieneś być w stanie wyświetlić plik / etc / group, który zawiera przypisania grup dla każdej grupy w systemie.

Tok
źródło
4

Zrobiłbym nową grupę dla ciebie i twojego przyjaciela i ustawiłbym pełne uprawnienia folderu dla właściciela i grupy wraz z bitem setgid dla katalogu.

Ale w zależności od twoich potrzeb możesz także zastanowić się nad zmianą umaskania ciebie i twoich znajomych, aby automatycznie ustawić grupę na zmianę nowych plików.

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN
gaqzi
źródło
3
Może to wymagać przywilejów superużytkownika, których nie ma.
Keck
1
Och, całkowicie przegapiłem tę linię: x Więc jestem zagubiony. Chyba po prostu poszedłbym z wysyłaniem go lokalnie pocztą - nie jest to najlepsze rozwiązanie, ale przynajmniej plik dociera do drugiego faceta.
gaqzi
2

Listy kontroli dostępu są idealnym sposobem na to.

Jednak (o ile dobrze pamiętam) system plików musi zostać zainicjowany za pomocą list ACL (np. „/ Dev / sda6 / home ext3 defaults, acl ”), poprzez / etc / fstab, a jest to coś, co może zrobić tylko administrator. ..


źródło
2

Wymagane są RBACS jak grsec / selinux.

kagali-san
źródło
nie jestem pewien, czy to jest problem, czy możesz dodać jakieś cytowanie?
2

Domyślnie każdy użytkownik w systemie Ubuntu ma również powiązaną grupę o tej samej nazwie. Jeśli więc możesz dodać znajomego do grupy, a następnie oznaczyć dany folder jako g+rwx, zostaniesz ustawiony. Niejasno pamiętam ten przypadek użycia jako powód do utworzenia grupy dla każdego użytkownika.

Ryan C. Thompson
źródło
Dodanie użytkowników do grup wymaga dostępu do konta root, którego OP powiedział, że nie ma.
Dave Sherohman,
2

nie próbowałem tego, ale co powiesz na publiczny czytelny katalog z zaszyfrowanym FS przestrzeni użytkownika w środku (na przykład encfs). Następnie możesz udostępnić to hasło swojemu znajomemu i nikt inny nie może z niego korzystać (cóż, myślę, że mogliby pobrać dane i uruchomić program do łamania haseł offline?).

Bieg
źródło
2

Aby nadać Linuksowi taką samą Finezję jak Windows w uprawnieniach do plików, musisz zagnieżdżać grupy. Utwórz jedną grupę, która ma dostęp do twojego folderu, tak jak chciałbyś mieć swojego przyjaciela. Dodaj go do tej grupy lub grupy, w której mieszka, do tej grupy. Na przykład

/ foo to folder, który chcesz udostępnić. Utwórz grupę FooGroup, która ma pożądany dostęp do folderu. Dodaj grupy i użytkowników do tej grupy, której chcesz mieć dostęp do tego folderu.

Posiadanie grupy dla każdego folderu lub pliku to duży problem, ale jest to najlepszy sposób na ograniczenie dostępu na tym samym poziomie co system Windows.

Ge3ng
źródło
1

Możesz zaszyfrować katalog za pomocą gpg. A potem spróbuj zaciemnić lokalizację, tak jak sugerował Nik.

kzh
źródło