Quản trị mạng - UNIX không chỉ là một hệ điều hành độc lập mà còn là một trong những thế hệ nối tiếp của AT&T UNIX được Ken Thompson và Dennis Ritchie phát triển cùng với sựu hỗ trợ của Brian Kernighan sau này.
Kể từ thời điểm đó, một chuẩn IEEE chính thức cho hệ điều hành UNIX, có tên POSIX Standard được phát triển. Cái tên UNIX sau đó đã được sử dụng để đặt tên cho những hệ điều hành tuân thủ theo chuẩn duy nhất này của UNIX, mà phiên bản hiện tại của chuẩn này (SUS 3) rất giống với chuẩn POSIX:2001.
Một phần của chuẩn này, chúng ta có thể thấy trên bất kì hệ điều hành kiểu Linux nào như những hệ thống UNIX BSD hay các bản phân phối Linux, là hệ thống giấy phép file của Unix. Hệ thống này cung cấp ba kiểu đối tượng chính, mỗi đối tượng trong số này có thể được chấp thuận hay từ chối cấp ba loại giấy phép tương ứng.
Các đối tượng
Owner (chủ sở hữu)
Mỗi file và thư mục (một loại file cụ thể) đều có một Owner. Đây là tài khoản người dùng có toàn quyền với file này, cho phép thực hiện một số thao tác như thay đổi giấy phép file. Owner được coi là một tài khoản người dùng gốc (root) hay tài khoản người dùng cá nhân, hay thậm chí là một tài khoản người dùng bất kì được tự động tạo để sử dụng một vài chức năng của phần mềm mà chúng ta đã cài đặt. Thông thường, Owner của một file là tài khoản được sử dụng để tạo file đó, mặc dù sau đó những file này có thể được gán lại cho Owner khác bằng lệnh chown.
Group (nhóm)
Ngoài Owner, mỗi file đều có một tài khoản nhóm. Nhóm này, giống như tài khoản người dùng là chủ sở hữu file (Owner), có một nhóm giấy phép truy cập vào file đó. Khi tạo một file, nhóm này sẽ được coi là nhóm mặc định của tài khoản người dùng được sử dụng để tạo file này, dù sau đó file này có thể được gán lại cho một nhóm khác bằng lệnh chgrp. Ví dụ, trong tài khoản gốc, điều này có nghĩa là nhóm sở hữu file này là nhóm wheel trong những hệ thống BSD Unix.
World (cộng đồng)
Đây là đối tượng được cấp phép cuối cùng. Đối tượng này bao gồm mọi tài khoản không phải là Owner hay thành viên của nhóm sở hữu file.
Các loại giấy phép
Những giấy phép trong UNIX bao gồm ba giá trị nhị phân dạng số:
100. Giá trị số nhị phân 100 (giá trị thập phân tương ứng là 4) cấp phép read hay r (đọc) file cho đối tượng. Điều này có nghĩa là, dù đối tượng nào được cấp giấy phép này đều có thể xem dữ liệu trong file. Một tài khoản được cấp phép read tới một thư mục sẽ có thể xem dữ liệu trong thư mục đó.
10. Trị số nhị phân này (giá trị thập phân tương ứng là 2) tương ứng với giấy phép write hay w (ghi). Có nghĩa là những đối tượng được cấp giấy phép này đều có thể ghi dữ liệu hay thực hiện thay đổi cho file, hoặc thậm chí là xóa dữ liệu trong đó. Tương tự, một tài khoản được cấp phép write tới một thư mục cũng có thể thực hiện thay đổi dữ liệu trong thư mục đó, như tạo các file mới.
1. Đây là một trị số nhị phân (giá trị thập phân tương ứng là 1) thể hiện giấy phép execute hay x (thực thi). Có nghĩa là những đối tượng được cấp giấy phép này có thể chạy file, như trong trường hợp có thể chạy ứng dụng. Nếu không có đối tượng nào được cấp phép chạy file, chúng sẽ không được truy cập vào bất cứ file nào ngoại trừ những dữ liệu thô trên ổ cứng. Khi một tài khoản được cấp phép execute tới một thư mục nó có thể truy cập vào thư mục đó để thực hiện mọi thao tác, bao gồm cả xem dữ liệu, vì khi xem dữ liệu của một thư mục từ bên ngoài người dùng sẽ phải chạy ứng dụng rồi truy cập vào thư mục đó.
Những trị số này có thể được kết hợp lại với nhau để tạo ra một nhóm giấy phép cho đối tượng người dùng cụ thể. Ví dụ, khi kết hợp 100 và 10 sẽ tạo ra đối tượng với giấy phép 110 với quyền truy cập đọc và ghi, mà không có quyền thực thi. Tương ứng với trị số nhị phân 110 này là giá trị thập phân 6.
Hiển thị và thay đổi giấy phép
Hiển thị giấy phép
Để kiểm tra các cài đặt giấy phép của một file, chúng ta chỉ cần dùng lệnh ls với tùy chọn –l để hiển thị thông tin bao gồm cả các giấy phép. Khi chạy lệnh này trên thư mục /etc/periodic của hệ thống mặc định Free BSD chúng ta sẽ thấy những thông tin như sau:
Các cột root và wheel là những giấy phép chỉ định của đối tượng Owner và Group cho những file này.
Thay đổi giấy phép
Giả sử chúng ta có một file tmp.txt, và chúng ta muốn thay đổi cấp phép cho file này. Vì mục đích minh họa nên chúng ta sẽ gán giấy phép ban đầu cho file này như sau:
Quản lý bảo mật cấp độ file
Nếu sử dụng hệ điều hành UNIX hay kiểu UNIX, chúng ta cần nắm được những phương thức quản lý bảo mật cấp độ file cơ bản nhất. Một yếu tố quan trọng với bảo mật cấp độ file trên hệ thống UNIX là để giới hạn giấy phép file đến mức có thể mà không làm ảnh hưởng tới chức năng của hệ điều hành, và không ngăn cản chúng ta truy cập vào những file cần thiết.
Quan trọng nhất, giấy phép file bên ngoài thư mục chủ của tài khoản người dùng (như /usr/home/jon/ trong trường hợp tài khoản giả định jon ở trên, hay /root/ trong trường hợp tài khoản root của hệ thống FreeBSD, hay /home/jon/ và /root/ trên hệ thống nền tảng Linux điển hình) cần được giữ nguyên như mặc định nếu chúng ta không biết chính xác thao tác đang thực hiện.
Hầu hết các file dữ liệu trong thư mục chủ của tài khoản người dùng, như các file văn bản, cần cấp giấy phép 110/6/rw- cho tài khoản đó, và cấp giấy phép 000/0/- cho đối tượng Group và World. Trong khi đó mọi thư mục con trong thư mục chủ đó sẽ cấp phép 111/7/rwx cho đối tượng Owner, và 000/0/- cho đối tượng Group và World nếu chúng ta chú ý tới quyền riêng tư với các tài khoản khác, hay để ngăn ngừa những kẻ bẻ khóa bảo mật có thể chiếm quyền hay tạo những tài khoản khác trên hệ thống.
Nắm được phương pháp sử dụng giấy phép file của UNIX là chúng ta đã hiểu được một thành phần bảo mật cơ bản của UNIX. Nếu không sử dụng giấy phép bảo mật file, thì khả năng phân quyền rất mạnh của hệ điều hành UNIX giúp cung cấp khả năng bảo mật đáng kể so với các hệ điều hành khác đã bị suy giảm.
Kể từ thời điểm đó, một chuẩn IEEE chính thức cho hệ điều hành UNIX, có tên POSIX Standard được phát triển. Cái tên UNIX sau đó đã được sử dụng để đặt tên cho những hệ điều hành tuân thủ theo chuẩn duy nhất này của UNIX, mà phiên bản hiện tại của chuẩn này (SUS 3) rất giống với chuẩn POSIX:2001.
Một phần của chuẩn này, chúng ta có thể thấy trên bất kì hệ điều hành kiểu Linux nào như những hệ thống UNIX BSD hay các bản phân phối Linux, là hệ thống giấy phép file của Unix. Hệ thống này cung cấp ba kiểu đối tượng chính, mỗi đối tượng trong số này có thể được chấp thuận hay từ chối cấp ba loại giấy phép tương ứng.
Các đối tượng
Owner (chủ sở hữu)
Mỗi file và thư mục (một loại file cụ thể) đều có một Owner. Đây là tài khoản người dùng có toàn quyền với file này, cho phép thực hiện một số thao tác như thay đổi giấy phép file. Owner được coi là một tài khoản người dùng gốc (root) hay tài khoản người dùng cá nhân, hay thậm chí là một tài khoản người dùng bất kì được tự động tạo để sử dụng một vài chức năng của phần mềm mà chúng ta đã cài đặt. Thông thường, Owner của một file là tài khoản được sử dụng để tạo file đó, mặc dù sau đó những file này có thể được gán lại cho Owner khác bằng lệnh chown.
Group (nhóm)
Ngoài Owner, mỗi file đều có một tài khoản nhóm. Nhóm này, giống như tài khoản người dùng là chủ sở hữu file (Owner), có một nhóm giấy phép truy cập vào file đó. Khi tạo một file, nhóm này sẽ được coi là nhóm mặc định của tài khoản người dùng được sử dụng để tạo file này, dù sau đó file này có thể được gán lại cho một nhóm khác bằng lệnh chgrp. Ví dụ, trong tài khoản gốc, điều này có nghĩa là nhóm sở hữu file này là nhóm wheel trong những hệ thống BSD Unix.
World (cộng đồng)
Đây là đối tượng được cấp phép cuối cùng. Đối tượng này bao gồm mọi tài khoản không phải là Owner hay thành viên của nhóm sở hữu file.
Các loại giấy phép
Những giấy phép trong UNIX bao gồm ba giá trị nhị phân dạng số:
100. Giá trị số nhị phân 100 (giá trị thập phân tương ứng là 4) cấp phép read hay r (đọc) file cho đối tượng. Điều này có nghĩa là, dù đối tượng nào được cấp giấy phép này đều có thể xem dữ liệu trong file. Một tài khoản được cấp phép read tới một thư mục sẽ có thể xem dữ liệu trong thư mục đó.
10. Trị số nhị phân này (giá trị thập phân tương ứng là 2) tương ứng với giấy phép write hay w (ghi). Có nghĩa là những đối tượng được cấp giấy phép này đều có thể ghi dữ liệu hay thực hiện thay đổi cho file, hoặc thậm chí là xóa dữ liệu trong đó. Tương tự, một tài khoản được cấp phép write tới một thư mục cũng có thể thực hiện thay đổi dữ liệu trong thư mục đó, như tạo các file mới.
1. Đây là một trị số nhị phân (giá trị thập phân tương ứng là 1) thể hiện giấy phép execute hay x (thực thi). Có nghĩa là những đối tượng được cấp giấy phép này có thể chạy file, như trong trường hợp có thể chạy ứng dụng. Nếu không có đối tượng nào được cấp phép chạy file, chúng sẽ không được truy cập vào bất cứ file nào ngoại trừ những dữ liệu thô trên ổ cứng. Khi một tài khoản được cấp phép execute tới một thư mục nó có thể truy cập vào thư mục đó để thực hiện mọi thao tác, bao gồm cả xem dữ liệu, vì khi xem dữ liệu của một thư mục từ bên ngoài người dùng sẽ phải chạy ứng dụng rồi truy cập vào thư mục đó.
Những trị số này có thể được kết hợp lại với nhau để tạo ra một nhóm giấy phép cho đối tượng người dùng cụ thể. Ví dụ, khi kết hợp 100 và 10 sẽ tạo ra đối tượng với giấy phép 110 với quyền truy cập đọc và ghi, mà không có quyền thực thi. Tương ứng với trị số nhị phân 110 này là giá trị thập phân 6.
Hiển thị và thay đổi giấy phép
Hiển thị giấy phép
Để kiểm tra các cài đặt giấy phép của một file, chúng ta chỉ cần dùng lệnh ls với tùy chọn –l để hiển thị thông tin bao gồm cả các giấy phép. Khi chạy lệnh này trên thư mục /etc/periodic của hệ thống mặc định Free BSD chúng ta sẽ thấy những thông tin như sau:
> ls -l /etc/periodic
drwxr-xr-x 2 root wheel 1024 Sep 7 09:10 dailyKí tự d ở phía đầu của mỗi dòng cho biết file đó là thư mục. Nhóm giấy phép còn lại sau đó được chia thành những nhóm gồm 3 kí tự, trong đó, theo thứ tự các nhóm giấy phép này sẽ là ba quyền x, w và r của từng đối tượng Owner, Group và World. Dấu gạch nối giữa các nhóm để phân biệt giấy phép của các đối tượng. Do đó, với những thư mục trong /etc/periodic, đối tượng Owner có các giấy phép 111/7/rwx, tương ứng với r, w và x, trong khi đó giấy phép của cả đối tượng Group và World sẽ là 101/5/r-x, hay r và x.
drwxr-xr-x 2 root wheel 512 Sep 7 09:10 monthly
drwxr-xr-x 2 root wheel 512 Sep 7 09:10 security
drwxr-xr-x 2 root wheel 512 Sep 7 09:10 weekly
Các cột root và wheel là những giấy phép chỉ định của đối tượng Owner và Group cho những file này.
Thay đổi giấy phép
Giả sử chúng ta có một file tmp.txt, và chúng ta muốn thay đổi cấp phép cho file này. Vì mục đích minh họa nên chúng ta sẽ gán giấy phép ban đầu cho file này như sau:
> ls -l tmp.txt
-rw-r--r-- 1 jon doe 0 Nov 12 15:30 tmp.txtLưu ý rằng để thực hiện thay đổi file này chúng ta phải đăng nhập với tài khoản có đặc quyền hệ thống cần thiết để không chỉ tác động tới file mà còn tác động tới mọi đối tượng người dùng và nhóm. Nếu không, chúng ta sẽ không thể gán file tmp.txt cho root user mà không đăng nhập như root.
Quản lý bảo mật cấp độ file
Nếu sử dụng hệ điều hành UNIX hay kiểu UNIX, chúng ta cần nắm được những phương thức quản lý bảo mật cấp độ file cơ bản nhất. Một yếu tố quan trọng với bảo mật cấp độ file trên hệ thống UNIX là để giới hạn giấy phép file đến mức có thể mà không làm ảnh hưởng tới chức năng của hệ điều hành, và không ngăn cản chúng ta truy cập vào những file cần thiết.
Quan trọng nhất, giấy phép file bên ngoài thư mục chủ của tài khoản người dùng (như /usr/home/jon/ trong trường hợp tài khoản giả định jon ở trên, hay /root/ trong trường hợp tài khoản root của hệ thống FreeBSD, hay /home/jon/ và /root/ trên hệ thống nền tảng Linux điển hình) cần được giữ nguyên như mặc định nếu chúng ta không biết chính xác thao tác đang thực hiện.
Hầu hết các file dữ liệu trong thư mục chủ của tài khoản người dùng, như các file văn bản, cần cấp giấy phép 110/6/rw- cho tài khoản đó, và cấp giấy phép 000/0/- cho đối tượng Group và World. Trong khi đó mọi thư mục con trong thư mục chủ đó sẽ cấp phép 111/7/rwx cho đối tượng Owner, và 000/0/- cho đối tượng Group và World nếu chúng ta chú ý tới quyền riêng tư với các tài khoản khác, hay để ngăn ngừa những kẻ bẻ khóa bảo mật có thể chiếm quyền hay tạo những tài khoản khác trên hệ thống.
Nắm được phương pháp sử dụng giấy phép file của UNIX là chúng ta đã hiểu được một thành phần bảo mật cơ bản của UNIX. Nếu không sử dụng giấy phép bảo mật file, thì khả năng phân quyền rất mạnh của hệ điều hành UNIX giúp cung cấp khả năng bảo mật đáng kể so với các hệ điều hành khác đã bị suy giảm.