File nào xác định tất cả các user trên hệ thống linux?

Trần Huy Hoàng @tranhuyhoang

Đã đăng vào thg 10 26, 2015 9:09 SA 0 phút đọc

Trong bài viết này tôi sẽ giới thiệu với các bạn cách phân quyền trên linux. Đây là một kỹ thuật không mới nhưng nó có thể hơi trừu tượng với những người mới chuyển từ windown sang Linux. Ngoài ra bài viết còn giới thiệu các kiến thức về loại người dùng, nhóm người dùng trong hệ thống, cách quản lý. Trước khi đi vào tìm hiểu về cách phân quyền trong hệ thống Linux. Chúng ta hãy cùng tìm hiểu về khái niệm User [người dùng], Group [nhóm người dùng], các lệnh, files liên quan đến User, Group.

1. User và Group trong Linux

User chính là người có thể truy cập đến hệ thống. Một User có username và password. Có hai loại User là Super User [hay thường gọi là Root] và Regular User. Mỗi User còn có một mã UID riêng. Mỗi loại User, mỗi User khác nhau có quyền trong hệ thống khác nhau phụ thuộc vào hệ thống đã thiết lập cho họ những quyền gì, Super User đã cấp cho họ những quyền gì.

1.2. Group

Group là nhóm người dùng hệ thống. Mỗi nhóm có tên và mã GID riêng. Các User trong Group có thể có những quyền trong hệ thống khác nhau nhưng có một tập hợp quyền chung trong hệ thống đặc trưng cho Group đó.

1.3. Các lệnh cơ bản quản lý User và Group

STT Mô tả Cú pháp Ghi chú
1 Tạo User #useradd [option] ,options: -c Thông tin user -d Thư mục cá nhân -m Tạo thư mục cá nhân nếu chưa tồn tại -g nhóm người dùng #useradd -c “Tran Huy Hoang - admin2” –g admin2 tranhoang
2 Sửa thông tin User #usermod [option] options: tương tự với useradd #usermod -g baseadmin tranhoang
3 Xóa người dùng #userdel [option] #userdel -r tranhoang
4 Khóa người dùng #passwd -l #passwd -l tranhoang
5 Mở khóa tài khoản #passwd -u #passwd -u tranhoang
6 Tạo nhóm #groupadd #groupadd baseadmin
7 Xóa nhóm #groupdel #groupdel baseadmin

2. Phân quyền trong linux

Một file hay thư mục trong hệ thống có 4 quyền cơ bản sau:

a. Read [r]

Đối với một file thì quyền Read chính là quyền được xem nội dung của file, còn đối với một folder thì quyền Read chính là quyền xem được danh sách các subfolder và file bên trong folder đó.

b. Write [w]

Đối với một file thì quyền Write là cho phép thêm, sửa nội dùng file, còn đối với một folder thì Write cho phép thêm, xóa một subfolder hay file trong thư mục đó.

c. Execute [x]

Đây là quyền thực thi. Đối với một file thì Execute cho phép thực thi file trong trường hợp file này thuộc dạng program hoặc script, còn đối với một folder Execute cho phép cd vào thư mục này.

d. Deny [-]

Không có quyền làm một thao tác gì đó đối với một file hay folder xác định.

2.2. Cách xem sự phân quyền trên một folder, một file

Như trên ta thấy câu lệnh ls -la liệt kê ra danh sách thư mục và file gồm thư mục hiện tại, thư mục con và file đi cùng với chúng ta thông tin phân quyền Cột đầu tiên gồm 10 bits thể hiện quyền hạn drwxr-xr-x 2 root root [1] -rw-r- -r-- 1 root root notice.txt [2] Bit 1: thể hiện kiểu file. Ví dụ ở [1] “d” cho biết đó là thư muc, [2] “-” cho biết đó là 1 file thường. 9 bits còn lại: Chia làm 3 nhóm, mỗi nhóm thể hiện quyền hạn cho mỗi loại đối tượng. Ba bít đầu thể hiện quyền của owner - user sở hữu file này Ba bít tiếp theo thể hiện quyền của owner group - group sở hữu file này Ba bit cuối thể hiện quyền của các user khác Ví dụ trong [2] Ba bít đầu là “rw-” chỉ ra rằng owner user có quyền đọc [r], sửa [w] file “notice.txt” Ba bít tiếp là “r--” chỉ ra rằng owner group có chỉ có thể đọc [r] file này và không có quyền khác Ba bít cuối là “r--” chỉ ra rằng other user có chỉ có thể đọc [r] file này và không có quyền khác

