Chỉ chủ sở hữu của tệp hoặc người dùng root mới có thể thay đổi quyền của tệp. Các quyền hiện tại trên tệp hoặc trên thư mục mẹ của nó là không liên quan¹. Điều này được chỉ định trong POSIX :
Ứng dụng phải đảm bảo rằng ID người dùng hiệu quả của quy trình khớp với chủ sở hữu của tệp hoặc quy trình có các đặc quyền phù hợp để thực hiện việc này.
Trên hầu hết các thông báo, các đặc quyền thích hợp của Viking có nghĩa là chạy bằng root. Nếu các điều kiện này không được đáp ứng, chmod
thường không thành công EPERM
, mặc dù các hành vi khác như hủy bỏ chương trình do vi phạm an ninh được cho phép.
Ngoài ra, một số biến thể unix có các cách cho phép hoặc cấm theo hệ thống cụ thể chmod
. Ví dụ: Linux có một khả năng ( CAP_FOWNER
) cho phép các quy trình thay đổi quyền của tệp và siêu dữ liệu khác bất kể chủ sở hữu của nó.
Có những lý do khác chmod
có thể thất bại ngay cả khi tệp tồn tại, có thể truy cập và có chủ sở hữu phù hợp. Những cái phổ biến bao gồm hệ thống tệp chỉ đọc hoặc hệ thống tệp không hỗ trợ các quyền như FAT. Những cái ít phổ biến hơn bao gồm các hạn chế dành riêng cho hệ thống, chẳng hạn như thuộc tính bất biến trên hệ thống tập tin ext2 của Linux và các công cụ tiếp theo.
¹ Ngoại trừ khi anh ta xử lý đang chạy chmod
phải có thể truy cập tệp, do đó, nó phải có quyền thực thi trên thư mục chứa tệp và bất kỳ thư mục nào khác mà nó đi qua để làm như vậy.