Muốn thay đổi quyền thâm nhập file ta dùng lệnh?

Xin chào,

Trong bài ngày hôm nay, chúng ta sẽ cùng nhau học về user account, group và phần tiếp theo của phân quyền trong hệ thống Linux. Đây đều là những kiến thức có thể được áp dụng trong quá trình pentest nên mình đi khá kỹ phần này. Mời các bạn theo dõi nhé.

1/ Tài khoản người dùng (User account)

Nhắc lại kiến thức ở bài trước: Phân quyền trong hệ thống Linux là một trong những giải pháp được sử dụng để bảo vệ hệ thống Linux. Tất cả mọi thứ trong hệ thống Linux bao gồm câu lệnh, ứng dụng, interface, IP address, ports, v.v. đều ở dạng các file dữ liệu. Việc phân quyền cho phép quy định những ai có quyền được tiếp cận và những file nào được tiếp cận giúp hạn chế rủi ro những account thường được dùng cho các tác vụ thường ngày dù có bị hack cũng không gây ra những rủi ro lớn cho toàn hệ thống.

Như vậy có thể nói cốt lõi của Linux Security nằm ở chính user account. Việc cấp quá nhiều quyền hạn cho một user account dễ dẫn đến việc account đó có thể bị lạm dụng để tấn công toàn hệ thống nếu user account đó chẳng may rơi vào tay của hacker. Vì lẽ đó, mỗi cá nhân truy cập vào hệ thống Linux, nên có một account riêng với phân quyền rõ ràng phù hợp với công việc của đối tượng được cấp quyền truy cập.

Phân quyền người dùng được theo dõi thông qua UID (User ID), UID là một chuỗi giá trị được gán cho một user account khi user accout đó được tạo ra trên hệ thống Linux. Và giá trị UID này là độc nhất cho mỗi user account, nghĩa là sẽ không có chuyện 2 user account có cùng UID trên cùng một hệ thống Linux. UID này được gán với một login name, chính là tên account mà các bạn dùng để đăng nhập hệ thống Linux, ví dụ shiba1, shiba2, shiba3 mà các bạn đã dùng để đăng nhập phòng Learn Linux. Nó gần tương tự với IPv4 và domain name trong hệ thống DNS.

1a/ File /etc/passwd

Hệ thống Linux sử dụng một file đặc biệt để gán login name và giá trị UID lại với nhau. File này có tên là passwd và có path là /etc/passwd. Các bạn có thể dùng lệnh bên dưới để xem các thông tin ở trong file.

Muốn thay đổi quyền thâm nhập file ta dùng lệnh?
H1.1

Chúng ta sẽ đi phân tích những thông tin có trong file nhé. Ví dụ:

[1]root:[2]x:[3]0:[4]0:[5]root:[6]/root:[7]/bin/bash

Mỗi dòng bên trong file sẽ là một account. Mỗi dòng chứa nhiều thông tin khác nhau và cách nhau bởi dấu “:”. Chúng ta có:

  • [1] root: Tên của account và đây là account có quyền quản trị cao nhất
  • [2] x: Password của account đã được ẩn đi
  • [3] 0: UID của account. UID của account root luôn luôn là 0.
  • [4] 0: GID (Group ID) của account
  • [5] root: Mô tả account người dùng
  • [6] /root: Path (địa chỉ/đường dẫn) của HOME directory của account
  • [7] /bin/bash: Shell mặc định của account. (Shell mặc định của account root là shell cho phép nắm toàn quyền kiểm soát hệ thống Linux, nên cốt lõi của hành động privilege escalation hay nâng cấp đặc quyền là để lấy cho được shell mặc định của root)

Các account bên dưới root ví dụ như daemon, bin, v.v được gọi là những system accounts được tạo ra tự động bởi hệ thống Linux. Những account này không được tạo ra dành cho người dùng bình thường mà được sử dụng cho các phần mềm hoặc tác vụ nền chạy ẩn trong hệ thống. Để truy cập vào tài nguyên của hệ thống, các phần mềm hoặc tác vụ sẽ sử dụng những account này để truy cập vào hệ thống.

Người dùng bình thường không thể truy cập vào system accounts. Các bạn hãy để ý các shell mặc định của các systems accounts.

/usr/sbin/nologin hoặc /sbin/nologin hoặc /bin/false

Đây là các shell được dùng bởi hệ thống Linux để chặn truy cập từ người dùng thường. Tuy nhiên, với pentesters, đây lại là những account chúng ta dùng sau khi xâm nhập hệ thống thành công để phần nào kiểm soát máy nạn nhân, phục vụ cho các hình thức tấn công tiếp theo. (Sự khác biệt giữa /sbin/nologin và /bin/false các bạn có thể tham khảo tại đây).

Các bạn có nhớ account www-data mà chúng ta đã xâm nhập trong bài 1 Linux Pentest Căn Bản không? Đó cũng là một ví dụ của system account đấy. Account www-data được sử dụng bởi web server như Apache để truy cập hệ thống. Do web server chỉ cần một số ít tài nguyên nhất định, nên đó là lí do khi bạn xâm nhập vào server Pickle Rick thông qua www-data, bạn chỉ có một số quyền hạn chế và một shell khá cùi bắp.

Ở phía gần cuối file bạn sẽ thấy các account shiba mà chúng ta đã, đang và sẽ dùng

Muốn thay đổi quyền thâm nhập file ta dùng lệnh?
H1a.1

Một số hệ thống Linux sẽ dành những UID dưới 500 dành cho system account. Một vài tác vụ còn đòi hỏi một UID nhất định. Với người dùng bình thường, UID cho account của họ thường sẽ có giá trị trên 500. Như các bạn có thể thấy ở account shiba2, shiba3 và shiba4 ở hình bên trên.

Khi dùng lệnh ls -l để kiểm tra phân quyền của file /etc/passwd

shiba3@nootnoot:~$ ls -l /etc/passwd -rw-r--r-- 1 root root 1796 Feb 22 2020 /etc/passwd

Bạn sẽ thấy chỉ có root mới có quyền sửa đổi nội dung bên trong file. Người dùng bình thường chỉ có quyền truy cập và đọc file mà thôi. (Mình sẽ giải thích kỹ thêm ở phần sau).

1b/ File /etc/shadow

File /etc/shadow chính là nơi chứa mật khẩu đã bị mã hóa của tất cả account trong hệ thống Linux.

Trước đây, các mật khẩu mã hóa này được chứa bên trong file /etc/passwd, tuy nhiên, vì file /etc/passwd cấp quyền truy cập cho gần như tất cả mọi người dùng và các tác vụ trong hệ thống, dẫn đến nguy cơ lộ mật khẩu root và những người dùng khác.

File /etc/shadow cũng chỉ có duy nhất root có quyền truy cập và thay đổi nội dung bên trong file.

Nội dung bên trong /etc/shadow sẽ có dạng như sau:

Lưu ý:

Account và password bên dưới mình lấy từ một trang web, nếu có trùng khớp với hệ thống của bạn thì đó chỉ là điều ngẫu nhiên thôi nhé.

[1]admin:[2]$6$sTgBhfj0$pkzz/JpVTl8ZAmk./d4SDarRyWsGSZHguljywUHQMP4DWo8/TgNzL5rMpejqNWuyxtFlISxdyIqPmpsIsyi.i1:[3]16088:[4]0:[5]99999:[6]7:[7]:[8]:[9]

Tương tự như trong /etc/passwd, mỗi dòng trong file /etc/shadow sẽ là một account đi kèm theo các thông tin được cách nhau bởi dấu “:”:

  • [1] admin: Tên đăng nhập, tương ứng tên trong file /etc/passwd
  • [2] $6$sTgBhfj0$ …: Mật khẩu đã được mã hóa
  • [3] 16088: Ngày cuối cùng mật khẩu được thay đổi, được tính theo ngày 1/1/1970 là ngày hệ thống Unix ra đời. *
  • [4]0: Số ngày tối thiểu phải chờ trước khi mật khẩu được thay đổi
  • [5]99999: Số ngày trước khi mật khẩu cần phải thay đổi
  • [6]7: Số ngày sau khi mật khẩu hết hạn và người dùng nhận được cảnh báo mật khẩu sắp hết hạn
  • [7]: Số ngày sau khi mật khẩu hết hạn và account bị blocked
  • [8]: Số ngày (được tính theo ngày 1/1/1970) account đã bị khóa
  • [9]: Sẽ được dùng trong tương lai

[*] Để tìm ra ngày cuối cùng mật khẩu được thay đổi là bao nhiêu, bạn làm các bước sau:

  1. Lấy số ngày trong /etc/shadow nhân với 86400 (tổng số giây trong 1 ngày). Vậy ta có 16088 x 86400 = 1 390 003 200
  2. Lấy kết quả trên copy và paste vào trang sau , ta sẽ được kết quả như hình bên dưới.

