Hướng dẫn php chmod 777 - php chmod 777

Nếu bạn là một người dùng Linux hoặc là một quản trị trang web (có thể host được đặt trên server Linux), chắc hẳn bạn đã gặp phải những tình huống khi xóa hay chỉnh sửa một file nào đó và gặp phải lỗi "You do not have the permissions to modify this file". Và sau một vài tìm kiếm trên Google, bạn nhận được một số đề xuất giải pháp đơn giản như setting file permission thành

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
2 hoặc
-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
3. Vậy chính xác thì
-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
3 thực chất có nghĩa là gì? Tại sao lại là
-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
5 mà không phải là
-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
6 hoặc
-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
7?

Nội dung chính

  • Quyền truy cập file trong Linux
  • Tìm lời giải mã về con số "777"
  • Thiết lập quyền truy cập file
  • Thay đổi quyền sở hữu file
  • Kết luận
  • Tài liệu tham khảo

Để hiểu được ý nghĩa của nó, trước tiên chúng ta hãy đi tìm hiểu về

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
8

Hướng dẫn php chmod 777 - php chmod 777

Quyền truy cập file trong Linux

Tìm lời giải mã về con số "777"

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
9
chmod {number} filename
0
. Trong đó Classes xác định xem ai có thể truy cập vào file còn Permission xác định loại hành động mà người dùng có thể làm với file đó.

Thiết lập quyền truy cập fileClasses - Owner, Group và Others:

  • Thay đổi quyền sở hữu file
  • Kết luận
  • Tài liệu tham khảo

Để hiểu được ý nghĩa của nó, trước tiên chúng ta hãy đi tìm hiểu về

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
8Permission, có 3 loại hành động bạn có thể thực hiện đối với một file/folder. Bạn có thể
chmod {number} filename
4,
chmod {number} filename
5 hoặc
chmod {number} filename
6:

  • Hệ thống Linux đi kèm với một cơ chế kiểm soát file để xác định xem ai có thể truy cập vào một file hoặc folder cụ thể và những hành động họ có thể làm với nó. Có 2 phần trong cơ chế kiểm soát file này, đó là
    -rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
    
    9 và
    chmod {number} filename
    
    0. Trong đó Classes xác định xem ai có thể truy cập vào file còn Permission xác định loại hành động mà người dùng có thể làm với file đó.
  • Có 3 loại Classes - Owner, Group và Others:
  • chmod {number} filename
    
    1: thường là người tạo ra các files/folders. Trong Linux, những files/folders mà bạn tạo trong thư mục Home của mình sẽ thường thuộc về quyền sở hữu của mình, trừ khi bạn chuyển quyền sở hữu đó sang cho một user khác.

chmod {number} filename
2: chứa một nhóm người dùng có cùng chung permission

chmod {number} filename
3: Những người dùng khác trong hệ thống

Tìm lời giải mã về con số "777"

Thiết lập quyền truy cập file

  • Thay đổi quyền sở hữu file
  • Kết luận
  • Tài liệu tham khảo

Để hiểu được ý nghĩa của nó, trước tiên chúng ta hãy đi tìm hiểu về

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
8

  • Hệ thống Linux đi kèm với một cơ chế kiểm soát file để xác định xem ai có thể truy cập vào một file hoặc folder cụ thể và những hành động họ có thể làm với nó. Có 2 phần trong cơ chế kiểm soát file này, đó là
    -rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
    
    9 và
    chmod {number} filename
    
    0. Trong đó Classes xác định xem ai có thể truy cập vào file còn Permission xác định loại hành động mà người dùng có thể làm với file đó.
  • Có 3 loại Classes - Owner, Group và Others:
  • chmod {number} filename
    
    1: thường là người tạo ra các files/folders. Trong Linux, những files/folders mà bạn tạo trong thư mục Home của mình sẽ thường thuộc về quyền sở hữu của mình, trừ khi bạn chuyển quyền sở hữu đó sang cho một user khác.

chmod {number} filename
2: chứa một nhóm người dùng có cùng chung permission

chmod {number} filename
3: Những người dùng khác trong hệ thống

  • Còn đối với Permission, có 3 loại hành động bạn có thể thực hiện đối với một file/folder. Bạn có thể
    chmod {number} filename
    
    4,
    chmod {number} filename
    
    5 hoặc
    chmod {number} filename
    
    6:
  • chmod {number} filename
    
    7: Bạn chỉ có thể xem được file, không thể sửa đổi nội dung của file được. Khi áp dụng với Folder, bạn chỉ có thể xem được các files trong folder đó, không thể xóa hay thêm các file vào folder đó.
  • chmod {number} filename
    
    8: Bạn có thể sửa đổi nội dung của một file. Đối với folder, bạn có thể xóa hoặc thêm các files vào folder đó. (Lưu ý rằng: quyền
    chmod {number} filename
    
    8 đối với một folder sẽ cho phép xóa các files trong folder đó ngay cả khi user không có quyền write đối với file đó).
  • chmod 644 samplefile
    
    0: Được sử dụng chủ yếu khi bạn muốn run một file (thường là một script). Đối với folder, ta có thể sử dụng nó để hạn chế/cho phép thay đổi thư mục hiện tại. Ví dụ như lệnh
    chmod 644 samplefile
    
    1.
  • Khi kết hợp
    -rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
    
    9 với
    chmod 644 samplefile
    
    3, chúng ta có thể kiểm soát việc những ai có thể truy cập vào file và những hành động họ có thể làm đối với chúng.
  • Ví dụ, một
    chmod {number} filename
    
    1 thường sẽ có tất cả permissions (read, write và execute) để truy cập tới một file. Nếu bạn không phải là owner của file/folder, bạn phải thay đổi
    chmod 644 samplefile
    
    5 của file/folder đó thành tên của bạn, hoặc thay đổi permission của Group của bạn hoặc Others thành những permission phù hợp.
  • Mọi file, folder trong Linux đều chứa 8 bits dữ liệu lưu quyền truy cập. Ở dạng nhị phân cơ bản của nó, nó sẽ là "000", tương đương với việc không có bất cứ quyền truy cập nào.
  • Khi bạn muốn thiết lập quyền
    chmod {number} filename
    
    7: nó sẽ thêm 4-bit vào dữ liệu, tạo thành "100" (dạng nhị phân) hoặc "4" dạng thập phân.

