Dostęp do zapisu bez dostępu do odczytu

16

Czy użytkownik może mieć dostęp do zapisu do pliku i nie może go odczytać? Jak to jest możliwe?

Próbowałem następujących poleceń:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

Jak widać tutaj, mam dostęp do zapisu tego pliku, ale nie mam do niego dostępu. Jak to mozliwe? Czy to jest uważane za błąd? Jeśli nie, w jakiej sytuacji byłoby to przydatne?

Dymitr
źródło

Odpowiedzi:

18

To nie jest błąd, to funkcja TM ( Jest to tylko konsekwencja uniwersalnego, uniksowego podejścia do uprawnień).

Oprócz zachowania przypominającego dropbox w przypadku katalogów (zgodnie z opisem BillThora), dostęp tylko do zapisu jest konieczny dla niektórych specjalnych (pseudo-) plików w /proci /sys. Pliki takie służą do ustawiania niektórych właściwości sterownika lub jądra lub wyzwalania akcji systemowej. Nie można ich odczytać, ponieważ są one używane tylko do sygnalizacji jednokierunkowej - można do nich wysłać tylko część tekstu / danych. Aby znaleźć takie pliki, możesz użyć

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

Zauważ, że ponieważ pliki te są używane do zaawansowanej konfiguracji systemu (potencjalnie niebezpieczne), rootma do nich dostęp tylko do zapisu (w większości przypadków).

rozcietrzewiacz
źródło
21

Głównym powodem umożliwienia dostępu do zapisu bez dostępu do odczytu jest to, że upraszcza zarządzanie uprawnieniami, zarówno w jądrze, jak iw programach użytkownika. Istnieją dwa uprawnienia, jedno do czytania i jedno do pisania, i są zarządzane niezależnie. To nie jest błąd, ponieważ udokumentowane zachowanie pokrywa się z faktycznym zachowaniem i nie ma dobrego powodu, aby wymagać innego zachowania.

Posiadanie uprawnień do zapisu bez uprawnień do odczytu nie ma większego sensu w przypadku zwykłych plików. Ma to sens dla różnych plików specjalnych.

  • Niektóre systemy zezwalają na pliki tylko do dołączania. Jest to przydatne na przykład w plikach dziennika. Sensowne może być umożliwienie wielu użytkownikom tworzenia wpisów w dzienniku, ale nie zezwalanie im na usuwanie lub nadpisywanie istniejących wpisów (stąd: uprawnienie do zapisu, ale atrybut tylko do dołączania), ani zezwalanie im na czytanie wpisów innych osób (stąd: nie uprawnienia do odczytu).
  • Programowi można zezwolić na zapis do nazwanego potoku bez możliwości odczytu z niego.
  • Niektóre urządzenia są tylko do zapisu. Na przykład urządzenie wyjściowe dźwięku podłączone do głośnika, ale żaden mikrofon nie powinien mieć uprawnień do zapisu, ale nie może mieć uprawnień do odczytu.
  • Istnieją różne specjalne systemy plików, w których odczyt lub zapis do pliku ma natychmiastowy skutek zamiast pobierania lub dodawania danych do pamięci. Na przykład, pod Linuksem, istnieją różne pliki poniżej /proci /sysktóre umożliwiają programy przestrzeni użytkownika do wysyłania poleceń do jądra pisząc do konkretnego pliku. Jeśli to polecenie nie przekazuje żadnej opinii, plik specjalny jest zapisywany w trybie tylko do zapisu.
Gilles „SO- przestań być zły”
źródło
3

Nie, to nie jest błąd. Jednak nie widzę tego powszechnie stosowanego do plików.

Najczęściej widziałem dostęp tylko do zapisu w katalogach dropbox. Użytkownicy mogą dodawać pliki do katalogu, ale nie widzą, które pliki istnieją.

W przypadku zwykłego pliku tekstowego dostęp tylko do zapisu byłby odpowiedni dla dostępu typu dropbox.

Samo ustawienie dostępu tylko do zapisu nie byłoby strasznie przydatne, ale jego niedopuszczenie skomplikowałoby kod uprawnień.

EDYCJA: Pliki Dropbox raczej nie będą przydatne. Może być jednak przydatny w przypadku dzienników użytkownika innego niż root, ponieważ utrudniłoby to zastąpienie wpisów dziennika. Jeśli potrafisz odczytać plik, o wiele łatwiej jest ustalić, gdzie zapisać wpis dziennika zastępczego. Jednak nie znam nikogo, kto tak konfiguruje swoje dzienniki. Często używa się zdalnego rejestrowania, aby zapobiec lokalnej modyfikacji wpisów w dzienniku.

Ustalenie reguł dopuszczających kombinacje uprawnień może prowadzić do zapobiegania nieprzewidzianym przydatnym uprawnieniom. Wiele kombinacji ma większy sens na poziomie grupy lub świata niż na poziomie właściciela. Wszelkie próby uniemożliwienia dostępu przez właściciela można łatwo pominąć. Mogą jednak być przydatne do wymuszenia trzeźwej sekundy.

BillThor
źródło
„Plik dropbox” nie miałby właściwie sensu. Można go używać tylko do zapisywania niektórych danych, a nawet jeśli w pewnym momencie zostanie on odczytany, jego zawartość nie wykaże prawdziwego śladu tego, co się z nim dzieje, ponieważ można go było wcześniej usunąć lub usunąć.
rozcietrzewiacz