Oto kolejny miniwpis rozwiązujący drobny (acz dla niektórych uciążliwy) problem z systemami na bazie Linuksa.

Sytuacja jest taka: korzystam z przeglądarki plików na swoim linuksowym systemie. U mnie to Mint MATE, czasem Mint Cinnamon. Ale to raczej bez znaczenia.
Wszystko ładnie działa. Mogę bezproblemowo klikać i otwierać różne pliki: dokumenty, filmy, muzykę.

W którymś momencie napotykam jakiś plik tekstowy. Może instrukcję z popularnym tytułem README? Może jakieś luźne notatki w formacie .txt? Obojętne.
Po kliknięciu, zamiast prostej zawartości pliku, pojawia się taki komunikat:

Zrzut ekranu komunikatu mówiącego: 'Uruchomić plik X czy wyświetlić jego zawartość? Plik X jest wykonywalnym plikiem tekstowym'.

Uruchomić plik X czy wyświetlić jego zawartość?
X jest wykonywalnym plikiem tekstowym.

Wersja angielska

Do you want to run {nazwa_pliku} or display its contents?
{Nazwa_pliku} is an executable text file.

Jakie uruchamianie, o co chodzi? Klikam Wyświetl i zawartość pliku pokazuje się w domyślnym edytorze.

Na krótszą metą wystarczy zwykłe wybieranie tej opcji. Ale na dłuższą może to być irytujące, bo komunikat pojawia się po każdym kliknięciu pliku.
Z czego wynika i jak się go pozbyć?

Spis treści

Parę dziwnych wzorców

Gdybym trochę pogrzebał, to doszedłbym może do wniosku, że sprawa nie dotyczy dokumentów (jak DOCX czy PDF) ani plików multimedialnych (jak MP4). Takie pliki po kliknięciu otwierają się od razu.
Okno z pytaniem pojawia się jedynie przy próbie otwarcia prostych plików tekstowych.

Szeroko pojętych. Mogą do nich należeć wspomniane pliki .txt, ale również „kod źródłowy” wpisów na bloga w formacie .markdown. Albo kod miażdżącej większości programów komputerowych.

Gdybym pokopał jeszcze bardziej, to być może natrafiłbym na wspólny mianownik – wszystkie pliki, przy których wyświetla się komunikat, były kiedyś skopiowane z pendrive’a.

Prawdziwa przyczyna

Skąd te dziwne prawidłowości? Nie będę dłużej trzymał w niepewności – problem wynika z różnych systemów plików na Linuksie i na niektórych pendrive’ach.

Choć pliki w oczach użytkowników wyglądają tak samo – są wyświetlane w tym samym interfejsie przeglądarki plików, mają te same ikony – w rzeczywistości mogą pod nimi stać całkiem różne fundamenty.

System plików na Linuksie (zwykle EXT) obsługuje dodatkowe dane na temat uprawnień przypisane do plików. Ten na niektórych nośnikach (np. FAT albo NTFS) ich nie wspiera.

Skopiowanie plików z pendrive’a wiąże się z przejściem między tymi dwoma światami: od nieznającego uprawnień do znającego.
Nie dostając informacji o uprawnieniach, Linux sam ją uzupełnia. Domyślnie włącza plikom skopiowanym z pendrive’a jedno z takich uprawnień – wykonywalność. Możliwość ich uruchamiania jako programów.

Ciekawostka

Nie ma tu jednak żelaznej reguły „pendrive = dodana wykonywalność”.
Mam dwa pendrive’y z tej samej firmy ISY, kupione w popularnym sklepie AGD. Jeden z nich przerobiłem na nośnik systemu PorteuX, drugiego nie ruszałem.
Widać różnicę. Do plików ze zwykłego jest dodawana wykonywalność, do tych z systemowego nie.

Zrzut ekranu konsoli pokazujący informacje na temat dwóch nośników USB o tej samej nazwie ISY. Widać, że mają dwa różne systemy plików.
Może w takim razie sposobem na dziwne komunikaty byłoby przerobienie swoich pendrive'ów na instalacyjne? Żarcik taki. Choć PorteuX naprawdę jest ciekawy.

A dlaczego komunikat pojawia się tylko przy plikach tekstowych?
To już kwestia działania samej przeglądarki plików – jej twórcy wiedzą, że czasem takie pliki to skrypty, które ktoś mógłby chcieć uruchomić kliknięciem. Dlatego przy nich dają dwie możliwości, przy innych plikach nie.

Gdyby jednak użyć w konsoli polecenia pokazującego informacje o plikach, to okazałoby się, że wykonywalność jest włączona dla wszystkich plików z pendrive’a. Również grzecznych obrazków czy PDF-ów:

Zrzut ekranu pokazujący wynik programu ls. Wyróżniono literkę x przy nazwach plików PDF i PNG, wskazującą na ich wykonywalność

Rozwiązanie doraźne – ukrycie komunikatu

