Hướng dẫn dùng command chmod trong PHP

  • Định Nghĩa.
  • Cú pháp.
    • Cú pháp:
    • Trong đó.
    • Giá trị trả về.
  • Chú ý.
  • Hàm liên quan
  • Thông tin thêm.

Định Nghĩa.

Hàm chmod() sẽ thay đổi quyền đối với các đối tượng người dùng của file được truyền vào.
Hàm tương thích trên PHP4, PHP5, PHP7.

Cú pháp.

Cú pháp:

chmod ( string $filename , int $mode ) : bool

Trong đó.

  • $filename là đường dẫn đến file.
  • $mode là quyền mới đối với các đối tượng người dùng.
    – Lưu ý rằng mode không tự động được coi là một octal value, vì vậy để đảm bảo hoạt động dự kiến, bạn cần phải có chế độ tiền tố với số không (0). Các chuỗi như “g + w” sẽ không hoạt động đúng.

    – Tham số chế độ bao gồm ba thành phần số octal chỉ định các hạn chế truy cập cho chủ sở hữu, nhóm người dùng mà chủ sở hữu đang ở và cho mọi người khác theo thứ tự này. Một thành phần có thể được tính bằng cách thêm các quyền cần thiết cho cơ sở người dùng file đó. Số 1 có nghĩa là bạn cấp quyền thực thi, số 2 có nghĩa là bạn tạo tệp có thể ghi, số 4 có nghĩa là bạn làm cho tệp có thể đọc được. Thêm các số này để xác định các quyền cần thiết. Bạn cũng có thể đọc thêm về các chế độ trên các hệ thống Unix với ‘man 1 chmod’ và ‘man 2 chmod’.

Giá trị trả về.

  • Trả về TRUE khi thành công hoặc FALSE khi thất bại.

Chú ý.

  • Người dùng hiện tại là người dùng mà PHP chạy. Nó có thể không giống với người dùng bạn sử dụng để truy cập shell hoặc FTP thông thường. Chế độ chỉ có thể được thay đổi bởi người dùng sở hữu tệp trên hầu hết các hệ thống.
  • Chức năng này sẽ không hoạt động trên các tệp từ xa vì tệp cần kiểm tra phải được truy cập thông qua hệ thống tệp của máy chủ.
  • Khi chế độ an toàn được bật, PHP sẽ kiểm tra xem các tệp hoặc thư mục bạn sắp vận hành có cùng UID (chủ sở hữu) như tập lệnh đang được thực thi hay không. Ngoài ra, bạn không thể đặt SUID, SGID và bit dính.

Hàm liên quan

  • chown() – Thay đổi chủ sở hữu tập tin
  • chgrp() – Thay đổi nhóm người dùng với tập tin
  • fileperms() – Nhận quyền truy cập của tệp.
  • stat() – Cung cấp thông tin về một tập tin

Thông tin thêm.

  • Khi sử dụng dấu ngoặc kép xung quanh tham số thứ hai vd chmod (tập tin, “0644”);
    PHP sẽ không quan tâm tới điều đó nhưng sẽ thực hiện chuyển đổi ngầm thành int trước khi chạy chmod. Thật không may, chuyển đổi ngầm định không tính đến chuỗi bát phân để bạn kết thúc với phiên bản số nguyên 644, là 1204 octal.
  • Một cách để thay đổi mode recursive  trong $ pathname thành $ filemode.

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm chmod() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé.
Cảm ơn các bạn đã ghé thăm codetutam.com

Hàm chmod() sẽ thay đổi quyền đối với các đối tượng người dùng của file được truyền vào.

Nội dung chính

  • Kết quả trả về
  • 1. Các quyền của file trong Linux
  • Các đối tượng truy cập file
  • Các loại quyền trên file
  • 2. Cú pháp lệnh chmod trong Linux
  • 3. Phân quyền bằng symbolic trong Linux
  • 4. Phân quyền bằng Numeric Method trong Linux
  • 5. Phân quyền bằng Reference File trong Linux
  • 6. Lệnh chmod gán quyền đệ quy cho các file bên trong
  • 7. Lệnh chmod trên Symbolic Links
  • 8. Thay đổi quyền hàng loạt các file

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú phápchmod( $filename, $mode);

Trong đó:

  • $filename là đường dẫn đến file.
  • $mode là quyền mới đối với các đối tượng người dùng.

Kết quả trả về

Hàm sẽ trả về True nếu thành công và trả về False nếu thất bại.

Bài viết này được đăng tại [free tuts .net]

Ví dụ

Một số ví dụ về hàm chmod():

Code

// chủ file được quyền đọc và viết, mọi người khác không có quyền.
chmod("/somedir/somefile", 0600);

// chủ file được quyền đọc và viết, mọi người khác có quyền đọc.
chmod("/somedir/somefile", 0644);

