Hướng dẫn dùng chown usage trong PHP

Lệnh chmod (change mode) và chown (change owner) được sử dụng để kiểm soát truy cập vào các tệp trong Linux.

chmod cho phép thay đổi quyền (read, write, execute) của các tệp và thư mục. chown cho phép thay đổi chủ sở hữu (user, group) của một tệp hoặc thư mục nhất định.

chmod

Lệnh chmod có một vài cách sử dụng khác nhau với các quyền được đặt theo số hoặc bằng chữ cái.

Có thể bạn đã từng gặp cú pháp dạng như thế này:


chmod("/somedir/somefile.txt", 764);
chmod("/somedir/somefile2.txt", "u+rwx,go+rx");
?>

Đây là đoạn mã phân quyền sử dụng php, hãy để ý các ký tự 764u+rwx,go+rx, chúng ta sẽ tìm hiểu ý nghĩa của chúng.

Sử dụng số

Khi sử dụng số ví dụ 764 thì vị trí đầu tiên (số 7) là quyền của người dùng, vị trí thứ 2 (số 6) là quyền của nhóm, vị trí thứ 3 (số 4) là quyền của người dùng khác.

Quyền được tạo ra sẽ được tính bằng tổng của các con số được quy ước như sau:

NumberPermission4Read2Write1Execute

Như vậy với 764 ta có:

  • Người dùng: 7 = 4 + 2 + 1 = read + write + execute
  • Nhóm: 6 = 4 + 2 = read + write
  • Người dùng khác: 4 = read

Cú pháp:

chmod 764 /somedir/somefile.txt

Sử dụng chữ cái

Sử dụng lệnh chmod với các quyền được đặt bằng chữ cái có vẻ tường minh dễ nhớ hơn =)).

Quy ước:

  • u = người dùng
  • g = nhóm
  • o = người khác
  • a = tất cả
  • Và các quyền cơ bản được cung cấp bao gồm read (r), write (w) và execute (x).

Cú pháp:

Thay vì sử dụng 764, ta có thể sử dụng

chmod 764 /somedir/somefile.txt
2 cũng đều có ý nghĩa giống nhau.

chmod u+rwx,g+rw,o+r /somedir/somefile.txt

Nếu muốn tất cả người dùng đều có thể read + write + execute. Ta có thể thực hiện như sau:

chmod a+rwx /somedir/somefile.txt

Hoặc:

chmod +rwx /somedir/somefile.txt

Nếu muốn phân quyền bao gồm luôn cho các thư mục con, ta bổ sung option

chmod 764 /somedir/somefile.txt
3 (recursive)

chmod -R u+rwx,g+rw,o+r /somedir

chown

Cú pháp của lệnh chown rất đơn giản. VD:

chown -R chungtran:admin /somedir

Lệnh này có ý nghĩa như sau:

Hey babe, cho người dùng chungtran từ nhóm admin làm chủ sở hữu của thư mục /somedir và các thư mục con của nó giúp tôi nha.

Trong hệ điều hành Linux, mỗi file được đặt trong một nhóm sở hữu – group ownership và đặt bởi một chủ sở hữu. Chown là chữ viết tắt của “change owner” – đổi chủ sở hữu. Như tên gọi, chown command được dùng để thay đổi chủ sở hữu và nhóm chủ sở hữu của file, thư mục, links nếu bạn đang có quyền superuser của hệ thống Unix. Bài viết này sẽ hướng dẫn bạn cách sử dụng chúng.

Nếu một người dùng bình thường muốn chỉnh sửa file, superuser có thể dùng lệnh chown command này để thay đổi ownership và cho phép họ chỉnh sửa

 

Xem thông tin sở hữu

Nếu vừa mới thuê VPS lần đầu, bạn cần thiết lập tự động đăng nhập VPS bằng SSH. Nếu bạn chưa biết cách dùng, hãy xem qua bài hướng dẫn này, nó có tất cả thông tin cần thiết.

Trước khi sử dụng lệnh chown, bạn cần biết thông tin tin sử hữu nhóm và user sở hữu trước đã. Để lấy các thông tin này, bạn có thể dùng lệnh cd rồi chuyển tới thư mục cần biết.

Ví dụ, nếu đường dẫn của file là /tmp/TestUnix, bạn có thể chuyển tới thư mục này bằng lệnh:

cd /tmp/TestUnix

Tại đây liệt kê danh sách file trong thư mục bằng lệnh sau:

ls -l

Trong bài hướng dẫn này, ví dụ có một file có tên chownSample.txt trong thư mục này. Output của lệnh trên sẽ có kết quả như sau:

-rw-r--r-- 1 root root 0 Feb 20 17:35 chownSample.txt

Phần đầu tiên -rw-r–r–, đại diện cho file permission (quyền sỡ hữu của file). Còn lại, thông tin đầu tiên root là user ownership, root thứ 2 là group owener. Vậy chownSample.txt sở hữu bởi user root, và user này thuộc về nhóm có tên root.

Chown cho Files – đổi quyền sở hữu của file

Để thay đổi owner của file (chủ sở hữu của file), lệnh cơ bản sẽ như sau:

chown user filename(s)

Lấy ví dụ file trên là chownSample.txt, chúng tôi thay đổi từ user sở hữu là root sang một user khác có tên là whales. Thực hiện lệnh như sa:

chown whales chownSample.txt

Để kiểm tra thay đổi có được thực thi, bạn có thể dùng lại lệnh ls -l. Output sẽ hiện lên như sau:

-rw-r--r-- 1 whales root 0 Feb 20 17:45 chownSample.txt

Lệnh trên có thể chỉnh một chút để thay đổi quyền group owner, như sau:

chown user[:group] filename(s)

Lấy ví dụ trên nếu bạn muốn đổi group owner của chownSample.txt thành group aquatic, vậy lệnh sẽ cần được thực thi như sau:

chown whales:aquatic chownSample.txt

Để kiểm tra file đã được đổi thành công chưa, bạn dùng lại lệnh ls -l. Kết quả sẽ như sau:

-rw-r--r-- 1 whales aquatic 0 Feb 20 17:50 chownSample.txt

Nếu chỉ có group cần thay đổi, mà giữ nguyên owner, thì bạn gõ lệnh sau như sau:

chown :aquatic chownSample.txt

Chown có chức năng tương tự như lệnh chgrp khi bạn không đưa ra thông tin owner.

Tóm lại, cấu trúc của lệnh chown command với các tùy chọn là:

ls -l
0

Chown cho thư mục – đổi ownership của thư mục

Chown cũng có thể áp dụng cho thư mục. Thư mục này chỉ chứa files hoặc thư mục hoặc cả hai.

Lấy ví dụ chúng tôi có thư mục TestUnix, với các quyền khi dùng lệnh ls -l liệt kê có kết quả như sau:

ls -l
1

Như bạn thấy đoạn đầu drwxr-xr-x, đại diện của việc phân quyền thư mục. Còn phần hai có 2 chữ root là đại diện cho quyền sở hữu. Root đầu tiên là thông tin user sở hữu và root thứ hai là thông tin nhóm sở hữu. TestUnix trong ví dụ này vì vậy có chủ sở hữu là root và thuộc về nhóm sở hữu là root.

Giống với files, bạn có thể thay chủ sở hữu cho thư mục này. Bạn thực hiện lệnh như sau để đổi chủ sở hữu của thư mục này thành whales:

ls -l
2

Để đổi group sở hữu, dùng lệnh:

ls -l
3

Để thay đổi cả owner và group owner, bạn dùng lệnh sau:

ls -l
4

Lệnh này cũng dùng được cho nhiều file và thư mục. Bạn thao tác như cấu trúc bên dưới:

ls -l
5

Ví dụ của lệnh trên là:

ls -l
6

Chown command có thể được dùng trên symbolic link và soft link. Symbolic link là liên kết tham chiếu tới vị trí file gốc vật lý đã tồn tại. Lệnh ln được dùng để tạo soft links. Ví dụ như file chownSample.txt, chúng tôi tạo symbolic link bằng lệnh sau::

ls -l
7

Để xác nhậ chủ sở hữu và nhóm chủ sở hữu, chúng tôi lại dùng lệnh ls -l. Lệnh này sẽ xuất kết quả như bên dưới:

ls -l
8

Có 2 kết quả. Một là file vật lý và 2 là file symbolic link. Để ví dụ, chúng tôi sẽ muốn đổi ownership của file symlink này, lệnh sẽ như sau:

ls -l
9

Lệnh ở trên thay đổi ownership của file chownSample.txt. Khi thực hiện lệnh ls -l ta sẽ thấy kết quả như sau:

-rw-r--r-- 1 root root 0 Feb 20 17:35 chownSample.txt
0

Nếu bạn muốn thực sự đổi ownership của symbolic vậy bạn cần dùng option -h. Lệnh này như sau:

-rw-r--r-- 1 root root 0 Feb 20 17:35 chownSample.txt
1

Tại đây nếu bạn sử dụng command ls -l, vậy output sẽ như sau:

-rw-r--r-- 1 root root 0 Feb 20 17:35 chownSample.txt
2

Sử dụng chown đệ quy (recursive)

Chown command áp dụng lên thư mục, tuy nhiên, nếu dùng thông thường thì không áp dụng được cho file và thư mục con bên trong thư mục áp dụng. Vậy để thay đổi ownership cho toàn bộ thư mục con và file bên trong thư mục đó, chúng ta cần thực hiện lệnh một cách đệ quy.

Rất đơn giản, chúng ta chỉ cần thêm tùy chọn -R khi chạy lệnh, kết quả sẽ như sau:

-rw-r--r-- 1 root root 0 Feb 20 17:35 chownSample.txt
3

Nếu ạn có thư mục TestUnix với nhiều thư mục con, lệnh trên sẽ thay đổi user owner của toàn bộ thư mục con đó và thư mục chính sang user whales.

-rw-r--r-- 1 root root 0 Feb 20 17:35 chownSample.txt
4

Tóm lại

Vậy thôi, giờ bạn đã biết cơ bản về chown command. Unix system có trang hướng dẫn chi tiết cho từng command. Nó có thể giúp bạn sử dụng lệnh này điêu luyện nhất và tận dụng mọi khả năng của nó. Bạn lấy tài liệu hướng dẫn này bằng lệnh man chown. Chúng tôi hy vọng bài viết này hữu ích và giúp bạn quản lý tốt file VPS hiệu quả, an toàn, và chuyên nghiệp nhất. Chúc lập trình vui vẻ!

Tác giả

Hai G.

Hải G. là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress và đã dùng nó hơn 5 năm nay. Sở thích của anh là đọc, viết blog, đi du lịch và tư vấn cho các bạn trẻ khởi nghiệp.