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/www
chowned na apache
i wprowadzimy chmod 700
go, 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 -l
i 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 chmod
plik 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 600
uprawnienia. 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ć apache
sobie na /var/www
katalog, 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-users
grupy, a następnie chmodding pliki /var/www
do 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 /bin
aby sprawdzić ich uprawnienia. Jak widać, są one własnością root
i 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. /bin
In), 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.
.php
pliki 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.php
Zanim 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 naszegotest
pliku, ale jest to rzadko stosowane.Chcę tylko dodać, że uprawnienie do wykonywania ma różne skuteczne znaczenia dla katalogów:
Dla plików :
W przypadku folderów :
Nie, nie ma osobnego uprawnienia do usuwania katalogów.
(Mam te informacje tutaj .)
źródło
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.
źródło
Aby dać ci przyzwoitą odpowiedź na pytanie 2, przynajmniej oto tabela podsumowująca pokazująca, co możesz / czego nie możesz zrobić:
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.
źródło
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?).
źródło