Co robi uprawnienie „wykonaj”?

23

Jestem zszokowany, że nadal nie rozumiem uprawnienia „Execute” w systemie Linux.

Istnieją trzy uprawnienia - czytaj, pisz i wykonuj. Rozumiem, że czytanie i pisanie jest dosłowne, ale co dokładnie wykonuje?

Powiedzmy, że mam example.php z uprawnieniem do wykonywania. Co mogę zrobić example.php?

user45326
źródło

Odpowiedzi:

27

Zasadniczo oznacza to, że możesz powiedzieć systemowi operacyjnemu, aby uruchomił kod w pliku. Na przykład, jeśli plik był wykonywalnym plikiem binarnym, dostęp do zapisu pozwoliłby na jego modyfikację, dostęp do odczytu pozwoliłby na jego przeglądanie, ale bez uprawnień do wykonywania nie można uruchomić programu. W przypadku skryptu jest to trochę bardziej skomplikowane, ponieważ niekoniecznie musisz „uruchomić” program, możesz po prostu odczytać jego zawartość do interpretera, który sam ma execute privelige, ale nie musisz wykonywać uprawnienia do samego skryptu.

Niektóre skrypty w Linuksie są same w sobie wykonywalne, często u góry widać linię

#! / bin / bash lub

#! / bin / python

Ta linia mówi jądru, że plik może zostać wykonany przez wywołanie odpowiedniego programu (a nie tylko tekstu). Wtedy możesz po prostu uruchomić swój skrypt

./scenariusz

zamiast robić

python ./script

bdk
źródło
Co to oznacza dla typów plików nie opartych na tekście, np. .png lub .avi?
iono
1
Zasadniczo to samo, rozszerzenie pliku nie ma znaczenia. Jeśli masz #!/bin/bash na początku twojego .avi plik zostanie wykonany jako bash. Jeśli jest to prawdziwy format avi, prawdopodobnie nie będziesz w stanie go uruchomić, ponieważ interpretowanie go jako poleceń nie będzie miało sensu i zawiedzie.
Mifeet
Jest #! naprawdę interpretowane przez jądro?
masterxilo
16

„execute” umożliwia użytkownikowi wykonywanie plików wykonywalnych. W przypadku katalogów dopuszcza się wejście do katalogu za pomocą polecenia cd.

Phil Rykoff
źródło
Ten dostęp do części katalogu jest ogromny. Nigdy nie zgadłbyś, że to nazwa samego trybu.
user2230470
2

Służy do uruchamiania aplikacji z GUI lub linii poleceń. Dla „normalnego” użycia php (przez serwer WWW) nic to nie zmienia. Dokładnie mówiąc, zależy to od konfiguracji, ale w większości przypadków nie potrzebujesz + x pozwolenia na załadowanie strony php za pomocą przeglądarki.

Do uruchamiania z linii poleceń potrzebujesz:

  • Dodaj #!/usr/bin/php na początku skryptu
  • dodaj uprawnienie + x
  • Twój skrypt musi znajdować się w wykonywalnej ścieżce wyszukiwania (Zmienna środowiskowa $ PATH) lub musisz podać katalog, w którym znajduje się przed nazwą skryptu. Może to być bezwzględna nazwa ścieżki, jak /etc/xdg/foo lub /home/fred/bar, lub katalog względny, jak dir1/prog1 lub ./prog2.
Maciek Sawicki
źródło
1

Ze względów praktycznych uprawnienie do czytania oznacza możliwość wykonania.

Jednak przeciwieństwo nie jest prawdą; istnieje pewna wartość w możliwości udzielenia pozwolenia na wykonanie kodu bez zezwolenia na jego odczytanie.

Adam Lee
źródło
To naprawdę ma sens.
masterxilo