Việc thực thi quyền của Viking làm gì?


31

Tôi bị sốc khi tôi vẫn không hiểu quyền "Thực thi" trong Linux.

Có ba quyền - đọc, viết và thực thi. Tôi hiểu rằng đọc và viết theo nghĩa đen, nhưng thực thi chính xác làm gì?

Hãy nói rằng tôi có example.phpquyền thực thi. Tôi có thể làm gì với example.php?

Câu trả lời:


32

Về cơ bản nó có nghĩa là bạn có thể yêu cầu hệ điều hành chạy mã trong tệp. Ví dụ: nếu tệp là tệp thực thi nhị phân, quyền truy cập ghi sẽ cho phép bạn sửa đổi tệp, quyền truy cập đọc sẽ cho phép bạn xem tệp, nhưng không có quyền thực thi, bạn sẽ không thể chạy chương trình. Trong trường hợp của một kịch bản, nó phức tạp hơn một chút, bởi vì bạn không nhất thiết phải 'chạy' chương trình, bạn chỉ cần đọc nội dung của nó vào một trình thông dịch, bản thân nó có quyền riêng tư thực thi, nhưng bạn không cần thực thi quyền trên chính kịch bản.

Một số tập lệnh trong Linux tự thực thi, bạn sẽ thường thấy một dòng ở trên cùng như

#! / bin / bash hoặc

#! / bin / trăn

Dòng đó cho kernel biết rằng tập tin có thể được thực thi bằng cách gọi chương trình có liên quan (và không chỉ là văn bản). Sau đó, bạn có thể chạy tập lệnh của bạn như

./kịch bản

thay vì phải làm

trăn ./script


Điều này có nghĩa gì đối với các kiểu tệp không dựa trên văn bản, vd. .pnghay .avi?
iono

1
Về cơ bản giống nhau, phần mở rộng tập tin không thành vấn đề. Nếu bạn có #!/bin/bashở đầu .avitập tin của mình , nó sẽ được thực thi dưới dạng bash. Nếu đó là định dạng avi thực, có lẽ bạn sẽ không thể chạy nó vì giải thích nó là các lệnh sẽ không có ý nghĩa và thất bại.
Mifeet

#!thực sự giải thích bởi hạt nhân?
masterxilo

17

"thực thi" cho phép người dùng thực thi các thực thi. Đối với các thư mục, nó là trợ cấp để vào thư mục bằng lệnh cd.


1
Truy cập vào phần thư mục là rất lớn. Bạn sẽ không bao giờ đoán được rằng chỉ từ tên của chế độ.
Nguyên thủy

2

Đối với mục đích thực tế, cho phép đọc ngụ ý khả năng thực thi.

Tuy nhiên điều ngược lại là không đúng sự thật; có một số giá trị trong khả năng cho phép thực thi mã mà không cho phép đọc nó.


Điều này thực sự có rất nhiều ý nghĩa.
masterxilo

Tôi đã có một sự nhầm lẫn với READ / EXECUTE, và mong đợi câu trả lời như vậy. cảm ơn
T.Todua

2

Đó là để chạy các ứng dụng từ GUI hoặc dòng lệnh. Đối với việc sử dụng php "bình thường" (thông qua máy chủ web), điều đó không thay đổi bất cứ điều gì. Nói chính xác, nó phụ thuộc vào cấu hình, nhưng trong hầu hết các trường hợp phổ biến, bạn không cần quyền + x để cho phép tải trang web php của mình qua trình duyệt.

Để chạy từ dòng lệnh bạn cần:

  • thêm #!/usr/bin/phpvào lúc bắt đầu kịch bản
  • thêm quyền + x
  • tập lệnh của bạn phải nằm trong đường dẫn tìm kiếm thực thi của bạn (biến môi trường $ PATH) hoặc bạn phải chỉ định thư mục chứa nó trước tên tập lệnh của bạn. Đây có thể là một tên đường dẫn tuyệt đối, như /etc/xdg/foohoặc /home/fred/bar, hoặc một thư mục tương đối, như dir1/prog1hoặc ./prog2.
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.