Quản lý tài khoản người dùng với Disk Quotas

Quản trị mạng - Một trong những ưu điểm của Linux cũng như những hệ điều hành nền tảng Unix khác là cung cấp một môi trường đa người dùng. Tài khoản người dùng bảo mật hơn nhờ có sự phân quyền riêng biệt, và chúng có thể đồng thời hoạt động và đăng nhập (cục hộ thông qua một thiết bị đầu vào và đầu ra, hoặc thực hiện từ xa thông qua các dịch vụ mạng). Nhờ đó mà Linux rất phù hợp với những hệ thống đa người dùng, máy chủ ứng dụng và hệ thống kiểm thử từ xa.

Tuy nhiên việc áp dụng Linux cho những hệ thống này lại gặp phải một số vấn đề. Một trong số đó là dung lượng bộ nhớ được chia sẻ. Đây là vấn đề khá phổ biến vì một số người dùng vì lí do nào đó đã không kết hợp được với những người dùng khác (như sự riêng tư,…). Trong thực tế, trước khi cài đặt một hệ thống nhiều người dùng admin nên nghĩ tới những vấn đề này để có biên pháp khắc phục.

Bạn sẽ không phải nghĩ gì nhiều vì Disk Quotas có thể giúp bạn. Disk Quotas được tích hợp trong Linux sử dụng phần mềm để quản lý những ràng buộc về dung lượng ổ đĩa mà một người dùng cụ thể được sử dụng. Trong khi có nhiều hệ thống quản lý quota miễn phí và khá phức tạp với nhiều tính năng và công cụ cũng như một số phần mềm quản lý quota thương mại đắt đỏ có thể giải quyết được vấn đề này. Dĩ nhiên biện pháp đơn giản nhất và dễ dàng nhất là bộ công cụ quota dạng dòng lệnh cơ bản được mọi bản phân phối chính của Linux hỗ trợ cho admin. Với hệ thống Disk Quotas, những giới hạn trên dung lượng ở đĩa mà nhiều người dùng khác nhau sử dụng được hệ thống tự xử lý.

Admin có thể lựa chọn cáu hình Disk Quota cho từng người dùng, và sau đó dễ dàng áp dụng lại cấu hình này cho nhiều người dùng cùng sử dụng với những ràng buộc tương tự. Hệ thống được tự động hóa và có thể được cấu hình để gửi thông báo và phạm vi áp dụng nếu có ai đó vượt vô tình vượt qua giới hạn đó. Không giống như việc sử dụng những phần riêng biệt, hay những đĩa vật lý hoàn toàn riêng biệt cho mỗi người dùng, đó là một vấn đề không đáng để quan tâm để thay đổi Disk Quotas khi cần thiết.
Chuẩn bị cài đặt Disk Quotas

Có một vài thao tác cần thực hiện trên hệ thống trước khi cài đặt Disk Quotas. Nhưng nếu hệ thống đã được cấu hình sử dụng Disk Quotas thì mỗi khi áp dụng một hệ thống phân vùng bạn sẽ không phải thực hiện bước này nữa.

Cài đặt

Trước hết, bạn cần phải chắc chắn rằng hệ thống quota đã được cài đặt. Phương pháp cài đặt trên mỗi hệ thống Linux khác nhau cũng có thể khác nhau, nhưng hệ thống quản lý ứng dụng của bản phân phối đang sử dụng sẽ hỗ trợ cho bạn cài đặt hệ thống quota rất đơn giản và dễ dàng nếu nó không được cài đặt mặc định. Bạn có thể kiểm tra xem nó đã được cài đặt hay chưa bằng cách mở giao diện dòng lệnh và nhập lệnh quota, hoặc sử dụng một bộ mô phỏng như kterm hay gterm, hoặc đăng ký tại một console TTY. Nếu quota đã được cài đặt, và nếu tên người dùng của bạn là foo, bạn sẽ nhận được thông báo sau:
$ quota Disk quotas for user foo (uid 1000): none
Nếu quota chưa được cài đặt, bạn sẽ nhận được phản hồi là command not found. Nếu nhận được phản hồi kèm theo thông tin về Disk Quotas nghĩa là ai đó đã áp dụng nó trên máy của bạn.

Dưới đây là ví dụ khi cài đặt quota trên Debian, sử dụng lệnh apt-get cho hệ thống quản lý phần mềm APT:
$ apt-get install quota
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed quota 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 439kB of archives.
Sau khi cài đặt Disk Quotas sẽ chiếm 1188KB trong vùng trống của bộ nhớ.

Sau khi chạy lệnh, một số thông tin về quá trình cài đặt cũng sẽ được hiển thị, và hệ thống Debian còn đưa ra một số câu hỏi cho bạn lựa chọn về cách xử lý các báo cáo vi phạm phân vùng. Với các bản phân phối khác, bạn cũng thực hiện thao tác cài đặt tương tự.

Nếu có một lí do nào đó mà bạn không thể cài đặt quota từ một trình quản lý ứng dụng, bạn có thể tải trực tiếp nó tại địa chỉ http://sourceforge.net/projects/linuxquota để cài đặt từ nguồn.

