Zezwolenie na plik .desktop

10

Potrzebujesz wyjaśnienia na temat uprawnień do .desktopplików. Widzę, że wszystkie .desktoppliki /usr/share/applications/należące do roota mają uprawnienia,

-rw-r--r--

również examples.desktopw $HOMEposiadaniu użytkownika ma to samo uprawnienie. Wszystkie działają poprawnie.

Ale kiedy zamierzam utworzyć niestandardowy .desktopplik posiadający to samo uprawnienie, wyświetla następujący komunikat o błędzie:

Niezaufany program uruchamiający aplikację
Program uruchamiający „myapp.desktop” nie został oznaczony jako zaufany. Jeśli nie znasz źródła tego pliku, uruchomienie go może być niebezpieczne.

Ale dodanie uprawnienia do wykonywania pozwala na uruchomienie go bez żadnych problemów.

P: Dlaczego .desktoppliki niestandardowe muszą mieć +xuprawnienia do uruchamiania lub jak niektóre .desktoppliki mogą działać bez pozwolenia na wykonanie? Czy można uruchomić .desktopplik niestandardowy bez pozwolenia na wykonanie?

souravc
źródło
Powiązane , ale nie odpowiada na pytanie.
Olli

Odpowiedzi:

12

Wynika to z polityki bezpieczeństwa Ubuntu :

Wymagany bit uprawnień do wykonania

  • Aplikacje, w tym komputery stacjonarne i powłoki, nie mogą uruchamiać kodu wykonywalnego z plików, gdy oba są:

    • brakuje bitu wykonywalnego
    • znajduje się w katalogu domowym użytkownika lub katalogu tymczasowym.
  • Dotyczy to plików * .desktop, * .jar i * .exe.

  • Nic nie może zapewnić obejścia ich automatycznego uruchamiania ...

Tak więc, zgodnie z tymi zasadami, powinno być możliwe uruchomienie pliku .desktop bez zestawu bitów wykonywalnych. Według tej zasady trzeba tylko przenieść ten plik na zewnątrz od /home/i /tmp/katalogów, a następnie można go uruchomić bez możliwości uruchamiania programów. Jest to teoretycznie / zgodnie z polityką.

W praktyce nautilus pozwala na uruchamianie plików .desktop bez zestawu bitów wykonywalnych z katalogów XDG_DATA_DIR iz ~/.gnome2/katalogu. Możesz sprawdzić XDG_DATA_DIRS za pomocą echo $XDG_DATA_DIRSpolecenia. Więc jeśli umieścisz plik .desktop w XDG_DATA_DIR lub w ~/.gnome2/, będziesz mógł uruchomić go z Nautilusa bez ustawionego bitu wykonywalnego. Przynajmniej 12.04 tak to działa. Jak to jest zgodne z wyżej wymienionymi zasadami, których nie znam.


Dla examples.desktopwspomnianego w pytaniu: Ten plik .desktop jest innym rodzajem pliku .desktop. Jest to „Link”, nie chce niczego wykonywać, działa w zasadzie jako dowiązanie symboliczne. Tego rodzaju pliki .desktop działają wszędzie.

sokolnik
źródło
1
Dzięki za odpowiedź. Obejmuje prawie wszystko, co chciałem wiedzieć. Jeszcze tylko dwie rzeczy. [i] Używam również 12.04, ale .desktopplik na zewnątrz /homebez bitu wykonywalnego nie działał dla mnie. [ii] Czy mogę dodać dowolny folder $XDG_DATA_DIRS? Próbowałem export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/bezskutecznie.
souravc
@souravc [i] Jak powiedziałem, zgodnie z polityką powinien on działać poza /home/katalogiem. Jak napisałem, w nautilus zachowuje się inaczej, a nawet uruchamia .desktop z katalogu domowego ( ~/.gnome2/), ale nie uruchamia się z każdego katalogu poza / home, tylko z XDG_DATA_DIRS. Myślę więc, że zachowanie nautilusa nie jest całkowicie zgodne z polityką. [ii] Jak dodać katalog, sprawdź ten post na blogu .
sokolnik
1

Możesz utworzyć i umieścić .desktopplik ~/.local/share/applications- wtedy pojawi się on w myślniku / menu / czymkolwiek.

Będzie musiał wyglądać mniej więcej tak:

[Desktop Entry]
Name=Files
Comment=Launch Nemo File manager
Keywords=folder;manager;explore;disk;filesystem;
Exec=nemo %U
Icon=system-file-manager
Terminal=false
Type=Application
StartupNotify=true
OnlyShowIn=GNOME;Unity;
Categories=GNOME;GTK;Utility;Core;
NoDisplay=false

Wynika to z faktu, że istniejące pliki ~/.local/share/applicationsdziałają tak samo, jak pliki, w których /usr/share/applicationsoba - w większości systemów działają dobrze bez uprawnień wykonywalnych, także gdy są własnością użytkownika innego niż root. Nie zawsze jednak tak się dzieje.

Aby plik został kliknięty, a następnie otwarty, potrzebne będą uprawnienia do wykonywania.

Wilf
źródło
1
@ downvoter plz zostaw komentarz do konstruktywnej krytyki. @wilf Myślę, że twoja odpowiedź nie odpowiada dokładnie na moje pytanie. Nie mogłem uruchomić .desktoppliku, ~/.local/share/applicationschyba że ma on uprawnienia do wykonywania.
souravc
Wiem, że to nie jest odpowiedź jako taka. Nigdy nie miałem problemu, właśnie utworzyłem pliki tekstowe w Gedit o podobnej zawartości do powyższej, wylogowania i logowania, i działa dobrze .... Zrobiłem to dobrze na Ubuntu 10, 12.04, 13.04, 13.10 i dowolnych wersja Fedory od około Fedory 12. Niektóre również na Debianie. Sprawdzanie pokazuje, że przeważnie mają uprawnienia -rw-r--r--....
Wilf
0

Wydaje się, że nie, nie można tego zrobić bez modyfikacji GNOME. Istnieje raport błędu startera , który został potwierdzony, ale nie został podjęty żaden konkretny problem.

Po utworzeniu .desktoppliku niestandardowego /usr/share/applications/z właścicielem root nie wymaga on uprawnień do wykonywania.

Olli
źródło
Ten raport o błędach jest naprawdę stary (na Ubuntu 10.04). Nie natknąłem się na żaden taki raport dla Ubuntu 12.04. Znalazłeś coś?
souravc