Muốn thay đổi quyền thâm nhập file ta dùng lệnh?
H1b.1

Saturday, January 18, 2014 12:00 AM chính là ngày và giờ mà mật khẩu của account linux admin được thay lần cuối cùng.

2/ Group người dùng

User account có vẻ như là một giải pháp hiệu quả để hạn chế rủi ro an ninh hệ thống từ các cá nhân, nhưng nó lại không tối ưu khi có một nhóm người dùng có cùng nhu cầu truy cập vào một dữ liệu nào đó trên hệ thống Linux. Dĩ nhiên quản trị viên hệ thống có thể phân quyền truy cập cho từng người dùng, nhưng nếu số người lên tới vài trăm hay thậm chí vài nghìn người thì đó không phải là một giải pháp tối ưu.

Để giải quyết vấn đề đó, hệ thống Linux sử dụng đến một tính năng gọi là Phân Quyền Group (Group permission). Phân Quyền Group cho phép nhiều account người dùng khác nhau có thể có cùng phân quyền vào một dữ liệu ví dụ như files, directories, v.v nào đó.

Các Linux distro khác nhau sẽ có cách quản lý group khác nhau. Một số Linux distro sẽ chỉ có một group duy nhất và tất cả người dùng đều sẽ thuộc group đó. Điều này rất nguy hiểm vì như tất cả người dùng trong group sẽ được phân quyền như nhau. Một số Linux distro khác tạo những group riêng khác nhau cho mỗi account người dùng, giúp gia tăng tính bảo mật hơn.

Mỗi group sẽ có 1 GID (Group ID) tương tự như UID. GID là một giá trị duy nhất trong toàn hệ thống. Mỗi group cũng sẽ có một tên group được gán với GID.

2a/ File /etc/group

Thông tin của group sẽ được lưu giữ trong file có tên là /etc/group. Để xem nội dung file, các bạn dùng lệnh sau:

Muốn thay đổi quyền thâm nhập file ta dùng lệnh?
H2a.1

Cũng tương tự như với file /etc/passwd và /etc/shadow, mỗi dòng là một group cùng các thông tin liên quan đến group đó được cách nhau bởi dấu “:”. Ví dụ:

[1]shiba2:[2]x:[3]1002:[4]ABC, XYZ, shiba2

Trong đó:

  • [1] shiba2: Tên group
  • [2] x: Group password đã được ẩn đi
  • [3] 1002: GID (Group ID)
  • [4]: ABC, XYZ, shiba2: Tên của những user account là thành viên của group

Cũng giống như UID, sẽ có groups cho system account với GID dưới 500, còn groups của user account sẽ có GID trên 500.

File /etc/group chỉ cho phép root có quyền chỉnh sửa và truy cập, còn các account khác chỉ có quyền truy cập.

Group password sẽ cho phép những user account không phải là thành viên của group có quyền trở thành thành viên tạm thời của group. Tuy nhiên, mỗi khi muốn có phần quyền của group, thành viên tạm thời đó phải nhập password của group.

Lưu ý 1:

Khi nhìn vào file /etc/group, bạn sẽ thấy nhiều group không có thành viên nào . Điều đó không có nghĩa là group đó không có thành viên. Khi một user account sử dụng một group như là group mặc định, tên của user account đó sẽ không xuất hiện trong danh sách thành viên của group. Ví dụ:

Group root mặc dù không có user account nào hiện ra ở phần danh sách thành viên, nhưng thực tế group này vẫn có một thành viên đó là root account.

Lưu ý 2:

Để thêm bớt người dùng hoặc group, bạn tuyệt đối không được chỉnh sửa trực tiếp vào các file /etc/passwd, /etc/shadow hoặc /etc/group. Cách thức thêm người dùng hoặc tạo group, mình sẽ nói ở task 36.

Tuy nhiên, khi pentest, nếu bạn có quyền truy cập và chỉnh sửa nội dung một trong các file trên, bạn có thể sử dụng nó như là một giải pháp privilege escalation.

Lưu ý 3

Mỗi group sẽ có 1 group owner, tên group thường sẽ lấy theo tên của user account của group owner. Và phân quyền của group owner sẽ là phân quyền cho tất cả thành viên trong group. Group owner sẽ được quyết định bởi người tạo ra group hoặc được chỉ định bởi những người có quyền quản trị group.

Điều đó có nghĩa dù bạn ở chung group với root account. Nhưng nếu root acount không phải chủ group, bạn sẽ không có được phân quyền của root mà là phân quyền của chủ group.

