Vốn X trong posix / chmod là gì?


11

Tôi biết những gì ugoa (chủ sở hữu, nhóm, những người khác, tất cả) hoặc rwx (đọc / phải / thực hiện) hoặc 4,2,1 hoặc -, f, d, l, và tôi đã cố gắng để đọc man chmodhiểu một vốn là những gì Xtrong chmodnhưng đã có không một mục cho nó. Sau đó tôi đã đọc bài viết này trong posix / chmod nhưng bị mắc kẹt trong đoạn này:

Chỉ đặt bit thực thi nếu mục tiêu a) là thư mục b) đã có ít nhất một bit thực thi được đặt cho bất kỳ một người dùng, nhóm, người nào khác.

Tôi cũng đọc trong bài viết này đưa ra ví dụ mã này:

chmod -R u=rwX,g=rX,o=rX testdir/

Tôi hiểu rằng có một sự cho phép đệ quy trên testdir/, liên quan đến chủ sở hữu (u), nhóm (g) và những người khác (o) nhưng tôi thừa nhận tôi vẫn bỏ lỡ ý định của thủ đô X.

Có lẽ một cụm từ mô phạm ở đây có thể làm sáng tỏ điều này (lý do chính tôi xuất bản ở đây là vì tôi không tìm thấy phiên SE về điều này).

Cập nhật

Xin lỗi tất cả, tôi đã bỏ lỡ điều đó trong người đàn ông. Tôi không tưởng tượng X sẽ xuất hiện trước danh sách các đối số và tôi nghĩ rằng tìm kiếm trả về x thay vì X, xấu của tôi.

Câu trả lời:


20

Các manpage nói:

chỉ thực hiện / tìm kiếm nếu tệp là một thư mục hoặc đã có quyền thực thi đối với một số người dùng ( X)

POSIX nói:

Các perm biểu tượng X sẽ đại diện cho thực hiện / tìm kiếm phần của các bit chế độ tập tin nếu tập tin là một thư mục hoặc nếu (chưa sửa đổi) bit chế độ tập tin hiện có ít nhất một trong những thực bit (S_IXUSR, S_IXGRP, hoặc S_IXOTH) đề ra. Nó sẽ bị bỏ qua nếu tệp không phải là một thư mục và không có bit thực thi nào được đặt trong các bit chế độ tệp hiện tại.

Đây là cờ cấp phép có điều kiện: chmodxem xét bất cứ thứ gì nó hiện đang xử lý và nếu đó là một thư mục hoặc nếu nó có bất kỳ bit thực thi nào được đặt trong các quyền hiện tại của nó (chủ sở hữu, nhóm hoặc khác), thì nó hoạt động như thể quyền được yêu cầu là x, nếu không thì nó bỏ qua nó Điều kiện được xác minh tại thời điểm chmodáp dụng Xhướng dẫn cụ thể , vì vậy bạn có thể xóa các bit thực thi trong cùng một lần chạy a-x,a=rwXđể chỉ đặt bit thực thi trên các thư mục.

Bạn có thể xem liệu một tập tin có một bit thực thi được thiết lập hay không bằng cách xem phần statđầu ra của truy cập vào một phần của đầu ra, hoặc cột đầu tiên của ls -l. Bit thực thi được đại diện bởi x. -rwxr-xr-xlà phổ biến cho các tệp thực thi và chỉ ra rằng bit thực thi được đặt cho chủ sở hữu, nhóm và người dùng khác; -rw-r--r--là phổ biến cho các tệp khác và chỉ ra rằng bit thực thi không được đặt (nhưng bit đọc được đặt cho mọi người và bit ghi cho chủ sở hữu). Xem Hiểu các quyền UNIX và các thuộc tính của chúng có nhiều chi tiết hơn.

Do đó, trong ví dụ của bạn, u=rwXđặt quyền của chủ sở hữu để đọc và ghi trong mọi trường hợp và đối với các thư mục và tệp thực thi, hãy thực thi; tương tự như vậy đối với nhóm ( g=rX) và khác ( o=rX), đọc và thực thi cho các thư mục và tệp thực thi.

Mục đích của toán tử này là cho phép người dùng cung cấp chmodnhiều loại tệp và thư mục khác nhau và có được các quyền thực thi chính xác (giả sử không có tệp nào có tập bit thực thi không hợp lệ). Nó tránh phải phân biệt giữa các tệp và thư mục (như trong các lệnh truyền thống find . -type f -exec chmod 644 {} +find . -type d -exec chmod 755 {} +lệnh) và cố gắng xử lý các tệp thực thi theo cách hợp lý.

