Skrypty powłoki wymagają wykonania uprawnień do odczytu, ale pliki binarne nie:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Wyświetlanie zawartości pliku i wykonywanie ich to dwie różne rzeczy. W skryptach powłoki te rzeczy są powiązane, ponieważ są „wykonywane” poprzez „odczytanie” ich w nowej powłoce (lub bieżącej), jeśli wybaczysz uproszczenie. Dlatego musisz je przeczytać. Pliki binarne nie używają tego mechanizmu.
W przypadku katalogów uprawnienie do wykonywania jest nieco inne; oznacza to, że możesz robić różne rzeczy na plikach w tym katalogu (np. czytać je lub wykonywać). Powiedzmy, że masz zestaw narzędzi /tools
, dzięki którym ludzie będą mogli korzystać, ale tylko wtedy, gdy będą o nich wiedzieć. chmod 711 /tools
. Następnie elementy wykonywalne /tools
mogą być uruchamiane jawnie (np. /tools/mytool
), Ale ls /tools/
zostaną odrzucone. Podobnie można przechowywać dokumenty, w /private-docs
których można je odczytać tylko wtedy, gdy znane są nazwy plików.
cd
na to.stdio.h
tutaj nagłówka C. Sugeruję usunięcie.ls
i uzupełniania tabulatorów powoduje, że prace konserwacyjne są denerwujące i nie zapewniają żadnych, jeśli w ogóle, faktycznych korzyści bezpieczeństwa. Większość plików, które mogą być zainteresowane atakującym, i tak znajduje się w znanych standardowych lokalizacjach lub ich lokalizacje można odkryć pośrednio na podstawie danych w innych plikach (w przeciwnym razie skąd programy, które legalnie wykorzystują te pliki, wiedziałyby, gdzie je znaleźć?).W Gentoo programom wykonawczym, które są setuid (skonfigurowane do uruchamiania z uprawnieniami właściciela zamiast wywołującego) nie ma dostępu do odczytu (tryb 4711). Ma to na celu dodanie warstwy ochrony przed wykorzystaniem błędów w celu zwiększenia eskalacji uprawnień.
Jeśli nieuprzywilejowany atakujący może odczytać plik setuid i wie o błędzie, który pozwala na atak w stylu powrotu do libc , może on być w stanie użyć zawartości pliku, aby przewidzieć, gdzie prawdopodobnie znajdą się pewne przydatne funkcje lub biblioteki umieszczane w pamięci po wywołaniu programu.
Nowoczesne systemy często zawierają dodatkowe, bardziej skuteczne zabezpieczenia, takie jak ASLR , ale ograniczenia występujące na platformach 32-bitowych mogą ułatwić ich wykorzystanie.
źródło
Wygląda na to, że wartość „tylko wykonuj” nie ma większego zastosowania dla pliku, ale można go użyć, aby uniemożliwić odczytanie zawartości katalogu.
źródło
Aby wykonać skrypt, musisz mieć uprawnienia do odczytu i wykonywania. Czytanie zawartości skryptu pozwala na jego wykonanie, więc musisz być w stanie
read and execute
. W przeciwnym razie nie można uruchomić skryptu bez niego.Bezpieczeństwo. Niektórzy mogą chcieć chronić swoje pliki i powstrzymywać innych przed ich uruchomieniem lub użyciem.
źródło
chmod 000
Uznaje uprawnienia nikomu opróczroot
. Czasami nie musisz wybierać się tak szeroko dla samej ochrony - zależy to od intencji użytkownika. Aby to zrobić, powiedzmy „ponownie chmod” plik z powrotem do czytelnych i zapisywalnych uprawnień, przez które musiałbyś to zrobićroot
. Jeśli nie możesz uzyskać dostępuroot
, będzie to trudne./tools
, dzięki którym ludzie będą mogli korzystać, ale tylko wtedy, gdy będą o nich wiedzieć.chmod 711 /tools
. Rzeczy następnie wykonywalne w/tools
może działać jawnie, alels /tools/
będą odrzucane.