3/ Phân quyền trong hệ thống Linux (Phần tiếp theo)

3a/ Thực tập phân quyền

Chúng ta sẽ đi tiếp phần phân quyền đã học ở bài trước. Vậy kiến thức về user và group giúp ích gì khi học về phân quyền trong hệ thống Linux?

Các bạn hãy nhìn vào câu lệnh ls -l sau đây

shiba3@nootnoot:~$ ls -l /etc/group -rw-r--r-- 1 root root 811 Feb 22 2020 /etc/group

Chú ý vào dòng “-rw-r–r–“, các bạn có tự hỏi tại sao nó có tới 3 cụm phân quyền không? Vì lí do sau:

  • Cụm 1: rw-: Phân quyền dành người sở hữu file
  • Cụm 2: r– : Phân quyền dành cho những người cùng group với người sở hữu file
  • Cụm 3: r– : Phân quyền dành cho tất cả những người dùng khác trong hệ thống

Tóm lại dòng “-rw-r–r–” có nghĩa là, account root sẽ có quyền đọc và thay đổi, chỉnh sửa nội dung của file /etc/group. Những người dùng ở chung group với root account sẽ chỉ có quyền truy cập và đọc nội dung của file /etc/group. Tất cả người dùng khác trong hệ thống cũng sẽ chỉ có quyền truy cập và đọc nội dung mà thôi.

Tiếp theo chúng ta hãy chú ý đến dòng “[1]root [2]root”.

  • [1]root: Tên của người sở hữu file /etc/group
  • [2]root: Tên group của người sở hữu file /etc/group

Để phân quyền cho một file nào đó, các bạn sẽ dùng lệnh với cú pháp như sau:

chmod <phân-quyền> <tên-file>

Chúng ta sẽ thực hành như sau:

1 – Tạo một file tên sample.txt với câu lệnh echo

echo "helloworld" > sample.txt

2 – Dùng lệnh ls -l để kiểm tra phân quyền, owner và group owner của file sample.txt

shiba3@nootnoot:~$ ls -l sample.txt -rw-rw-r-- 1 shiba3 shiba3 11 Nov 19 05:57 sample.txt

Chúng ta có thể thấy:

  • Chủ sở hữu của file sample.txt là account shiba3
  • Shiba3 có quyền đọc và chỉnh sửa nội dung file cũng như được phép đọc nội dung của file
  • Các thành viên thuộc group shiba3 cũng có quyền đọc và thay đổi nội dung file sample.txt
  • Những user account không phải là owner của sample.txt cũng như không thuộc group shiba3 chỉ có quyền đọc file nhưng không có quyền thay đổi nội dung file

3 – Thực hành thay đổi phân quyền bằng câu lệnh chmod

3a – Thay đổi phân quyền bằng ký tự

Các bạn sẽ cần nhớ những giá trị sau:

  • u: Phân quyền cho chủ sở hữu file
  • g: Phân quyền cho group của chủ sở hữu file
  • o: Phân quyền cho những người khác

Để cấp quyền bạn sẽ dùng dấu + và để rút quyền bạn sẽ dùng dấu –

Ví dụ 1: Bạn muốn cấp thêm quyền w và x cho group, bạn sẽ dùng câu lệnh sau:

Sau đó, bạn dùng lệnh ls -l bạn sẽ thấy phân quyền w và x đã được cấp cho group

shiba3@nootnoot:~$ ls -l sample.txt -rw-rwxr-- 1 shiba3 shiba3 11 Nov 19 05:57 sample.txt

Ví dụ 2: Bạn muốn rút lại quyền r của owner, bạn sẽ dùng câu lệnh sau:

Lúc này nếu bạn dùng lệnh cat để đọc file, bạn sẽ thấy dòng lỗi sau. Cho thấy bạn không có quyền đọc file sample.txt.

shiba3@nootnoot:~$ cat sample.txt cat: sample.txt: Permission denied

Bạn dùng lệnh ls -l để check sẽ thấy kết quả như sau:

shiba3@nootnoot:~$ ls -l sample.txt --w-rwxr-- 1 shiba3 shiba3 11 Nov 19 05:57 sample.txt

Tuy mất quyền read nhưng bạn sẽ vẫn còn quyền write, do đó, bạn vẫn có thể thêm nội dung vào file sample.txt.

echo "Tuhocnetworksecurity" >> sample.txt

Ví dụ 3: Bạn muốn cấp quyền execute cho cả owner, group và những người khác cùng một lúc, bạn sẽ dùng câu lệnh sau:

