- vừa được xem lúc

Cơ bản về phân quyền trong Linux

0 0 16

Người đăng: Lâm

Theo Viblo Asia

Trong quá trình làm việc, Ubuntu luôn là hệ điều hành đóng vai trò là môi trường chính để mình phát triển các sản phẩm. Tuy đã làm việc với Ubuntu trong một thời gian khá lâu nhưng nhiều khi mình vẫn thấy hơi bối rối khi gặp phải một vài trường hợp muốn sửa hay chạy một file nào đó nhưng không thể thực hiện được. Lỗi đơn giản là do mình không có quyền thực hiện các tác vụ đó. Những lúc như thế mình thường thêm sudo vào đằng trước câu lệnh vừa nãy hay cục xúc hơn là sử dụng chmod 777 cho cái file cứng đầu kia mà không cần biết tại sao. Dù là hơi muộn nhưng còn hơn là không, ngày hôm nay mình sẽ giành ra một buổi tối để tìm hiểu về vấn đề này.

Classes

Chúng ta đều biết permission là việc phân chia các quyền hạn được phép thực hiện trên một tài nguyên hệ thống tương ứng với từng loại user. Vì vậy trước khi đi vào chủ đề chính, việc đầu tiên chúng ta cần biết là trong Linux tồn tại những lớp đối tượng nào có khả năng tác động đến các tài nguyên hệ thống.

root

Thông thường trong bất cứ hệ điều hành Linux nào đều tồn tại một người dùng đặc biệt là root. Đây là người dùng có mọi quyền hạn liên quan đến việc quản lý các tài nguyên trên máy.

user

Đây đơn giản là một user nào đó, bao gồm cả user đang đăng nhập vào trong hệ thống. Bạn có thể kiểm tra user mà mình đang đăng nhập thông qua dòng lệnh:

whoami

Do trong một hệ thống có thể sẽ có nhiều user khác nhau nên bạn cũng có thể switch sang các user khác bằng lệnh:

su – otheruser

Khi không truyền tên user mà bạn muốn đăng nhập vào thì mặc định bạn sẽ được switch sang user root.

group

Khi có nhiều user cùng tồn tại trên hệ thống, việc quan trọng mà bạn cần làm để có thể quản lý được quyền hạn của chúng là nhóm chúng vào trong các group. Mỗi user trong group sẽ có quyền tương ứng với group đó và một user có thể ở trong nhiều group khác nhau. Bạn có thể tạo mới một group như sau:

sudo groupadd docker

Bạn cũng có thể thêm một user vào trong một group:

sudo usermod -a -G docker lam

Owner

Với bất kỳ tài nguyên nào trên hệ thống của bạn, khi xét về tính sở hữu đối với tài nguyên đó, chúng ta có thể liệt kê ra những loại sau:

  • Chủ sở hữu là một user (owner): Đây là một user nào đó sở hữu tài nguyên đó.
  • Chủ sở hữu là một group (group): Một group cũng có thể là chủ sở hữu của một tài nguyên.
  • Những user, group không sở hữu (other): Tất cả những user và group không phải là chủ sở hữu của tài nguyên.

Vậy làm thế nào để thay đổi chủ sở hữu cho một tài nguyên nào đó? Để dễ hình dung, chúng ta sẽ coi file hello.example là tài nguyên mà chúng ta cần thao tác.

Để đổi người sở hữu, chúng ta sử dụng:

chown [username] hello.example

Tương tự, nếu bạn muốn đổi group sở hữu:

chown :[groupname] hello.example

Trong trường hợp bạn muốn đổi cả owner và group thì sẽ chạy câu lệnh sau:

chown [username]:[groupname] hello.example

Permission

Bây giờ bạn hãy vào thư mục chứa file hello.example, mở terminal lên và gõ lệnh sau:

ls -l

Trên máy của bạn có thể sẽ cho ra một kết quả khác nhưng trên máy của mình thì là:

-rwxrw-r-- 1 lam root 0 Th09 22 21:40 hello.example

Trong đó lam thể hiện user đang sở hữu file hello.example, còn root sẽ tương ứng với group đang sở hữu. Để dễ hiểu chúng ta sẽ phần tách chuỗi -rwxrw-r-- ra như sau:

- rwx rw- r-- o(owner) g(group) o(other)

Kí tự đầu tiên trong chuỗi biểu thị loại của tài nguyên. Nó cho ta biết đó là một file, một folder hay là một link. Mỗi 3 ký tự tiếp theo sẽ tương ứng với những permission đang được áp dụng cho owner, group và other. Cụ thể ý nghĩa của nó như sau:

