2009-04-26 37 views
16

Xin chào Tôi có 2 câu hỏi liên quan đến quyền truy cập thư mục linux mà tôi không hiểu.Hiểu về quyền hạn thư mục Linux

Tôi đã xóa cờ thực thi khỏi thư mục có tên Tài liệu. Sau đó tôi không thể sử dụng cd trên nó nhưng tôi vẫn có thể làm "ls Documents" từ thư mục cha và nó vẫn liệt kê các tệp trong thư mục Documents. Tôi mặc dù thẻ x-thiếu bị từ chối đọc thư mục này?

Sau đó, tôi muốn biết tại sao bit dính trên thư mục được phát minh. Tôi đã nghe nó đã được sử dụng để người dùng không thể xóa temp-files tạo bởi người dùng khác. Nhưng IMO này vi phạm quy tắc để xóa các tệp, chúng tôi chỉ cần quyền đối với thư mục này. Tại sao không đơn giản cung cấp cho mỗi người dùng một thư mục/tmp/riêng biệt thay vì giới thiệu các ngoại lệ trong hệ thống quy tắc? Tôi biết những gì lá cờ, nhưng tôi muốn biết lý do tại sao được phát minh.

Trả lời

15

Bit thực hiện: Bit thực thi là cần thiết để di chuyển một thư mục. Giấy phép để đọc một thư mục được điều khiển bởi bit đọc.

Xem đối thoại vỏ này cho một ví dụ về sự khác biệt này:

Như root:

 
# find foo/ -ls 
drwxr-xr-- 3 root  root   4096 Apr 27 12:57 foo/ 
drwxr-xr-x 2 root  root   4096 Apr 27 12:57 foo/bar 
-rw-r--r-- 1 root  root   0 Apr 27 12:57 foo/bar/file 

như người sử dụng:

 
$ ls foo/ 
bar 
$ find foo/ -ls 
drwxr-xr-- 3 root  root   4096 Apr 27 12:57 foo/ 
find: foo/: Permission denied 
$ 

Việc sử dụng thông thường là vòng cách khác mặc dù: loại bỏ đọc quyền nhưng cho phép truyền tải, ví dụ để cho phép một máy chủ web vào ~/public_html nhưng không cho phép nó làm danh sách chỉ mục mặc định bằng cách đặt --x.

Chú ý bit: Điều này được phát minh chính xác để tránh các quy tắc mặc định về xóa trong thư mục để /tmp hoạt động. /tmp có thể nằm trên một ổ đĩa khác với số /home và/hoặc bị chi phối bởi các hạn ngạch khác nhau.

FHS codifies /tmp "cho các chương trình yêu cầu tệp tạm thời" trong khi "[họ] không được giả định rằng bất kỳ tệp hoặc thư mục nào trong/tmp được giữ nguyên giữa các lời gọi".

Cá nhân, tôi xem xét/tmp được kế thừa từ những ngày tạm dừng khi vi globals.h && make install được coi là một quy trình cài đặt. Ngày nay các chương trình nên tôn vinh $TMPDIR, nên trỏ đến một thư mục do người dùng quản lý hệ thống, cần được làm sạch ít nhất là khi khởi động lại. Ngay cả các chức năng tiêu chuẩn hóa như tmpfile(3) cũng không quy định đường dẫn thực tế. Mặc dù có vẻ quan trọng là compatibility and security concerns speaking for /tmp. Lưu ý rằng, thư cuối cùng là từ năm 1999, vì vậy mọi thứ có thể thay đổi kể từ đó.

+0

X-bit: Nhưng nếu tôi vẫn có thể đọc các tệp từ thư mục không có x-bit, tại sao tôi cần nó? Hoạt động nào khiến tôi thực sự thay đổi trong thư mục này? S-bit: chắc chắn, nhưng bạn có thể tạo các subdir trong thư mục/tmp/cho mỗi người dùng. Có thể tạo thêm các liên kết cứng như/home/otto/tmp/->/tmp/otto/nhưng nó vẫn hoạt động tốt mà không cần. – codymanix

+0

Tôi đã cải thiện câu trả lời với hy vọng sẽ giải quyết các điểm nhận xét của bạn. –

+0