Bạn có thể dùng lệnh ls -l để kiểm tra lại.

shiba3@nootnoot:~$ ls -l sample.txt --wxrwxr-x 1 shiba3 shiba3 32 Nov 19 06:25 sample.txt

Bạn có thể thấy quyền execute đã được thêm vào cả owner, group và những người khác.

3b – Phân quyền bằng chữ số

Chúng ta sẽ thực hành như sau:

3b-1 – Tạo file sample2.txt

echo "Tu hoc cybersecurity" >> sample2.txt

3b-2 – Dùng lệnh ls -l để kiểm tra phân quyền

shiba3@nootnoot:~$ ls -l sample2.txt -rw-rw-r-- 1 shiba3 shiba3 21 Nov 19 06:40 sample2.txt

3b-3 – Thực hành phân quyền

Khi cấp quyền bằng chữ số, sẽ có 3 chữ số được sử dụng. Ví dụ: 777.

Trong đó:

  • Chữ số thứ nhất được dùng để phân quyền cho owner
  • Chữ số thứ 2 sẽ phân quyền cho group
  • Chữ số thứ 3 được dùng để phân quyền cho những người khác.

Chúng ta sẽ sử dụng lại bảng giá trị mà mình đã giới thiệu ở bài trước, bạn nào quên thì có thể xem lại phần 4 trong bài trước nhé.

  • 0: — : Không quyền nào được cấp
  • 1: –x : Quyền thực thi
  • 2: -w- : Quyền viết
  • 3: -wx: Quyền được viết và thực thi
  • 4: r– : Quyền đọc
  • 5: r-x : Quyền đọc và thực thi
  • 6: rw- : Quyền đọc và viết
  • 7: rwx: Quyền đọc, viết và thực thi

Ví dụ 1: Bạn muốn phân toàn quyền rwx cho owner, rw cho group và x cho những người khác. Bạn sẽ dùng câu lệnh sau

Sau đó bạn dùng lệnh ls -l để kiểm tra lại, bạn sẽ thấy kết quả như sau

shiba3@nootnoot:~$ ls -l sample2.txt -rwxrw---x 1 shiba3 shiba3 21 Nov 19 06:40 sample2.txt

Ví dụ 2: Bạn muốn phân toàn quyền cho group và không cấp bất cứ quyền nào cho owner và những người khác. Bạn sẽ dùng câu lệnh sau:

Kiểm tra bằng lệnh ls -l chúng ta sẽ thấy kết quả như sau:

shiba3@nootnoot:~$ ls -l sample2.txt ----rwx--- 1 shiba3 shiba3 21 Nov 19 06:40 sample2.txt

Với kiến thức này, bạn có thể trả lời câu hỏi ở task 24 nhé.

3b/ SUID và SGID

3b-1/ SUID

Chúng ta hãy thử nhìn vào ví dụ dưới đây

ls -lrt /usr/bin/python -rwsrw-r-x 1 root sys 31396 Jan 20 2014 /usr/bin/python

Các bạn có thấy trong chuỗi giá trị phân quyền có gì lạ không? Đúng rồi đấy, đó là sự xuất hiện của phân quyền “s” trong phần phân quyền của owner. Vậy phân quyền “s” là gì?

Phân quyền “s” trong phần phân quyền của owner được gọi là SUID (Set User Id), nó cho phép khi file được thực thi bởi một user account nào đó, nó sẽ được thực thi dưới phân quyền của người chủ của file. Như ví dụ trong dòng lệnh bên trên, nếu bất kỳ ai chạy câu lệnh python, câu lệnh đó sẽ được chạy với phân quyền của root. Điều này có thể bị lạm dụng cho mục đích nâng cấp đặc quyền (Privilege Escalation).

Để set SUID các bạn sẽ thêm giá trị “4” vào đầu phần phân quyền trong câu lệnh chmod. Ví dụ, chúng ta sẽ dùng lại file sample2.txt

Sau đó, chúng ta kiểm tra bằng lệnh ls -l

shiba3@nootnoot:~$ ls -l sample2.txt -rwsr-xr-x 1 shiba3 shiba3 21 Nov 19 06:40 sample2.txt

Lưu ý:

Phân quyền “s” thế chỗ của “x” và mang ý nghĩa rằng owner có cả quyền execute. Tuy nhiên, nếu phân quyền không phải là “s” mà là “S”, thì nó sẽ có ý nghĩa rằng owner không có quyền execute.

3B-2/ SGID

