Tìm hiểu cách sử dụng lệnh chown
trong Linux để thay đổi quyền sở hữu của tệp và thư mục, quản lý quyền truy cập và bảo mật hệ thống hiệu quả. Bài viết sẽ chia sẻ hướng dẫn chi tiết, cú pháp, ví dụ và giải thích dễ hiểu, giúp bạn thành thạo thao tác này ngay cả khi mới bắt đầu. Tìm hiểu ngay!
Lệnh chown trong Linux là gì?
Lệnh chown
trong Linux được sử dụng để thay đổi quyền sở hữu của tệp hoặc thư mục. Quyền sở hữu bao gồm hai phần:
- Chủ sở hữu: Người dùng sở hữu tệp hoặc thư mục.
- Nhóm: Nhóm người dùng mà tệp hoặc thư mục thuộc về.
Lệnh chown
có thể được sử dụng bởi người dùng có quyền root hoặc người dùng sở hữu tệp hoặc thư mục.
Cách sử dụng lệnh chown trong Linux hiệu quả
Lệnh chown
có cú pháp chung như sau:
chown [OPTIONS] USER[:GROUP] FILE(s)
Trong đó:
- USER là tên người dùng (username) hoặc ID (UID) của chủ sở hữu.
- GROUP là tên của group hoặc group ID (GID).
- FILE(s) là tên của một hay nhiều file, thư mục hoặc liên kết. Trong đó các ID dạng số phải được bắt đầu bằng ký tự +.
Giải thích chi tiết hơn:
USER
– Nếu chỉ có user được chỉ định trong lệnh thì user này sẽ trở thành chủ sở hữu của file, quyền sở hữu theo group vẫn không thay đổi.USER:
– Nếu sau username là dấu:
mà không có tên group thì user này trở thành chủ sở hữu của file, còn quyền sở hữu file theo group sẽ được chuyển thành login group của user.USER:GROUP
– Nếu chỉ định cả hai thì quyền sở hữu theo người dùng chuyển thànhUSER
, quyền sở hữu theo nhóm được gán choGROUP
trong lệnh.:GROUP
– Nếu không chỉ định user thì chỉ thay đổi quyền sở hữu theo group của file.:
– Nếu không chỉ định gì thì sẽ không thay đổi quyền sở hữu file theo group lẫn user.
Theo mặc định thì lệnh chown
không trả về kết quả gì nếu thực thi thành công. Ta có thể dùng lệnh ls -l
để kiểm tra xem quyền sở hữu file đã được cập nhật chưa:
ls -l filename.txt
Output:
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt
|[-][-][-]- [------] [---]
| |
| +-----------> Group
+-------------------> Owner
Người dùng thông thường chỉ có thể thay đổi group của một file nếu người dùng sở hữu file, đồng thời là một thành viên trong group cần thay đổi. Mặt khác, các user quản trị viên có thể thay đổi quyền sổ hữu file theo group của mọi file.
Nếu bạn muốn kiểm tra và xem sách user trong Linux nhưng chưa biết sử dụng lệnh nào. Bạn có thể tìm hiểu qua bài chia sẻ này: Cách kiểm tra và xem danh sách user trong Linux
Thay đổi chủ sở hữu của file
Để thay đổi chủ sở hữu của file, ta có thể dùng lệnh chown
kèm theo username của chủ sở hữu mới và tên file:
chown USER FILE
Chẳng hạn ta cần đổi quyền sở hữu của file file1
sang chủ sở hữu mới là vietnix
:
chown vietnix file1
Để đổi quyền sổ hữu của nhiều file hay thư mục thì ta có thể chỉ định từng file/thư mục trong lệnh, ngăn cách nhau bởi khoảng trắng. Ví dụ ta cần đổi quyền sở hữu của các file1
và dir1
sang user mới là vietnix
:
chown vietnix file1 dir1
UID của user có thể được dùng thay cho username. Giả sử ta cần đổi quyền sở hữu của file2
sang user có UID 1000
:
chown 1000 file2
Nếu có một người dùng có tên dạng số thì quyền sở hữu sẽ được chuyển sang người dùng này dựa trên username. Khi đó ta có thể dùng tiền tố + để tránh nhầm lẫn.
Cách đổi quyền sở hữu và group của một file
Để thay đổi cả chủ sở hữu và group của một file thì ta có thể dùng lệnh chown
, kèm theo user và group cách nhau bởi dấu : như sau.
chown USER:GROUP FILE
Giả sử ta cần đổi quyền sổ hữu của file1
sang user vietnix
và group users
:
chown vietnix:users file1
Nếu bỏ tên group thì group của file sẽ được tự động chuyển thành login group của người dùng trong lệnh:
chown vietnix: file1
Cách đổi group của một file
Nếu muốn thay đổi group của một file, ta có thể dùng lệnh chown
kèm theo tên group như sau:
chown :GROUP FILE
Giả sử ta cần đổi quyền sở hữu theo group của file1
sang nhóm www-data
:
chown :www-data file1
Cách đổi quyền sở hữu của symbolic link
Nếu không sử dụng option đệ quy (recursive) thì lệnh chown
sẽ đổi quyền sở hữu theo group của file mà liên kết tượng trưng đang trỏ đến, chứ không thay đổi bản thân liên kết tượng trưng này.
Giả sử ta cần đổi chủ sở hữu và group của symlink1
đang trỏ đến /var/www/file1
. Lệnh chown
sẽ chỉ thay đổi chủ sở hữu của file và thư mục mà symlink đang trỏ đến.
chown www-data: symlink1
Ngoài ra ta còn có thể gặp lỗi “cannot dereference ‘symlink1’: Permission denied” vì hầu hết các symlink trên nhiều bản phân phối Linux đều được bảo vệ, nên người dùng sẽ không thể thao tác trên những file này.
Do đó, để thay đổi quyền sở hữu theo group của symlink thì ta có thể dùng option -h
như sau:
chown -h www-data symlink1
Thay đổi chủ sở hữu theo phương thức đệ quy
Để thay đổi quyền sổ hữu của file và thư mục theo kiểu đệ quy thì ta có thể dùng option -R (--recursive)
như sau:
chown -R USER:GROUP DIRECTORY
Giả sử ta cần đổi quyền sở hữu của mọi file và thư mục con có trong /var/www
sang group www-data
:
chown -R www-data: /var/www
Nếu thư mục này có chứa các symlink thì ta có thể truyền thêm option -h:
chown -hR www-data: /var/www
Cách đổi chủ sở hữu bằng file tham chiếu
Option --reference=ref_file
cho phép ta thay đổi quyền sở hữu theo user và group của các file dựa trên quyền sở hữu của file tham chiếu được chỉ định trong ref_file
. Nếu file tham chiếu là một liên kết tượng trưng thì chown
sẽ sử dụng user và group của file đích.
chown --reference=REF_FILE FILE
Giả sử ta cần gán quyền sở hữu theo user và group của file1
cho file2
:
chown --reference=file1 file2
Xem thêm: Tổng hợp 37 câu lệnh cơ bản trong Linux
Lời kết
Lệnh chown
trong Linux là một công cụ command-line vô cùng tiện lợi để thay đổi quyền sở hữu của các file và thư mục. Bài viết trên đã hướng dẫn những trường hợp sử dụng cơ bản và phổ biến nhất của lệnh chown
trong Linux. Chúc các bạn thành công!