Thư mục chỉ có quyền ghi là vô dụng phải không?


10

Đã làm việc với Linux trong nhiều năm và thấy mình có chút thời gian rảnh, tôi quyết định xem lại một số điều cơ bản. Vì vậy, tôi đã đọc lại nội dung về quyền (không kiểm tra mã nguồn) và các trường hợp đặc biệt của nó đối với các thư mục và đưa ra cách suy nghĩ mới (ít nhất là ...) đối với quyền thư mục (đối với người dùng cụ thể / nhóm / người khác): Tôi tưởng tượng một thư mục là một bảng có hai cột, như vậy:

filename | inode    
foo      | 111  
bar      | 222 

Quyền đọc có nghĩa là bạn có thể đọc (và liệt kê) cột bên trái của bảng, quyền ghi tương ứng với việc thêm và xóa các mục vào bảng và quyền thực thi tương ứng với khả năng dịch từ tên tệp sang inode; tức là bạn có thể truy cập nội dung của thư mục.

Tôi đã thực hiện một số thử nghiệm và kết quả hoàn toàn phù hợp với "thế giới quan" này của tôi, nhưng một kết luận dường như không thể giải thích được: rằng một thư mục có quyền d-w-------, hoàn toàn vô dụng. Xây dựng: bạn không thể liệt kê nội dung của nó, bạn không thể đọc bất kỳ tệp nào bạn biết tồn tại bên trong (vì bạn không thể dịch tên thành inodes), bạn không thể xóa hoặc đổi tên hoặc thêm tệp, vì một lần nữa điều đó có nghĩa là dịch và thậm chí bạn không thể thêm các liên kết cứng (bởi vì, tôi phỏng đoán, điều đó có nghĩa là thêm tên cũng như số inode, có nghĩa là bạn sẽ biết cả hai, lần lượt, lại phỏng đoán, vi phạm mục đích hủy đặt quyền thực thi) . Và tất nhiên, nếu có tập tin bên trong một thư mục như vậy, thì bạn không thể xóa thư mục đó một trong hai, bởi vì bạn không thể xóa nội dung của nó.

Vì vậy, ... tôi muốn hỏi hai câu hỏi:

  1. Sự tương tự này của tôi có đúng không, hay nó là một sai lầm lớn?
  2. Bất kể câu trả lời trước đó, có tình huống nào có một thư mục có quyền như mô tả là phù hợp không?

3
Nó có thể là không phải sự kết hợp nào cũng hữu ích. Ví dụ, trong tiếng Anh chúng ta có các từ, những từ này được tạo thành từ các chữ cái, không phải tất cả các kết hợp tạo thành các từ hợp lệ. ví dụ: aoeuidhtns
ctrl-alt-delor

Theo cách này, bạn không thể tạo một tập tin? Bạn yêu cầu không gian hệ thống tập tin và inode, và sau khi bạn viết tên và inode trong bảng thư mục của bạn. Bạn chỉ có vấn đề là có 2 tệp có cùng tên nhưng inode khác nhau trong cùng một thư mục ...
Hastur

@Hastur: Tôi cũng nghĩ vậy, nhưng sau khi mkdir foo ; chmod 200 foo ; touch foo/bartôi nhận được touch: cannot touch ‘foo/bar’: Permission denied. Điều này xảy ra ngay cả khi foo / bar đã tồn tại. Tôi đang thử nghiệm trong bash (Arch Linux).
wmnorth

Lỗi của tôi Tôi đã nghĩ rằng bạn đang viết lại từ mã nguồn hệ thống ... chúng tôi không thể có hai tệp có cùng tên trong cùng một thư mục nên logic là không được phép cung cấp khả năng tạo nó.
Hastur

Vâng, nó là vô dụng. Độ phân giải inode cũng yêu cầu "x" và "r", do đó, trên các thư mục, ngay cả một "rw" cũng vô dụng.
peterh - Tái lập Monica

Câu trả lời:


3

Sự hiểu biết của bạn là khá nhiều chính xác. Một cách tốt hơn để nghĩ về quyền thực thi là nó cho phép bạn thực hiện mọi thứ với một tên tệp hoặc thư mục trong thư mục (ngoài việc chỉ đọc chính tên đó). Hầu hết những điều đó liên quan đến việc dịch tên thành inode, nhưng nó cũng bao gồm việc tạo tên mới và xóa tên hiện có.

Do đó, việc ghi quyền vào thư mục mà không thực thi là khá vô ích, vì thực tế bạn không thể viết gì nếu bạn không thể truy cập các tệp trong đó.


1
  1. Sự tương tự này của tôi có đúng không, hay nó là một sai lầm lớn?

Tôi nghĩ đó là chính xác, bạn cần có sự cho phép của wx để có thể ghi vào một thư mục.

  1. Bất kể câu trả lời trước đó, có tình huống nào có một thư mục có quyền như mô tả là phù hợp không?

Bạn có thể có một quá trình ghi thông tin trong một thư mục và một quá trình khác tiêu thụ nó nhưng bạn cần ngăn người viết đọc thông tin khác được lưu trữ ở nơi đó.

Tình huống được mô tả trước đây là hữu ích trong các đơn vị thực thi tốc độ tự động. Đơn vị này phải trải qua quá trình xác minh trong đó viên chức nhà nước phải giảm thiểu khả năng ngoại tình. Một số đơn vị thực thi tốc độ tự động có thẻ nhớ sd bên ngoài nơi hệ thống lưu trữ các thanh ghi vi phạm. Nhưng nó cũng có thể lưu trữ tệp cấu hình "ma thuật" làm thay đổi trái phép hành vi của đơn vị được xác minh. Vì vậy, quá trình ghi thanh ghi vi phạm phải không thể đọc bất cứ thứ gì từ thẻ nhớ sd.

Đây là một ví dụ, đầu tiên chỉ viết, sau đó là làm thế nào để nó hoạt động với wx:

Gắn thiết bị

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

sau đó với người thực thi người dùng cố gắng viết một tệp mới

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

vượt qua và kết thúc với wx

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

thử lại

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

Với cấu hình này, bây giờ bạn có thể viết

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.