Cấu hình khởi động

Sau khi hoàn thành cài đăt bạn cần cấu hình cho hệ thống chạy quản lý quota mỗi khi khởi động. Hầu hết các bản phân phối (như RHEL/Fedora, Novell/SuSE, Mandrake và Debian) mặc định chạy hệ thống này khi máy khởi động.

Ví dụ, trên hệ thống Debian cài đặt quota bổ sung một tập lệnh khởi động vào file /etc/init.d. Sau đó bạn có thể bổ sung một symlink vào tập lệnh khởi động trong thư mục rc[n].d trong đó [n] là runlevel mà hệ thống vận hành. Bạn có thể xem runlevel bằng cách sử dụng lệnh man init.

Để kiểm tra runlevel hiện tại của hệ thống, bạn chỉ cần nhập lệnh runlevel khi đăng nhập bằng tài khoản gốc, sau đó hệ thống sẽ phản hồi lại runlevel hiện tại và runlevel trước đó. Nếu bạn chưa từng thay đổi runlevel thì hệ thống sẽ hiển thị chữ cái N trong phần runlevel trước đó.

Nếu có một lí do nào đó mà hệ thống chưa cấu hình chạy Disk Quotas khi khởi động bạn có thể tự chỉnh sửa đôi chút trong tập lệnh khởi động. Nếu hệ thống đang sử dụng thư mục /etc/init.d cho những tập lệnh dịch vụ, bạn có thể sử dụng những tập lệnh hiện có để tạo một bash mới rồi chạy quota, và đặt liên kết tới nó từ thư mục rc[n].d. Nhưng nếu hệ thống sử dụng lệnh rc.local, bạn sẽ phải bổ sung lệnh chay quota vào file đó. Hoặc bạn sẽ phải bổ sung một đoạn mã bash như sau:
# first, check to see if quota is running, then turn it on
if not if [ -x /sbin/quotaon ] then /sbin/quotaon -avug fi
Bạn nên kiểm tra vị trí của lệnh quotaon vì trong một số hệ thống nó không nằm trong /sbin.

Cấu hình phân vùng

Tiếp theo là thực hiện cầu hình cho phân vùng để khởi chạy Disk Quotas và xác đinh những phân vùng được áp dụng. Những cài đặt này có thể áp dụng cho người dùng hay nhóm. Mỗi phân vùng có thể được cầu hình khác nhau bằng cách chỉ rõ trong file fstab cùng với cấu hình quota trong phân vùng đó.

Để kích hoạt quota cho một phân vùng, bạn cần chỉnh sửa file /etc/fstab. Với mỗi mục của file đó sẽ có một cột chứa nhiều tùy chọn, như ro (read only – chỉ đọc), rw (read/write – đọc/ghi) hay default (mặc định). Những tùy chọn này nằn trong một danh sách tách biệt với nhau bởi dấu phẩy. Bạn cần phải cài đặt cơ sở dữ liệu quota trên một phân cùng nhất định và thêm tùy chọn usrquota, và nếu muốn kích hoạt nhóm quota, bổ sung tùy chọn grpquota.

Để chuẩn bị phân vùng bạn cần cài đặt cơ sở dữ liệu quota trên mỗi phân vùng sẽ sử dụng quota và tạo một số file dữ liệu trống để lưu trữ thông tin quota nhóm và người dùng trong thư mục gốc của mỗi phân vùng sẽ sử dụng quota.

Ví dụ, bạn sẽ cài đặt file /dev/hda2 at/home hoặc truy cập vào /home khi phân vùng được cài đặt tại đó và tạo file quota.userquota.group trống. (Bạn phải đăng nhập là người dùng gốc để thực hiện các thao tác đó).

touch quota.usertouch quota.group là những lệnh được sử dụng để tạo ra những file trống này. Sau khi tạo, bạn sử dụng lệnh chmod để thay đổi cấp phép file với những file dữ liệu này để chỉ những người dùng gốc mới có quyền đọc và ghi dữ liệu vào chúng. Những lệnh này có dạng như sau:

$ su Password: # cd /home # touch quota.user # touch quota.group # chmod 666 quota.user # chmod 666 quota.group
Cài đặt Quotas

