Root / superuser có thể đọc các tệp được bảo vệ đọc của tôi không?


35

Trên lưu trữ unix được chia sẻ, nếu tôi có tệp nhạy cảm-data.txt và tôi phát hành:

chmod 600 sensitive-data.txt

Người dùng root vẫn có thể đọc tệp của tôi? Cụ thể tôi đang tự hỏi liệu có an toàn để lưu mật khẩu của mình trong tệp hgrc đồng bóng không.

CẬP NHẬT

Quyết định sử dụng tiện ích mở rộng khóa cơ vì nó rất dễ cài đặt:

pip install mercurial_keyring

và sau đó thêm vào hgrc:

[extensions]
mercurial_keyring =

Tuy nhiên tôi vẫn quan tâm đến câu trả lời cho câu hỏi này.

Câu trả lời:


62

Có, root có thể:

$ echo Hello you\! > file
$ chmod 600 file
$ ls -l file
-rw------- 1 terdon terdon 11 Feb 27 02:14 file
$ sudo -i
# cat file
Hello you!

Trong mọi trường hợp, ngay cả khi root không thể đọc các tệp của bạn dưới dạng root, chúng luôn có thể đăng nhập như bạn mà không cần mật khẩu:

$ whoami
terdon
$ sudo -i
[sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon

Vì vậy, rootcó thể thay đổi thành bất kỳ tên người dùng nào khác bằng cách sử dụng su(hoặc sudo -iu username) và sau đó sẽ có thể làm bất cứ điều gì như thể họ là bạn.


23

Luôn cho rằng root(và bất kỳ người dùng / quy trình nào khác có CAP_DAC_OVERRIDECAP_DAC_READ_SEARCH) có thể làm mọi thứ trừ khi LSM (SELinux, AppArmor hoặc tương tự) ngăn anh ta làm điều đó.

Điều đó cũng có nghĩa là bạn nên cho rằng tất cả các tổ hợp phím của bạn có thể được đọc. Mật khẩu không thực sự an toàn. Nếu bạn muốn một mức độ bảo mật nghiêm trọng thì bạn phải sử dụng một hệ thống hoàn toàn do bạn kiểm soát (và thậm chí không được sử dụng bởi bất kỳ ai khác).


Đây thực sự là vấn đề của tôi với các khả năng như chúng hiện đang được thực hiện. Vì họ không chỉ định mục tiêu, bạn cần phải thực thi loại thay thế các khả năng (như SELinux) chỉ để ngăn điều đó xảy ra. Cung cấp cho một người dùng CAP_DAC_OVERRIDEcung cấp cho họ trong một lần phạm lỗi tất cả các đặc quyền họ cần để ghi đè bất kỳ cơ chế bảo mật nào khác trên hệ thống. CAP_DAC_OVERRIDEvề cơ bản là CAP_DO_WHATEVER_YOU_WANT.
Bratchley

10

Có root có tất cả các đặc quyền để làm bất cứ điều gì

Ở đây bạn có thể thấy tôi đã tạo một bài kiểm tra tên thư mục và chạm vào một tệp lonston.txt và liệt kê các tệp

root@system99:/tmp# mkdir test && touch lonston.txt && ls -l
total 4
-rw-r--r-- 1 root root    0 Feb 27 16:35 lonston.txt
drwxr-xr-x 2 root root 4096 Feb 27 16:35 test

Sau đó, tôi đã thay đổi quyền của tệp và Thư mục thành quyền null bằng cách sử dụng 000 và được liệt kê để xem quyền

root@system99:/tmp# chmod 000 lonston.txt && chmod 000 test && ls -l
total 4
---------- 1 root root    0 Feb 27 16:35 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

Sau đó, thậm chí tôi có thể ghi vào tệp và đọc tệp bằng cách sử dụng mèo

root@system99:/tmp# echo "Yes root have all Privileges than other user's, let we see the permission of user's too" > lonston.txt 

root@system99:/tmp# cat lonston.txt 
Yes root have all Privilages than other user's, let we see the permission of user's too

Thậm chí tôi có thể vào thư mục có quyền --------- (null) 000, thậm chí root không có quyền đọc hoặc ghi.

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test

Thậm chí tôi có thể Tạo các tệp và thư mục sau khi thay đổi quyền từ bất kỳ

root@system99:/tmp/test# touch /tmp/test/lonston/testdir/babin.txt

root@system99:/tmp/test# ls -l /tmp/test/lonston/testdir/
total 0
-rw-r--r-- 1 root root 0 Feb 27 16:39 babin.txt

Bây giờ ở đây chúng ta có thể thấy Quyền với 400

root@system99:/tmp/test# chmod 400 babin.txt

Danh sách để xem sự cho phép tập tin

root@system99:/tmp/test# ls -l
total 8
-r-------- 1 root root   34 Feb 27 16:42 babin.txt
drwxr-xr-x 3 root root 4096 Feb 27 16:38 lonston

Sử dụng vim im tôi đã thêm 1 dòng vào tệp babin.txt

root@system99:/tmp/test# vim babin.txt

Nhưng trong khi ở chế độ vim, nó sẽ thông báo cho chúng tôi W10: Cảnh báo: Thay đổi tệp chỉ đọc Nhưng nó vẫn có thể ghi

Bây giờ chúng ta có thể cat tập tin cho đầu ra

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission

Sau đó, tôi đã đăng xuất từ ​​người dùng root sang người dùng bình thường và liệt kê các tập tin có null permisson những gì trong root quá

root@system99:/tmp# exit
exit

Điều hướng đến / tmp Thư mục

sysadmin@system99:~$ cd /tmp/
sysadmin@system99:/tmp$ ls -l
total 8
---------- 1 root root   88 Feb 27 16:36 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

Nhưng trong khi đọc tệp từ người dùng bình thường, chúng tôi không thể

sysadmin@system99:/tmp$ cat lonston.txt 
cat: lonston.txt: Permission denied

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied

Vậy đó, hy vọng bạn có được sức mạnh của người dùng root

Nếu bạn trong Người dùng bình thường, nếu bạn cần quyền root, chúng tôi cần sử dụng sudo, nó sẽ hỏi mật khẩu sudo

thí dụ :

sysadmin@system99:/tmp$ sudo cat lonston.txt 
[sudo] password for sysadmin: 
Yes root have all Privilages than other user's, let we see the permission of user's too

Người dùng Sudo đã cộng tác với Nhóm người dùng root, vì vậy sudo có đặc quyền gốc.

Để biết thêm về sudo

# man sudoers

Ở đây chúng ta có thể thấy họ đã được định nghĩa là người dùng bình thường có thể có quyền Sudo Chỉ có ít dòng tôi đã đề cập ở đây.

sysadmin@system99:/tmp$ sudo cat /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Hoàn toàn chúng ta có thể đọc hoặc chỉnh sửa hoặc Xóa các tập tin ngay cả root Không có quyền đọc.


2
Tại sao câu trả lời này có rất ít upvote? Nó bao gồm hầu hết các trường hợp có thể xảy ra với các ví dụ.
Foo Bar

8

Trong Unix truyền thống, root là toàn năng. Cụ thể, root có thể đọc bất kỳ tệp nào và thậm chí rình mò những gì chương trình của bạn đang thực hiện trong nội bộ. Nếu dữ liệu thực sự nhạy cảm, chỉ giữ các bản sao được mã hóa xung quanh (ví dụ: bảo vệ GNU Privacy cho việc này, nhưng đọc kỹ tài liệu của nó trước đó) và không bao giờ giải mã nó trên một máy không thuộc quyền kiểm soát hoàn toàn của bạn.

(Paranoia là tuyệt vời, không bao giờ là đủ ;-)

Nghiêm túc, suy nghĩ cẩn thận về chi phí rò rỉ dữ liệu có thể gây ra, và do đó bạn sẽ chuẩn bị bao nhiêu để trả cho bảo mật. Bảo mật hoàn hảo là không thể, để có thêm một chút bảo mật, chi phí bắt đầu tăng nhanh. Nhưng hãy cẩn thận để không rơi vào cái bẫy của một biện pháp đắt tiền mà thực sự không làm tăng tính bảo mật ...


3

Cũng nên giả định rằng bất kỳ ai có thể có cơ hội ở cùng phòng với phần cứng đều có thể đọc hoặc viết bất cứ điều gì họ muốn. Nếu họ rất kiên nhẫn, cuối cùng họ có thể hiểu dữ liệu được mã hóa. Họ không cần các phương thức kênh phụ nếu họ có thể thay thế phần mềm mã hóa.


2

Có, root có thể đọc tệp được bảo vệ ngay cả khi chủ sở hữu không thể (trong khi chủ sở hữu rõ ràng có thể xóa bảo vệ và sau đó đọc nội dung):

echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt

cat: abc.txt: Quyền bị từ chối

su
cat abc.txt

123

Tuy nhiên, trong thiết lập bình thường, root không thể truy cập các tệp được bảo vệ trên các hệ thống tệp từ xa như NFS ("root squash").


+1 để đề cập đến squash gốc NFS. Tuy nhiên, miễn là root có thể su cho người dùng sở hữu thư mục gắn trên NFS, root squash vẫn không bảo vệ.
Jenny D

2

Để ngăn chặn root hoặc bất kỳ ai có thể đọc các tập tin của bạn, bạn cần mã hóa chúng. Mã hóa tệp là một tùy chọn rất thuận tiện để xem xét nếu bạn muốn tránh phải xử lý các thao tác hệ thống tệp phức tạp.

Tùy chọn mã hóa:

  1. Mã hóa các tệp thông thường và ngăn mọi người trừ chính bạn có thể xem chúng
  2. Mã hóa Shell Script và làm cho các phiên bản được mã hóa có thể thực thi được, nhưng cũng ngăn mọi người không thể sửa đổi hoặc xem chúng

Nếu chọn Tùy chọn 1, đây là cách để bạn mã hóa tệp của mình:

cat (your-file) | openssl aes-128-cbc -a -salt -k "(specify-a-password)" > (your-file).enc

Để giải mã tập tin trên, bạn chạy một lệnh như thế này:

cat (your-file).enc | openssl aes-128-cbc -a -d -salt -k "(specify-the-password)" > (your-file).dec

- Bạn có thể muốn đưa phần trên vào một tập lệnh để nó không hiển thị trong lịch sử của bạn. Hoặc, bạn chỉ có thể xóa tham số " -k ", thông báo này sẽ nhắc openssl để hỏi bạn mật khẩu.

Nếu chọn Tùy chọn 2, chỉ cần sao chép và dán tập lệnh của bạn vào trang web sau:

http://www.kinglazy.com/shell-script-encoding-kinglazy-shieldx.htm

Khi gửi tập lệnh của bạn đến trang web đó, một tệp zip sẽ được tạo ngay lập tức cho bạn. Sao chép liên kết vào tệp zip, sau đó chuyển đến hộp UNIX của bạn và thực hiện các bước sau:

  1. wget link-to-the-zip-file
  2. giải nén tệp mới được tải xuống-zip
  3. cd / tmp / KingLazySHIELD
  4. ./install.sh / var / tmp / KINGLAZY / SHIELDX- (tên tập lệnh của bạn) / home / (tên người dùng của bạn) -force

Khi bạn hoàn thành các bước trước đó, bạn có thể chạy tập lệnh được mã hóa từ bất cứ nơi nào bạn được chỉ định để cài đặt nó trong bước 4 .... tức là / home / (tên người dùng của bạn) / (tập lệnh được mã hóa của bạn). sh

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.