Sudo - Thần chú của Linux
Thần chú của Linux Sudo
[caption id="attachment_968" align="aligncenter" width="620"]

Sudo[/caption]
Nếu bạn đã từng sử dụng Linux để khắc phục sự cố thì chắc hẳn bạn đã biết đến thần chú của Linux: "sudo". Một người bình thường có thể cho bạn biết rằng nó được sử dụng để truy cập các chức năng hạn chế trên máy tính của bạn, nhưng không, Sudo còn hơn thế nữa.
Hy vọng của tôi là bằng cách dành một chút thời gian để đào sâu vào lịch sử và hoạt động bên trong của lệnh này, bạn sẽ được trang bị tốt hơn để có thể tận dụng và tôn trọng sức mạnh của "sudo".
Để hiểu "sudo", bạn có thể tìm hiểu tổ tiên của Linux, Unix. Hệ điều hành Unix đã được phát minh trong những ngày mà máy tính khổng lồ, chiếm diện tích toàn bộ căn phòng, và chúng thường chỉ được tìm thấy trên các trường đại học.
Truy cập thường được cung cấp cho nhiều người nhất có thể thông qua một hệ thống cáp chạy từ máy tính tới thiết bị, nơi người dùng có thể nhập lệnh để gửi lại cho HQ để đánh giá. Người dùng có thể có các tài khoản cá nhân với quyền hạn hạn chế, vì vậy họ không thể can thiệp vào nhau hoặc vào hệ thống cốt lõi. Để quản lý tất cả mọi thứ, quản trị viên phải truy cập vào một tài khoản root.
Tuy nhiên, có những lúc người dùng nhất định muốn cung cấp quyền truy cập vào tài khoản của họ cho người dùng khác. Điều đó đã được thực hiện thông qua lệnh tiền thân của "sudo", lệnh "su". Viết tắt cho "substitute user", "su" cho phép đăng nhập vào tài khoản của người dùng khác (không phải đăng xuất khỏi tài khoản của người dùng) bằng cách chạy "su" bằng tên của người dùng khác làm đối số và nhập mật khẩu của người dùng đó.
Ví dụ: giả sử rằng cả Alice và Bob đều có tài khoản máy tính của trường đại học. Alice đang thực hiện một dự án kéo dài một tuần, nhưng cô ấy sẽ phải đi xa vài ngày và không thể sử dụng máy tính, nhưng cô ấy không thể ngừng công việc của mình. Nếu cô đơn giản chia sẻ mật khẩu với Bob, anh ta có thể chạy "su" với tên người dùng của Alice (gọi là "alice"), nhập mật khẩu và duy trì các chương trình đang chạy.
[bob @ unix] $ su alice Password: [alice @ unix] $
Khi Bob hoàn thành các nhiệm vụ của Alice, anh ta chỉ cần nhập "exit" trong terminal, và phiên làm việc của anh ta sẽ trở lại.
[alice @ unix] $ exit [bob @ unix] $
Để cho thấy sự chuyển tiếp giữa người dùng, tôi đã cung cấp một lệnh nhắc ví dụ, một chút thông tin văn bản xuất hiện trước khi con trỏ trên terminal. Dấu nhắc ví dụ là một tiêu chuẩn: văn bản trước dấu cách "@" là người dùng, và văn bản sau đó là tên của máy tính (các dấu ngoặc đơn chỉ để giữ mọi thứ rõ ràng hơn).
Lệnh "su" thậm chí có thể được sử dụng để chuyển sang tài khoản root. Tại cùng một máy tính của trường, nếu John - quản trị viên - phải rời khỏi trường, anh ta chắc chắn sẽ muốn sắp xếp 1 ai đó để quản lý hệ thống thay cho mình trong trường hợp có điều gì xảy ra. Anh ta có thể cho Yolanda mật khẩu tài khoản root, và cô ấy có thể giả định root từ terminal của mình bằng cách chạy "su" một mình, vì "su" mặc định là root nếu không có đối số.
[yolanda @ unix] $ su Password: [root @ unix] #
Một tính năng đặc biệt của dấu nhắc lệnh là để nhắc nhở người dùng về các đặc quyền nâng cao của họ trong khi chạy dưới dạng gốc, thay đổi "$" thành "#". Khi Yolanda được thực hiện, cô ấy chỉ đơn giản là "xuất cảnh".
[root @ unix] # exit [yolanda @ unix] $
Với hầu hết các hệ thống, theo mặc định, bất kỳ người dùng nào cũng được phép sử dụng "su" để đăng nhập như bất kỳ người dùng nào khác, kể cả root, miễn là mật khẩu của người dùng được cung cấp, nhưng quản trị viên có thể thay đổi quyền này.
Có một số hạn chế quan trọng với "su". Điều rõ nhất là để nó hoạt động, bạn phải chia sẻ mật khẩu của mình với người khác - điều đó không bao giờ hay ho, bất kể bạn tin tưởng người khác như thế nào.
Bất kể John có thể tin cậy Yolanda với mật khẩu gốc, nếu cô viết nó xuống để nhớ nó và sau đó mất giấy, bất cứ ai tìm thấy nó sẽ có toàn quyền kiểm soát máy tính của trường.
Vấn đề khác là người dùng vẫn đăng nhập như người thay thế cho đến khi họ chạy "xuất cảnh". Nếu Yolanda đăng nhập vào tài khoản root và quên rằng cô ấy có đầy đủ các quyền của hệ thống trong suốt thời gian, thì có thể là một cú nhấn phím sai có thể có những hậu quả tai hại.
Đây là lý do mà "sudo" ra đời. Chức năng chính của "sudo", viết tắt của "substitute user do", là cho phép người dùng chạy lệnh đơn với tư cách một người dùng khác - mà không yêu cầu mật khẩu của người dùng khác - và sau đó tự động trở lại với tài khoản của người dùng đầu tiên, với tất cả các tài khoản thay đổi được xử lý trong nền.
Trong ví dụ của chúng tôi, Xavier sẽ thành lập nhóm "sudoers" (đôi khi được gọi là "wheel") để người dùng "yolanda" và tao quyền truy cập cho nhóm bởi mật khẩu của Yolanda chứ không phải là mật khẩu gốc.
Sau đó, khi Xavier bận, anh ta không phải cung cấp cho Yolanda mật khẩu gốc. Khi cô ấy cần chạy một lệnh như là người chủ, cô ấy chỉ cần đặt "sudo" trước mặt lệnh và nhập mật khẩu của chính mình, cho phép cô ấy thực hiện lệnh mà không cần rời khỏi phiên làm việc của cô ấy.
[yolanda @ unix] $ sudo command
Alice có thể cho phép Bob tham dự các dự án của mình bằng cách sử dụng "sudo" bằng cách yêu cầu Xavier định cấu hình "sudo" để cho phép Bob truy cập vào tài khoản của mình, được bảo vệ bởi mật khẩu của mình. Bob sau đó sẽ phải phát hành "sudo" với tùy chọn "-u" và người dùng "alice" như một đối số cho nó, tiếp theo là lệnh mong muốn.
[bob @ unix] $ sudo -u alice command
Kiểm tra an toàn
Một khi Unix trở thành mô hình cho các hệ điều hành dành cho máy tính để bàn cá nhân, người dùng một mình, bao gồm nhiều bản phân phối Linux máy tính để bàn quen thuộc, "sudo" tỏ ra đặc biệt hữu ích. Hầu hết thời gian, người dùng máy tính để bàn thông thường chỉ cần chạy một vài lệnh với quyền root gốc một lần.
Sử dụng "sudo" cho phép họ trở lại an toàn cho các tài khoản không có đặc quyền của họ một khi mỗi lệnh kết thúc.
Hơn nữa, nếu người dùng thực hành thói quen chạy tất cả mọi thứ mà không có "sudo" cho đến khi lệnh yêu cầu, "sudo" hoạt động như một loại kiểm tra ngăn cản người dùng vô tình làm điều gì đó phá hoại.
Nếu bạn đang cố xóa một cái gì đó với "rm" và bạn vô tình chỉ định một tập tin thuộc gốc, không phải đã prepended lệnh với "sudo" sẽ kết thúc lưu các tập tin. Nếu thói quen của bạn sử dụng "su" thay vì "sudo", và bạn đã quên đăng xuất, tệp tin đó sẽ biến mất.
Primer này sẽ cung cấp cho bạn một ý tưởng tốt về "sudo" là gì và tại sao nó hoạt động theo cách nó làm, mặc dù có rất nhiều tùy chọn cấu hình cho phép người dùng hoặc quản trị viên sử dụng "sudo" để phân chia người dùng truy cập xa hơn. Giống như những lời thần kỳ thực tế, sức mạnh của "sudo" là phép thuật chỉ xảy ra khi nó được dự định.
Nguồn: Technewsworld
Đừng quên chia sẻ với bạn bè nhé!