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.