Kim są „inni” w uprawnieniach Linuksa i co oznacza „wykonać”?

13

Nie mogłem znaleźć odpowiedzi na te trzy pytania:

  • Kim są „inni”, jeśli dajemy wszystkie usługi na naszym serwerze użytkownikowi, „inni” nie istnieją, prawda? Na przykład, jeśli umieścimy Apache dla użytkownika i ustawimy /var/wwwchowned na apachei wprowadzimy chmod 700go, powinien działać, prawda?

  • Jaka jest różnica między „wykonaniem” a „odczytaniem”?

  • Jakie są domyślne uprawnienia do plików dla całego systemu po czystej instalacji (np. W Ubuntu)?

randomKek
źródło

Odpowiedzi:

16

Kim są „inni”, jeśli dajemy wszystkie usługi na naszym serwerze użytkownikowi, „inni” nie istnieją, prawda? Na przykład, jeśli umieścimy Apache dla użytkownika i ustawimy /var/wwwchowned na apachei wprowadzimy chmod 700go, powinien działać, prawda?

Oto, jak działają uprawnienia, wyjaśnione w bardzo krótki sposób:

  • Pierwsza cyfra jest dla rzeczywistego właściciela pliku (sprawdź kto posiadanie plik ls -li modyfikować je chown)

  • Druga cyfra jest dla grupy pliku (choć właściciel pliku nie musi być koniecznie w tej samej grupie, która jest właścicielem pliku)

  • Trzecia cyfra jest ktoś inny, to znaczy nie właścicielowi pliku i nie wszyscy w grupie.

Jeśli więc masz chmodplik do 700 i jest on własnością apache, nawet „normalny” użytkownik nie będzie mógł go odczytać, zapisać ani wykonać. Jest to bardzo restrykcyjne i potrzebne tylko w rzadkich przypadkach - na przykład, gdy chcesz zabezpieczyć swój prywatny klucz SSH, dostaje on 600uprawnienia. W przypadku Apache może to nawet powodować inne problemy, poza tym, że przy normalnym koncie użytkownika nie będzie już można edytować żadnych plików /var/www.

Ogólnie rzecz biorąc, nie powinno być potrzeby usuwania uprawnień do odczytu ( x00) dla innych.

Możesz pozwolić apachesobie na /var/wwwkatalog, ale może z 644(tylko do odczytu dla innych). Innym podejściem jest stosowanie często dodając własne użytkownika i użytkownik Apache do nowej www-usersgrupy, a następnie chmodding pliki /var/wwwdo 775. W ten sposób zarówno Ty, jak i Apache możecie pisać do plików. Zobacz tutaj, aby uzyskać więcej informacji: uprawnienia grupy dla apache


Jaka jest różnica między „wykonaniem” a „odczytaniem”?

Pliki wykonywalne mogą być uruchamiane bezpośrednio przez użytkownika - bezpośrednio z powłoki. Aby to zademonstrować, napiszmy krótki plik i nazwijmy go „testem”. Dodaj następującą treść:

echo "I am executable"

Zapisz plik. Teraz w swojej powłoce spróbuj wejść ./test. Pojawi się błąd „ -bash: ./test: Odmowa uprawnień ”. Jest tak, ponieważ domyślnie nowo utworzone pliki nie mają uprawnień do wykonywania. Jeśli dodasz uprawnienie do wykonywania, będzie działać.

$ chmod +x test
$ ./test
I am executable

Teraz był to tylko skrypt testowy, ale zazwyczaj wszystkie pliki binarne (takie jak skompilowane programy) również potrzebują zestawu uprawnień do wykonywania, więc można faktycznie uruchomić i zrobić coś z nimi, a nie tylko czytać.

Są to na przykład najczęściej występujące programy systemowe /bin. Uruchom, ls -l /binaby sprawdzić ich uprawnienia. Jak widać, są one własnością rooti nie możesz ich zmienić, ale zawsze możesz je wykonać.

Jest to więc również funkcja bezpieczeństwa, ponieważ dla niektórych użytkowników można ograniczyć wykonywanie niektórych skryptów i plików binarnych.

Aby dowiedzieć się więcej na temat uprawnień uniksowych, przeczytaj artykuł w Wikipedii . Podstawowe uprawnienia znane jako „odczyt-zapis-wykonanie” istnieją od dawna, ale są tylko częścią tego, co nazywacie listami kontroli dostępu - które oferują znacznie więcej funkcji niż to.


Jakie są domyślne uprawnienia do plików dla całego systemu po czystej instalacji (np. W Ubuntu)?

Różnią się w zależności od katalogu i właściciela. Niektóre pliki i katalogi są zastrzeżone przez system i są własnością root. W większości przypadków możesz je jednak odczytać na zwykłym koncie użytkownika.

Inne katalogi, takie jak folder domowy, oczywiście należą do użytkownika. Może mieć sens odmawianie uprawnień do odczytu innym użytkownikom na komputerze, jeśli jest on współużytkowany przez wiele osób - w końcu nie chcesz narażać swoich prywatnych rzeczy.

Wreszcie, niektóre pliki są domyślnie wykonywalne (np. /binIn), ale inne nie (np. Pliki konfiguracyjne w /etc).

Filesystem Hierarchy Standard określa jego wykorzystania dla katalogów znajdujących się w systemach Linux. Możesz prawie „odgadnąć”, jakie powinny być uprawnienia na podstawie tego, co chcesz zrobić z katalogiem.

slhck
źródło
Dzięki, naprawdę bardzo mi pomogłeś! Nie mogę wam wystarczająco podziękować, jeszcze jedno pytanie, gdzie jest granica między „plikiem” a „plikiem wykonywalnym”, na przykład czy pliki PHP są wykonywane lub odczytywane przez Apache? Jeszcze raz wielkie dzięki!
randomKek
.phppliki zwykle nie są wykonywalne. Mówi się po prostu, że Apache odczytuje je tylko wtedy, gdy wskażesz na przykład przeglądarkę. http://example.com/file.phpZanim Apache będzie w stanie wyświetlić dane wyjściowe, musi zostać zinterpretowany przez instalację PHP, ale Apache się tym zajmuje. Państwo może teoretycznie zrobić plik wykonywalny PHP i uruchomić go jak skryptu - w tym samym duchu, jak to zrobiliśmy z naszego testpliku, ale jest to rzadko stosowane.
slhck
5

Chcę tylko dodać, że uprawnienie do wykonywania ma różne skuteczne znaczenia dla katalogów:

Dla plików :

  • Odczyt: jeśli zawartość pliku można odczytać
  • Zapis: jeśli użytkownik lub proces może zapisać do pliku (zmień jego zawartość)
  • Wykonaj: jeśli plik można wykonać

W przypadku folderów :

  • Przeczytaj: Jeśli można uzyskać listę katalogów
  • Napisz: Jeśli użytkownik lub proces może w jakiś sposób zmienić zawartość katalogu: utwórz nowe lub usuń istniejące pliki w katalogu lub zmień nazwę plików.
  • Wykonaj: Jeśli użytkownik lub proces może uzyskać dostęp do katalogu, to znaczy przejdź do niego (ustaw go jako bieżący katalog roboczy)

Nie, nie ma osobnego uprawnienia do usuwania katalogów.

(Mam te informacje tutaj .)

LawrenceC
źródło
0

Nie jestem ekspertem od Linuksa, ale mimo to próbuję odpowiedzieć.

Każda pozycja systemu plików ma powiązanego użytkownika i grupę. Uprawnienia użytkownika są obsługiwane przez flagi „użytkownika”. Uprawnienia użytkowników należących do tej samej grupy są obsługiwane przez flagi „grupy”. Wszystkich innych użytkowników obsługuje flaga „innych”.

„czytać” oznacza, co mówi. „Wykonaj” oznacza, że ​​możesz uruchomić plik (np. polecenie) lub że możesz wyświetlić katalog.

Jeśli chodzi o domyślne uprawnienie, nie jestem pewien. Myślę, że można go jakoś skonfigurować i dlatego może być inny dla każdego użytkownika.

Mike L.
źródło
0

Aby dać ci przyzwoitą odpowiedź na pytanie 2, przynajmniej oto tabela podsumowująca pokazująca, co możesz / czego nie możesz zrobić:

+--------------------------------------------------+
| Execute Yes (./file.sh) | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute Yes (./file.sh) | Read No (ERROR)        |
|--------------------------------------------------|
| Execute No (ERROR)      | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute No (ERROR)      | Read No (ERROR)        |
+--------------------------------------------------+

Ważne jest, aby pamiętać, że to nie USER wczytuje plik do pamięci w celu jego wykonania, to KERNEL robi to w imieniu UŻYTKOWNIKA.

nowy123456
źródło
0

Może być trudne, jeśli chcesz wykluczyć wszystkie inne. Spójrz na tę listę z mojego pliku / etc / passwd (uprawnienia i co nie zostało usunięte dla przejrzystości):

root daemon bin sys synchronizacja gry człowiek lp mail aktualności uucp proxy www-lista kopii zapasowych irc gnats libuuid syslog messagebus usbmux haldaemon nikt

{to jestem ja, a poniżej są rzeczy, które zainstalowałem, przede wszystkim przyszedł z systemem}

avahi mysql puls rtkit saned timididiwiki didiwiki

Na przykład usuń uprawnienia z lp lub uucp, a przerwiesz drukowanie. usuń uprawnienia z bin, sys lub demona i prawdopodobnie wiele rzeczy się zepsuje. IRC, gry, poczta, wiadomości i kopie zapasowe można prawdopodobnie bezpiecznie usunąć (chyba że używasz ich przez system, a nie przeglądarkę). resztę pozostawiam twoim umiejętnościom wyszukiwania.

Jest to jednak linux ubuntu / bodhi, a inne systemy mogą mieć mniej dodatków. wszystkie te inne mają jednak zapobiegać konieczności uruchamiania wszystkiego jako root. wyobrażam sobie, że możliwe jest stworzenie systemu, w którym każdy plik może być odczytywany / zapisywany / wykonywany tylko przez jednego użytkownika systemu (bar root), ale nie jestem pewien, czy został wypróbowany.

Wykonaj to uprawnienie do uruchomienia kodu. Odczyt jest uprawnieniem tylko do przeglądania (i kopiowania?).

conspiritech
źródło