Các bài viết trên Wiki đều do cộng đồng đóng góp và mang mục đích tham khảo, gợi ý.
Nếu muốn viết bài xin bạn đọc hướng dẫn sử dụng Wiki

Sudo

Từ Ubuntu-VN

Mục lục

[sửa] Hiểu biết cần thiết


[sửa] Lời dẫn

Để nâng cao tính bảo mật trên hệ thống linux nói chung và ubuntu nói riêng thì những hành động thay đổi trong hệ thống chỉ được phép thực hiện với quyền của người quản trị. Với sự trợ giúp của lệnh sudo thì người sử dụng có thể chạy một lệnh hoặc một chương trình với quyền của người quản trị hệ thống và qua lệnh hoặc chương trình đó mà có thể có những thay đổi trong hệ thống.


[sửa] Tổng quát về tính bảo mật

Một lý do rất quan trọng về tính bảo mật cao của những hệ thống Linux là sự tuân thủ tuyệt đối về quyền hạn truy cập. Điều này cũng có thể so sánh với cơ chế trên các hệ thống Windows dựa theo NT như NT, 2000, XP và Vista. Loạt hệ thống Windows 9.x không có cơ chế quản lý quyền hạn (một cách đầy đủ).

Root là Superuser trong hệ thống Linux, có thể so sánh với Administrator trên hệ thống Windows. Người có quyền điều khiển tài khoản root được phép làm mọi điều có thể với hệ thống. Có thể nói là gần như tất cả các tệp tin, thư mục trên hệ thống "thuộc quyền hạn" quản lý, sử dụng và sửa đổi của tài khoản này. Những khả năng tương tự cũng được trao cho tài khoản Administrator trên hệ thống Windows. Do những lý do trên, sẽ thực sự rất nguy hiểm nếu người sử dụng làm việc liên tục với quyền của root hay nói cách khác là thực hiện tất cả các công việc với quyền của root.

Điều bất lợi khi đăng nhập và thực hiện các tác vụ với tài khoản root đặc biệt với máy tính có nối mạng Internet là nếu một kẻ tấn công đã thành công trong việc xâm nhập hệ thống (qua Virus hoặc qua lỗi của trình duyệt) thì kẻ đó sẽ trực tiếp có quyền quản trị hệ thống và có thể làm bất cứ điều gì hắn muốn.

Với hệ thống Linux thì người sử dụng có khả năng sử dụng quyền quản trị trong một thời gian nhất định và cho một tác vụ nhất định. Sau khi công việc được hoàn thành thì người sử dụng chỉ cần đăng xuất tài khoản root và nhận lại quyền sử dụng bình thường của mình. Điều đó làm cho hệ thống trở nên bảo mật hơn vì nếu kẻ tấn công có thể xâm nhập vào hệ thống, hăn chỉ có thể có quyền sử dụng của người dùng bình thường, có nghĩa là hắn chỉ có thể thay đổi các tệp tin và thư mục nằm trong thư mục nhà của người sử dụng đó còn đối với phần lớn của hệ thống, đặc biệt là những thông tin nhạy cảm của hệ thống hắn không có quyền hạn.

Chú ý: Do những lý do trên, mọi người được khuyến cáo không sử dụng tài khoản quản trị hệ thống (root) trong giao diện đồ hoạ.


[sửa] root-Mặc định trong hệ thống Linux

Trong tất cả các hệ thống Linux người ta thường phải tạo cho tài khoản root một mật khẩu (thường là trong lúc cài đặt hệ thống). Sau đó người sử dụng có thể tạo thêm các tài khoản bình thường khác cho mục đích sử dụng của mình. Trong công việc bình thường thì người sử dụng sẽ đăng nhập vào hệ thống với một tài khoản hạn chế (tài khoản bình thường). Khi một hành động nào đó trên hệ thống cần được thực hiện với yêu cầu quyền hạn của quản trị hệ thống (của root) thì người sử dụng sẽ được Linux thông báo và yêu cầu nhập vào mật khẩu của tài khoản root. Trong Terminal người sử dụng có thể sử dụng lệnh su (substitute user identity) với mật khẩu của root để trở thành root. Sau khi thực hiện các tác vụ cần thiết thì người sử dụng có thể thoát khỏi tài khoản root với lệnh exit để trở về với quyền hạn mặc định.

Phương cách sử dụng tài khoản root vừa nói đã được sử dụng từ khi Unix và Linux ra đời nhưng lại đem lại một số điều bất cập:

  • Nếu người sử dụng quên đăng xuất tài khoản root thì hệ thống sẽ bị đặt vào tình trạng nguy hiểm.
  • Người sử dụng phải nhớ ít nhất là hai mật khẩu (mật khẩu tài khoản thường và mật khẩu của root).
  • Ngoài việc sử dụng một giải pháp hỗ trợ như AppArmor, người ta không thể hạn chế được quyền hạn của root.


[sửa] sudo-Mặc định trên hệ thống ubuntu

