Thứ Sáu, 28 tháng 7, 2023

Các quyền truy cập file và folder trên Linux

Trong bài này mình sẽ giới thiệu một số quyền quản lý file trên Linux, qua đó sẽ giúp bạn hiểu được ý nghĩa của việc phân quyền trên Linux.

Hai bài trước chúng ta đã tìm hiểu về hệ thống filevà thư mục trên linux. Trong bài này mình sẽ tiếp tục trình bày về vấn đề quyền truy cập file. Đầu tiên mình sẽ giải thích các khái niệm liên quan đến phân quyền trên linux như quyền của người sở hữu, nhóm sở hữu, các quyền đọc, ghi, thi hành ... Sau đó mình sẽ giải thich các lệnh quản lý quyền truy cập.

Mục lục

  • 1. Tại sao cần phân quyền cho file trên Linux
  • 2. Các quyền truy cập file và thư mục trên Linux
    • Ba thuộc tính quyền mọi file trên linux đều có
    • Các quyền truy cập file trên Linux
    • Các quyền truy cập thư mục trên Linux
  • 2. Thay đổi quyền truy cập trên Linux bằng lênh Chmod
    • Lệnh Chmod
    • Lệnh chmod với biểu diễn quyền dạng số
    • Thay đổi chủ sở hữu file và thư mục
    • Thay đổi nhóm sở hữu file và thư mục

1. Tại sao cần phân quyền cho file trên Linux

Trên Linux, điểm mạnh của nó là hệ thống phân quyền rất tốt, bạn có thể cho phép một người được phép sử dụng một file nào đó hay không. Điều này sẽ giúp dữ liệu luôn được an toàn, chỉ những ai đủ thẩm quyền mới có thể đọc và ghi lên chúng.

Ví dụ bạn chạy một web server, lúc này bạn không thể cho phép tất cả user đều có thể đọc được những file trên website đó, mà chỉ có chủ sở hữu mới có quyền. Đương nhiên với tài khoản root là cấp cao nhất nên có thể xem được mọi dữ liệu của tất cả các user.

Bài viết này được đăng tại tranvanbinh.vn

Tóm lại, việc phân quyền file trên Linux sẽ giúp đảm bảo dữ liệu được an toàn, chỉ những ai được phép thao tác trên file mới nhìn thấy và mở chúng.

2. Các quyền truy cập file và thư mục trên Linux

Quyền truy cập file là một phần quan trọng của linux, có vai trò quan trọng trong việc nâng cao tính bảo mật và ổn định trên hệ thống linux.

Trên Windows, ví dụ máy tính của bạn có 2 user là tyson và jimi, thông thường thì mặc định cả hai đều là Administrator. Khi đó cả jimi và tyson đều có mọi quyền truy cập tới mọi file trên hệ thống kể cả những phần của hệ thống.

Trên linux thì quyền 2 user tách biệt hơn và 2 user jimityson mặc định sẽ có quyền admin hạn chế hơn. Vì vậy khi virus xâm nhập máy Linux thì nó chỉ có thể chạy chương trình dưới quyền của user jimi hoặc tyson, nó không thể chạy với quyền root để gây ảnh hưởng rộng hơn trên cả hệ thống.

Ba thuộc tính quyền mọi file trên linux đều có

  • Quyền của người sở hữu: quy định quyền người sở hữu được làm những thao tác gì với file. Khi mới tạo file thì người sở hữu chính là người tạo file, sau đó có thể đổi chủ sở hữu cho người khác.
  • Quyền của nhóm sở hữu: quy định quyền các thành viên một nhóm có thể thực thi trên file.
  • Quyền khác: quy định quyền hạn cho các người dùng khác.

Các quyền truy cập file trên Linux

Lệnh ls -l list ra file với đầy đủ thông tin về quyền truy cập

