Các sudo
lệnh cho phép bạn chạy các lệnh trên Linux như thể bạn là người khác, chẳng hạn như root
. sudo
cũng cho phép bạn kiểm soát ai có thể truy cập root's
khả năng, với mức độ chi tiết. Cung cấp cho người dùng toàn quyền truy cập hoặc cho phép họ sử dụng một tập hợp con lệnh nhỏ. Chúng tôi chỉ cho bạn cách làm.
quyền sudo và quyền gốc
Tất cả chúng ta đều đã nghe nói (sự đơn giản hóa quá mức) rằng mọi thứ trong Linux đều là một tệp. Trên thực tế, hầu như mọi thứ trong hệ điều hành từ quy trình, tệp, thư mục, ổ cắm và đường ống đều giao tiếp với hạt nhân thông qua bộ mô tả tệp. Vì vậy, mặc dù mọi thứ không phải một tệp, hầu hết các đối tượng hệ điều hành được xử lý như thể họ đã. Khi có thể, thiết kế của các hệ điều hành giống như Linux và Unix tuân theo nguyên tắc này.
Khái niệm “mọi thứ là một tệp” đã trở nên sâu rộng trong Linux. Khi đó, thật dễ dàng nhận thấy, quyền đối với tệp trong Linux đã trở thành một trong những yếu tố chính của đặc quyền và quyền người dùng. Nếu bạn sở hữu một tệp hoặc thư mục (một loại tệp đặc biệt), bạn có thể làm những gì bạn thích với nó, bao gồm chỉnh sửa, đổi tên, di chuyển và xóa nó. Bạn cũng có thể đặt các quyền trên tệp để người dùng hoặc nhóm người dùng khác có thể đọc, sửa đổi hoặc thực thi tệp. Mọi người đều chịu sự điều chỉnh của các quyền này.
Tất cả mọi người, ngoại trừ superuser, được gọi là root
. Các root
tài khoản là một tài khoản đặc quyền. Nó không bị ràng buộc bởi các quyền đối với bất kỳ đối tượng nào trong hệ điều hành. Người dùng root có thể làm bất cứ điều gì với bất cứ điều gì và, khá nhiều, bất cứ lúc nào.
Tất nhiên, bất kỳ ai có quyền truy cập vào root's
mật khẩu có thể làm tương tự. Họ có thể tàn phá một cách ác ý hoặc vô tình. Trên thực tế root
người dùng cũng có thể tàn phá bằng cách mắc lỗi. Không ai là không thể sai lầm. Đó là thứ nguy hiểm.
Đây là lý do tại sao nó hiện được coi là phương pháp hay nhất để không phải vào root
ở tất cả. Đăng nhập bằng tài khoản người dùng thông thường và sử dụng sudo
để nâng cao các đặc quyền của bạn trong thời gian ngắn mà bạn cần chúng. Thường thì đó chỉ là đưa ra một lệnh duy nhất.
LIÊN QUAN: “Mọi thứ là một tệp” có nghĩa là gì trong Linux?
Danh sách sudoers
sudo
đã được cài đặt trên các máy tính Ubuntu 18.04.3, Manjaro 18.1.0 và Fedora 31 được sử dụng để nghiên cứu bài viết này. Đây không phải là một bất ngờ. sudo
đã xuất hiện từ đầu những năm 1980 và đã trở thành phương tiện tiêu chuẩn để vận hành superuser cho hầu hết các bản phân phối.
Khi bạn cài đặt bản phân phối hiện đại, người dùng bạn tạo trong quá trình cài đặt sẽ được thêm vào danh sách người dùng được gọi là sudoers. Đây là những người dùng có thể sử dụng sudo
chỉ huy. Bởi vì bạn có sudo
quyền hạn, bạn có thể sử dụng chúng để thêm những người dùng khác vào danh sách các sudoers.
Tất nhiên, việc cung cấp trạng thái siêu người dùng đầy đủ hoàn toàn không cần thiết, hoặc cho bất kỳ ai chỉ có nhu cầu một phần hoặc cụ thể. Danh sách sudoers cho phép bạn chỉ định lệnh nào mà những người dùng khác nhau được phép sử dụng sudo
với. Bằng cách đó, bạn không đưa cho họ chìa khóa vương quốc, nhưng họ vẫn có thể hoàn thành những việc mình cần làm.
Chạy lệnh với tư cách người dùng khác
Ban đầu, nó được gọi là “superuser do”, bởi vì bạn có thể làm mọi thứ với tư cách là superuser. Phạm vi của nó hiện đã được mở rộng và bạn có thể sử dụng sudo
để thực hiện một lệnh như thể bạn là bất kỳ người dùng nào. Nó đã được đổi tên để phản ánh chức năng mới đó. Bây giờ nó được gọi là “người dùng thay thế làm.”
Để sử dụng sudo
để chạy một lệnh với tư cách là người dùng khác, chúng ta cần sử dụng -u
(người dùng) tùy chọn. Ở đây, chúng tôi sẽ chạy lệnh whoami với tư cách là người dùng mary
. Nếu bạn sử dụng sudo
lệnh mà không có -u
tùy chọn, bạn sẽ chạy lệnh dưới dạng root
.
Và tất nhiên, vì bạn đang sử dụng sudo
bạn sẽ được nhắc nhập mật khẩu của mình.
sudo -u mary whoami
Phản hồi từ whoami
cho chúng tôi biết rằng tài khoản người dùng đang chạy lệnh là mary
.
Bạn có thể dùng sudo
lệnh đăng nhập với tư cách người dùng khác mà không cần biết mật khẩu của họ. Bạn sẽ được nhắc nhập mật khẩu của riêng mình. Chúng ta cần sử dụng -i
(đăng nhập) tùy chọn.
sudo -i -u mary
pwd
whoami
ls -hl
exit
Bạn đang đăng nhập mary
. Các tệp “.bashrc”, “.bash_aliases” và “.profile” cho tài khoản người dùng mary được xử lý chính xác như thể chủ sở hữu của tài khoản người dùng mary đã đăng nhập.
- Lời nhắc lệnh thay đổi để phản ánh đây là phiên dành cho tài khoản người dùng
mary
. - Các
pwd
lệnh đại diện mà bạn hiện đang ởmary's
thư mục chính. -
whoami
cho chúng tôi biết bạn đang sử dụng tài khoản người dùngmary
. - Các tệp trong thư mục thuộc về
mary
tài khoản người dùng. - Các
exit
lệnh đưa bạn trở lại phiên tài khoản người dùng bình thường của bạn.
Chỉnh sửa tệp sudoers
Để thêm người dùng vào danh sách những người có thể sử dụng sudo
, bạn cần chỉnh sửa sudoers
tập tin. Điều tối quan trọng là bạn chỉ nên làm như vậy bằng cách sử dụng visudo
chỉ huy. Các visudo
lệnh ngăn nhiều người cố gắng chỉnh sửa tệp sudoers cùng một lúc. Nó cũng thực hiện kiểm tra cú pháp và phân tích cú pháp nội dung tệp khi bạn lưu chúng.
Nếu các chỉnh sửa của bạn không vượt qua các bài kiểm tra, tệp sẽ không được lưu một cách mù quáng. Bạn nhận được các tùy chọn. Bạn có thể hủy và bỏ các thay đổi, quay lại và chỉnh sửa lại các thay đổi hoặc buộc lưu các chỉnh sửa không chính xác. Lựa chọn cuối cùng là một ý tưởng tồi. Đừng bị cám dỗ để làm điều đó. Bạn có thể thấy mình trong một tình huống mà tất cả mọi người vô tình bị khóa không sử dụng sudo
.
Mặc dù bạn bắt đầu quá trình chỉnh sửa bằng cách sử dụng visudo
chỉ huy, visudo
không phải là một biên tập viên. Nó gọi một trong những người chỉnh sửa hiện có của bạn để thực hiện các chỉnh sửa tệp. Trên Manjaro và Ubuntu, visudo
lệnh khởi chạy trình soạn thảo đơn giản nano
. Trên Fedora, visudo
ra mắt có khả năng hơn — nhưng kém trực quan hơn—vim
.
LIÊN QUAN: Cách thoát Vi hoặc Vim Editor
Nếu bạn muốn sử dụng nano
trên Fedora, bạn có thể làm như vậy một cách dễ dàng. Đầu tiên, hãy cài đặt nano
:
sudo dnf cài đặt nano
Và sau đó visudo
phải được gọi bằng lệnh này:
sudo EDITOR=nano visudo
Đó có vẻ như là một ứng cử viên tốt cho một bí danh. Các nano
trình soạn thảo được mở bằng tệp sudoers được tải trong đó.
Thêm người dùng vào nhóm sudo
Sử dụng visudo
để mở tệp sudoers. Sử dụng lệnh này hoặc lệnh được mô tả ở trên để chỉ định trình chỉnh sửa mà bạn chọn:
sudo visudo
Cuộn qua tệp sudoers cho đến khi bạn thấy định nghĩa của %sudo
mục nhập.
Dấu phần trăm cho biết đây là định nghĩa nhóm chứ không phải định nghĩa người dùng. Trên một số bản phân phối, %sudo
dòng có một băm #
ở đầu dòng. Điều này làm cho dòng trở thành một bình luận. Nếu đúng như vậy, hãy xóa băm và lưu tệp.
Các %sudo
dòng bị phá vỡ như thế này:
- % sudo: Tên của nhóm.
- TẤT CẢ =: Quy tắc này áp dụng cho tất cả các máy chủ trên mạng này.
- (TẤT CẢ): các thành viên của nhóm này có thể chạy lệnh với tư cách là tất cả người dùng và tất cả các nhóm.
- Tất cả: thành viên của nhóm này có thể chạy tất cả các lệnh.
Để đổi tên một chút, các thành viên của nhóm này có thể chạy bất kỳ lệnh nào, với tư cách là bất kỳ người dùng hoặc bất kỳ nhóm nào, trên máy tính này hoặc trên bất kỳ máy chủ nào khác trong mạng này. Vì vậy, một cách đơn giản để cấp cho ai đó đặc quyền root và khả năng sử dụng sudo
, là thêm chúng vào sudo
nhóm.
Chúng tôi có hai người dùng, Tom và Mary, có tài khoản người dùng tom
và mary
tương ứng. Chúng tôi sẽ thêm tài khoản người dùng tom
đến sudo
nhóm với usermod
chỉ huy. Các -G
(nhóm) tùy chọn chỉ định nhóm mà chúng tôi sẽ thêm tom
tài khoản cho. Các -a
(nối thêm) tùy chọn thêm vào nhóm này vào danh sách các nhóm tài khoản người dùng tom
đã ở trong. Nếu không có tùy chọn này, tài khoản người dùng tom
sẽ được đưa vào nhóm mới nhưng bị xóa khỏi bất kỳ nhóm nào khác.
sudo usermod -a -G sudo tom
Hãy kiểm tra Mary ở trong nhóm nào:
groups
Tài khoản người dùng mary
chỉ trong mary
nhóm.
Hãy cùng Tom kiểm tra:
groups
Các tom
tài khoản người dùng — và do đó, Tom — nằm trong nhóm tom
và sudo
.
Hãy cố gắng để Mary làm điều gì đó yêu cầu sudo
các đặc quyền.
sudo less /etc/shadow
Mary không thể nhìn vào bên trong tệp bị hạn chế “/ etc / shadow”. Cô ấy nhận được một lời khen nhẹ vì đã cố gắng sử dụng sudo
mà không có sự cho phép. Hãy xem cách Tom đánh giá:
sudo less /etc/shadow
Ngay sau khi Tom nhập mật khẩu của mình, anh ta sẽ được hiển thị tệp / etc / shadow.
Chỉ bằng cách thêm anh ta vào sudo
nhóm, anh ấy đã được nâng lên hàng ngũ ưu tú của những người có thể sử dụng sudo
. Hoàn toàn không bị giới hạn.
Cung cấp cho người dùng các quyền sudo bị hạn chế
Tom đã được cho đầy đủ sudo
các quyền. Anh ấy có thể làm bất cứ điều gì root
—Hoặc bất kỳ ai khác trong sudo
nhóm — có thể làm. Điều đó có thể mang lại cho anh ta nhiều quyền lực hơn là bạn vui lòng giao cho. Đôi khi có một yêu cầu đối với người dùng để thực hiện một chức năng yêu cầu root
đặc quyền, nhưng không có trường hợp chính đáng để họ có đầy đủ sudo
truy cập. Bạn có thể đạt được sự cân bằng đó bằng cách thêm chúng vào tệp sudoers và liệt kê các lệnh mà chúng có thể sử dụng.
Hãy gặp Harry, chủ sở hữu của tài khoản người dùng harry
. Anh ấy không ở trong sudo
nhóm, và anh ấy không có sudo
các đặc quyền.
groups
Việc có thể cài đặt phần mềm rất hữu ích cho Harry, nhưng chúng tôi không muốn cậu ấy có đầy đủ sudo
các quyền. OK, không vấn đề gì. hãy nhóm lên visudo
:
sudo visudo
Cuộn xuống qua tệp cho đến khi bạn vượt qua các định nghĩa nhóm. Chúng tôi sẽ thêm một dòng cho Harry. Bởi vì đây là một người sử dụng định nghĩa chứ không phải định nghĩa nhóm, chúng ta không cần bắt đầu dòng bằng dấu phần trăm.
Mục nhập cho tài khoản người dùng harry là:
harry ALL=/usr/bin/apt-get
Lưu ý rằng có một tab giữa “harry” và “ALL =.”
Đây là tài khoản người dùng harry
có thể sử dụng các lệnh được liệt kê trên tất cả các máy chủ được kết nối với mạng này. Có một lệnh được liệt kê, đó là “/ usr / bin / apt-get.” Chúng ta có thể cấp cho Harry quyền truy cập vào nhiều lệnh bằng cách thêm chúng vào danh sách lệnh, phân tách bằng dấu phẩy.
Thêm dòng vào tệp sudoers và lưu tệp. Nếu bạn muốn kiểm tra lại xem dòng có đúng cú pháp hay không, chúng tôi có thể yêu cầu visudo
để quét tệp và kiểm tra cú pháp cho chúng tôi, bằng cách sử dụng -c
(chỉ kiểm tra) tùy chọn:
sudo visudo -c
Việc kiểm tra diễn ra và visudo
báo cáo rằng tất cả đều tốt. Harry bây giờ có thể sử dụng apt-get
để cài đặt phần mềm nhưng sẽ bị từ chối nếu anh ta cố gắng sử dụng bất kỳ lệnh nào khác yêu cầu sudo
.
sudo apt-get install finger
Thích hợp sudo
quyền đã được cấp cho Harry và anh ấy có thể cài đặt phần mềm.
Điều gì sẽ xảy ra nếu Harry cố gắng sử dụng một lệnh khác yêu cầu sudo
?
sudo shutdown now
Harry bị ngăn không cho chạy lệnh. Chúng tôi đã cấp cho anh ấy quyền truy cập cụ thể, hạn chế, thành công. Anh ta có thể sử dụng lệnh được chỉ định và không có gì khác.
Sử dụng bí danh người dùng sudoers
Nếu chúng tôi muốn cấp cho Mary những đặc quyền tương tự, chúng tôi có thể thêm một dòng trong tệp sudoers cho tài khoản người dùng mary
theo cách giống hệt như chúng ta đã làm với Harry. Một cách khác, gọn gàng hơn, để đạt được điều tương tự là sử dụng User_Alias
.
trong tệp sudoers, một User_Alias
chứa danh sách tên tài khoản người dùng. Tên của User_Alias
sau đó có thể được sử dụng trong một định nghĩa để đại diện cho tất cả các tài khoản người dùng đó. Nếu bạn muốn thay đổi các đặc quyền cho các tài khoản người dùng đó, bạn chỉ có một dòng để chỉnh sửa.
Hãy tạo một User_Alias
và sử dụng nó trong tệp sudoers của chúng tôi.
sudo visudo
Scroll down in the file until you come to the User_Alias specification line.
Thêm User_Alias
bằng cách gõ:
User_Alias INSTALLERS = harry, mary
Mỗi phần tử được phân tách bằng dấu cách, không phải tab. Logic được chia thành:
-
User_Alias: Điều này nói với
visudo
đây sẽ là mộtUser_Alias
. - NGƯỜI CÀI ĐẶT: Đây là tên tùy ý cho bí danh này.
- = harry, mary: Danh sách người dùng để đưa vào bí danh này.
Bây giờ chúng tôi sẽ chỉnh sửa dòng mà chúng tôi đã thêm trước đó cho tài khoản người dùng harry
:
harry ALL=/usr/bin/apt-get
Thay đổi nó để nó đọc:
INSTALLERS ALL=/usr/bin/apt-get
Điều này nói rằng tất cả các tài khoản người dùng có trong định nghĩa của “NGƯỜI CÀI ĐẶT” User_Alias
có thể chạy apt-get
chỉ huy. Chúng tôi có thể kiểm tra điều này với Mary, người bây giờ có thể cài đặt phần mềm.
sudo apt-get install colordiff
Mary có thể cài đặt phần mềm vì cô ấy nằm trong nhóm “NGƯỜI CÀI ĐẶT” User_Alias
, và điều đó User_Alias
đã được trao những quyền đó.
Ba thủ thuật sudo nhanh chóng
Khi bạn quên thêm sudo
đến một lệnh, gõ
sudo !!
Và lệnh cuối cùng sẽ được lặp lại với sudo
được thêm vào đầu dòng.
Khi bạn đã sử dụng sudo
và được xác thực bằng mật khẩu của bạn, bạn sẽ không phải sử dụng mật khẩu của mình với sudo
lệnh trong 15 phút. Nếu bạn muốn quên xác thực của mình ngay lập tức, hãy sử dụng:
sudo -k
Bao giờ tự hỏi nơi bạn có thể nhìn thấy thất bại sudo
cố gắng lệnh? Họ đi tới tệp “/var/log/auth.log”. Bạn có thể xem nó với:
less /var/log/auth.log
Chúng ta có thể thấy mục nhập cho tài khoản người dùng mary đã đăng nhập tại TTY pts / 1 khi cô ấy cố gắng chạy shutdown
lệnh với tư cách người dùng “root”.
Với sức mạnh tuyệt vời…
… Có khả năng ủy quyền các phần của nó cho người khác. Bây giờ bạn biết cách trao quyền cho người dùng khác một cách có chọn lọc.