3.2 Thay đổi quyền

Chỉ có User có quyền root hoặc owner user của file mới có thể thay đổi quyền của file đó. Sử dụng lệnh chmod để thay đổi quyền

chmod file_name

Trong đó “mode” có thể được viết theo 2 cách là symbolic hoặc octal.

Symbolic mode Octal mode
Mô tả Trong cách này chúng ta có thể thêm “op”,[+], bớt [-], gán [=] các quyền “permissions” [r w x] cho từng nhóm đối tượng “who” [u g o] - [owner user, group, other user] Trong cách này mỗi quyền được thể hiện bằng một số tương ứng - : 0 ,x : 1, w : 2, r :4.,Quyền của mỗi nhóm đối tượng thể hiện ở tổng của các thành phần. Khi gán quyền phải gán cho cả 3 nhóm
Cách dùng Mode = [who] + [op] + [permissions] Ví dụ 644 rw-r–r– 751 rwxr-x–x 775 rwxrwxr-x 777 rwxrwxrwx
Ví dụ chmod g-w notice.txt Bỏ quyền write trên group chmod 644 notice.txt,6 = rw- nghĩa là owner user có quyền đọc ghi file,4 = r-- nghĩa là group chỉ có quyền đọc file,4= r-- nghĩa là other user cũng chỉ có quyền đọc file
Ghi chú Ưu điểm là chúng ta có thể kế thừa quyền cũ Cách này không thể kế thừa quyền cũ nhưng bù lại cú pháp ngắn gọn dễ dùng

3.3. Quyền mặc định và thay đổi quyền mặc định với umask

3.3.1. Giới thiệu về umask

Khi chúng ta tạo ra file hoặc thư mục, mặc định hệ thống gán cho nó 1 quyền mặc định File: 666 [rw-rw-rw-] [3] Folder: 777 [rwxrwxrwx] [4]

Vậy nếu chúng ta muốn thay đổi quyền mặc định của một file, folder khi nó được tạo thì phải làm thế nào. Trong linux điều này khá đơn giản, bởi hệ thống cung cấp cho chúng ta một công cụ đó là umask Khi umask được khởi tạo giá trị thì các quyền mặc định sẽ không còn như [3] và [4] nữa.

Mặc định thì umask = 022. Khi đó các quyền mặc định với file và folder được tính lại như sau:

File:

666: rw- rw- rw- 022: --- -w- -w- 644 rw- r-- r--

Folder:

777: rwx rwx rwx 022: --- -w- -w- 755 rwx r-x r-x

Lưu ý: có một trường hợp ngoại lệ, nếu như umask=123 thì quyền mặc định cho file sẽ là 644 chứ không phải là 543.

3.3.2. Cách xem và thay đổi giá trị của umask

Xem giá trị và thay đổi giá trị umask rất đơn giản như ví dụ dưới đây

3.4 Thay đổi Owner với chown

Cú pháp:

chown [user.group] files/folde

options:
R được sử dụng trong trường hợp muốn đổi tất cả subfolder và files trong thư mục

4. Kết luận

Bài viết đã giới thiệu các khái niệm, các kỹ thuật cơ bản trong việc phân quyền trong hệ thông Linux. Để nắm rõ hơn các bạn có thể đọc thêm hai trang dưới đây - Đây cũng là hai trang tôi đã tham khảo để thực hiện bài viết này. Rất cám ơn các bạn đã quan tâm đến bài viết của tôi. Link tham khảo:

//www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions


//www.linux.org/threads/file-permissions-chmod.4094/

All rights reserved