1
2
3
4
5
6
$ls -l /home/tyson
drwxrwxr-x   7 tyson tyson   4096 Jun  8 13:38 .vagrant.d/
drwxrwxr-x   6 tyson tyson   4096 May 13  2013 venv/
drwxr-xr-x   6 tyson tyson   4096 Jul  4 22:34 Videos/
drwxr-xr-x  11 tyson tyson   4096 Jun 25 11:22 .vim/
-rw-rw-r--   1 tyson tyson   2140 Oct 27  2013 .vimrc
  • Dấu d và - như bài về quản lý file mình đã giải thích, đây là kiểu file: d là directory (thư mục), - là file thông thường, l là link …
  • 9 ký hiệu tiếp theo ở cột đầu: có dạng rwxrwxrwx hoặc rwxr-xr-x là lặp lại 3 lần của rwx (read-write-execute) = quyền đọc, ghi, thực thi đối với file.
  • Chúng ta có 3 đối tượng sở hữu là chủ sở hữu (owner), nhóm sở hữu (group owner) và other nên quyền này sẽ được thể hiện nối tiếp thành chuỗi 3x3 là 9 ký tự: rwx rwx wx.

Ví dụ file .vimrc thì:

  • Quyền cho chủ (tyson) là rw- (đọc, ghi), quyền chạy (thực thi) không có nên hiện '-'.
  • Quyền với nhóm tyson cũng là rw- (đọc, ghi).
  • Các user khác chỉ có quyền đọc : r--; (quyền ghi write-w và chạy x-execute không có).

Đoạn sau mình sẽ giải thích rõ hơn về 3 quyền với file:

  • Read: Quyền đọc file, ví dụ như được xem nội dung của file.
  • Write: Quyền sửa đổi file hay xóa nội dung của file.
  • Execute: Có thể chạy file như là một program. Program là một chương trình mà bạn có thể chạy ví dụ trên Windows là file .exe, .bat ...

Các quyền truy cập thư mục trên Linux

Quyền truy cập đối với thư mục cũng tương tự như với file. Chỉ có một số khác biệt nhỏ cần lưu ý như sau:

  • Read: Quyền đọc thư mục cho phép người dùng có thể xem các nội dung trong mục đó. Người dùng được xem tên các file trong thư mục.
  • Write: Được phép thêm hoặc xóa file trong thư mục.
  • Execute: thực thi lệnh, chương trình

Quyền chạy thư mục không mang nhiều ý nghĩa như với file. Người dùng phải có quyền thực thi đối với thư mục bin trong hệ thống thì mới có thể chạy các lệnh cdls ... (các lệnh này đặt trong mục bin).

Với thư mục cũng vậy, nhưng khác một chút vì nó còn chứa các mục con trong nó.

2. Thay đổi quyền truy cập trên Linux bằng lênh Chmod

Chúng ta chỉ cần vài lệnh đơn giản để quản lý quyền truy cập.

Khi làm việc thực tế vấn đề thường gặp phải là tìm cách gán quyền hạn thế nào và cho ai chứ ít khi là vấn đề về câu lệnh phức tạp. Trên linux có rất nhiều user vì nó coi một chương trình (phần mềm hay program) cũng là một user riêng.

Bây giờ chúng ta xem cách dùng các lệnh để thay đổi quyền truy cập.

Lệnh Chmod

Dùng chmod với quyền biểu diễn dạng ký tự

Lệnh chmod là để đổi quyền truy cập trên file, lệnh sau - chown cho phép đổi luôn chủ sở hữu của file hay nhóm nào được sở hữu file.

Phép toán phân quyềnMô tả
+Thêm quyền cho file/thư mục
-Bớt quyền với file/thư mục
=Gán quyền cho file/thư mục

Ví dụ ở đây mình hiển thị quyền truy cập cho mục Desktop:

quyen truy cap file linux 1 png

Quyền của file Kawasaki25047.jpg là rw-r----- nghĩa là chủ (user owner) có quyền đọc+ghi, nhóm (group owner) chỉ có quyền đọc còn người khác (other) không có quyền gì.

Xét hình ảnh sau:

quyen truy cap file linux 2 png

3 lệnh trong hình lần lượt như sau:

Thêm quyền x (chạy) cho owner:

1
chmod u+x Kawasaki25047.jpg  (hoặc chmod u=rwx Kawasaki25047.jpg vì owner hiện đã có quyền rw )

Thêm quyền rx (đọc + chạy) cho other:

1
chmod o+rx Kawasaki25047.jpg ( hoặc chmod o=rx Kawasaki25047.jpg )

Thêm quyền x (chạy) cho group:

1
chmod g+x Kawasaki25047.jpg ( hoặc chmod g=rx Kawasaki25047.jpg vì group owner đã có quyền r )

Các bạn có thể gộp 3 lệnh trên làm một như sau:

1
chmod u+x,o+rx,g+x Kawasaki25047.jpg

Còn đây là bớt quyền đi khi dùng dấu -:

quyen truy cap file linux 3 png

Lệnh chmod với biểu diễn quyền dạng số

Bảng sau mô tả quyền truy cập theo dạng tuyệt đối (số):

SốMô tả quyềnTham chiếu
0Không có quyền nào---
1Quyền chạy--x
2Quyền ghi-w-
3Quyền chạy và ghi 2 (ghi) + 1(chạy) = 3-wx
4Quyền đọcr--
5Quyền đọc và chạy 4(đọc) + 1(chạy) = 5r-x
6Quyền đọc và ghirw-
7Tất cả các quyền đọc-ghi-chạy 4(đọc) + 2(ghi) + 1(chạy) = 7rwx

Dùng cách này nhanh và thường dùng hơn cách biểu diễn quyền theo ký tự ở trên.

Người thiết kế hệ thống đã khéo léo biểu diễn quyền theo nhị phân dùng 3 bít thông tin : 7 = 2^2 + 2^1 + 2^0 vừa đủ cho 7 khả năng của quyền truy cập + 1 (trường hợp không có quyền gì) = 2^3 = 8.

Ví dụ hiện tại quyền của file Kawasaki25047.jpg là rw-r-xr-x, nó có thể biểu diễn theo số

  • rw- = 4+2 = 6
  • r-x = 4+1 = 5
  • r-x = 4+1 = 5

Bạn muốn thêm quyền chạy cho owner và quyền ghi cho group owner thì như sau:

1
chmod 775 ten_file

Lý do: owner: rw = 6 thêm x = rwx ~ 7, group owner: r-x thêm w = rwx ~ 7, other r-x giữ nguyên = 5

quyen truy cap file linux 7 png

Các bạn lưu ý là do owner hiện tại của file Kawa là evanclark nên khi mình là nickfarrow đổi quyền thì cần chạy dưới quyền sudo

Thay đổi chủ sở hữu file và thư mục

Chúng ta dùng lệnh chown (change owner)

quyen truy cap file linux 4 png

Như các bạn thấy trong hình, việc đổi chủ sở hữu cần quyền root mới được phép. User nickfarrow không phải là root nhưng nó có thể chạy lệnh chown dưới quyền root bằng lệnh sudo. Chi tiết về lệnh sudo hay chạy lệnh dưới quyền của user/group khác nhau mình sẽ trình bày trong một bài khác.

Thay đổi nhóm sở hữu file và thư mục

Dùng lệnh chgrp (change group):

Tương tự thao tác đổi chủ sở hữu, đổi nhóm sở hữu cũng cần quyền root:

quyen truy cap file linux 5 png

Qua bài này các bạn đã nắm được các khái niệm về quyền truy cập như chủ sở hữu, nhóm sở hữu, quyền đọc ghi thi hành trên Linux.

Các lệnh sửa đổi quyền truy cập cũng dễ nắm bắt. Một ứng dụng web thực tế hay gặp vấn đề về quyền gây ra exception. Một số trường hợp khá tinh tế nguyên nhân do không xác định được ai đã thay đổi quyền cho một mục trên web.

User liên quan tới ứng dụng web thường là apache nhưng nhiều khi là cả cronjob chạy dưới quyền root mà ta không để ý. Khái niệm apache và cron mình sẽ trình bày trong một bài khác. Bài sau chúng ta sẽ tìm hiểu về biến môi trường trên linux.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master