// chủ file có mọi quyền, mọi người có quyền đọc và thực thi.
chmod("/somedir/somefile", 0755);

// chủ file có mọi quyền, mọi người cùng nhóm với chủ file có quyền đọc
và thực thi, người khác không có quyền
chmod("/somedir/somefile", 0750);

Tham khảo: php.net

Trong bài này chúng ta sẽ tìm hiểu lệnh chmod trong Linux, đây là lệnh dùng để phân quyền vào các file và thư mục trên Linux.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong Linux, để truy cập được vào file thì bạn phải được thiết lập quyền trên file đó, thông qua các thuộc tính và quyền sở hữu file. Điều này đảm bảo rằng chỉ những người dùng và quy trình được ủy quyền mới có thể truy cập vào file và thư mục.

1. Các quyền của file trong Linux

Trước khi học cách sử dụng lệnh chmod để phân quyền thì chúng ta hãy xem danh sách các quyền có trên file đã nhé.

Các đối tượng truy cập file

Trong Linux, mỗi file sẽ được liên kết với một chủ sở hữu và nhóm sở hữu, và được gán quyền thông qua ba cấp độ người dùng khác nhau như sau:

Bài viết này được đăng tại [free tuts .net]

  • Chủ sở hữu file (owner).
  • Các thành viên trong nhóm (group).
  • Những người khác (other user)

Quyền sở hữu file có thể được thay đổi bằng lệnh chownchgrp.

Các loại quyền trên file

Có ba loại quyền trên một file gồm:

  • Quyền đọc - read (r)
  • Quyền viết / sửa - write (w)
  • Quyền thực thi - execute (x)

Dựa vào hai khái niệm này bạn có thể thiết lập các quyền cho các đối tượng.

Để xem thông tin chi tiết phân quyền của một file thì bạn sử dụng lệnh ls như sau:

Kết quả sẽ trả về một chuỗi gồm các thông tin về phân quyền, tên file, và các thông tin hữu ích khác như sau:

-rw-r--r-- 12 freetuts users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group - nhóm sở hữu
| |  |  | |      +-------------------> 6. Owner - chủ sở hữu
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Other users Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Giải thích cụ thể như sau:

Ký tự đầu tiên hiển thị loại file (File Type). Nó có thể là một file thông thường (-), thư mục (d), một symbolic link (l) hoặc bất kỳ loại file đặc biệt nào khác.

Chín ký tự tiếp theo đại diện cho việc phân quyền đối truy cập file đối với ba nhóm Owner (chủ sở hữu), Group (nhóm sở hữu), Other Users (người dùng khác). Chúng ta có ba loại quyền là r - w - x nên mỗi đối tượng sẽ có 3 ký tự, 3 nhóm là 9 ký tự.

Nếu quyền nào không có thì sẽ sử dụng dấu - để thay thế. Như trong ví dụ trên thì (rw-r--r--) có nghĩa là chủ sở hữu có quyền đọc và ghi (rw-), group và những người dùng khác chỉ có quyền đọc (r--).

Tham khảo bảng quyền trên file và thư mục dưới đây nhé.

Bảng quyền trên file Linux:

PermissionCharacterMeaning on File
Read - Không có quyền đọc
r Có thể được đọc.
Write - Không được chỉnh sửa
w Có thể chỉnh sửa
Execute - Không thể thực thi.
x Có thể thực thi

Bảng quyền trên thư mục Linux:

Read - Không thể hiển thị nội dung của thư mục.
r Có thể hiện thị nội dung của thư mục
Write - Không thể thay đổi nội dung của thư mục.
w Có thể thay đổi nội dung của thư mục
Execute - Không thể thay đổi thư mục hiện tại bằng lệnh cd
x Có thể thay đổi thư mục bằng cd

2. Cú pháp lệnh chmod trong Linux

Cú pháp lệnh chmod trong Linux như sau:

chmod [OPTIONS] MODE FILE...

Lệnh chmod cho phép bạn thay đổi quyền bằng cách sử dụng chế độ symbolic, numeric hoặc reference file. Chúng ta sẽ lần lượt tìm hiểu ba loại này ở phần tiếp theo nhé.

Chỉ có tài khoản root, chủ sở hữu file (owner) hoặc người dùng có đặc quyền sudo mới có thể thay đổi quyền của file. Hãy hết sức cẩn thận khi sử dụng chmod, đặc biệt là khi gán quyền cho các file trong thư mục nhiều cấp sử dụng đệ quy -R..

3. Phân quyền bằng symbolic trong Linux

Cú pháp của lệnh chmod khi sử dụng chế độ symbolic như sau:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

Tham số ugoa là nhóm đối tượng nào sẽ được xử lý quyền:

  • u = Chủ sở hữu (owner)
  • g = Nhóm người dùng (group)
  • o = Người dùng khác (other)
  • a = Tất cả user (all)