Permission Notation
read r
write w
execute x

Dựa vào đây chúng ta có thể thay đổi quyền thao tác lên bất cứ một tài nguyên nào chúng ta muốn.

chmod

Tại thời điểm này, kết hợp tất cả những gì đã biết, chúng ta hoàn toàn có thể thay đổi quyền của từng nhóm người dùng chỉ trong một câu lệnh. Cú pháp chung sẽ là:

chmod [target][condition][permission] [filename]

Trong đó:

  • target: Đại diện cho đối tượng muốn thay đổi quyền, nhận các giá trị: u (owner), g (group), o (other), a (all).
  • condition: Điều kiện thêm vào hay thu hồi quyền bao gồm: + (thêm vào), - (thu hồi).
  • permission: Đây là các quyền được phép thao tác: r (read), w (write), x (execute).
  • filename: Đối tượng chịu tác động.

Trở lại với ví dụ bên trên, bây giờ chúng ta sẽ thử thêm quyền execute file hello.example cho group root và other:

chmod go+x hello.example

Tương tự, nếu bạn muốn bỏ quyền execute của owner thì chỉ cần chạy lệnh dưới đây:

chmod u-x hello.example

Cú pháp bên trên rất thuận tiện và thích hợp khi bạn muốn thêm hoặc thu hồi quyền đối với một đối tượng nào đó. Tuy nhiên, nó có một hạn chế là bạn không thể thêm và thu hồi quyền một cách đồng thời. Rất may mắn là chmod cũng cung cấp cho chúng ta một cách khác để thực hiện được điều đó:

Permission Value
read 2 ^ 2 = 4
write 2 ^ 1 = 2
execute 2 ^ 0 = 1

Như các bạn đã thấy, mỗi permission sẽ tương ứng với một lũy thừa của 2 và tổng hợp các quyền sẽ tương ứng với tổng các giá trị của từng permission. File hello.example đang có trạng thái như sau:

421 420 400
rwx rw- r--
o(owner) g(group) o(other)

Khi biểu diễn bằng số, các quyền của nó sẽ là: 764 . Đến đây chắc các bạn cũng đã nhận ra, đôi khi chúng ta chmod 777 là vì điều gì rồi đúng không.

Summary

Vừa rồi là một số chia sẻ của mình về việc phân quyền trong Linux nói chung và trong Ubuntu nói riêng. Về cơ bản, chỉ cần nắm được một số kiến thức bên trên là chúng ta đã có thể tự tin thao tác với những tài nguyên trên máy tính. Có thể bạn sẽ không thấy nó hữu ích ngay lúc này nhưng một lúc nào đó bạn phải thao tác nhiều trên server thì đây có thể sẽ là những kiến thức cơ bản mà bạn cần phải biết. Hẹn gặp lại các bạn trong những bài viết lần sau!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 106

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 5

Hello 500 ae, sau 4 số trong seri này mình thấy có vẻ ae có hứng thú đọc chủ đề này ghê. Hi vọng những gì mình tìm hiểu được sẽ giúp ích được cho nhiều bạn hơn.

0 0 35

- vừa được xem lúc

Những lệnh command shell linux cơ bản có thể bạn chưa biết - Phần 1

Bài viết này sẽ liệt kê một số command cơ bản thường được dùng trong linux, tiện dụng cho các bạn khi sử dụng linux mà có thể bạn chưa biết. Tôi là ai, câu lệnh này sẽ cho bạn biết bạn đang sử dụng linux bằng tài khoản người dùng nào.

0 0 43

- vừa được xem lúc

Cách sử dụng lệnh SCP để truyền tệp an toàn

SCP (secure copy) là một tiện ích dòng lệnh cho phép bạn sao chép an toàn các tệp và thư mục giữa hai vị trí. . From your local system to a remote system. Between two remote systems from your local system.

0 0 40

- vừa được xem lúc

Người ta làm cách nào để backup thường xuyên thư mục rất lớn?

. Vấn đề về sao lưu thư mục lớn. Mình có lưu "sương sương" 300GB các tệp tin của người dùng upload lên, như hình ảnh hay các tệp đính kèm.

0 0 38

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 4

Sau một kì nghỉ tết trong thời buổi đại dịch vừa qua. Không còn những buổi dong chơi đi chúc tết nữa. Ở nhà ra số tiếp theo cho anh em đây. Dưới đây sẽ là 2 command được sử dụng nhiều nhất khi sử dụng file.

0 0 27