Lệnh chown cho phép bạn thay đổi người sử dụng và / hoặc quyền sở hữu nhóm của một tập tin nhất định, thư mục, hoặc liên kết tượng trưng.
Trong Linux, tất cả các tệp được liên kết với chủ sở hữu và một nhóm và được chỉ định quyền truy cập quyền cho chủ sở hữu tệp, thành viên nhóm và những người khác.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng lệnh chown
thông qua các ví dụ thực tế.
Cách sử dụng
Trước khi đi vào cách sử dụng lệnh chown
, chúng ta hãy bắt đầu bằng cách xem lại cú pháp cơ bản.
Lệnh chown
có dạng sau:
chown [OPTIONS] USER[:GROUP] FILE(s)
USER
là tên người dùng hoặc ID người dùng (UID) của chủ sở hữu mới. GROUP
là tên của nhóm mới hoặc ID nhóm (GID). FILE(s)
là tên của một hoặc nhiều tệp, thư mục hoặc liên kết. ID số phải được đặt trước bằng +
biểu tượng.
USER
– Nếu chỉ người dùng được chỉ định, người dùng được chỉ định sẽ trở thành chủ sở hữu của các tệp đã cho, quyền sở hữu nhóm không bị thay đổi.USER:
– Khi tên người dùng được theo sau bởi dấu hai chấm:
và tên nhóm không được cung cấp, người dùng sẽ trở thành chủ sở hữu của tệp và quyền sở hữu nhóm tệp được thay đổi thành nhóm đăng nhập của người dùng.USER:GROUP
– Nếu cả người dùng và nhóm đều được chỉ định (không có khoảng trống giữa họ), quyền sở hữu tệp của người dùng được thay đổi thành người dùng đã cho và quyền sở hữu nhóm được thay đổi thành nhóm đã cho.:GROUP
– Nếu Người dùng bị bỏ qua và nhóm có tiền tố là dấu hai chấm:
, thì chỉ quyền sở hữu nhóm của các tệp được thay đổi thành nhóm đã cho.:
Nếu chỉ:
đưa ra dấu hai chấm mà không chỉ định người dùng và nhóm, thì không có thay đổi nào được thực hiện.
Theo mặc định, khi thành công, chown
không tạo ra bất kỳ đầu ra nào và trả về 0.
Sử dụng ls -l
lệnh để tìm ra ai sở hữu tệp hoặc tệp thuộc nhóm nào:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |[-][-][-]- [------] [---] | | | +-----------> Group +-------------------> Owner
Người dùng bình thường chỉ có thể thay đổi nhóm của tệp nếu họ sở hữu tệp và chỉ đối với một nhóm mà họ là thành viên. Người dùng quản trị có thể thay đổi quyền sở hữu nhóm của tất cả các tệp.
Cách thay đổi chủ sở hữu tệp
Để thay đổi chủ sở hữu của tệp, hãy sử dụng lệnh chown
theo sau là tên người dùng của chủ sở hữu mới và tệp đích làm đối số:
chown USER FILE
Ví dụ: lệnh sau sẽ thay đổi quyền sở hữu tệp có tên file1
thành chủ sở hữu mới có tên hocdevops
:
chown hocdevops file1
Để thay đổi quyền sở hữu nhiều tệp hoặc thư mục, hãy chỉ định chúng dưới dạng danh sách được phân tách bằng dấu cách. Lệnh bên dưới thay đổi quyền sở hữu tệp có tên file1
và thư mụcdir1
thành chủ sở hữu mới có tên hocdevops
:
chown hocdevops file1 dir1
ID người dùng số (UID) có thể được sử dụng thay cho tên người dùng. Ví dụ sau sẽ thay đổi quyền sở hữu tệp được đặt tên file2
thành chủ sở hữu mới với UID là 1000
:
chown 1000 file2
Nếu chủ sở hữu số tồn tại dưới dạng tên người dùng, thì quyền sở hữu sẽ được chuyển sang tên người dùng. Để tránh tiền tố này, ID có +
:
chown 1000 file2
Cách thay đổi chủ sở hữu và nhóm tệp
Để thay đổi cả chủ sở hữu và nhóm của tệp, hãy sử dụng lệnh chown
theo sau bởi chủ sở hữu và nhóm mới được phân tách bằng dấu hai chấm ( :
) không có dấu cách xen vào và tệp đích.
chown USER:GROUP FILE
Lệnh sau sẽ thay đổi quyền sở hữu tệp có tên file1
thành chủ sở hữu mới có tên hocdevops
nhóm users
:
chown hocdevops file1
Nếu bạn bỏ qua tên nhóm sau dấu hai chấm ( :
), nhóm của tệp sẽ được thay đổi thành nhóm đăng nhập của người dùng được chỉ định:
chown hocdevops: file1
Cách thay đổi nhóm tệp
Để chỉ thay đổi nhóm của tệp, hãy sử dụng lệnh chown
theo sau bởi dấu hai chấm ( :
) và tên nhóm mới (không có khoảng cách giữa chúng) và tệp đích làm đối số:
chown :GROUP FILE
Lệnh sau sẽ thay đổi nhóm sở hữu của một tệp được đặt tên file1
thành www-data
:
chown :www-data file1
Một lệnh khác mà bạn có thể sử dụng để thay đổi quyền sở hữu nhóm của tệp là chgrp
.
Cách thay đổi quyền sở hữu các liên kết tượng trưng
Khi tùy chọn đệ quy không được sử dụng, chown
sẽ thay đổi quyền sở hữu nhóm của các tệp mà các liên kết tượng trưng trỏ tới, chứ không phải bản thân các liên kết tượng trưng .
Ví dụ: nếu bạn cố gắng thay đổi chủ sở hữu và nhóm của liên kết tượng trưng symlink1
trỏ đến /var/www/file1
, chown
sẽ thay đổi quyền sở hữu của tệp hoặc thư mục mà liên kết biểu tượng trỏ đến:
chown www-data: symlink1
Rất có thể thay vì thay đổi quyền sở hữu mục tiêu, bạn sẽ nhận được lỗi “cannot dereference ‘symlink1’: Permission denied”.
Lỗi xảy ra vì theo mặc định trên hầu hết các bản phân phối Linux, các liên kết tượng trưng được bảo vệ và bạn không thể thao tác trên các tệp đích. Tùy chọn này được chỉ định trong /proc/sys/fs/protected_symlinks
. 1
có nghĩa là được bật và 0
tắt. Chúng tôi khuyên bạn không nên tắt tính năng bảo vệ liên kết biểu tượng.
Để thay đổi quyền sở hữu nhóm của chính liên kết biểu tượng, hãy sử dụng tùy chọn -h
:
chown -h www-data symlink1
Cách thay đổi đệ quy quyền sở hữu tệp
Để hoạt động đệ quy trên tất cả các tệp và thư mục trong thư mục đã cho, hãy sử dụng tùy chọn -R
( --recursive
):
chown -R USER:GROUP DIRECTORY
Ví dụ sau sẽ thay đổi quyền sở hữu của tất cả các tệp và thư mục con trong thư mục thành /var/www
chủ sở hữu mới và nhóm có tên www-data
:
chown -R www-data: /var/www
Nếu thư mục chứa các liên kết tượng trưng, hãy chuyển tùy chọn -h
:
chown -hR www-data: /var/www
Các tùy chọn khác có thể được sử dụng khi thay đổi đệ quy quyền sở hữu thư mục là -H
và -L
.
Nếu đối số được truyền cho lệnh chown
là một liên kết tượng trưng trỏ đến một thư mục, thì tùy chọn -H
sẽ khiến lệnh đi qua nó. -L
yêu cầu chown
chuyển từng liên kết tượng trưng đến một thư mục gặp phải. Thông thường, bạn không nên sử dụng các tùy chọn này vì bạn có thể làm rối hệ thống của mình hoặc tạo ra rủi ro bảo mật.
Sử dụng Tệp Tham chiếu
Các tùy chọn --reference=ref_file
cho phép bạn thay đổi người sử dụng và nhóm sở hữu của các tập tin ban cho được giống như những file tài liệu tham khảo quy định ( ref_file
). Nếu tệp tham chiếu là một liên kết tượng trưng chown
sẽ sử dụng người dùng và nhóm của tệp đích.
chown --reference=REF_FILE FILE
Ví dụ: lệnh sau sẽ chỉ định người dùng và quyền sở hữu nhóm file1
đối với file2
chown --reference=file1 file2
Phần kết luận
chown
là một tiện ích dòng lệnh Linux / UNIX để thay đổi quyền sở hữu nhóm và / hoặc người dùng của tệp.
Để tìm hiểu thêm về chown
, hãy truy cập trang chown man hoặc nhập man chown
vào terminal của bạn.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.