(Lưu ý rằng macOSchmod rõ ràng chỉ hỗ trợ Xcho các +hoạt động.)


Vì vậy, tôi đã nhìn thấy nó và tôi hiểu sai về thuật ngữ "tập bit". là một inode với chủ sở hữu: root và nhóm: root và cấp quyền cho ---, ---, ---một indoe mà không có "bit set"?
Bắc cực

Có, ---------có nghĩa là không có bit nào được đặt. Bạn có thể thấy câu hỏi này hữu ích.
Stephen Kitt

Stephen, tôi nghĩ rằng việc thêm một định nghĩa về thuật ngữ "tập bit thực thi" (tôi sẽ mô tả là ...,...,...) cũng như "tập bit thực thi không hợp lệ" (tôi sẽ mô tả là ---,---,---), khi bắt đầu câu trả lời, có thể giúp làm cho nó thậm chí còn mang tính mô phạm hơn và hạ thấp cơ hội bất cứ ai bỏ lỡ điều đó; Đây là ban đầu tôi đã rơi với điều này.
Bắc cực

@Arcticooling, tốt, các quyền được mã hóa theo bit, và ví dụ trang man GNU cho chmodbiết nó "thay đổi các bit chế độ tệp của mỗi tệp đã cho" v.v. Vì vậy, trong ngữ cảnh, "bit (s)" thực thi tham chiếu ba quyền (ugo) có thể +x. Trong mắt tôi, "không có bit set" nghe có vẻ kỳ quặc, vì nó không đề cập đến bất kỳ bối cảnh nào.
ilkkachu

@Arcticooling Tôi đã thêm một đoạn, nếu chỉ để làm rõ sự hiểu biết của bạn một cách hy vọng - thì bộ thực thi bit cài đặt như là ...,...,...thực sự không có ý nghĩa gì, cũng không phải là không hợp lệ thực hiện bit set (điều gì không hợp lệ về nó?).
Stephen Kitt

5

Từ man chmod:

Các chữ cái rwxXst chọn bit chế độ tệp cho người dùng bị ảnh hưởng: read (r), write (w), thực thi (hoặc tìm kiếm thư mục) (x), chỉ thực hiện / tìm kiếm nếu tệp là thư mục hoặc đã có quyền thực thi đối với một số người dùng (X), đặt ID người dùng hoặc nhóm trên thực thi, cờ xóa bị hạn chế hoặc bit dính (t).

(nhấn mạnh của tôi).

Tuy nhiên, điều đó không làm rõ nó rất nhiều. Bài viết này có hai quy tắc làm rõ những gì nó làm:


Ví dụ: chúng tôi ban hành lệnh chmod sau trên một thư mục:

# chmod -R u=rwX,g=rX,o=rX testdir/`  

Sử dụng chữ hoa X, lệnh trên đặt thuộc tính thực thi theo hai quy tắc sau:

  1. Nếu tệp là một thư mục, thì nó đặt thuộc tính thực thi cho chủ sở hữu, nhóm và thế giới, có nghĩa là họ có thể nhập thư mục này.

  2. Nếu tệp là một tệp thông thường, thì nó sẽ thêm thuộc tính thực thi vào các quyền của nó, nếu tệp đã có một số bit thực thi được đặt. Nếu tập tin không có tập bit thực thi, sẽ không có tập tin nào được thêm vào.

Sử dụng chữ thường x sẽ không thể đạt được kết quả này chỉ với một lệnh.


Hy vọng rằng sẽ làm rõ các sử dụng của X .


1

Xin đừng đưa ra câu trả lời này. Đó chỉ là những gì tôi hiểu từ câu trả lời của Stephen Kitt ở trên, mà tôi đã chấp nhận là chính xác.


1) Viết hoa X như đã a=rwXnói: Tất cả các thư mục được tìm thấy sẽ nhận được x và tất cả các tệp thông thường được tìm thấy có ít nhất 1 bit thực thi trong một trong ba nhóm quyền, cũng sẽ nhận được x trong cả ba nhóm.

2) Kết hợp của a-x(đảm bảo rằng tất cả các tệp bị mất bit thực thi) sau đó a=rwXnói: Nhận các bit đọc và ghi ở mọi nơi và một bit thực hiện chỉ trên các thư mục.

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.