Thiết lập quyền

chmod {number} filename
8 sẽ tương đương với việc thêm 2-bit vào dữ liệu, tạo thành "010" (nhị phân) hoặc "2" dạng thập phân.

  • Cuối cùng, thiết lập quyền
    chmod 644 samplefile
    
    0 sẽ thêm 1-bit vào dữ liệu, tạo thành "001" hoặc "1" dạng thập phân.
  • Như vậy, nói ngắn gọn lại thì:
  • Read (
    chmod 644 samplefile
    
    9) tương đương với
    chmod {options} filename
    
    0

Write (

chmod {options} filename
1) tương đương với
chmod {options} filename
2 - w

Execute (

chmod {options} filename
3) tương đương với
chmod {options} filename
4 - x

ls -l /etc/hosts

Khi bạn muốn thiếp lập một permissions đối với file/folder nào đó, bạn chỉ cần cộng thêm số thập phân tương ứng với permission đó là được. Ví dụ, khi bạn muốn thiết lập permission là read và execute, số tương ứng sẽ là 4(r) + 1(x) =

chmod {options} filename
5. Đối với read, write và execute sẽ là 4(r) + 2(w) + 1(x) =
chmod {options} filename
6.

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts

Ta có:

  • owner = Read và Write (rw-)
  • group = Read (r--)
  • others = Read (r--)

Thiết lập quyền truy cập file

Trong Linux, bạn có thể dễ dàng thay đổi quyền truy cập file/folder bằng câu lệnh Terminal đơn giản:

    chmod u+x file1
3. Có 2 cách để thay đổi quyền truy cập với
    chmod u+x file1
3, đó là sử dụng
    chmod u+x file1
5 và
    chmod u+x file1
6.
    chmod u+x file1
3
. Có 2 cách để thay đổi quyền truy cập với
    chmod u+x file1
3, đó là sử dụng
    chmod u+x file1
5 và
    chmod u+x file1
6.

Octal mode

Sử dụng những numbers như đã phân tích ở phía trên (ví dụ

chmod {options} filename
7), ta có được cách thay đổi như sau:

chmod {number} filename

Ví dụ:

chmod 644 samplefile

có nghĩa là chúng ta mới thiết lập quyền Read và Write cho Owner, quyền Read cho Group và Others đối với file có tên

    chmod u+x file1
8

Symbolic mode

Cú pháp của cách này như sau:

chmod {options} filename

với options được định nghĩa như sau:

OptionsĐịnh nghĩa
u Owner
g Group
o Other
a Tất cả (Owner, group và other), tương đương ugo
r read
w write
x execute
+ Thêm permission
- Loại bỏ permission
= Gán permission bằng như vậy

Với cách này, chúng ta có thể thêm (+), bớt (-), gán (=) các quyền (r w x) cho từng nhóm (u g o) hoặc cả 3 nhóm (a hoặc ugo). Ưu điểm của cách này là ta có thể kế thừa lại quyền truy cập trước đó.

Để hiểu hơn về cách này, chúng ta cùng đến với một số ví dụ sau đây:

  • Thêm quyền execute cho Owner:

        chmod u+x file1
    
  • Thêm quyền write and execute cho Group:

        chmod g+wx file2
    
  • Xóa quyền execute cho Other:

        chmod o-x file3
    
  • Thêm tất cả quyền cho mọi users:

        chmod a+rwx file4
    

Thay đổi quyền sở hữu file

Như đã nói ở phần trên, chúng ta có thể thay đổi quyền sở hữu một file từ người này sang người khác, sử dụng câu lệnh

    chmod u+x file1
9.
    chmod u+x file1
9
.

Ví dụ, bạn muốn chuyển

chmod {number} filename
1 của file
    chmod g+wx file2
1 sang user
    chmod g+wx file2
2, cú pháp sẽ như sau:

sudo chown vuonghung LinuxPermission

Để chuyển

chmod {number} filename
2 của file
    chmod g+wx file2
1 sang group
    chmod g+wx file2
5, cú pháp sẽ như sau:

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
0

Để vừa chuyển

chmod {number} filename
1 của file
    chmod g+wx file2
1 sang
    chmod g+wx file2
2, vừa chuyển group sang
    chmod g+wx file2
5, cú pháp sẽ như sau:

-rw-r--r-- 1 root root 251 Thg 1 11 14:25 /etc/hosts
1

Kết luận

Sau bài viết này, hi vọng bạn đọc sẽ cảm thấy tự tin mỗi khi gặp phải những lỗi về permission trong Linux.

Tài liệu tham khảo

  1. https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/
  2. https://help.ubuntu.com/community/FilePermissions
  3. https://blogchiasekienthuc.wordpress.com/2015/10/30/phan-quyen-trong-linux-bai-1-quan-ly-user-group-va-phan-quyen-tren-linux/