Tất cả các hệ điều hành đa tác vụ hiện đại, bao gồm cả Linux, chạy một loạt các quy trình cho từng tác vụ được thực hiện. Một ứng dụng notepad là một quá trình, một cửa sổ thiết bị đầu cuối là một quá trình, máy chủ SSH là một quá trình, mỗi kết nối SSH là một quá trình và như vậy. Linux lên lịch cho các tài nguyên hệ thống khác nhau (thời gian CPU, bộ nhớ, I / O) để mỗi tiến trình có cơ hội chạy.

Để xem danh sách các tiến trình đang chạy, bạn có thể sử dụng lệnh ps . Hãy thử điều này trong một thiết bị đầu cuối:

 ps aux 

Các tham số aux cho ps liệt kê tất cả các tiến trình hệ thống với thông tin bổ sung về người sở hữu các quy trình và các tham số gọi được sử dụng.

Như bạn có thể thấy, danh sách hiển thị các quy trình thuộc sở hữu của những người dùng khác nhau bao gồm “pi” (người dùng Raspbian mặc định trên Raspberry Pi), “root” và “www-data”. Dưới đây là một ảnh chụp màn hình được sửa đổi một chút, hiển thị các quy trình cùng với các chi tiết đầy đủ hơn về các lệnh và các tham số của chúng.

Nếu bạn nhìn xuống danh sách, bạn sẽ thấy lệnh nano MYBANKACCOUNTNUMBER.TXT được sở hữu bởi người dùng “john.” Hãy tưởng tượng nếu tên tệp được tiết lộ nhiều hơn một chút so với ví dụ; dữ liệu đó được hiển thị cho tất cả người dùng trên hệ thống và có thể được sử dụng cho mục đích độc hại.

Kể từ hạt nhân Linux 3.2 có một cách để ngăn chặn người dùng nhận được quyền truy cập vào thông tin về các quy trình mà họ không sở hữu. Lệnh ps nhận được thông tin quá trình từ hệ thống tập tin / proc (nơi "proc" là viết tắt của quá trình). Có một tham số mới được gọi là "hidepid" được sử dụng khi hệ thống tập tin / proc được gắn kết. Nó có thể ẩn các quy trình và kiểm soát những người có quyền truy cập vào thông tin trong / proc.

  • hidepid = 0 - Hành vi mặc định mà bất kỳ người dùng nào cũng có thể đọc các tệp trong / proc / PID /
  • hidepid = 1 - Điều đó có nghĩa là người dùng không thể truy cập bất kỳ thư mục / proc / PID / sub nào ngoại trừ của riêng họ. Ngoài ra các tệp như cmdline, io, lịch biểu *, trạng thái, wchan không thể truy cập được đối với những người dùng khác.
  • hidepid = 2 - Mọi thứ từ hidepid = 1, cộng với tất cả / proc / PID / thư mục con sẽ được ẩn cho người dùng khác.

Hệ thống tập tin / proc có thể được remounted trên bay bằng cách sử dụng tùy chọn remount của lệnh mount . Để kiểm tra hidepid, bạn có thể remount hệ thống tập tin / proc như sau:

 sudo mount -o remount, rw, hidepid = 2 / proc 

Bây giờ bạn có thể thử lại lệnh ps :

 ps aux 

Bây giờ đầu ra chỉ hiển thị các quá trình được sở hữu bởi người dùng “pi”.

Để thực hiện thay đổi này vĩnh viễn, bạn cần chỉnh sửa tệp "/ etc / fstab" của Pi. Tệp “fstab” kiểm soát hệ thống tệp nào được gắn khi khởi động.

 sudo nano / etc / fstab 

Và tìm dòng đọc:

 proc / proc proc mặc định 0 0 

Và thay đổi nó thành:

 proc / proc proc mặc định, hidepid = 2 0 0 

Thoát trình chỉnh sửa bằng cách sử dụng “Ctrl + X.” Bây giờ hãy khởi động lại Raspberry Pi của bạn. Khi nó khởi động lại, kiểm tra xem hệ thống tập tin / proc đã được gắn kết với các tùy chọn đúng chưa. Đầu tiên sử dụng mountgrep để xem các tùy chọn hiện tại:

 mount | grep hidepid 

Bây giờ kiểm tra lệnh ps, chính xác như chúng ta đã làm ở trên:

 ps aux 

Lưu ý rằng chỉ có các tiến trình thuộc sở hữu của “pi” có thể nhìn thấy được, nhưng không giống như trước đây khi chúng ta remount hệ thống tập tin / proc, đây là thiết lập vĩnh viễn. Tuy nhiên một từ cảnh báo, ngay cả khi hidepid được sử dụng, “root” vẫn có thể thấy tất cả các tiến trình và các tham số gọi.

Kỹ thuật được sử dụng ở trên sẽ hoạt động trên các máy và bản phân phối Linux khác, không chỉ là Raspberry Pi với Raspbian. Nếu bạn có câu hỏi về việc sử dụng tùy chọn “hidepid” trên hệ thống tệp / proc, vui lòng sử dụng phần nhận xét bên dưới và chúng tôi sẽ xem liệu chúng tôi có thể trợ giúp hay không.