SGID là viết tắt của Set Group ID, nó có công dụng gần tương tự với SUID. Điểm khác biệt duy nhất đó là nếu một ứng dụng được cho phép tiếp cận bởi một group người dùng, và ứng dụng này được set SGID, thì khi ứng dụng này được chạy, nó sẽ chạy với phân quyền của group owner và cũng là phân quyền của toàn bộ thành viên trong group.

Giả sử nếu group owner là root, thực thi ứng dụng thuộc group của root sẽ cho bạn phân quyền của root.

Cũng tương tự như SUID, nếu phân quyền ở vị trí “x” là “s” có nghĩa là group có quyền execute, còn “S” là không có quyền execute.

Để set SGID chúng ta sẽ thêm giá trị “2” ở đầu câu lệnh chmod. Chúng ta sẽ dùng lại file simple.txt trong ví dụ sau:

Dùng câu lệnh ls -l để kiểm tra

shiba3@nootnoot:~$ ls -l sample.txt -r-xr-Sr-- 1 shiba3 shiba3 32 Nov 19 06:25 sample.txt

Như bạn đã thấy, do không có quyền execute, nên phân quyền “S” sẽ xuất hiện.

Lưu ý:

Khi SGID được set cho một directory, thì tất cả mọi file và directory được tạo ra bên trong directory đó đều thuộc quyền sở hữu của group sở hữu directory đó.

4/ Đổi quyền sở hữu

Để đổi quyền sở hữu của một file hay một directory, các bạn sẽ sử dụng lệnh chown. Cú pháp của chown như sau:

chown <tên-chủ-mới>:<tên-group-mới> <tên-file>

Tuy nhiên, chúng ta sẽ chỉ có thể chuyển quyền sở hữu của một file từ mình sang file khác khi và chỉ khi phân quyền của mình lớn hơn phân quyền của account được chuyển quyền sở hữu. Vì lẽ đó, chuyển quyền sở hữu khi bạn đang nắm account root là thích hợp nhất.

Do chúng ta chưa có account root trên Learn Linux và các account shiba1, shiba2 và shiba3 đều có quyền hạn như nhau, nên chúng ta sẽ thực tập đỡ trên Kali Linux nhé.

Chúng ta sẽ thực hành câu lệnh chown như sau

B1: Đăng nhập root account bằng câu lệnh sau và nhập password

B2: Tạo một directory tên hello và chuyển directory đến hello

B3: Bên trong directory hello, chúng ta sẽ tạo một file tên vietnam.txt và một directory tên world

touch vietnam.txt && mkdir world

B4: Quay trở về HOME directory của Shiba3

B5: Dùng lệnh ls -l để kiểm tra chủ sở hữu của directory hello

vincent@kali:~$ ls -l drwxr-xr-x 3 root root 4096 Nov 19 01:35 hello

B5: Thay chủ sở hữu của hello từ root thành tên user account của bạn (ở đây user account bình thường của mình là vincent)

B6: Kiểm tra với câu lệnh ls -l

ls -l drwxr-xr-x 3 vincent root 4096 Nov 19 01:35 hello

B7: Để thay đổi cả group sở hữu và chủ sở hữu bạn sẽ dùng câu lệnh sau

chown vincent:vincent hello

B8: Dùng lệnh ls -l kiểm tra lại sẽ thấy chủ sở hữu và group của chủ sở hữu đã thay đổi từ root thành vincent

ls -l drwxr-xr-x 3 vincent vincent 4096 Nov 19 01:35 hello

B9: Mặc dù directory hello đã thay đổi nhưng những file bên trong vẫn có tên và group người sở hữu là root

root@kali:/home/vincent# ls -l hello total 4 -rw-r--r-- 1 root root 0 Nov 19 01:35 vietnam.txt drwxr-xr-x 2 root root 4096 Nov 19 01:35 world

B10: Để thay đổi luôn chủ và group sở hữu của cả directory mẹ và các file con bên trong, chúng ta sẽ dùng flag -R

chown -R vincent:vincent hello

B11: Kiểm tra lại chúng ta sẽ thấy chủ và group sở hữu của cả directory mẹ và các file con đều đã được đổi từ root sang vincent

ls -l drwxr-xr-x 3 vincent vincent 4096 Nov 19 01:35 hello

root@kali:/home/vincent# ls -l hellototal 4-rw-r–r– 1 vincent vincent 0 Nov 19 01:35 vietnam.txt

drwxr-xr-x 2 vincent vincent 4096 Nov 19 01:35 world