Tại sao tôi có thể giết tiến trình sudo trên Xubfox mà không phải Linux Mint? (như một người dùng bình thường)


2

Tôi có hai máy tính, một máy chạy Xubfox 12.04 và máy còn lại chạy Linux Mint 14.

Trên Xubfox:

$ sudo gedit

trong một thiết bị đầu cuối khác:

$ kill [pid of the gedit process]
bash: kill: ([pid]) - Operation not permitted

$ kill [pid of the sudo process]

Cái cuối cùng này thực sự giết thành công sudo (và gedit với nó), mặc dù sudo được chạy dưới quyền root (setuid) và người dùng bình thường sẽ không thể giết các tiến trình của root. Nhưng tôi đoán là, bởi vì chúng tôi bắt đầu nó, chúng tôi bằng cách nào đó có quyền đặc biệt đối với nó.

Trên bạc hà:

$ sudo gedit

trong một thiết bị đầu cuối khác:

$ kill [pid of the gedit process]
bash: kill: ([pid]) - Operation not permitted

$ kill [pid of the sudo process]
bash: kill: ([pid]) - Operation not permitted

Vậy tại sao chúng ta có thể giết sudo như một người dùng bình thường trên Xubfox nhưng không phải trên Mint? Điều gì gây ra điều này? Làm thế nào tôi có thể thay đổi hành vi này?

tôi là không phải Tìm cách để giết quá trình, rõ ràng sudo kill sẽ làm việc


1
Bạn luôn có thể làm sudo kill PID.
terdon

@terdon: cảm ơn, nhưng tôi không tìm giải pháp để giết quá trình sudo, nhưng tôi muốn hiểu điều gì đang xảy ra, điều gì gây ra sự khác biệt trong hành vi này và nơi / điều này có thể thay đổi như thế nào.
stk

@stk ý của @terdon là bạn nên sử dụng cú pháp sudo kill PID Trong đó PID là viết tắt của ID tiến trình của quá trình bạn đang cố gắng chấm dứt.
Lorenzo Von Matterhorn

@Znau: Tất nhiên tôi có thể giết bất kỳ tiến trình nào bằng root, câu hỏi là tại sao tôi có thể " điêu kỳ diệu "giết nó như là một bình thường người dùng trong trường hợp đã trình bày ở trên và tại sao điều tương tự không hoạt động trên hệ điều hành rất giống nhau. Sau tất cả Xubfox và Mint đều là hậu duệ của Ubuntu. Vì vậy, đây có phải là một cái gì đó người ta có thể thay đổi trong một tập tin cấu hình ở đâu đó? Hoặc nó đến từ các phiên bản / tùy chọn kernel khác nhau? Hoặc một cái gì đó khác hoàn toàn?
stk

@stk Visudo của bạn có thể được thay đổi
Lorenzo Von Matterhorn

Câu trả lời:


2

Tôi muốn nói rằng đây là một sự khác biệt giữa userid REAL và EFFECTIVE userid cho một quy trình nhất định và cách chính xác sudo hoạt động trên mỗi hai máy của bạn.

MINT xuất hiện, khi sudo một tiến trình, để thay đổi cả id người dùng hiệu quả (root) và id người dùng thực (người dùng đã gọi tiến trình) thành root. Do đó, người dùng ban đầu không thể giết tiến trình sudo hoặc tiến trình sudoed (gedit). Xubfox (và, trong trường hợp của tôi, Fedora) không làm điều này. Userid thực sự vẫn là người dùng ban đầu.

Sử dụng lệnh ps để xem quy trình thuộc sở hữu của người dùng (thực tế hoặc hiệu quả). Tôi đã chạy lệnh sudo gedit của bạn. ps uaxf sản xuất cây này:

myuserid  22868  0.0  0.0 163400  4872 pts/2   Ss   13:19  0:00   |  \_ -zsh
root      30392  0.0  0.0 205044  3736 pts/2   S+   13:45  0:00   |  | \_ sudo gedit
root      30417  0.0  0.1 699788 23692 pts/2   Sl+  13:45  0:00   |  |   \_ gedit

