Tại sao người dùng không có đặc quyền không thể thay đổi quyền sở hữu tệp?


15

Từ chown (2):

Chỉ một quy trình đặc quyền (Linux: một quy trình có khả năng CAP_CHOWN) mới có thể thay đổi chủ sở hữu của một tệp. Chủ sở hữu của một tệp có thể thay đổi nhóm của tệp thành bất kỳ nhóm nào mà chủ sở hữu đó là thành viên. Một quy trình đặc quyền (Linux: với CAP_CHOWN) có thể thay đổi nhóm tùy ý.

Lý do cho sự hạn chế này là gì? Tại sao người dùng không có đặc quyền không thể thay đổi quyền sở hữu tệp của tệp mà họ sở hữu (tức là không / etc / bóng)?

$ touch blah
$ chown root:root blah
chown: changing ownership of `blah': Operation not permitted

Câu trả lời:


27

Bằng cách cho phép người dùng "cho đi" các tệp bạn chạy các tính năng khác nhau của HĐH. Nhu la:

Taking up another user's disk quota.
Impersonating another user (or even root) via setuid.
Having insufficient privileges to undo a mistaken chown.
Making it appear that someone else had created a given file.
Setting up cron jobs to run on other user's accounts.
And many more...

8

Đây chỉ là một lựa chọn cá nhân của các nhà thiết kế linux không cho phép - tất cả các lý do bảo mật giả, được , là đặc biệt, vì có các hệ thống unix cho phép điều này.

Tôi nghĩ rằng chức năng này được đưa ra cho dù hành vi của unix của bạn có tuân theo 'System-V' (AT & amp; T) hay unix của Berkeley (BSD) ...

Đối với các vấn đề bảo mật khác được đề cập:

  • Mạo danh người dùng khác (hoặc thậm chí root) thông qua setuid.

    Không vấn đề: Thay đổi 'chủ sở hữu' xóa mọi bit 'setXid' (U / G)

  • Không có đủ đặc quyền để hoàn tác một chown nhầm

    Không thực sự là một 'rủi ro bảo mật', NHƯNG, nó có thể nằm trên các hệ thống cho phép thay đổi người dùng, bạn có thể thay đổi lại nếu nó nằm trong một thư mục bạn sở hữu, thông thái khác: 'cẩn thận'!

  • Làm cho có vẻ như người khác đã tạo một tập tin nhất định.

    Nó vẫn sẽ nằm trong một thư mục mà bạn có thể ghi được. I E. bạn không thể chuyển nó vào homedir của họ, trừ khi nó mở để viết cho nhóm của bạn hoặc tất cả (hoặc cụ thể là nếu ACL có sẵn).

  • Thiết lập các công việc định kỳ để chạy trên các tài khoản của người dùng khác.

    Một lần nữa, sẽ không hoạt động - vì crondir được sở hữu bởi người dùng và thậm chí không được đặt thành có thể đọc được bởi những người dùng khác, hãy để một mình có thể ghi.

  • nếu bất cứ ai cũng có thể thay đổi quyền sở hữu, thì bất cứ ai cũng có thể thay đổi quyền để có quyền truy cập vào bất kỳ tệp nào trên hệ thống.

    Không: chỉ khi người dùng 'sở hữu' thư mục chứa tệp đó. I E. Tôi có thể cung cấp một tệp có tên 'passwd' để root, nhưng tôi không thể chuyển nó vào / etc / trừ khi tôi có quyền ghi vào / etc /.

  • hạn ngạch

    Một điểm có khả năng hợp lệ - NẾU bạn sử dụng hạn ngạch, nhưng có vẻ như sẽ dễ dàng phát hiện nếu bạn tổng hợp dung lượng đĩa bằng home-dir; Vấn đề duy nhất là trong các thư mục có thể ghi được bởi nhiều người dùng. Trong trường hợp đó, có thể là do chủ sở hữu của 'dir' đó. Nó CÓ THỂ là trường hợp trên các hệ thống hỗ trợ các tệp 'cho đi', rằng bạn chỉ có thể thực hiện việc này trong các thư mục mà bạn 'sở hữu', nhưng đã lâu rồi tôi mới thực sự sử dụng hệ thống cho phép điều này, vì vậy tôi không Tôi không nhớ các hạn chế chính xác.

Tôi dường như nhớ rằng có một số 'đánh đổi' để cho phép 'cho đi các tệp' ... ví dụ: - trên các hệ thống cho phép điều đó, một thứ khác không được phép mà linux cho phép, nhưng không thể nhớ những gì đã xảy ra ...

Tôi muốn nói 'câu trả lời' ở trên không nên được đánh dấu là câu trả lời, vì đó KHÔNG phải là câu trả lời thực sự. Đây là một quyết định thiết kế nhiều hơn - Tôi chỉ không biết sự đánh đổi là gì.

Có thể có các vấn đề bảo mật không được nêu ở trên sẽ là mối quan tâm hợp lệ, nhưng những vấn đề trên không hợp lệ.

IMO, nó phải là một "giá trị" có thể giải quyết được hệ thống trong "/ Proc", nhưng nói chung, tôi nghĩ rằng hầu hết mọi người không quan tâm đến điều đó.

Nếu có nhu cầu lớn đối với nó, 'chown' có thể được tăng cường bảo mật và sửa đổi để cho phép và sau đó thiết lập w / setuid 'root' để cho phép nó thực hiện chính sách như vậy.


Hạn ngạch luôn dựa trên tập tin quyền sở hữu , không phải vị trí . Nếu không thì ai đó có thể giữ mọi thứ trong /tmp.
grawity

+1, bạn có vẻ đúng rồi :). Trên các hệ thống OpenSolaris (thực sự là hậu duệ của System V), bạn có thể thiết lập điều này thông qua một mount do đó (cài đặt này có thể được giới hạn ở một điểm gắn kết duy nhất thay vì toàn hệ thống theo đề xuất giá trị có thể cài đặt hệ thống của bạn): rstchown (mặc định) để giới hạn các thay đổi của chủ sở hữu tệp đối với người dùng root, norstchown để cho phép người dùng không có đặc quyền thay đổi chủ sở hữu các tệp của riêng họ (họ không thể thay đổi lại).
WhiteWinterWolf

6

Chà, nếu bất cứ ai cũng có thể thay đổi quyền sở hữu, thì bất cứ ai cũng có thể thay đổi quyền để có quyền truy cập vào bất kỳ tệp nào trên hệ thống. Điều này là xấu không chỉ từ quan điểm phần mềm độc hại (không yêu cầu sudo), mà từ quan điểm của một sysadmin. Nếu bất kỳ người dùng nào có thể thay đổi bất kỳ tệp nào, thì quyền truy cập tệp là vô ích.


2
Đúng. Tôi đã sửa đổi câu hỏi để rõ ràng rằng tôi đang đề cập đến các tập tin người dùng sở hữu chứ không phải bất kỳ tập tin nào.
Alexandru

1
@Alexandru: nghĩ về việc thay đổi người dùng độc hại myTrojan.sh được sở hữu bởi root và có cờ SUID.
Benjamin Bannier

@honk: có ý nghĩa bây giờ.
Alexandru

5

Bởi vì sau đó người dùng có thể trốn tránh hạn ngạch hệ thống tập tin. Nếu tôi có hạn ngạch 100 MB và bạn có hạn ngạch 100 MB, tôi có thể tải lên 100 MB, chmod a + r, chown bạn, sau đó tải lên 100 MB khá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.