Quyền của tệp .desktop


10

Cần một số làm rõ về các quyền của .desktopcác tập tin. Tôi có thể thấy tất cả các .desktoptệp /usr/share/applications/thuộc sở hữu của root có quyền,

-rw-r--r--

cũng examples.desktop$HOMEthuộc sở hữu của người sử dụng có sự cho phép tương tự. Tất cả những người chạy đúng.

Nhưng khi tôi định tạo một .desktoptệp tùy chỉnh có cùng quyền thì nó sẽ đưa ra thông báo lỗi sau,

Trình khởi chạy
ứng dụng không tin cậy Trình khởi chạy ứng dụng "myapp.desktop" chưa được đánh dấu là đáng tin cậy. Nếu bạn không biết nguồn của tệp này, việc khởi chạy nó có thể không an toàn.

Nhưng việc thêm quyền thực thi là cho phép nó chạy mà không gặp vấn đề gì.

Q: Tại sao các .desktoptệp tùy chỉnh cần phải có +xquyền để chạy hoặc làm thế nào một số .desktoptệp có thể chạy mà không có quyền thực thi? Có thể chạy một .desktoptệp tùy chỉnh mà không có sự cho phép thực hiện?


Liên quan , nhưng không trả lời câu hỏi.
Olli

Câu trả lời:


12

Đây là từ chính sách bảo mật của Ubuntu :

Yêu cầu bit thực thi

  • Các ứng dụng, bao gồm cả máy tính để bàn và trình bao, không được chạy mã thực thi từ các tệp khi cả hai:

    • thiếu bit thực thi
    • nằm trong thư mục nhà của người dùng hoặc thư mục tạm thời.
  • Điều này bao gồm các tệp * .desktop, * .jar và * .exe.

  • Không có gì có thể cung cấp một cách giải quyết để chạy chúng tự động ...

Vì vậy, theo chính sách này, có thể chạy tệp .desktop mà không cần tập bit thực thi. Theo chính sách này, bạn sẽ chỉ phải di chuyển tập tin đó ra khỏi /home//tmp/thư mục và sau đó bạn có thể khởi động nó mà không cần các thiết lập bit thực thi. Đây là trong lý thuyết / theo chính sách.

Trong thực tế, nautilus sẽ cho phép bạn khởi chạy các tệp .desktop mà không cần tập bit thực thi từ các thư mục XDG_DATA_DIR và từ ~/.gnome2/thư mục. Bạn có thể kiểm tra XDG_DATA_DIRS bằng echo $XDG_DATA_DIRSlệnh. Vì vậy, nếu bạn đặt tệp .desktop của mình vào XDG_DATA_DIR hoặc trong ~/.gnome2/bạn sẽ có thể khởi chạy tệp từ nautilus mà không cần thiết lập bit thực thi. Ít nhất là vào ngày 12.04 nó hoạt động như thế. Làm thế nào điều này phù hợp với chính sách nói trên mà tôi không biết.


Đối với examples.desktopcâu hỏi được đề cập trong câu hỏi: Tệp .desktop đó là một loại tệp .desktop khác. Đó là một "Liên kết", nó không muốn thực thi bất cứ điều gì, về cơ bản nó hoạt động như một liên kết tượng trưng. Những loại tập tin .desktop hoạt động ở mọi nơi.


1
Cảm ơn câu trả lời của bạn. Nó bao gồm hầu hết tất cả những gì tôi muốn biết. Chỉ hai điều nữa thôi. [i] Tôi cũng đang sử dụng 12.04, nhưng một .desktoptệp bên ngoài /homekhông có bit thực thi không hoạt động với tôi. [ii] Tôi có thể thêm bất kỳ thư mục $XDG_DATA_DIRSnào không?, tôi đã thử export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/nhưng không thành công.
souravc

@souravc [i] Như tôi đã nói, đó là theo chính sách mà nó sẽ hoạt động bên ngoài /home/thư mục. Như tôi đã viết, trong thực tế nautilus hành xử khác nhau và thậm chí chạy một số .desktop từ thư mục chính ( ~/.gnome2/) nhưng không chạy từ mọi thư mục bên ngoài / home, chỉ từ XDG_DATA_DIRS. Vì vậy, tôi nghĩ rằng hành vi của nautilus không hoàn toàn phù hợp với chính sách. [ii] Về cách thêm thư mục, hãy xem bài đăng trên blog này .
chim ưng

1

Bạn có thể tạo và đặt .desktoptệp vào ~/.local/share/applications- sau đó nó sẽ xuất hiện trong dấu gạch ngang / menu / bất cứ thứ gì.

Nó sẽ cần phải trông giống như thế này:

[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

Điều này là do các tệp trong ~/.local/share/applicationshoạt động giống như các tệp trong /usr/share/applications- cả hai tệp trên hầu hết các hệ thống đều hoạt động tốt mà không có quyền thực thi, cũng như khi được sở hữu bởi người dùng không phải là root. Điều này tuy nhiên không phải lúc nào cũng có vẻ là trường hợp.

Để thực sự có được tệp được nhấp vào và sau đó mở, nó sẽ cần các quyền thực thi.


1
@ downvoter plz để lại bình luận cho những lời chỉ trích mang tính xây dựng. @wilf Tôi nghĩ rằng câu trả lời của bạn không trả lời chính xác câu hỏi của tôi. Tôi không thể chạy một .desktoptập tin từ ~/.local/share/applicationskhi nó có quyền thực thi.
souravc

Tôi biết đây không phải là một câu trả lời như vậy. Tôi chưa bao giờ gặp sự cố, tôi chỉ tạo các tệp văn bản trong Gedit với nội dung tương tự như trên, đăng xuất và đăng nhập, và nó hoạt động tốt .... Tôi đã làm tốt điều này trên Ubuntu 10, 12.04, 13.04, 13.10 và bất kỳ phiên bản Fedora kể từ khoảng Fedora 12. Một số trên Debian cũng vậy. Kiểm tra cho thấy họ hầu hết có quyền -rw-r--r--....
Wilf

0

Có vẻ như không, bạn không thể sửa đổi Gnome. Có một báo cáo lỗi launchpad , được xác nhận, nhưng không được xử lý, về vấn đề chính xác này.

Khi bạn tạo một .desktoptệp tùy chỉnh /usr/share/applications/với chủ sở hữu gốc, nó không yêu cầu quyền thực thi.


Báo cáo lỗi này thực sự cũ (trên Ubuntu 10.04). Tôi không bắt gặp bất kỳ báo cáo nào như vậy cho Ubuntu 12.04. Bạn đã tìm thấy gì chưa?
souravc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.