Làm cách nào để chạy lệnh với tư cách quản trị viên hệ thống (root)


66

Tôi cần phải chạy một lệnh với các đặc quyền hành chính. Có người nói tôi nên chạy một lệnh với quyền root. Làm thế nào để tôi làm điều này?


2
vui lòng xem phần thảo luận về câu hỏi này
Stefan

Câu trả lời:


94

Hai khả năng chính của dòng lệnh là:

  • Sử dụng suvà nhập mật khẩu root khi được nhắc.
  • Đặt sudotrước lệnh và nhập mật khẩu của bạn khi được nhắc.

Chạy lệnh shell là root

sudo (ưa thích khi không chạy màn hình đồ họa)

Đây là phương pháp ưa thích trên hầu hết các hệ thống, bao gồm Ubuntu, Linux Mint, (có thể nói là) Debian và các hệ thống khác. Nếu bạn không biết mật khẩu root riêng, hãy sử dụng phương pháp này.

Sudo yêu cầu bạn nhập mật khẩu của riêng bạn. (Mục đích là để hạn chế thiệt hại nếu bạn để bàn phím không được giám sát và mở khóa, và cũng để đảm bảo rằng bạn thực sự muốn chạy lệnh đó và đó không phải là một lỗi đánh máy.) Nó thường được cấu hình để không hỏi lại một vài lần vài phút để bạn có thể chạy một số sudolệnh liên tiếp.

Thí dụ:

sudo service apache restart

Nếu bạn cần chạy một số lệnh dưới dạng root, hãy thêm tiền tố vào mỗi lệnh sudo. Đôi khi, sẽ thuận tiện hơn khi chạy shell tương tác với quyền root. Bạn có thể sử dụng sudo -icho điều đó:

$ sudo -i
# command 1
# command 2
...
# exit

Thay vì sudo -i, bạn có thể sử dụng sudo -s. Sự khác biệt là -itái i nitializes môi trường để giá trị mặc định lành mạnh, trong khi -ssử dụng các file cấu hình của bạn cho tốt hơn hoặc tồi tệ hơn.

Để biết thêm thông tin, hãy xem trang web sudo hoặc gõ man sudotrên hệ thống của bạn. Sudo rất cấu hình; ví dụ, nó có thể được cấu hình để cho phép một người dùng nhất định chỉ thực hiện một số lệnh nhất định dưới dạng root. Đọc sudoerstrang người đàn ông để biết thêm thông tin; sử dụng sudo visudođể chỉnh sửa tập tin sudoers.

su

Các sulệnh tồn tại trên hầu hết các hệ thống unix-like. Nó cho phép bạn chạy một lệnh như một người dùng khác, miễn là bạn biết mật khẩu của người dùng đó. Khi chạy không có người dùng chỉ định, susẽ mặc định cho tài khoản root.

Thí dụ:

su -c 'service apache restart'

Lệnh để chạy phải được thông qua bằng cách sử dụng -ctùy chọn. Lưu ý rằng bạn cần dấu ngoặc kép để lệnh không bị phân tách bởi shell của bạn, nhưng được truyền nguyên vẹn cho shell gốc suchạy.

Để chạy nhiều lệnh với quyền root, sẽ thuận tiện hơn khi bắt đầu một shell tương tác.

$ su
# command 1
# command 2
...
# exit

Trên một số hệ thống, bạn cần ở trong nhóm số 0 (được gọi wheel) để sử dụng su. (Vấn đề là hạn chế thiệt hại nếu mật khẩu root vô tình bị rò rỉ cho ai đó.)

Đăng nhập bằng root

Nếu có một mật khẩu gốc được đặt và bạn đang sở hữu nó, bạn chỉ cần gõ rootvào dấu nhắc đăng nhập và nhập mật khẩu gốc. Hãy cẩn thận và tránh chạy các ứng dụng phức tạp như root vì chúng có thể làm điều gì đó bạn không có ý định. Đăng nhập trực tiếp bằng root chủ yếu hữu ích trong các tình huống khẩn cấp, chẳng hạn như lỗi đĩa hoặc khi bạn tự khóa tài khoản của mình.

Chế độ một người dùng

