Polecenie chmod +x test to jeden z najczęściej wykorzystywanych sposobów na nadanie plikowi wykonywalności w systemach Linux i Unix. Chodzi tutaj o to, że przy użyciu tej komendy bezpośrednio ustawiasz atrybut wykonywalności (execute) dla wszystkich użytkowników, czyli właściciela, grupy oraz pozostałych. Bardzo często używa się tego polecenia, gdy na przykład pobierzesz jakiś skrypt (np. bashowy albo Pythonowy), który domyślnie nie ma uprawnień do uruchamiania. Dopiero po wpisaniu chmod +x możesz go odpalić jako ./test. W codziennej administracji systemami to takie must-have narzędzie. Zwróć uwagę, że +x nie modyfikuje żadnych innych uprawnień – nie dodaje praw do odczytu ani zapisu, więc jeśli plik nie może być odczytany przez danego użytkownika, to samo +x nie wystarczy. Moim zdaniem to bardzo elegancki sposób na kontrolę, kto może wywołać plik jako program. W praktyce spotkasz się też czasem z chmod 755, który nadaje prawa wykonywania i odczytu właścicielowi, grupie i innym, ale +x to taki szybki skrót, kiedy chcesz tylko pozwolić na uruchomienie bez zmiany innych uprawnień. Dobrą praktyką jest nadawanie wykonywalności tylko wtedy, gdy rzeczywiście plik ma być programem lub skryptem, żeby niepotrzebnie nie otwierać ryzyka przypadkowego uruchomienia. To podejście jest mocno zakorzenione w filozofii bezpieczeństwa Linuksa.
Zagadnienie uprawnień w systemach plików Linux i Unix bywa mylące, bo każda literka i znak w poleceniu chmod ma znaczenie. Wiele osób zakłada, że +x zmienia coś więcej niż tylko prawo wykonywania. To jednak nieprawda – +x dokładnie oznacza tylko dodanie prawa uruchomienia dla wszystkich (czyli właściciela, grupy i innych). To nie ma nic wspólnego z dostępem do odczytu (czyli +r), dlatego nie sprawi, że właściciel nagle może czytać plik, jeśli wcześniej nie miał takiego prawa. Tak samo, jeśli ktoś myśli o zapisie – żadne +x nie odbiera nikomu prawa do zapisu, bo od tego jest -w. Często spotykam się z mylną opinią, że chmod +x pozwala zarządzać pełnymi uprawnieniami do katalogów, ale katalogi rządzą się swoimi prawami. Aby katalog był „pełnokontrolny”, potrzebujesz zupełnie innych uprawnień (na przykład chmod 777 katalog). Błąd wynika też z niezrozumienia, że polecenie działa na konkretny plik, a nie na jego zawartość czy całą strukturę katalogu. Wreszcie, polecenie chmod +x test nie nadaje uprawnień wykonania tylko właścicielowi, ale każdemu użytkownikowi, o ile nie ograniczają tego inne ustawienia systemowe, typu ACL albo SELinux. W praktyce błędy tego typu wynikają z nieodróżniania różnych flag uprawnień i nieczytania dokumentacji. Najlepszą metodą jest zawsze precyzyjnie sprawdzać, co dany parametr zmienia, zanim się go użyje – zwłaszcza jeśli pracujesz na produkcyjnych serwerach, gdzie każde nieprawidłowe uprawnienie może skończyć się poważnym naruszeniem bezpieczeństwa albo dostępności aplikacji. Warto pamiętać, że uprawnienia najlepiej nadawać możliwie najmniejsze, zgodnie z zasadą najmniejszych uprawnień, a chmod +x to tylko jedno z narzędzi do osiągnięcia tego celu.