Cuối cùng, áp dụng những cài đặt quota cho người dùng và nhóm người dùng bằng lệnh edquota. Khi sử dụng lệnh này bạn có thể cấu hình Soft Limit (giới hạn tạm thời), Hard Limit (giới hạn cố định) và Grace Period (thời hạn áp dụng cho giới hạn tạm thời).
  • Hard Limit là giới hạn luôn tồn tại (không có hạn định thời gian). Khi đó hệ thống sẽ ngăn người dùng hay nhóm người dùng vượt quá giới hạn cố định ngay cả khi dung lượng bộ nhớ của họ đã dùng hết. Thông thường admin quản trị hệ thống sẽ cài đặt một giới hạn cố định với dung lượng bộ nhớ sử dụng cao hơn so với giới hạn tạm thời giúp người dùng có thể có thể copy, hiệu chỉnh và kiểm tra file trước khi xóa.
  • Soft Limit là hạn định mà dung lượng đĩa sử dụng của mỗi người dùng hay nhóm người dùng cần được giới hạn theo một khoảng thời gian nhất định. Giới hạn này có thể tạm thời vượt quá, nhưng nếu duy trì trạng thái này quá lâu tài khoản người dùng đó sẽ bi hủy, và chỉ có admin quản trị hệ thống mới có thể kích hoạt lại tài khoản này. 
  • Grace Period xác định thời hạn người dùng phải trả lại tiêu chuẩn phân vùng của Soft Limit sau khi vượt quá. Ví dụ, nếu cài đặt cho phép người dùng sử dụng trong 7 ngày sau khi vượt quá Soft Limit lần đầu tiên, sau 7 ngày đó người dùng phải thay đổi dung lượng đĩa sử dụng đúng với thư mục cấu hình phân vùng theo cài đặt Soft Limit trước khi tài khoản bị khóa. Hầu hết các hệ thống cài đặt Grace Period là 7 ngày nhưng admin hệ thống có thể thực hiện tùy chỉnh khoảng thời gian này.
Lệnh edquota sẽ mở một trình soạn thảo văn bản mặc định được xác định trong biến $EDITOR của shell. Nếu không muốn sử dụng trình soạn thảo được khai báo này bạn có thể gọi một trình soạn thảo khác. Ví dụ bạn thường sử dụng vi, còn lệnh edquota lại gọi emacs, bạn có thể gọi vi bằng cách thay đổi biến $EDITOR với lệnh export EDITOR=vi.

Để thay đổi cài đặt Grace Period, bạn chỉ cần nhập lệnh sau:
edquota -t
Lệnh này cho phép bạn thiết lập nhiều cài đặt Grace Period khác nhau với những phân vùng riêng biệt sử dụng Disk Quotas.

Để hiệu chỉnh Soft Limit và Hard Limit với người dùng và nhóm người dùng, sử dụng tùy chọn –u hay –g cùng với tên của tài khoản người dùng hay tài khoản nhóm bạn muốn thực hiện chỉnh sửa phân vùng.

Ví dụ, lệnh equota –u foo cho phép bạn chỉnh sửa cài đặt phân vùng cho người dùng có tên foo, và edquota –g bar thực hiện chỉnh sửa cho những cài đặt cho nhóm bar. Tùy chọn –p nhân bản những cài đặt của một người dùng để áp dụng cho người dùng khác. Ví dụ, để áp dụng cài đặt của người dùng foo cho người dùng baz bạn chỉ cần nhập lệnh:
edquota -p foo -u baz
Lệnh này sẽ giúp tiết kiệm thời gian khi tạo một tài khoản quota mới trên một máy mà mọi người có cùng cài đặt quota. Tùy chọn lệnh –p có thể được sử dụng để tạo một dòng lệnh bash giúp đồng thời áp dụng cho nhiều tài khoản.

Khi chỉnh sửa những cài đặt quota bạn sẽ thấy một số cài đặt cho blocksinodes. Trên một số hệ thống Linux điển hình, block tương đương với 1KB dữ liệu. Blocks sẽ xác định vùng trống dung lượng đĩa của tài khoản người dùng hay tài khoản nhóm mà bạn đang thực hiện chỉnh sửa sử dụng. Cài đặt inode có thể được sử dụng để giới hạn số lượng file người dùng cho phép được sử dụng. Cũng như blocks, inodes cũng có Hard Limit, Soft Limit và có cùng cài đặt Grace Period. Bất kì cài đặt giới hạn nào có giá trị là 0 sẽ không có quota nào được chỉ định cho tài khoản người dùng hay tài khoản nhóm. Thông thường Hard Limit Soft Limit sẽ giới hạn cho blocks nhưng không giới hạn được inodes.

Khi hiệu chỉnh cài đặt quota cho người dùng và nhóm lần đầu tiên, quá trình cấu hình cho mỗi tài khoản sẽ hiển thị một số ít các blocksinodes đang được sử dụng. Bạn không nên bổ sung hay xóa chúng, thay vào đó chỉ cần thay đổi số lượng Hard LimitSoft Limit trong khi thực hiện cấu hình quota. Sau khi hoàn thành hiệu chỉnh cài đặt lưu chúng với tên file mặc định (không nên lưu dưới một tên khác).

Quản lý Quotas

Khi quota đã được áp dụng, có một số công cụ bạn cần sử dụng để thực hiện tác vụ quản lý quota. Tiện ích quotacheck kiểm tra tính toàn vẹn của cơ sở dữ liệu quota, tiện ích repquota báo cáo tổng số quota được sử dụng và tiện ích quota hiển thị trạng thái quota riêng của người dùng.

Ngoài ra bạn có thể sử dụng một bộ công cụ bổ sung trong một số bản phân phối của Linux khi gọi lệnh quotatool.
Thứ Ba, 18/08/2009 09:55
31 👨 5.579
0 Bình luận
Sắp xếp theo
    ❖ Tổng hợp