Thư mục có quyền + x, phụ huynh không có nó. Khi nào thì điều này sẽ hữu ích?


11

Nói rằng tôi có một thư mục được gọi foldertrong đường dẫn sau:

my_path = /a/b/c/d/e/folder

và một tập tin được gọi filetrong thư mục đó.

Sau đó, giả sử tôi chạy lệnh này để xóa quyền của nhóm trong / a /

> chmod g-rwx -R /a/

Bây giờ, giả sử tôi cấp +rxquyền cho folder:

> chmod g+rx /a/b/c/d/e/folder

Sau đó, nếu người dùng thứ hai trong nhóm của tôi chạy:

> ls /a/b/c/d/e/folder

hoặc là

> cat /a/b/c/d/e/folder/file 

cô ấy nhận được lỗi cho phép và theo như tôi hiểu thì đây là vì tôi cần cung cấp g+xquyền truy cập cho tất cả các phụ huynh folder. Câu hỏi của tôi là, khi nào hoặc tại sao nó sẽ hữu ích khi cấp +xquyền cho một thư mục mà cha mẹ không có nó?

Cảm ơn


1
Bạn có chắc là bạn đang chạy chmod +grx -R /a/b/c/d/e/folder? Đó là sai, cách đúng để thực hiện nó là:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
Không trả lời trực tiếp câu hỏi này, nhưng nên đọc phần nền: giải thích về quyền truy cập thư mục
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


6

Hầu hết thời gian, nếu bạn muốn chặn truy cập và sử dụng toàn bộ thư mục (bao gồm cả thư mục con của nó), bạn có thể thực hiện bằng cách xóa nó (không đệ quy) -x. Do đó, bạn có thể đã để lại các thư mục con +xmà không gây hại gì.

Giữ các quyền trên thư mục con có thể hữu ích vì một số lý do (đặc biệt là khi -xkhông áp dụng cho mọi người nhưng ít nhất một người dùng vẫn có thể làm gì đó).

Ví dụ: bạn có thể tạm thời chặn việc sử dụng thư mục container, trong khi thực hiện các thay đổi khác đối với các quyền trong cấu trúc thư mục đó, sau đó kích hoạt lại quyền truy cập vào toàn bộ cây trong một thao tác (cung cấp cho +xthư mục cấp cao nhất).

Bạn cũng có thể gặp tình huống tập lệnh (không nhất thiết phải do chủ sở hữu chạy) sao lưu cây thư mục ở vị trí tạm thời (không thể đọc được bởi người khác) và đặt mọi thứ trong tệp tar, giữ nguyên cài đặt quyền của nội dung của thư mục.


7

Bạn cần quyền + x trên bất kỳ và tất cả các thư mục cha để cd hoặc truy cập tệp trong thư mục.

Bạn cần quyền + r trong các thư mục để liệt kê các tệp. Vì vậy, đây là một ví dụ:

bạn có thể đưa ra các lệnh này để có được một số thiết lập công cụ:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Không có quyền:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Chỉ thực hiện

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Bây giờ với đọc:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Phần này có thể hơi khó hiểu, nhưng chỉ cần đọc và không thực thi, bạn thực sự có thể liệt kê các tệp trong thư mục, nhưng không đọc siêu dữ liệu inodes, vì vậy bạn sẽ bị từ chối nhưng vẫn có thể xem danh sách các tệp trong một thư mục như dưới đây ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
Cảm ơn @skrewler. Bạn nói: "Bạn cần quyền + x trên bất kỳ và tất cả các thư mục mẹ để cd hoặc truy cập một tệp trong thư mục", đó là những gì tôi nghĩ. Câu hỏi của tôi sau đó là: tại sao bạn sẽ không bao giờ cho phép + x vào một thư mục có cha mẹ làm không có sự cho phép + x?
Amelio Vazquez-Reina

Điều duy nhất tôi có thể nghĩ đến là nếu bạn muốn tạo một liên kết gắn kết trực tiếp ở đó, bỏ qua các thư mục mẹ với các quyền thực thi. Nếu điều đó không có ý nghĩa tôi sẽ đưa ra một ví dụ.
skrewler

Những điều trên cần phải rõ ràng hơn. Người dùng root có quyền đối với tất cả các thư mục mẹ có thể tạo liên kết gắn kết này để cho phép người dùng khác truy cập vào thư mục. Vì họ có thể đạt / a / b / c / d / e trong đó chỉ có d hoặc e thực thi toàn cầu, bạn có thể tạo liên kết gắn kết từ / mnt / d -> / a / b / c / d / e và người dùng có thể tiếp cận nó bằng cách đi đến điểm gắn kết. Đó là ý tưởng tương tự như tạo một liên kết cứng đến một nơi nào đó sâu trong cây thư mục mà nếu không thì không thể truy cập được. Các liên kết tượng trưng không hoạt động như thế này, mặc dù vậy, một liên kết gắn kết là cần thiết.
skrewler

2

Bạn muốn sử dụng quyền không đệ quy +xtrong tình huống bạn đã đưa ra:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Điều đó giả định rằng người dùng là thành viên của nhóm của mỗi thư mục. Nếu không, bạn phải làm chmod o+xcho bất kỳ thư mục nào như vậy.)

Để người dùng thực hiện ls /a/b/c/d/e/folderthành công, anh ta phải có quyền thực thi trên mọi thư mục trong đường dẫn và đọc quyền folder.

Nếu bạn đã làm

chmod g+x -R /a

nó sẽ hoạt động, nhưng bạn sẽ cấp cho nhóm thực thi quyền đối với mọi tệp và thư mục trong / a. Điều đó là không cần thiết, và trong trường hợp các tập tin, có thể sai.


1

Trong tình huống cụ thể mà bạn gặp phải, vấn đề là ngay cả khi foldercó một số quyền thích hợp được truy cập bởi một số người dùng từ nhóm của bạn, nếu bất kỳ thư mục gốc nào của folderngười dùng đó không thể truy cập được, thì anh ta sẽ không thể truy cập vào bên trong (cái được gọi foldertrong ví dụ của bạn).

Nếu bạn thực thi:

chmod g-rwx -R /a/

sau đó avà tất cả trẻ em của nó sẽ có sự cho phép đó.

Khi yhou thực thi:

chmod g+rx -R /a/b/c/d/e/folder

sau đó foldervà tất cả trẻ em của nó cũng sẽ có sự cho phép đó. Nhưng, với lệnh sau này, các thư mục a/, a/bv.v cho đến khi a/b/c/d/ekhông thay đổi quyền của chúng.


0

Trường hợp phổ biến để loại bỏ x bit trên các thư mục là khóa người dùng trong thư mục nhà của họ. Các shell bị hạn chế có tùy chọn không cho phép cdtham chiếu các tên đường dẫn tuyệt đối và không cho phép thực thi các chương trình bằng các đường dẫn tuyệt đối. Họ cũng không thể cd ..vào thư mục mẹ của thư mục chính của họ và do đó bị khóa một cách hiệu quả và không thể chạy bất kỳ chương trình nào không có trong $ PATH.

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.