Nếu bạn không truyền tham số này vào lệnh thì nó sẽ lấy giá trị mặc định là a.

Tham số thứ hai là [-+=], dùng để xác định quyền sẽ được xóa, thêm hoặc thiết lập mới.

  • Dấu - là xóa bớt quyền
  • Dấu + là thêm quyền
  • Dấu = là gán lại quyền

Ví dụ 1: Cấp cho các thành viên nhóm sở hữu có quyền đọc file nhưng không được ghi và thực thi.

Ví dụ 2: Cấp quyền thực thi cho tất cả users

Ví dụ 3: Loại bỏ quyền ghi vào nhóm người dùng khác.

Ví dụ 4: Loại bỏ tất cả quyền đọc / ghi / thực thi cho tất cả người dùng.

Hoặc

Ví dụ 5: Cấp quyền đọc, ghi và thực thi cho chủ sở hữu (owner), cấp quyền đọc cho nhóm sở hữu (group), và các đối tượng user khác không có quyền gì cả.

chmod u=rwx,g=r,o= filename

Ví dụ 6: Thêm các quyền của chủ sở hữu vào danh sách quyền của các thành viên trong nhóm sở hữu.

4. Phân quyền bằng Numeric Method trong Linux

Cú pháp của lệnh chmod trong Linux khi sử dụng phương thức Numeric có định dạng sau:

chmod [OPTIONS] NUMBER FILE...

Khi sử dụng Numeric bạn có thể đặt quyền cho cả ba lớp người dùng (chủ sở hữu, nhóm và tất cả những người khác) cùng một lúc. Các con số có thể là 3 hoặc 4 chữ số cùng.

Khi sử dụng số có 3 chữ số thì chữ số đầu tiên thể hiện quyền của chủ sở hữu file, chữ số thứ hai là nhóm của file và chữ số cuối cùng cho tất cả những người dùng khác.

Mỗi quyền ghi, đọc và thực thi có giá trị số sau:

  • r (read) = 4
  • w (write) = 2
  • x (execute) = 1
  • no permissions = 0

Số quyền của một lớp người dùng được thể hiện bằng tổng giá trị của các quyền cho nhóm đó. Vậy để tìm hiểu các quyền của file ở chế độ Numeric ta chỉ cần tính tổng số cho tất cả các lớp người dùng.

Ví dụ 1: Để cấp quyền đọc, ghi và thực thi cho chủ sở hữu file, đọc và thực thi đối với nhóm của file và chỉ quyền đọc cho tất cả người dùng khác, bạn sẽ làm như sau:

  • Owner: rwx=4+2+1=7
  • Group: r-x=4+0+1=5
  • Others: r-x=4+0+0=4

Sử dụng phương pháp cộng chuỗi như trên chúng ta tính được quyền của file đó là 754.

Ví dụ 2: Cấp quyền cho owner là đọc và viết (4 + 2), quyền của group là chỉ đọc (4), các user còn lại cũng có quyền đọc (4).

Vậy tổng quyền của file này là 644.

5. Phân quyền bằng Reference File trong Linux

Lệnh chmod trong Linux có một tùy chọn tên là --reference, công dụng của nó là cấp quyền cho file y chang như file được chỉ định. Cú pháp như sau:

chmod --reference=REF_FILE FILE

Ví dụ: lệnh sau sẽ gán quyền của file1 cho file2.

chmod --reference=file1 file2

6. Lệnh chmod gán quyền đệ quy cho các file bên trong

Bạn muốn lệnh gán quyền áp dụng cho tất cả các file nằm bên trong thư mục đang gán quyền thì hãy sử dụng thêm tham số -R (--recursive).

Ví dụ: Để thay đổi quyền của tất cả các file và thư mục con trong thư mục /var/www thành 755 thì ta chạy lệnh sau:

Trên Symbolic Links thì các quyền luôn là 777.

Theo mặc định, khi thay đổi quyền cho Symbolic Links thì file mà Symbolic Links liên kết tới cũng thay đổi theo.

Cách sử dụng lệnh chmod trên Symbolic Links cũng tương tự như trên file.

8. Thay đổi quyền hàng loạt các file

Đôi khi bạn cũng muốn thay đổi quyền cho hàng loạt các file và thư mục.

Tình huống phổ biến nhất là thay đổi đệ quy quyền của các file file trong trang web thành 644 và quyền của thư mục thành 755.

Chúng ta sử dụng numeric:

find /var/www/my_website -type d -exec chmod 755 {} \;
find /var/www/my_website -type f -exec chmod 644 {} \;

Sử dụng symbolic:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

Như vậy là chúng ta đã tìm hiểu xong cách sử dụng lệnh chmod trong Linux, đây là lệnh dùng để phân quyền rất phổ biến và được sử dụng rất nhiều khi quản trị Linux server.