[Linux]: Permission Management
Bài viết sẽ đề cập tới các quyền đối với file/thư mục trong hệ thống Ubuntu. Ngoài ra bài viết cũng hướng dẫn sử dụng một số lệnh để thay đổi các quyền này.
1. Tổng quan
Mỗi file luôn thuộc về một người sử dụng và một nhóm xác định.
- Người tạo ra file hoặc thư mục sẽ là người sở hữu, nhóm chứa người tạo ra file hoặc thư mục sẽ là nhóm sở hữu đối với file/thư mục.
Sự phân quyền cho phép xác định rõ các quyền mà người sử dụng có đối với một file hoặc một thư mục.
Chi tiết các quyền truy cập:
r : đọc
- Cho phép hiển thị nội dung của file hoặc thư mục.
w : ghi
- Cho phép thay đổi nội dung của file.
- Cho phép thêm hoặc xóa các file trong một thư mục.
x : thực thi
- Cho phép thực thi file dưới dạng một chương trình.
- Cho phép chuyển đến thư mục cần truy cập.
2. Các nhóm người sử dụng file
Có 3 nhóm người sử dụng đối với 1 file/ thư mục:
- u (người sở hữu) : người sở hữu duy nhất của file
- g (groupe) : những người sử dụng thuộc nhóm chứa file
- o (others) : những người sử dụng khác, không phải là người sở hữu file cũng như không thuộc nhóm chứa file.
Mỗi nhóm người sử dụng sẽ có một tập các quyền (r, w, x) xác định.
Ví dụ1
2
3
4
5
6
7
8
9
10
11
12$ ls -l
----rw-rw- 1 minhnv user1 16 Feb 10 19:12 test1.txt
-rw-rw-rw- 1 minhnv user1 16 Feb 10 19:12 test2.txt
drw-r--r-- 2 minhnv user1 512 Feb 10 19:14 vanban
$ whoami
minhnv
$ cat test1.txt
cat: test1.txt: Permission denied
$ cat test2.txt
Un fichier de test
$ cp test2.txt vanban
cp: vanban: Permission denied
Một vài lưu ý về phân quyền hệ thống file:
- Để có thể thêm các file, cần phải có quyền “w” đối với thư mục
- Để có thể xóa, thay đổi nội dung hoặc di chuyển 1 file, người sử dụng cũng cần phải có quyền « w » đối với thư mục
- Việc xóa một file còn phụ thuộc vào quyền đối với thư mục chứa file đó
- Để bảo mật các dữ liệu, người sở hữu file thậm chí có thể bỏ cả quyền đọc “r” đối với tất cả mọi người sử dụng khác.
- Để hạn chế quá trình truy cập vào hệ thống file, người sử dụng có thể bỏ quyền thực thi (x) đối với thư mục gốc của hệ thống file.
Một số quyền đặc biệt đối với các file thực thi:
1 | set-uid: -rws --- --- |
Một số quyền đặc biệt với thư mục1
2
3
4
5
6• set-uid: -rws --- ---
• set-gid: - --- rws ---
– Các tệp mới được tạo ra có nhóm chủ sở hữu là nhóm của thư mục
• bit sticky
– Chỉ có root và chủ sở hữu được xóa, kể cả khi có quyền rwx
Ví dụ:1
2
3
4$ ls -l /etc/passwd
-rw-rw---- 1 root root 568 Feb 10 19:12 passwd
$ ls -l /bin/passwd
-rwsrws--x 1 root root 3634 Feb 10 19:12 passwd
Trong ví dụ trên, khi một người sử dụng thông thường gọi lệnh /bin/passwd
, xem như người đó được
“mượn” quyền root để thay đổi mật khẩu trong file /etc/passwd
3. Lệnh thay đổi quyền
$chmod
1 | $chmod <mode> <files> |
Hoặc1
2
3
4
5
6
7$chmod <ugoa><+-=><rwsx> <files>
• u | g | o | a (all)
• Operation
– + (thêm 1 hoặc 1 số quyền vào tập các quyền file đã có)
– - (bỏ 1 hoặc 1 số quyền khỏi tập các quyền file đã có)
– = (gán mới 1 hoặc 1 số quyền cho file)
• Quyền = r | w | x | s
Ví dụ:1
2
3
4
5
6
7
8
9
10$ ls -l test.txt
-rw-rw-r-- 1 minhnv user1 150 Mar 19 19:12 test.txt
$ chmod o+w test.txt
$ ls -l test.txt
-rw-rw-rw- 1 minhnv user1 150 Mar 19 19:12 test.txt
$ chmod a-rw test.txt
$ ls -l test.txt
---------- 1 minhnv user1 150 Mar 19 19:12 test.txt
$ cat test.txt
cat: test.txt: Permission denied
$chown, $chgrp
Lệnh này để thay đổi người sở hữu và nhóm1
2$chown [-R] <utilisateur> <files>
– Thay đổi người sở hữu của file1
2
3
4
5$chgrp <group> <files>
– Thay đổi nhóm của file
– Có thể sử dụng tùy chọn –R để lặp lại việc thực hiện các
lệnh (ví dụ thực hiện việc thay đổi quyền sở hữu hoặc
nhóm của mọi file trong cùng một thư mục)
Note: Các lệnh trên chỉ dành cho những người sử dụng có quyền root
Ví dụ1
2
3$sudo chown -R yourname:www-data cake
$sudo chown minhnv file1.txt
$sudo chmod -R g+s cake
4. Nhóm www-data
Khi làm việc với web, tôi thấy khá nhiều người chuyển quyền sở hữu file/thư mục cho nhóm người dùng này. Thực tế, nhóm www-data
là tập những người dùng vào web servers trên Ubuntu (như nginx, apache2) sử dụng mặc định cho các hoạt động truy cập web thông thường. Máy chủ web server có thể truy cập bất kì file nào nhóm www-data có thể truy cập. Không có gì đặc biệt với nhóm user này.
Chi tiết
[Linux]: Permission Management