Linux là một hệ điều hành mã nguồn mở được rất nhiều người sử dụng. Nhiều người đã chuyển từ Windows sang Linux hay ngược lại, tuy nhiên khi chuyển sang một hệ điều hành mới thì gặp khó khăn trong việc làm quen với hệ điều hành mới cũng là điều dễ hiểu. Khi chuyển từ Windows sang Linux thì cấu trúc thư mục file trong Linux khác hoàn toàn so với Win, hay bạn phải làm quen với việc dùng lệnh để tối ưu hóa công việc và đặc biệt là phần phân quyền trong Linux. Bài này mình chia sẻ về phần phân quyền trong Linux, hi vọng nó sẽ giúp các bạn hiểu hơn về Linux và yêu thích nó hơn.

Các khái niệm

Có 2 khái niệm rất quan trọng cần phải nhớ trong Linux đó là permissionsownership.

Ownership

Mỗi file hay thư mục trên Linux đều được gán bởi 3 loại chủ sở hữu là user, group, other

User

Theo như mặc định trên Linux thì người tạo ra file hay thư mục nào đó thì sẽ trở thành chủ sở hữu của chính nó, giống như việc một người A tạo ra một vậy B thì mặc định người A sẽ là chủ sở hữu của vật B đó.

Group

Một nhóm có thể chứa nhiều người dùng cùng một lúc. Tất cả người dùng trong một nhóm sẽ có cùng quyền truy cập vào file hay thư mục đó. Giả sử có một tài liệu học tập cho một lớp học mà bạn không muốn cho lớp khác biết, chỉ muốn chia sẻ trong lớp. Thay vì bạn cấp quyền cho từng người trong lớp thì bạn có thể gom tất những người trong lớp thành một nhóm người dùng và bạn gán quyền cho một nhóm người dùng đó để chỉ có những người trong nhóm đó mới có quyền truy cập vào tài liệu.

Other

Other là bất kỳ người dùng nào không thuộc vào 2 đối tượng phía trên. Xét lại ví dụ trên, bạn không phải là thuộc nhóm lớp được truy cập vào tài liệu và bạn cũng không phải là người sở hữu tài liệu đó thì bạn được xét là other.

Bài toán đặt ra là làm sao để Linux phân biệt giữa ba loại người dùng này để người dùng A không ảnh hưởng đến một số file hay thư mục chứa thông tin hay dữ liệu của một người dùng B. Và đây chính là lúc permissions[quyền] được sử dụng để kiểm soát hình vi của người dùng.

Permissions

Mỗi một file hay thư mục trong Linux đều có 3 quyền đọc, ghi, thực thi được xác định cho 3 chủ sở hữu ở trên.

  • Đọc: Nếu là một file thì quyền này cho phép bạn mở file đó lên và đọc. Nếu là một thư mục thì nó cho phép bạn liệt kê danh sách file hay thư mục trong thư mục đó.
  • Ghi: Quyền ghi cho phép bạn sửa đổi nội dung của file. Nếu là thư mục thì nó cho phép bạn có thể thêm, xóađổi tên các file trong thư mục đó.
  • Thực thi: Với Windows bạn có thể chạy với một file có đuôi ".exe" một cách dễ dàng. Khác so với Windows, trong Linux bạn không thể chạy khi nó không được cấp quyền thực thi. Còn đối với thư mục thì bạn không thể truy cập[cd] nếu bạn không có quyền thực thi nó.

Thực hành

Xem quyền

Để liệt kê, xem quyền và chủ sở hữu các file hay thư mục:

ls -l

Hình ảnh tổng quát nhất về quyền trong Linux:

Có thể nhìn nó rất rối hay khó hiểu đối với những người chưa quen về Linux, nhưng không sao mình sẽ giúp các bạn hiểu hơn về từng phần.

Trên máy Linux mình có tạo một file có tên là file1 và một thư mục có tên là dir1, mặc định thì thì người tạo sẽ là chủ sở hữu vì vật mình dùng account hoavt để tạo mặc định nó có user sở hữu là hoavt , vậy nhóm ở đâu ra? Theo như Linux đã thiết kế thì sẽ thêm người dùng vào một nhóm có cùng tên với người dùng đó vì vật usergroup sở hữu chính là hoavt. Cùng xem quyền của nó trông sẽ như thế nào

