xóa quyền ghi không ngăn root ghi vào tệp


31

Tôi chỉ nhận thấy trên máy Ubuntu của mình (hệ thống tập tin ext3) rằng việc xóa quyền ghi từ một tệp không giữ quyền root ghi vào nó.

Đây có phải là quy tắc chung của quyền truy cập tệp UNIX không? Hoặc cụ thể cho Ubuntu? Hoặc một cấu hình sai trên máy của tôi?

# chạm abc
# chmod ugo-w abc
# trăn
Python 2.6.4 (r264: 75706, ngày 7 tháng 12 năm 2009, 18:45:15) 
[GCC 4.4.1] trên linux2
Nhập "trợ giúp", "bản quyền", "tín dụng" hoặc "giấy phép" để biết thêm thông tin.
>>> mở ('abc', 'w'). viết ('AAA \ n')
>>> 
# mèo abc
AAA

Ghi vào tệp không thành công (như mong đợi) nếu tôi làm điều này từ tài khoản người dùng thông thường của mình.

  1. Đây có phải là hành vi bình thường?

  2. Có cách nào để ngăn chặn root vô tình ghi vào một tập tin? (Tốt nhất là sử dụng các cơ chế hệ thống tệp thông thường, không phải AppArmor, v.v.)

Xin hãy dạy tôi về điều mà tôi chắc chắn không hiểu.

LƯU Ý: Tôi hiểu rằng root có toàn quyền kiểm soát hệ thống và có thể, ví dụ, thay đổi quyền trên bất kỳ tệp nào. Câu hỏi của tôi là liệu các quyền hiện được thiết lập có được thực thi trên mã đang chạy bằng root hay không . Ý tưởng là người dùng root ngăn không cho cô ấy vô tình ghi vào một tập tin.

LƯU Ý: Tôi cũng hiểu rằng không nên đăng nhập bằng root cho các hoạt động bình thường. Tôi chỉ nhận thấy hành vi này và đang hỏi bạn về nó.

Câu trả lời:


46

1) Đây là một hành vi bình thường. root có quyền truy cập rw trên tất cả các tập tin mọi lúc.

2) Bạn có thể bảo vệ một tập tin ngay cả từ root (không phải hành động có chủ ý, nhưng dù sao cũng vô tình) bằng cách sử dụng

chattr +i filename.ext

Đó là "thay đổi thuộc tính thêm bất biến". Để loại bỏ bảo vệ:

chattr -i filename.ext

có một cái nhìn man chattrđể biết thêm


@brice: cảm ơn nhiều. trực tiếp giải quyết câu hỏi của tôi. không biết về chattr.
laramichaels

hệ thống của tôi dường như cần quyền truy cập root để chạy chattr. Có một phương thức chế độ người dùng để thiết lập các thuộc tính như vậy?
quack quixote

1
... Mặc dù đó là một câu trả lời tuyệt vời cho câu hỏi, "có thể rootbảo vệ một tệp tốt đến mức thậm chí anh ta không thể xóa nó"!
quack quixote

4
Chính xác hơn (trong trường hợp của Linux, dù sao đi nữa), root có CAP_DAC_OVERRIDEkhả năng cho phép anh ta bỏ qua ACL và quyền.
grawity

1
FYI, tương đương với điều này trên OS X là sudo chflags <s|u>chg <file>làm cho nó trở nên bất biến đối với hệ thống hoặc người dùng, và sudo chflags no<s|u>chg <file>để bỏ đặt cờ bất biến cho hệ thống hoặc người dùng, tương ứng.
GDP2

3
  1. Vâng, điều này là bình thường. Rễ là thần.

  2. Có, có nhiều cách để ngăn chặn root ghi đè tập tin.

    • Đặt bit bất biến với chattr( +ibộ, -ibỏ cài đặt). Yêu cầu quyền truy cập root, chỉ hoạt động trên ext2 / ext3 (có lẽ cũng là ext4), nhưng thực tế thì không.
    • Đừng chạy ứng dụng với quyền root. Không có quyền riêng tư, không có tập tin ghi đè. Sử dụng sudođể truy cập các chức năng hệ thống.
    • Ngắt kết nối hệ thống tập tin. Không gắn fs, không có tập tin ghi đè. [*]
    • Tắt máy tính. Không có điện, không có tập tin ghi đè.

Các phương pháp này tuân theo logic từ # 1. Như bạn có thể thấy, hai phương pháp cuối cùng thường không hữu ích, theo cùng một cách bảo vệ Windows chống lại vi-rút bằng cách rút mạng thường không hữu ích. Đây là lý do tại sao root là nguy hiểm. [+]

[*] Tất nhiên, giảm khả năng "vô tình" ghi trực tiếp vào thiết bị khối. Vâng, root có thể làm điều đó. Có, bạn có thể ngăn chặn điều đó: ngắt kết nối thiết bị.

[+] Đây cũng là nơi những huyền thoại BOfH đến từ. Chúng không phải là tất cả những huyền thoại.


@ ~ quack: phương pháp của brice thực tế hơn ba cách bạn liệt kê. :)
laramichaels

@ ~ quack: câu hỏi của tôi làm cho nó rõ ràng Tôi hiểu các vấn đề với việc chạy các lệnh như root.
laramichaels

3

Bạn cũng có thể hạn chế quyền truy cập tệp cho người dùng root, bằng cách sử dụng "Khả năng" của nhân Linux: http : //www.securityf Focus.com/inf Focus / 1400

Ngoài ra còn có khả năng sử dụng SE-Linux hoặc một số bản vá nhân khác để làm cho một số tệp bất biến ngay cả để root.


0

Tôi nghĩ rằng miễn là root là siêu người dùng, và anh ta có thể làm bất cứ điều gì, bạn không thể loại bỏ anh ta bất kỳ sự cho phép nào, nếu bạn là root. Nó được coi là ý chí của root để ngăn chặn bản thân thực hiện hoặc không thực hiện một thao tác (chẳng hạn như ghi vào một tệp, hoặc mở một ứng dụng).

Vì vậy, không, rất có thể bạn sẽ chỉ hủy kích hoạt tài khoản root, để ngăn chặn việc sử dụng nó không tốt.

Trân trọng

[lưu ý đến bản thân: các ngươi sẽ khiêm tốn ... có thể các ngươi đã sai]

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.