Żeby komunikat z pytaniem przestał się pojawiać, można:

  • uruchomić przeglądarkę plików,
  • wybrać z górnego paska zakładkę Edycja,
  • wybrać opcję Preferencje (powinna być na dole),
  • w wyświetlonym oknie kliknąć zakładkę Zachowanie u góry,
  • Pod nagłówkiem Wykonywalne pliki tekstowe zaznaczyć opcję, żeby wyświetlało je po kliknięciu.

Kolaż pokazujący krok po kroku elementy, jakie należy kliknąć, żeby zawsze domyślnie wyświetlać pliki

Zrzut ekranu dla wariantu Mint MATE, ale dla Cinnamona jest praktycznie to samo (tyle że zakładki są w kolumnie po lewej zamiast u góry).

Szybko, łatwo, przez klikaninę. Komunikaty przestaną nas niepokoić.

Wyłączanie wykonywalności pliku

Sposób graficzny nie rozwiązuje problemu, tylko go ukrywa – sprawia, że irytujący komunikat przestaje się pojawiać.

Ale same pliki nadal będą miały w uprawnieniach włączoną wykonywalność. Będą w oczach Linuksów czymś innym niż wcześniej. Może to nie mieć znaczenia, ale może też odbić się czkawką, zwłaszcza jeśli je wyślemy gdzieś w świat.

Jak zaradzić takim niechcianym różnicom i wyłączyć wykonywalność? Tak naprawdę, również za kulisami?

Przy pojedynczych plikach rozwiązanie jest na szczęście bardzo proste. Wystarczy:

  • kliknąć plik prawym przyciskiem myszy,
  • wybrać z rozwijanego menu opcję Właściwości (zapewne na dole),
  • w oknie, które się otworzy, wybrać u góry zakładkę Uprawnienia,
  • odhaczyć u dołu opcję odpowiedzialną za wykonywalność.

Kolaż pokazujący krok po krokuopcje, jake należy kliknąć, żeby wyłączyć wykonywalność konkretnego pliku

Ale uwaga – nie każdy Linux pozwala kontrolować uprawnienia przez takie menu. Jeśli nigdzie nie widać pstryczków, to przydatniejszy może się okazać sposób konsolowy.

W tym celu należy uruchomić konsolę w tym samym folderze co plik (na Mincie i paru innych: zakładka Plik z górnego paska, potem Otwórz w terminalu). Gdy konsola się pojawi, trzeba w nią wpisać:

chmod -x PLIK

Programik chmod odpowiada za sterowanie uprawnieniami plików.
Opcja -x każe mu wyłączyć wykonywalność. Zaś zamiast słowa PLIK ma być nazwa (albo ścieżka) tego naszego, przy którym wyświetla się komunikat.

Masowe wyłączenie wykonywalności

Kiedy plików z niechcianą wykonywalnością jest wiele – zwłaszcza rozrzuconych po zagnieżdżonych w sobie folderach – to nie ma sensu gmerać w ustawieniach każdego z nich z osobna. Przydałaby się szybka opcja, która wyłączy wszystko naraz.

Nie znalazłem póki co informacji o domyślnie zainstalowanym, graficznym interfejsie do takich zmian (może pomysł do podsunięcia opiekunom Linuksów?).
Jest za to takie przydatne polecenie konsolowe, którego należy użyć na folderze nadrzędnym z problematycznymi plikami:

chmod -R -x+X FOLDER
  • -R oznacza, że program powinien odwiedzać kolejno podfoldery zawarte w tym wskazanym (a także ich podfoldery itd.), aż odwiedzi absolutnie wszystko.
  • -x+X wyłącza wykonywalność plików, ale włącza ją dla folderów.

    Ta druga rzecz jest istotna, bo w przypadku folderów bez tej opcji nie byłoby możliwości zaglądania do zawartych w nich plików.

  • FOLDER odnosi się do folderu, w którym znajdują się pliki z niechcianą wykonywalnością.

    Gdybyśmy chcieli użyć komendy w tym samym folderze, w którym jesteśmy, to można zamiast nazwy folderu wpisać pojedynczą kropkę (.).

Podsumowanie

Komunikaty dotyczące wykonywalności plików na Linuksie pojawiają się w dość szczególnych warunkach, na które nie każda osoba się natknie. Dotyczą zwykle kopiowania plików tekstowych z nośnika o innym systemie plików.

Jeśli już się trafią, to bywają irytujące, bo pojawiają się przy każdej próbie interakcji z plikami.

Na szczęście rozwiązania są bardzo proste: można albo ukryć komunikaty na poziomie przeglądarki, albo na różne sposoby wyłączyć wykonywalność plików. Wszystkie te rzeczy, za wyjątkiem masowego wyłączenia, można zrobić przez czytelny graficzny interfejs.

To kolejna z drobnych spraw, które mogą nieco uwierać osoby przechodzące na Linuksa. Mam nadzieję, że ten poradnik pozwoli wygładzić zadziora i skuteczniej cieszyć się tym, co w Linuksie dobre :sunglasses: