Trên hệ điều hành Linux và Unix, tất cả các tệp mới được tạo với một bộ quyền mặc định. Các umask
tiện ích cho phép bạn xem hoặc để thiết lập mặt nạ tạo chế độ tập tin, trong đó xác định các bit cho phép cho các tập tin hoặc thư mục mới được tạo ra.
Nó được sử dụng bởi mkdir, touch, tee và các lệnh khác để tạo các tệp và thư mục mới.
Quyền của Linux
Trước khi đi sâu hơn, hãy giải thích ngắn gọn về mô hình quyền của Linux.
Trong Linux, mỗi tệp được liên kết với một chủ sở hữu và một nhóm và được chỉ định quyền truy cập quyền cho ba lớp người dùng khác nhau:
- Chủ sở hữu tệp.
- Các thành viên trong nhóm.
- Mọi người khác.
Có ba loại quyền áp dụng cho mỗi lớp:
- Quyền đọc.
- Quyền ghi.
- Quyền thực thi.
Khái niệm này cho phép bạn chỉ định người dùng nào được phép đọc tệp, ghi vào tệp hoặc thực thi tệp.
Để xem các quyền đối với tệp, hãy sử dụng ls
lệnh:
ls -l dirname
drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname |[-][-][-] [------] [---] | | | | | | | | | | | +-----------> Group | | | | +-------------------> Owner | | | +----------------------------> Others Permissions | | +-------------------------------> Group Permissions | +----------------------------------> Owner Permissions +------------------------------------> File Type
Ký tự đầu tiên đại diện cho loại tệp có thể là tệp thông thường ( -
), thư mục ( d
), liên kết tượng trưng ( l
) hoặc bất kỳ loại tệp đặc biệt nào khác.
Chín ký tự tiếp theo đại diện cho các quyền, mỗi bộ ba ký tự. Nhóm đầu tiên hiển thị quyền của chủ sở hữu, nhóm thứ hai cho phép nhóm và nhóm cuối cùng hiển thị quyền của mọi người khác.
Ký tự r
có giá trị bát phân 4
là viết tắt của đọc, w
với giá trị bát phân là 2
viết, x
với giá trị bát phân là 1
cho quyền thực thi và ( -
) với giá trị bát phân là 0
không có quyền.
Ngoài ra còn có ba người kia quyền tập tin đặc biệt loại: setuid
, setgid,
và Sticky Bit
.
Trong ví dụ trên ( rwxr-xr-x
) có nghĩa là chủ sở hữu có quyền đọc, ghi và thực thi ( rwx
), nhóm và những người khác có quyền đọc và thực thi.
Nếu chúng tôi trình bày các quyền đối với tệp bằng ký hiệu số, chúng tôi sẽ đưa ra con số 755
:
- Chủ sở hữu:
rwx
=4+2+1 = 7
- Nhóm:
r-x
=4+0+1 = 5
- Khác:
r-x
=4+0+1 = 5
Khi được biểu diễn bằng ký hiệu số, quyền có thể có ba hoặc bốn chữ số bát phân (0-7). Chữ số đầu tiên đại diện cho các quyền đặc biệt và nếu nó bị bỏ qua, điều đó có nghĩa là không có quyền đặc biệt nào được đặt trên tệp. Trong ví dụ của chúng ta 755
cũng giống như 0755
. Chữ số đầu tiên có thể là sự kết hợp của 4
for setuid
, 2
for setgid
và 1
for Sticky Bit
.
chmod
Quyền đối với tệp có thể được thay đổi bằng lệnh và quyền sở hữu bằng chown
lệnh.
Hiểu umask
Theo mặc định, trên các hệ thống Linux, quyền tạo mặc định 666
dành cho tệp, quyền này cấp quyền đọc và ghi cho người dùng, nhóm và những người khác và 777
cho các thư mục, có nghĩa là quyền đọc, ghi và thực thi đối với người dùng, nhóm và những người khác. Linux không cho phép tạo tệp với quyền thực thi.
Các quyền tạo mặc định có thể được sửa đổi bằng cách sử dụng tiện ích umask
.
umask
chỉ ảnh hưởng đến môi trường shell hiện tại. Trên hầu hết các bản phân phối Linux, giá trị umask toàn hệ thống mặc định được đặt trong tệp pam_umask.so
hoặc /etc/profile
.
Nếu bạn muốn chỉ định một giá trị khác trên cơ sở mỗi người dùng, hãy chỉnh sửa các tệp cấu hình shell của người dùng, chẳng hạn như ~/.bashrc
hoặc ~/.zshrc
. Bạn cũng có thể thay đổi giá trị umask
phiên hiện tại bằng cách chạy umask
theo sau là giá trị mong muốn.
Để xem giá trị umask hiện tại, chỉ cần nhập umask
mà không có bất kỳ đối số nào:
umask
Đầu ra sẽ bao gồm
022
Các giá trị umask
có chứa các bit cho phép rằng sẽ KHÔNG được đặt trên các tập tin mới được tạo ra và thư mục.
Như chúng ta đã đề cập, các quyền tạo mặc định cho các tệp là 666
và cho các thư mục 777
. Để tính toán các bit quyền của các tệp mới, hãy trừ giá trị umask khỏi giá trị mặc định.
Ví dụ: để tính toán mức độ umask 022
ảnh hưởng đến các tệp và thư mục mới được tạo, hãy sử dụng:
- Files:
666 - 022 = 644
. Chủ sở hữu có thể đọc và sửa đổi các tệp. Nhóm và những người khác chỉ có thể đọc các tệp. - Thư mục:
777 - 022 = 755
Chủ sở hữu có thểcd
vào thư mục và liệt kê, đọc, sửa đổi, tạo hoặc xóa các tệp trong thư mục. Nhóm và những người khác có thểcd
vào thư mục và liệt kê và đọc các tệp.
Bạn cũng có thể hiển thị giá trị mặt nạ trong ký hiệu tượng trưng bằng cách sử dụng tùy chọn -S
:
umask -S
u=rwx,g=rx,o=rx
Không giống như ký hiệu số, giá trị ký hiệu tượng trưng chứa các bit quyền sẽ được đặt trên các tệp và thư mục mới được tạo.
Đặt giá trị umask
Umask tạo tệp có thể được đặt bằng cách sử dụng ký hiệu bát phân hoặc ký hiệu. Để thực hiện các thay đổi vĩnh viễn, thiết lập mới umask
giá trị trong một tập tin cấu hình toàn cầu như file /etc/profile
mà sẽ ảnh hưởng đến tất cả người dùng hoặc trong tập tin cấu hình vỏ của người dùng như ~/.profile
, ~/.bashrc
hoặc ~/.zshrc
, mà sẽ chỉ ảnh hưởng đến người dùng. Tệp người dùng được ưu tiên hơn các tệp chung.
Trước khi thực hiện các thay đổi đối với giá trị umask
, hãy đảm bảo rằng giá trị mới không gây ra rủi ro bảo mật tiềm ẩn. Các giá trị ít hạn chế hơn 022
nên được sử dụng hết sức thận trọng. Ví dụ: umask 000
có nghĩa là bất kỳ ai cũng có quyền đọc, ghi và thực thi trên tất cả các tệp mới được tạo.
Giả sử chúng ta muốn đặt các quyền hạn chế hơn cho các tệp và thư mục mới được tạo để những người khác sẽ không thể truy cập cd
vào các thư mục và đọc tệp. Các quyền chúng ta muốn 750
dành cho thư mục và 640
tệp.
Để tính toán giá trị umask
, chỉ cần trừ các quyền mong muốn từ quyền mặc định:
Giá trị umask: 777-750 = 027
umask
Giá trị mong muốn được biểu thị bằng ký hiệu số là 027
.
Để đặt vĩnh viễn giá trị mới trên toàn hệ thống, hãy mở /etc/profile
bằng trình chỉnh sửa văn bản của bạn:
sudo nano /etc/profile
và thay đổi hoặc thêm dòng sau vào đầu tệp /etc/profile
umask 027
Để các thay đổi có hiệu lực, hãy chạy lệnh source
sau hoặc đăng xuất và đăng nhập:
source /etc/profile
Để xác minh cài đặt mới, chúng tôi sẽ tạo một tệp và thư mục mới bằng cách sử dụng mkdir
và touch
:
mkdir newdir touch newfile
Nếu bạn kiểm tra các quyền bằng cách sử dụng ls
, bạn sẽ nhận thấy rằng tệp mới có 640
và các 750
quyền thư mục mới , như chúng ta muốn:
drwxr-x--- 2 linuxize users 4096 Jul 4 18:14 newdir -rw-r----- 1 linuxize users 0 Jul 4 18:14 newfile
Một cách khác để đặt mask tạo tệp là sử dụng ký hiệu tượng trưng. Ví dụ umask u=rwx,g=rx,o=
là giống như umask 027
.
Phần kết luận
Trong hướng dẫn này, chúng ta đã giải thích các quyền của Linux và cách sử dụng lệnh umask
để đặt các bit quyền cho các tệp hoặc thư mục mới được tạo.
Để biết thêm thông tin, hãy nhập man umask
terminal của bạn.
Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới.