access control list in linux

7
Access Control List in Linux Bài viết cung cấp nền tảng và chức năng chính của ACLs trong hệ thống file của Linux. Bạn cũng sẽ học được cách mở rộng các khái niệm permissions truyền thống với ACLs và những thuận lợi trong việc cung cấp khái niệm này. I. Thuận lợi của ACLs Thông thường 1 file trong Linux có 3 quyền: r, w, x với 3 nhóm người dùng: owner, group, other. 9 bits này được sử dụng để xác định đặc tính cho tất cả các hệ thống file trong Linux. Thêm vào đó, SUID, SGID, sticky bit có thể được dùng trong các trường hợp đặc biệt. ACLs được sử dụng trong trường hợp mà các khái niệm permission của file thông thường không có hiệu lực. Chúng cho phép gán quyền cho một người, hoặc một nhóm cá nhân thậm chí không tương ứng với owner hoặc owning group. ACLs hỗ trợ các hệ thống file ReiserFS, Ext2, Ext3, JFS, XFS. Bạn có thể thấy rõ thuận lợi của ACLs khi thay thế 1 server chạy Windows bằng 1 server chạy Linux. Một số trạm kết nối vẫn có thể chạy trên Windows ngay cả sau khi chuyển đổi. Hệ thống Linux sẽ chuyển các file và dịch vụ về clients chạy windows với Samba. Samba cũng hỗ trợ ACLs và lúc đó quyền của người dùng có thể được cấu hình trên cả Linux và Windows bằng GUI. winbindd còn có khả năng gán quyền cho user chỉ tồn tại trên Windows domain mà ko có account nào trên Linux server. Mặt khác bạn có thể chỉnh sửa ACLs với getfacl setfacl II. Định nghĩa POSIX sử dụng 3 lớp người dùng để gán quyền cho hệ thống file. - Access ACL: áp dụng cho cả file và thư mục - Default ACL: chỉ áp dụng cho thư mục. Chúng xác định quyền kế thừa từ thư mục cha khi được tạo.

Upload: ledai

Post on 10-Dec-2015

216 views

Category:

Documents


0 download

DESCRIPTION

Danh sách điều khiển truy cập trong linux

TRANSCRIPT

Page 1: Access Control List in Linux

Access Control List in Linux

Bài viết cung cấp nền tảng và chức năng chính của ACLs trong hệ thống file của Linux. Bạn cũng

sẽ học được cách mở rộng các khái niệm permissions truyền thống với ACLs và những thuận lợi

trong việc cung cấp khái niệm này.

I. Thuận lợi của ACLs Thông thường 1 file trong Linux có 3 quyền: r, w, x với 3 nhóm người dùng: owner, group, other. 9

bits này được sử dụng để xác định đặc tính cho tất cả các hệ thống file trong Linux. Thêm vào đó,

SUID, SGID, sticky bit có thể được dùng trong các trường hợp đặc biệt.

ACLs được sử dụng trong trường hợp mà các khái niệm permission của file thông thường không có

hiệu lực. Chúng cho phép gán quyền cho một người, hoặc một nhóm cá nhân thậm chí không tương

ứng với owner hoặc owning group. ACLs hỗ trợ các hệ thống file ReiserFS, Ext2, Ext3, JFS, XFS.

Bạn có thể thấy rõ thuận lợi của ACLs khi thay thế 1 server chạy Windows bằng 1 server chạy

Linux. Một số trạm kết nối vẫn có thể chạy trên Windows ngay cả sau khi chuyển đổi. Hệ thống

Linux sẽ chuyển các file và dịch vụ về clients chạy windows với Samba. Samba cũng hỗ trợ ACLs

và lúc đó quyền của người dùng có thể được cấu hình trên cả Linux và Windows bằng GUI.

winbindd còn có khả năng gán quyền cho user chỉ tồn tại trên Windows domain mà ko có account

nào trên Linux server. Mặt khác bạn có thể chỉnh sửa ACLs với getfacl và setfacl

II. Định nghĩa POSIX sử dụng 3 lớp người dùng để gán quyền cho hệ thống file.

- Access ACL: áp dụng cho cả file và thư mục

- Default ACL: chỉ áp dụng cho thư mục. Chúng xác định quyền kế thừa từ thư mục cha khi

được tạo.

- ACL entry: Mỗi ACL sẽ bao gồm 1 tập hợp ACL entries. Một ACL entry sẽ chứa 1 loại, 1

hạn định mà user hoặc group nó tham chiếu đến, và một tập hợp các quyền.

III. Handing ACLs

III.1. Cấu trúc của ACLs entries

Về cơ bản, ACL chia thành 2 lớp: minimum ACL chỉ đơn giản gồm các quyền như hệ thống file

truyền thống. Extended ACL mở rộng hơn, nó chứa đựng 1 mask entry, và có thể bao gồm các

entries cho loại named user, named group. Các permission được định nghĩa trong owner và other

luôn luôn có hiệu lực. Ngoại trừ mask entry thì các entries khác luôn có hiệu lực hoặc là được

masked. Nếu các quyền tồn tại trong 1 hoặc 1 số entry trên được mask thì chúng cũng có hiệu lực.

Permission chỉ chứa mask hoặc duy nhất 1 entry thực sự thì sẽ không có hiệu lực.

Page 2: Access Control List in Linux

III.2. ACL entries và File mode permission bits

ACL được cấu tạo theo 3 khối:

- Không có mask: owning group map với group class

- có mask: mask map với group class

Quá trình map này đảm bảo việc tương tác giữa các ứng dụng được và không được hỗ trợ bởi

ACLs. Quyền truy cập được gán bởi bit quyền đại diện cho giới hạn cao nhất. Tất cả các quyền