Rõ ràng id người dùng hiệu quả cho cả sudo và gedit đều là root chứ không phải bản thân tôi. Sau đó, tôi đã sử dụng ps với tùy chọn --User (- Danh sách người dùng Chọn theo ID người dùng thực (RUID) hoặc tên.) Để xem ai là người dùng thực sự cho các quy trình:

ps --User "myuserid" 

Điều này tạo ra rất nhiều đầu ra, nhưng có một dòng nổi bật:

30392 pts/2    00:00:00 sudo

Nhưng quá trình 30417 bị thiếu một cách rõ rệt ...

Rồi tôi chạy:

ps --User "root"

Điều này cũng tạo ra rất nhiều đầu ra, nhưng dòng này nổi bật:

30417 pts/2    00:00:00 gedit

Nhưng quá trình 30392 đã vắng mặt.

Vì vậy, có vẻ như quá trình sudo (30392) có chủ sở hữu gốc hiệu quả, chủ sở hữu thực sự là tôi và tôi có thể giết nó. Mặt khác, quá trình gedit có quyền sở hữu thực sự và hiệu quả bằng quyền root và không bị tôi (trực tiếp) giết chết. Tôi đoán rằng trên Lint, cả hai quá trình đều có hiệu quả và thực sự thuộc sở hữu của root.

Tôi nghĩ rằng điều này có thể bị ảnh hưởng bởi stay_setuid tùy chọn trong / etc / sudoers , nhưng mô tả về điều đó không thực sự làm cho điều này dường như có khả năng.

Có sự khác biệt nào trong bạn không / etc / sudoers tập tin giữa Mint và Xubfox?


1

Điều này có lẽ được phục vụ tốt hơn trong một bình luận, nhưng tôi chưa thể đăng bình luận. Hãy thử một

ps aux | grep sudo

và nhìn vào người dùng (chủ sở hữu) của quá trình sudo đó. Có thể quy trình sudo đang được chạy với tư cách là người dùng của bạn thay vì root.

Tôi mới thử trên hệ thống Red Hat của mình và không thể giết tiến trình sudo từ người dùng bình thường tại địa phương, vì nó thuộc sở hữu của root.


Không, trên cả hai máy sudo chạy như root
stk

0

Trong cả hai trường hợp chạy lệnh dưới dạng root sẽ giết tiến trình. Lý do tại sao nó không hoạt động trong Mint có lẽ là do không có trình quản lý "độ cao tự động" trong môi trường máy tính để bàn như có trong? Buntu.

Xem: Ubuntu: độ cao quản trị tự động?

Câu hỏi không chính xác có liên quan, nhưng câu trả lời được chấp nhận chạm vào nguyên nhân của sự khác biệt nhận thức.


hm, tôi đang làm điều này từ dòng lệnh, không phải trong "môi trường máy tính để bàn" (tôi đoán bạn có nghĩa là người quản lý tệp, tức là Thunar / Nemo), vì vậy tôi không thấy bất kỳ sự liên quan nào ở đây
stk

Không, ý tôi là Xfce hoặc Gnome (giả sử Mint sử dụng Gnome). Đường cơ sở là có một "trình quản lý mật khẩu" trong? Ubuntu cho phép bạn chạy các lệnh sudo mà không cần nhập lại mật khẩu. Nếu bạn đang chạy lệnh trong khi đăng nhập bằng root trong bảng điều khiển ảo, thông qua sshd hoặc trong trình giả lập thiết bị đầu cuối GUI - lệnh sẽ không thoát với "quyền bị từ chối", giai đoạn. Thực tế là lời nhắc của bạn đọc $ chỉ ra rằng bạn chưa đăng nhập với quyền root. Thực tế là nó hoạt động trên Xubfox cho thấy một số loại độ cao đặc quyền tự động.
Ярослав Рахматуллин
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.