Với Ubuntu Linux, nhà phát triển đã lựa chọn một giải pháp khác với việc sử dụng thẳng root. Trên hệ thống Ubuntu có một tài khoản root nhưng mặc định không được kích hoạt. Thay vào đó, người sử dụng đầu tiên trên hệ thống có thể dùng mật khẩu cho tài khoản bình thường để nhận được quyền hạn của root trong thời gian ngắn. Việc đó được thực hiện trong Terminal với thao tác nhập vào lệnh sudo và với gksudo hoặc kdesudo với menu đồ hoạ trên GNOME hoặc KDE.

Lệnh trong Terminal:

sudo lệnh --tuỳ chọn

Nếu sử dụng GNOME hoặc XFCE:

gksu lệnh --tuỳ chọn

Nếu sử dụng KDE:

kdesudo lệnh --tuỳ chọn

Ví dụ:

sudo ls -l /home
gksu gedit /etc/apt/sources.list
kdesudo kate /etc/apt/sources.list

Chú ý:

Không nên sử dụng sudo để khởi chạy cho các chương trình với đồ hoạ vì có nhiều ứng dụng đồ hoạ không chạy đúng khi được khởi động với sudo. Thay vào đó người sử dụng được khuyến cáo dùng gksudo trong GNOME hoặc XFCE và kdesudo trong KDE. (Giải thích cho việc gây nên lỗi trên là lệnh sudo không thay đổi giá trị của biến môi trường HOME, qua đó lệnh trên sẽ tạo ra một hay nhiều tệp tin hoặc thư mục với quyền hạn của root trong thư mục nhà của người sử dụng khiến người sử dụng sau này không thể thay đổi hoặc làm việc với những tệp tin hoặc thư mục đó nếu không chạy với sudo).

Nếu bạn đang làm một công việc nào đó và bị đòi hỏi phải nhập một mật khẩu thì thường mật khẩu đó chính là mật khẩu hiện tại của tài khoản bạn đang dùng. Đối với việc nhập mật khẩu trong Terminal thì người dùng sẽ không thể nhìn thấy những dấu sao (*) hoặc một ký tự tương tự xuất hiện mà phải nhập mật khẩu vào với "một niềm tin là mình gõ đúng".

Tất nhiên không phải bất kỳ tài khoản sử dụng nào trên hệ thống cũng có thể sử dụng được lệnh sudo. Sau khi cài đặt hệ thống, chỉ có một tài khoản sử dụng duy nhất được tạo ra khi cài đặt có khả năng sử dụng sudo. Để có thể sử dụng lệnh sudo thì tài khoản muốn sử dụng phải được ghi vào nhóm "admin". Thông tin thêm có thể xem tại Tài khoản và nhóm hoặc Quản trị hệ thống.


Một điều bất cập khi sử dụng phương cách này là với việc thực hiện nhiều tác vụ bằng quyền root, người sử dụng phải nhập lại mật khẩu mỗi lần cho mỗi công việc. Bất cập khác là nếu kẻ tấn công nào đó chẳng may có được mật khẩu người dùng với quyền sử dụng sudo thì kẻ đó có toàn quyền trên hệ thống. Ngoài ra, hệ thống sẽ bị nguy hiểm nếu người dùng đặt mật khẩu quá ngắn và dễ đoán cho tài khoản của mình.

Một vài điểm lợi:

  • Người ta có thể tạo ra nhiều superuser với những quyền hạn nhất định.
  • Bình thường, mật khẩu sẽ được nhớ trong vòng 15 phút, sau đó tác dụng của nó sẽ tự động bị tắt đi.
  • Người sử dụng chỉ cần nhớ một mật khẩu duy nhất.
  • Người sử dụng sẽ học được cách sử dụng hợp lý quyền hạn của root khi phải nhập mật khẩu mỗi lần dùng đến nó.


Để có thể có quyền hạn của root "lâu hơn" (nhập vào nhiều lệnh và làm nhiều tác vụ liên tục mà không cần sử dụng sudo hay bị hỏi đến mật khẩu) thì người sử dụng có thể tạo cho mình một "Fake"-Rootshell với lệnh:

sudo -s 

hoặc

 sudo -i 

Điểm khác biệt duy nhất của hai lệnh trên là lệnh sudo -i sẽ thay đổi các biến môi trường $HOME, $PATH etc... trước khi tạo cho người sử dụng một môi trường Rootshell còn lệnh sudo -s vẫn giữ nguyên các biến môi trường được thiết lập trước đó và tạo cho bạn một Rootshell. Với Rootshell được tạo ra, người sử dụng có thể chạy các lệnh hay ứng dụng với quyền root cho đến khi lệnh exit được nhập vào khung cửa sổ lệnh hoặc bạn tắt khung cửa sổ đó đi.

Tham khảo thêm các tuỳ chỉnh cho công cụ sudo tại: sudo/Tuỳ chỉnh


Tham khảo:
http://wiki.ubuntuusers.de/sudo
https://help.ubuntu.com/community/RootSudo
http://www.sudo.ws/



Công cụ cá nhân