[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
2
3
4
5
6
7
8
set-uid: -rws --- ---
- Chương trình được chạy dưới quyền của người sở hữu

set-gid: - --- rws ---
- Chương trình được chạy bởi các người sử dụng thuộc cùng nhóm với người sở hữu

bit sticky
- Chương trình chỉ được cấp phát bộ nhớ trong 1 lần

Một số quyền đặc biệt với thư mục

1
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
2
3
4
5
6
7
8
9
10
11
12
$chmod <mode> <files>

set_uid set-gid sticky user group other
rwx --x --x
1 1 0 111 001 001
6 7 1 1
$ chmod 6711 test
$ ls -l test
-rws--s--x 1 minhnv user1 Mar 10 10:20 test
$ chmod 711 test
$ ls -l test
-rwx--x--x 1 minhnv user1 Mar 10 10:20 test

Hoặc

1
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óm

1
2
$chown [-R] <utilisateur> <files>
– Thay đổi người sở hữu của file

1
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

Author

Ming

Posted on

2019-11-17

Updated on

2021-04-10

Licensed under

Comments