Làm thế nào để thay đổi quyền người dùng pi sudo; Làm thế nào để thêm các tài khoản khác với các quyền khác nhau?


13

Vì thỉnh thoảng tôi sử dụng Pi của mình trên SSH, tôi đã biết rằng thật nguy hiểm khi cho phép SSH truy cập các lệnh sudo. Vì vậy, tôi dự định tắt quyền này trong tương lai gần. Nhưng, khi tôi cài đặt các gói tôi thường phải khởi động lại. Hiện tại, điều này chỉ được cho phép thông qua các siêu người dùng.

sudo reboot

Có cách nào để tôi có thể chỉnh sửa các quyền của người dùng pi để cho phép nó khởi động lại (và cài đặt) các gói không?

Tôi có thể có nhiều tài khoản với các quyền khác nhau không?

Cảm ơn


1
Có bất kỳ câu trả lời được đưa ra là hữu ích? Có ai trong số họ câu trả lời bạn tìm kiếm? Sau đó hãy đánh dấu như đã trả lời.
Anders

Đúng. Nếu bạn vẫn quan tâm, tôi đã cập nhật chúng vào tháng 6 năm 2017 - câu hỏi này đã được hỏi 4 năm và 2 tháng trước, và dẫn tôi đến cách giải quyết vấn đề ngày hôm nay. Kiểm tra các câu trả lời dưới đây:
SDsolar

Câu trả lời:


21

Để làm rõ một chút: Không có "lệnh sudo", chỉ có các lệnh cần quyền root để hoạt động chính xác và sudolà lệnh để có được chúng cho một lệnh: sudochỉ cần chạy lệnh đã cho là root (đọc "sudo" là mệnh lệnh câu "superuser, làm gì đó!"). Các quy tắc về người dùng có thể làm điều này được viết ra /etc/sudoers. Trên bản cài đặt Raspbian mặc định, người dùng mặc định "pi" đã có quyền của anh ta từ dòng này:

pi ALL=(ALL) NOPASSWD: ALL

Điều này có nghĩa là: "Người dùng 'pi' trên TẤT CẢ các máy chủ được phép chuyển sang TẤT CẢ người dùng và KHÔNG phải nhập PASSWD của mình khi sử dụng các lệnh TẤT CẢ (đọc: bất kỳ)". (Tôi đã sử dụng ngữ pháp điên ở đây để giữ trật tự của dòng .. một lưu ý về lý do tại sao có cách phân biệt máy chủ: theo cách này, cùng một tệp sudoers có thể được phân phối cho nhiều máy trên mạng để quản trị viên mạng ít làm việc hơn) .

Có thể là việc có thể chạy các lệnh bằng sudo mà không cần cấp mật khẩu quản trị viên là lý do tại sao bạn cho rằng việc sử dụng sudo qua SSH là rất nguy hiểm (Tôi chưa nghe nói về một vấn đề chung khi làm điều đó ... bạn cũng có thể giải thích chính xác những gì nguy hiểm bạn có nghĩa là gì?).

Chắc chắn bạn có thể có nhiều người dùng với các quyền khác nhau. Nhưng tôi sợ rằng sử dụng sudo vẫn là cách tốt nhất để quản lý các quyền này.

Vì vậy, tôi hy vọng công thức nhỏ này ở đây là những gì bạn cần:

$ sudo adduser admin

Điều này sẽ tạo một "quản trị viên" người dùng, yêu cầu mật khẩu, tạo thư mục chính của anh ấy, v.v.

$ sudo adduser admin sudo
$ sudo adduser admin adm

Điều này sẽ đưa người dùng "quản trị" vào nhóm người dùng "sudo" và "adm". Và vì các quyền được quản lý trong Linux bằng cách thêm người dùng vào nhóm người dùng, điều này mang lại cho người dùng "quản trị" tất cả các đặc quyền và quyền mà anh ta cần. Có một dòng trong /etc/sudoersđó cho phép bất kỳ người dùng nào trong nhóm người dùng "sudo" thực hiện bất kỳ lệnh nào với quyền root; và đặc quyền này là những gì chúng ta cần cho người dùng quản trị viên (thêm anh ta vào "adm" cho phép anh ta đọc một số tệp nhật ký /var/logmà không cần sử dụng sudovà một vài thứ khác). Bạn vẫn cần sử dụng sudokhi đăng nhập với tư cách quản trị viên - nhưng bây giờ sudo hỏi lại mật khẩu của quản trị viên bất cứ khi nào bạn không sử dụng sudo trong khoảng năm phút.

Bây giờ hãy đăng xuất và đăng nhập với tư cách là "quản trị viên" của người dùng. Kiểm tra xem

$ sudo apt-get update
$ sudo apt-get upgrade

làm. Nếu vậy, bạn có thể thu hồi một số đặc quyền của người dùng "pi", vì bây giờ bạn chắc chắn rằng người dùng quản trị của bạn có các đặc quyền đúng:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Điều này sẽ ném người dùng "pi" ra khỏi nhóm người dùng "sudo".

$ sudo visudo

Điều này sẽ bắt đầu một trình soạn thảo cho phép bạn chỉnh sửa /etc/sudoers. Đặt thẻ băm ( #) trước dòng bắt đầu bằng "pi", nhận xét nó (hoặc chỉ cần xóa nó). Sau đó lưu và thoát trình chỉnh sửa, visudo sau đó sẽ tải lại các quy tắc đặc quyền ngay lập tức. Bây giờ người dùng "pi" không được phép sử dụng sudo nữa.

Sau đó, bạn có thể đăng nhập lại với tư cách là người dùng "pi". Nếu bạn muốn chuyển sang quản trị viên cho một số lệnh, hãy sử dụng su("chuyển người dùng"):

$ su - admin

Nếu bạn muốn thêm người dùng: sử dụng sudo adduser <name> như trên, thì hãy kiểm tra danh sách nhóm người dùng mà người dùng "pi" đã có:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

Sử dụng sudo adduser <username> <groupname>để thêm người dùng mới của bạn vào một số nhóm người dùng này, cho phép anh ta sử dụng âm thanh, video được tăng tốc, sử dụng các thiết bị có thể cắm, v.v. Nếu không chắc chắn, hãy thêm anh ta vào tất cả các nhóm người dùng này (nhưng không "sudo"!).


2
visudolà một lệnh sẽ sử dụng trình soạn thảo mặc định của bạn để chỉnh sửa tệp sudoers. Chỉnh sửa tập tin này mà không có nó có thể là một nỗi đau và không được khuyến khích. Bạn có thể thay đổi trình chỉnh sửa ưa thích của mình bằng cách phát hànhsudo update-alternatives --config editor
earthmeLon

Hoặc bạn có thể thử điều này VISUAL=vim visudochỉ trong thời gian này. Nhưng ví dụ tuyệt vời về việc thay đổi các chương trình mặc định, như trình soạn thảo.
Anders

6

Có, bạn có thể định cấu hình sudođể chỉ cho phép người dùng chạy một số lệnh nhất định với các đặc quyền bổ sung. Bạn có thể thay đổi điều này trong /etc/sudoerstệp của mình , nhưng không nên làm điều này trực tiếp mà sử dụng sudo visudolệnh cho việc này.

Trong cài đặt hệ thống mặc định, bạn nên tìm dòng như vậy:

pi ALL=(ALL) NOPASSWD: ALL

Nó nói sudocho phép người dùng pichạy tất cả các máy quay như rootngười dùng mà không cần cung cấp mật khẩu. Bạn có thể thay đổi cuối cùng ALLvà chỉ định danh sách các lệnh được phân tách bằng dấu phẩy (với đường dẫn đầy đủ của chúng) được phép chạy. Trong trường hợp của bạn, bạn nên thay đổi dòng này thành:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Lưu ý rằng có thêm một dòng sudoersảnh hưởng đến pingười dùng:

%sudo   ALL=(ALL:ALL) ALL

Dòng này cho phép tất cả người dùng trong nhóm sudo( %ký tự đứng trước tên có nghĩa là tên nhóm thay vì tên người dùng) chạy TẤT CẢ mật khẩu cung cấp cho họ biết mật khẩu OWN của họ . Nếu bạn rời khỏi dòng này, người dùng pisẽ có thể chạy tất cả các lệnh khác nhưng sẽ được yêu cầu nhập mật khẩu của mình.

Nếu bạn muốn ngăn điều này xảy ra, bạn có thể xóa dòng này hoặc xóa người dùng pi khỏi sudonhóm.

Sau khi thực hiện thay đổi /etc/sudoerstệp, bạn có thể muốn kiểm tra xem nó thực sự làm những gì bạn muốn bằng cách gọisudo -l -U pi lệnh.

Tất nhiên bạn có thể tạo các tài khoản khác nhau và định cấu hình sudoerscho phép họ truy cập vào các lệnh khác nhau.


1

Tháng 5 năm 2018, Điều này vẫn còn chính xác trong khái niệm nhưng quy trình đã thay đổi với các phiên bản sau:

Đầu tiên, các tệp phải được chỉnh sửa trực tiếp bằng vi hoặc nano hoặc leafpad hoặc emacs - bất kỳ trình soạn thảo văn bản yêu thích nào của bạn.

Tên người dùng pi không được đề cập trong tập tin này:

/etc/sudoers

và dòng cuối cùng của tệp là đây:

#includedir /etc/sudoers.d

Đây là một thư mục chứa một tập tin có tên

010_pi-nopasswd

có chứa dòng này

pi ALL=(ALL) NOPASSWD: ALL

Điều này có tác dụng không nhắc cho bất kỳ lệnh sudo nào miễn là tôi đăng nhập với tư cách người dùng pi. (lưu ý cú pháp phải chính xác theo cách này)

Điều đó thật tuyệt.

Dòng nhóm %sudo ALL=(ALL:ALL) ALLvẫn còn đó là

Vì vậy, để trả lời phần đầu tiên của câu hỏi:

Khi tôi di chuyển tệp /etc/sudoers/sudoers.d/010_pi-nopasswd lên một cấp thư mục để thực hiện bao gồm thất bại, sau đó đợi 15 phút, hệ thống Raspbian của tôi nhắc mật khẩu của riêng tôi khi sử dụng sudo, chỉ như hệ thống Ubuntu 14.04 LTS của tôi đã từng làm.

Sau đó, khi tôi di chuyển nó trở lại nơi nó thuộc về, thậm chí sau 10 phút nó không còn nhắc tôi nữa.

Không cần khởi động lại. Voila, không nhắc mật khẩu khi sử dụng sudo

Hệ thống kiểm tra LTS Ubuntu 14.04 LTS của tôi có cùng thiết lập ngoại trừ không có tệp 010_pi-nopasswd. Lubfox đã được cài đặt với pi là người dùng root. Nó nhắc tôi mỗi lần tôi sử dụng sudo, sau đó không nhắc tôi trong 10 phút sau đó.

Tôi đã thêm cùng tệp này vào hệ thống Ubuntu giống như cách Raspbian được thiết lập, (nhớ chmod 0440 trên tệp này trong khi bạn vẫn ở trong cửa sổ 10 phút đó) - và

Voila, nó không còn nhắc tôi nhập mật khẩu khi tôi đăng nhập dưới dạng pi ngay cả sau 15 phút.

Một lần nữa, sự thay đổi xảy ra ngay lập tức mà không cần khởi động lại.

Đây là câu trả lời tháng 5 năm 2018 về cách vô hiệu hóa và kích hoạt lời nhắc cho việc sử dụng lệnh sudo khi đăng nhập với tư cách người dùng root pi. Những người dùng và nhóm khác có thể được cấu hình theo cách tương tự.

--UPDATE cho Ubuntu 16.04 LTS Hệ thống này cũng rất giống nhau. Tuy nhiên, điểm khác biệt lớn nhất là 16.04 có quyền truy cập tệp chặt chẽ hơn nhiều nên công việc phải được thực hiện trong suchế độ. Nếu bạn quên mật khẩu gốc, bạn có thể đặt lại mật khẩu từ dấu nhắc thông thường bằng cách sử dụng sudo passwd rootSau đó, sulệnh sẽ hoạt động và bạn có thể đi từ đó.


Chỉ cần tìm thấy điều này qua Google - vì vậy nếu tôi theo dõi điều này, người dùng vẫn cần ở trong nhóm sudoers, nhưng /etc/sudo.d kiểm soát tần suất người dùng cụ thể được yêu cầu nhập mật khẩu?
lonstar

1
Vâng. Bạn đã có nó. Trở thành thành viên sudoersthường được thực hiện tại thời điểm người dùng được tạo. Ví dụ sử dụng: Bạn sẽ lưu ý rằng chuỗi lệnh phổ biến sudo apt-get update && sudo apt-get upgradegọi sudo hai lần nhưng thật khó chịu khi nó có thể dừng lại và yêu cầu nhập lại mật khẩu trước khi nâng cấp. Vì vậy, tôi đặt tên của mình là không bao giờ nhắc một tên đăng nhập (pi) của mình và sau đó sử dụng sudo apt-get update -y && sudo apt-get upgrade -yđể nó cũng không dừng lại để yêu cầu OK thực hiện các thay đổi lớn. Để làm cho nó giống Unix hơn. Chỉ cần làm những gì tôi yêu cầu, và ngay cả khi tôi bỏ đi, tôi muốn nó hoàn thành.
SDsolar

0

An toàn hơn khi cho phép truy cập sudo thông qua SSH hơn là cho phép bất kỳ người dùng nào cài đặt các gói. Nếu bạn thực sự lo lắng về nó, hãy thay đổi dòng /etc/sudoerstừ:

pi ALL=(ALL) NOPASSWD: ALL

đến

pi ALL=(ALL) PASSWD: ALL

Điều đó có nghĩa là bạn sẽ được nhắc nhập mật khẩu ngay lần đầu tiên bạn sử dụng sudo trong bất kỳ phiên nào và một lần nữa sau khi hết thời gian vài phút. Bạn không thể chỉnh sửa /etc/sudoerstrực tiếp; sử dụngsudo visudo để làm như vậy.

Có vẻ như Krzysztof đã nhảy vào với một câu trả lời ngay tại đó. Bạn có thực sự chắc chắn rằng bạn cần khởi động lại mỗi khi bạn cài đặt các gói mới? Trừ khi bạn đang cài đặt kernel hoặc firmware mới, không có nhiều thứ khác cần khởi động lại. Đây là một hệ điều hành chất lượng mà chúng tôi đã có ở đây ...


3
Đề cập đến timestampthời gian chờ là một ý tưởng tốt. Đó là 15 phút theo mặc định, BTW. Lưu ý đó PASSWDlà mặc định (nếu NOPASSWDkhông được chỉ định trước đó trong danh sách lệnh này). Cũng lưu ý rằng /etc/sudoerscó thể được chỉnh sửa trực tiếp mà không có vấn đề nếu bạn biết những gì bạn đang làm. Việc sử dụng visudothay đổi trong tệp tạm thời ngăn không cho tệp tự động được ghi ở giữa thay đổi (có thể gây ra lỗi cú pháp và / hoặc các vấn đề bảo mật), nó khóa tệp này chống lại nhiều chỉnh sửa đồng thời và thực hiện một số kiểm tra cú pháp trước khi ghi tệp.
Krzysztof Adamski

Tôi nghĩ rằng OP cập nhật rằng hiếm khi anh ta luôn nhận được kernel mới ... hoặc một số đồng nghiệp đã bảo anh ta khởi động lại mỗi lần, vì anh ta không muốn giải thích làm thế nào OP có thể phát hiện ra gói kernel trong danh sách cập nhật.
orithena

TNX cho nhận xét này, @Krzysztof. Tôi đã thực hiện điều chỉnh trong câu trả lời của tôi. Và bạn đã đúng về chỉnh sửa. Trong thực tế, trên máy 16.04 của tôi, tôi chỉ cần đặt dòng pi trực tiếp vào tệp sudoers, vì sudoers.d chỉ chứa một readme. Tôi đã để nó chỉ vì 'nguyên nhân, nhưng ít nhất các quyền pi đang được xử lý. . , cho đến nay.) Cảm ơn bạn một lần nữa.
SDsolar

0

Chỉ là một thay thế cho những gì Scruss nói, xóa /etc/sudoers.d/010_pi-nopasswdtập tin bằng cách chạy sudo rm /etc/sudoers.d/010_pi-nopasswd. Dễ dàng hơn và an toàn hơn sau đó chỉnh sửa tệp sudoers chính, có thể phá vỡ sudo.

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.