Với phần đầu tiên mình khoanh đỏ chính là phần permissions mình đã nói ở phía trên. Trông rất lằng nhằng phải không? Đừng lo cấu trúc của phần permissions sẽ được chia ra thành từng phần như sau: đầu tiên là file type, sau đó sẽ đến đến quyền của từng owner trong hệ thống.

file type user group other name
d rwx r-x r-x dir1
- rw- r-- r-- file1

Nhìn vào bảng mình đã chia ra thành từng cột khác nhau. Đầu tiền trong phần permissions sẽ cho bạn biết nó là ở dạng file hay thư mục. Trong đó:

Ký hiệu Ý nghĩa
d Thư mục
- File

Sau khi phân biệt được là file hay thư mục thì đến phần xem các quyền mình có thể làm đối với mỗi file hay thư mục đó. Nó được chia ra làm 3 phần là user,group, other. Ý nghĩa của r,w,x:

Ký hiệu Ý nghĩa
r Đọc
w Ghi
x Thực thi
- Không có quyền

Đối với user nó được sở hữu bởi hoavt và có quyền rwx với thư mục dir1 nghĩa là mình có quyền đọc, ghi, thực thi thư mục dir1 khi mình là hoavt, còn với file1 mình chỉ có quyền rw-, nghĩa là mình chỉ có quyền đọc và ghi còn thực thi mình không có quyền nên được ký hiệu bởi dấu -. Nếu bạn để ý thì các quyền được ghi theo thứ tự rwx chỉ cần nhìn qua và thấy chỗ đó có quyền hay không, nếu có nó được thay - [không có quyền] bằng quyền tương ứng ở vị trí đó.

Tương tự đối với groupother quyền cũng được sắp xếp như user.

Thay đổi quyền với chmod

chmod là viết tắt của change mode dùng để thay đổi quyền của một thư mục hay file trên Linux.

Phần quyền bằng số chmod

Permissions -number về cơ bản sẽ có 3 chữ số một số với ý nghĩa số thứ nhất là quyền của user, số thứ 2 là quyền của group, số thứ 3 là quyền của other. Ý nghĩa của từng chữ số ở đây:

Số Ký hiệu Ý nghĩa
0 --- Không có quyền
1 --x Thực thi
2 -w- Ghi
3 -wx Thực thi + Ghi
4 r-- Đọc
5 r-x Đọc + Thực thi
6 rw- Đọc + Ghi
7 rwx Đọc + Ghi + Thực thi

Giả sử bạn cần phân quyền cho một file có tên là file1 quyền rwxrw-r--. Nó có nghĩa là user có tất cả quyền đọc, ghi, thực thi. Group có quyền đọc và ghi và other thì chỉ có quyền đọc. Để làm điều này ta cần tính quyền cho từng chủ sở hữu.

user: r + w +x = 4 + 2 + 1 = 7

group: r + w = 4 + 2 = 6

other: r = 4 = 4

Vậy quyền của cả file sẽ là 764, sau đó sử dụng lệnh sau để phân quyền:

chmod 764 file1

Ngoài ra bạn cũng có thể tham khảo thêm câu lệnh

chmod u=rwx,g=rw,o=r Ký hiệu Ý nghĩa
u user
g group
o other
a tất cả

Thay đổi owner và group

Ngoài ra bạn còn có thể thay đổi các quyền sở hữu của một file. Để thay đổi được bạn cần phải có quyền sudo.

Để thay đổi user:

sudo chown

Để thay đổi group:

sudo chgrp

Để thay đổi cả user và group:

sudo chown :

Tổng kết

Tóm lại bạn cần nhớ một vài ý chính như sau:

  • Có 3 loại chủ sở hữu một file/thư mục trên Linux đó là user, group, other
  • Các quyền đọc, ghi, thực thi được ký hiểu là r, w, x tương ứng với các số là 4, 2, 1.
  • Lệnh chmod để thay đổi quyền, chown để thay đổi user sở hữu, chrgrp để thay đổi group sở hữu.

Tham khảo

//medium.com/@sajithnmadeesha/basics-of-linux-file-permission-5db00bd9749f

//phoenixnap.com/kb/linux-file-permissions

//www.guru99.com/file-permissions.html

Video liên quan

Chủ Đề