2014-10-21 33 views
9

Tôi đã viết một tập lệnh đơn giản để tự động tạo liên kết tượng trưng.Cho phép liên kết "Cho phép bị từ chối" ... vào thư mục gốc

#!/pseudo 
today = "/tmp/" + date("Y-m-d") 
exec("ln -sf " + today + " /tmp/today") 

Đủ đơn giản; có được ngày hôm nay và tạo một liên kết tượng trưng. Lý tưởng nhất là chạy sau nửa đêm với -f để nó chỉ cập nhật tại chỗ.

Điều này chỉ hoạt động tốt! ... cho người dùng của tôi.

xkeeper /tmp$ ls -ltr 
drwxrwxrwx xkeeper xkeeper 2014-10-21 
lrwxrwxrwx xkeeper xkeeper today -> /tmp/2014-10-21/ 

xkeeper /tmp$ cd today 
xkeeper /tmp/today$ cd .. 

Lưu ý rằng nó hoạt động tốt, tất cả các quyền đều có thể đọc được trên thế giới, mọi thứ đều tốt.

Nhưng nếu ai đó muốn sử dụng liên kết này (chúng tôi sẽ nói, root, nhưng bất kỳ người dùng khác có vấn đề này), một cái gì đó rất lạ xảy ra:

root /tmp# cd today 
bash: cd: today: Permission denied 

Tôi đang ở một mất hoàn toàn như tại sao lại thế này Tôi cũng đã cố gắng tạo ra các liên kết với ln -s -n -f (không phải là "--no-dereferencing" là rất tốt giải thích), nhưng cùng một vấn đề xuất hiện.

+0

Lưu ý rằng nó hoạt động hoàn toàn tốt nếu tôi tạo liên kết với gốc (tất cả người dùng khác có quyền truy cập vào nó), nhưng điều đó không thực sự giải thích tại sao nó không hoạt động nếu được tạo bởi * người dùng * khác. – Xkeeper

+0

Điều gì có nghĩa là '#!/Pseudo'? – hek2mgl

+0

Được rồi, rất lạ. Tôi đã thử tạo một liên kết trong cùng một cách trong một thư mục tạm thời ở đâu đó trong '/ var/www /', và nó hoạt động như mong đợi, mà không có lỗi cho phép. Những gì trên thế giới. – Xkeeper

Trả lời

11

Vì/tmp thường có bộ bit dính, quyền truy cập vào/tmp/hôm nay bị từ chối vì protected_symlinks. Bạn có thể vô hiệu hóa sự bảo vệ này bằng cách thiết lập

sysctl -w fs.protected_symlinks=0 

protected_symlinks:

Một lâu lớp về các vấn đề bảo mật là liên kết tượng trưng dựa trên time-of-kiểm tra-time-of-sử dụng chủng tộc, thường thấy nhất trong các thư mục có thể ghi trên thế giới như/tmp. Phương pháp phổ biến khai thác lỗ hổng này là vượt qua các ranh giới đặc quyền khi theo một liên kết tượng trưng nhất định (tức là quy trình gốc theo sau một liên kết tượng trưng thuộc về người dùng khác). Đối với một khả năng danh sách đầy đủ của hàng trăm ví dụ trên năm, vui lòng xem: http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

Khi thiết lập để "0", hành vi liên kết tượng trưng sau đây là không hạn chế.

Khi được đặt thành "1", chỉ được phép theo dõi bên ngoài thư mục có thể ghi thế giới hoặc khi uid của liên kết tượng trưng và đối sánh người theo dõi hoặc khi chủ sở hữu thư mục khớp với chủ sở hữu của liên kết tượng trưng.

Chế độ bảo vệ này dựa trên các hạn chế trong Openwall và bảo mật.

Để biết thêm chi tiết, hãy kiểm tra this.

+0

Điều đó có ý nghĩa và giải thích lý do tại sao nó hoạt động trong các thư mục khác ... vì root cũng sở hữu '/ tmp'). – Xkeeper

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