Chế độ người dùng đơn, hoặc cấp 1, cũng cung cấp cho bạn quyền root. Điều này chủ yếu dành cho các tình huống bảo trì khẩn cấp trong đó việc khởi động vào cấp độ chạy nhiều người dùng là không thể. Bạn có thể khởi động vào chế độ người dùng bằng cách chuyển singlehoặc emergencytrên dòng lệnh kernel. Lưu ý rằng việc khởi động vào chế độ một người dùng không giống như khởi động hệ thống bình thường và đăng nhập với quyền root. Thay vào đó, hệ thống sẽ chỉ khởi động các dịch vụ được xác định cho cấp 1. Thông thường, đây là số lượng dịch vụ nhỏ nhất cần có để có một hệ thống có thể sử dụng được.

Bạn cũng có thể chuyển sang chế độ người dùng bằng cách sử dụng lệnh telinit : telinit 1; tuy nhiên, lệnh này yêu cầu bạn phải có quyền root thông qua một số phương thức khác để chạy.

Trên nhiều hệ thống, việc khởi động vào chế độ người dùng sẽ cung cấp cho người dùng quyền truy cập vào thư mục gốc mà không cần nhắc mật khẩu. Đáng chú ý, systemdcác hệ thống dựa trên cơ sở sẽ nhắc bạn nhập mật khẩu gốc khi bạn khởi động theo cách này.

Các chương trình khác

Calife

Calife cho phép bạn chạy các lệnh như một người dùng khác bằng cách nhập mật khẩu của riêng bạn, nếu được ủy quyền. Nó tương tự như sudo phổ biến hơn nhiều (xem ở trên). Calife có trọng lượng nhẹ hơn sudo nhưng cũng ít cấu hình hơn.

Op

Op cho phép bạn chạy các lệnh như một người dùng khác, bao gồm cả root. Đây không phải là một công cụ toàn diện để chạy các lệnh tùy ý: bạn gõ optiếp theo là một ghi nhớ cấu hình bởi người quản trị hệ thống để chạy một lệnh cụ thể.

siêu

Super cho phép bạn chạy các lệnh như một người dùng khác, bao gồm cả root. Lệnh phải được người quản trị hệ thống cho phép.

Chạy lệnh đồ họa với quyền root

Xem thêm Wikipedia .

Chính sách (được ưa thích khi sử dụng Gnome)

Đơn giản chỉ cần tiền tố lệnh mong muốn của bạn với lệnh pkexec. Xin lưu ý rằng trong khi điều này hoạt động trong hầu hết các trường hợp, nó không hoạt động phổ biến.

Xem man pkexecđể biết thêm thông tin.

KdeSu, KdeSudo (ưu tiên khi sử dụng KDE)

kdesukdesudolà mặt trước đồ họa đến susudotương ứng. Chúng cho phép bạn chạy các chương trình X Window với quyền root mà không gặp rắc rối. Chúng là một phần của KDE . Thể loại

kdesu -c 'command --option argument'

và nhập mật khẩu gốc hoặc gõ

kdesudo -c 'command --option argument'

và nhập mật khẩu của bạn (nếu được phép chạy sudo). Nếu bạn kiểm tra tùy chọn Mật khẩu giữ mật khẩu trong KdeSu, bạn sẽ chỉ phải nhập mật khẩu gốc một lần cho mỗi phiên đăng nhập.

Các chương trình khác

Ktsuss

Ktsuss (Dịch vụ giữ đơn giản, ngu ngốc) là phiên bản đồ họa của su.

Sáp ong

Beesu là một giao diện đồ họa cho lệnh su đã thay thế Gksu trong các hệ điều hành dựa trên Red Hat. Nó đã được phát triển chủ yếu cho RHEL và Fedora.

Phương pháp lỗi thời

gksugksudo

gksugksudolà mặt trước đồ họa đến susudotương ứng. Chúng cho phép bạn chạy các chương trình X Window với quyền root mà không gặp rắc rối. Họ là một phần của Gnome . Thể loại

gksu command --option argument

và nhập mật khẩu gốc hoặc gõ

gksudo command --option argument

và nhập mật khẩu của bạn (nếu được phép chạy sudo).

gksugksudođã lỗi thời. Chúng đã được thay thế bởi PolicyKit trong Gnome và nhiều bản phân phối (như Ubuntu) không còn cài đặt chúng theo mặc định. Bạn không nên phụ thuộc vào chúng có sẵn hoặc hoạt động đúng.

Thủ công thông qua một trong các phương pháp dựa trên vỏ

Sử dụng một trong các phương thức trong "chạy lệnh shell làm phần gốc". Bạn sẽ cần đảm bảo rằng cả DISPLAYmôi trường và môi trường đều không XAUTHORITYđược thiết lập lại trong quá trình chuyển đổi sang root. Điều này có thể yêu cầu cấu hình bổ sung của các phương thức nằm ngoài phạm vi của câu hỏi này.