không phản ánh ở đây hoặc là ko được gán trong ACL hoặc là không có hiệu lực.

III.3. Một thư mục với truy cập ACL

Việc xử lý ACL được giải thích theo 3 bước:

- Tạo file

- Chỉnh ACL

- Dùng masks

Trước khi tạo thư mục hãy dùng umask để xác định quyền truy cập ban đầu.

$ umask 027

Sau đó tạo mydir:

$ mkdir mydir

Sau khi tạo mydir hãy dùng ls -dl để kiểm tra lại là quyền đã được gán chính xác:

$ ls -dl mydir/

drwxr-xr-x 2 quanta quanta 4096 2007-12-29 22:53 mydir/

Kiểm tra trạng thái khởi đầu của ACL và chèn một new user và new group entry

$ getfacl mydir/

# file: mydir

# owner: quanta

# group: quanta

user::rwx

group::r-x

other::---

Đầu tiên hãy thử chỉnh sửa bằng cách: gán quyền đọc, ghi, thi hành cho user kitty và group friends:

$ setfacl -m user:kitty:rwx,group:friends:rwx mydir/

Tuỳ chọn -m sẽ nhắc setfacl chỉnh sửa một ACL đã tồn tại.

Thử xem kết quả với lệnh getfacl xem sao:

$ getfacl mydir/

# file: mydir

# owner: quanta

# group: quanta

Page 3: Access Control List in Linux

user::rwx

user:kitty:rwx

group::r-x

group:friends:rwx

mask::rwx

other::---

Ngoài các entries khởi tạo cho user kitty và group friends, mask entry cũng được tạo ra. mask entry

này được gán tự động để giảm thiểu số lượng các entries trong group class để gọi tên thông thường.

mask định nghĩa quyền truy cập có hiệu lực lớn nhất cho tất cả các entries trong group class: named

user, named group, owning group. Do đó, mask entry tương ứng với bit quyền của group class -

được hiển thị bằng lệnh ls -dl

$ ls -dl mydir/

drwxrwx---+ 2 quanta quanta 4096 2007-12-29 22:53 mydir/

Chú ý: cột đầu tiên của output chứa đựng một dấu +, đây là ký tự đại diện cho một extended ACL

Theo output trên, permission của mask entry cũng bao gồm quyền write, theo đó owning group

cũng có quyền write thư mục mydir.

Bây giờ thử dùng chmod hoặc setfacl để disabled quyền write của group class xem sao, output của

lệnh ls cho thấy mask bits đã được điều chỉnh với chmod:

$ sudo chmod g-w mydir/

$ getfacl mydir/

# file: mydir

# owner: quanta

# group: quanta

user::rwx

user:kitty:rwx #effective:r-x

group::r-x

group:friends:rwx #effective:r-x

mask::r-x

other::---

III.4. Một thư mục với default ACL

default ACL định nghĩa tất cả các quyền truy cập kế thừa từ thư mục này khi nó được tạo. default

ACL ảnh hưởng đến các thư mục con cũng như là các files.

III.4.1. Ảnh hưởng của Default ACLs

Về cơ bản quyền của ACL được handled theo 2 cách:

- 1 thư mục kế thừa default ACL từ thư mục cha

- 1 file kế thừa từ default ACL và nó sở hữu Access ACL

Page 4: Access Control List in Linux

Tất cả các hệ thống tạo file đều sử dụng mode parameter để định nghĩa quyền truy cập cho file mới

được tạo:

- Nếu thư mục không có default ACL,một sự giao nhau giữa các quyền trong mode parameter

và trong umask hiện tại sẽ được tạo và gán cho đối tượng

- Nếu default ACL tồn tại trong thư mục cha, bit quyền được xác định theo sự giao nhau giữa

giá trị của mode parameter và quyền định nghĩa trong default ACL, và được gán cho đối

tượng.

III.4.2. Ứng dụng của default ACLs

- Tạo một default ACL cho một thư mục đã tồn tại

- Tạo một thư mục con trong thư mục có default ACLs

- Tạo một file trong thư mục có default ACLs

Thêm một default ACLs vào một thư mục đã tồn tại mydir:

$ setfacl -d -m group:friends:r-x mydir/

Tuỳ chọn -d sẽ nhắc setfacl thực hiện một "chỉnh sửa" trên default ACLs

Xem kết quả của lệnh này:

$ getfacl mydir/

# file: mydir

# owner: quanta

# group: quanta

user::rwx

user:kitty:rwx #effective:r-x

group::r-x

group:friends:rwx #effective:r-x

mask::r-x

other::---

default:user::rwx

default:group::r-x

default:group:friends:r-x

default:mask::r-x

default:other::---

getfacl sẽ trả về cả access ACL và default ACL.

Tiếp theo thử tạo một thư mục con trong mydir, thư mục con này kế thừa default ACL từ mydir:

$ mkdir mydir/mysubdir

$ getfacl mydir/mysubdir/

# file: mydir/mysubdir

# owner: quanta

Page 5: Access Control List in Linux

# group: quanta

user::rwx

group::r-x

group:friends:r-x

mask::r-x

other::---

default:user::rwx

default:group::r-x

default:group:friends:r-x

default:mask::r-x

default:other::---

access ACL của mysubdir phản ánh chính xác default ACL của mydir.

Sử dụng touch để tạo một file trong thư mục mydir:

$ touch mydir/myfile

$ ls -l mydir/myfile

-rw-r-----+ 1 quanta quanta 0 2008-01-07 00:59 mydir/myfile

$ getfacl mydir/myfile

# file: mydir/myfile

# owner: quanta

# group: quanta

user::rw-

group::r-x #effective:r--

group:friends:r-x #effective:r--

mask::r--

other::---