nó có thể cấm thực sự "thay đổi" là thư mục nhưng tôi vẫn có thể làm tất cả mọi thứ tôi có thể làm trước đây, vì vậy nó thực sự tốt cho là gì? Tôi vẫn có thể làm "ls foo /" và "ls foo/bar" ngay cả "cat foo/bar/file" vẫn hoạt động tốt. Tôi cũng có thể xóa các tập tin trong đó. Điều gì là trong ý kiến ​​của bạn sự khác biệt giữa đi qua và đọc? Nếu tôi có thể liệt kê tất cả các tệp trong một thư mục và các thư mục con của nó thì tôi về mặt lý thuyết có thể tìm kiếm các tệp trong đó. Vậy tại sao "tìm" không hoạt động? – codymanix

3

Sticky bit

Việc sử dụng phổ biến nhất của các bit dính hôm nay là trên danh bạ, ở đâu, khi thiết lập, các mục bên trong thư mục có thể được đổi tên hoặc chỉ xóa bởi chủ sở hữu của mặt hàng, chủ sở hữu của thư mục, hoặc superuser; mà không có tập bit dính, bất kỳ người dùng nào có quyền ghi và thực thi cho thư mục đều có thể đổi tên hoặc xóa các tệp chứa, bất kể chủ sở hữu. Thông thường, điều này được đặt trên thư mục/tmp để ngăn người dùng thông thường xóa hoặc di chuyển các tệp của người dùng khác. Tính năng này đã được giới thiệu trong 4.3BSD vào năm 1986 và ngày nay nó được tìm thấy trong hầu hết các hệ thống Unix hiện đại.

Ngoài ra, Solaris (như Solaris 2.5) xác định hành vi đặc biệt khi bit dính được đặt trên các tệp không thực thi được: các tệp đó khi được truy cập sẽ không được nhân vật lưu trữ. Điều này thường được đặt trên các tệp hoán đổi để ngăn truy cập vào tệp từ việc xóa dữ liệu quan trọng hơn từ bộ nhớ cache của hệ thống. Nó cũng được sử dụng đôi khi cho các bài kiểm tra điểm chuẩn.

Bit dính cũng được thiết lập bởi công cụ tự động để cho biết rằng một tệp chưa được gắn kết. Điều này cho phép các chương trình như ls bỏ qua các tập tin từ xa chưa được gắn kết.

+0

như tôi đã nói tôi đã biết những gì nó tốt cho nhưng tôi muốn biết lý do tại sao họ sử dụng giải pháp khác/sạch hơn tôi đề xuất. Imo bit dính chỉ là một giải pháp cho một cấu trúc thư mục sai lầm. – codymanix

+0

Nó được gọi là 'hành vi cũ'; nó ngăn chặn các kịch bản viết rằng giả định/tmp là OK từ phá vỡ. –

5

Chỉ cần tình cờ gặp vấn đề này vì nó có xếp hạng tìm kiếm của Google cao. Vấn đề bit thực thi chưa thực sự được trả lời, vì vậy ...

Nếu bit thực thi không được đặt trên thư mục, thì nó không phải là "traversable", có nghĩa là trình bao tệp và trình duyệt tệp phải được thiết kế để không cho phép bạn thiết lập thư mục đó như hiện tại, mặc dù tính năng đó không thể được thực thi bởi chính hệ thống tệp. Hệ thống tệp không không cho phép trên thư mục không thực thi là bất kỳ thông tin nào khác so với tên tệp của các tệp đã chứa - vì vậy không có dấu thời gian hoặc quyền tệp của các tệp đó và không đọc các tệp đó ngay cả khi chúng đã đọc bộ.

0

Đối với thư mục CD phải là chế độ 0555 và tệp 0444. Nhóm Unix có thể được coi là một vai trò. Vai trò của bạn là các nhóm bổ sung của bạn. Các điều khiển là bắt buộc nếu bạn không phải là chủ sở hữu. Họ là tùy ý nếu bạn đang có. Bạn chỉ có thể đi qua đường dẫn nếu bạn có quyền eXecute/search cho mỗi phần tử đường dẫn. Điều này khác với Microsoft Windows vốn dễ bị tổn thương khi duyệt qua thư mục. Nó được phát minh để thực hiện Series Rainbow "Tiêu chí đánh giá hệ thống máy tính đáng tin cậy của DoD".

Các vấn đề liên quan