Nhìn chung, đây là một ý tưởng tồi, chủ yếu là vì các ứng dụng đồ họa sẽ đọc và ghi các tệp cấu hình dưới dạng root và khi bạn cố gắng sử dụng lại các ứng dụng đó như người dùng bình thường của mình, các ứng dụng đó sẽ không được phép đọc cấu hình của riêng chúng.

Chỉnh sửa một tập tin như root

Xem Làm thế nào để tôi chỉnh sửa một tập tin như root?


2
Cần lưu ý rằng sudosẽ chỉ hoạt động nếu (1) nó được cài đặt và (2) nếu việc sử dụng của bạn nằm trong tệp sudoers và nó được phép thực hiện thao tác.
n0pe

2
điều này cần phải được cập nhật. pkexecđang thay thế gksu/ gksudotrong rất nhiều bản phân phối hiện nay.
strugee

1
@strugee - bạn đã thử và cập nhật cái này chưa? Những thứ trong Redhat cũng không đúng.
slm

8

Sử dụng su:

$ su -c command

hoặc là

$ su
# command
# exit

Trong cả hai trường hợp, bạn sẽ được nhắc rootnhập mật khẩu. Để biết thêm thông tin, xem trang hướng dẫn .


3

Vì câu hỏi không phải là Linux cụ thể, nên đây là cách bạn đạt được mục tiêu tương tự trong Solaris 9+ (hoặc Trusted Solaris 8):

Solaris, kể từ phiên bản 9, đã bao gồm một bộ công cụ được gọi một cách trìu mến là RBAC hoặc Kiểm soát truy cập dựa trên vai trò.

Điểm chính của RBAC là thông qua việc cấp Quyền và Quyền, cho Người dùng và / hoặc Vai trò hoặc cấp Vai trò cho Người dùng, bạn có thể tạo các mô hình chi tiết cực kỳ tốt cho những ai có thể chạy những đặc quyền nào.

Về cơ bản, bạn xác định ủy quyền trong / etc / security / auth_attr, sau đó cấp chúng cho người dùng hoặc vai trò trong / etc / user_attr.

Bạn xác định hồ sơ trong / etc / security / prof_attr. Sau đó, bạn liên kết các lệnh với các cấu hình đó trong / etc / security / exec_attr, sau đó bằng cách gán các cấu hình đó cho người dùng trong tệp / etc / user_attr.

Một khi những điều đó được thực hiện, bạn thực sự chạy pfexec <command>để thực hiện lệnh với đặc quyền hay quyền được cấp cho rằng người dùng cho rằng lệnh.

Điều thú vị về RBAC là không có đặc quyền bổ sung nào được cấp cho chính lệnh hoặc người dùng, chỉ cho sự kết hợp của lệnh user +. Vì vậy, an toàn hơn là tạo nhị phân + hoặc chỉ sử dụng sudo để khiến người dùng có thể thực hiện khá nhiều thứ. (Tôi biết rằng bạn có thể khóa sudo, nhưng theo kinh nghiệm của tôi, hầu hết mọi người không)

Một ưu điểm khác của RBAC là bạn có thể tạo tài khoản vai trò gốc và gán vai trò đó cho người dùng có khả năng trở thành root bằng lệnh 'su' và mật khẩu gốc. Người dùng root cũng có thể đăng nhập ở Chế độ một người dùng, điều này tốt hơn (theo ý kiến ​​của tôi) so với mô hình Linux nơi bạn có thể vô hiệu hóa mật khẩu gốc passwd -d roothoặc khóa tài khoản root passwd -l root, cả hai đều giúp đăng nhập bằng root khó khăn khi có sự cố xảy ra

Ben Rockwood có một bài đăng blog tuyệt vời về RBAC có thể được đọc tại Sử dụng RBAC trên (Mở) Solaris .


3

Hoặc bạn có thể cung cấp cho một số lệnh một siêu năng lực. Tôi đang nói về các quyền đặc biệt trong đó các lệnh được thực thi với sự cho phép của chủ sở hữu.

Nhận đường dẫn lệnh #which <command>và đặt SUID hoặc SGID cho đường dẫn đó.

Các bit PS - SUID và SGID nên được chú ý cẩn thận. Họ có thể làm cho hệ thống của bạn không an toàn.

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.