Chmod

Trong các hệ điều hành giống Unix, **chmod** là một lệnh của trình bao Unix và là lời gọi hệ thống, dùng để thay đổi quyền truy cập tập tin của các đối tượng tập tin (bao gồm cả tập tin và thư mục, hay đặt các cờ đặc biệt lên đối tượng tập tin.  Chmod là viết tắt của *change mode*.

## Lịch sử
Lệnh chmod xuất hiện lần đầu trong phiên bản 1 của AT&T Unix.

## Cú pháp lệnh

```bash
chmod [options] mode[,mode] file1 [file2...]
```


Các tùy chọn thường sử dụng:

* -R đệ quy, lệnh có tác dụng cả với các đối tượng trong thư mục con
* -f  bắt buộc, tiếp tục thực hiện với tất cả các đối tượng dù xảy ra lỗi
* -v hiển thị tiến trình làm việc với các đối tượng

Nếu đối số của lệnh là một liên kết tượng trưng, lệnh sẽ ảnh hưởng tới đối tượng đích của liên kết. Chế độ truy cập gán trên liên kết thường không được sử dụng.

Để xem chế độ truy cập của tập tin, ta dùng lệnh ls hay stat:
 

```bash
$ ls -l phoneNumbers
-rwxr-xr--  1 dgerman  staff  823 Dec 16 15:03 phoneNumbers
$ stat -c %a phoneNumbers
754
```


Các chế độ r, w, và x xác định quyền đọc (read), ghi (write) và thực thi (execute) trên tập tin. Tập tin phoneNumbers có thể được đọc, ghi, thực thi bởi chủ sở hữu dgerman, các người dùng trong nhóm staff có thể đọc và thực thi, tất cả các người dùng khác có quyền đọc.

### Chế độ bát phân

Định dạng số của chmod cung cấp một cách biểu diễn và gán chế độ truy cập bằng 4 ký số bát phân. 3 ký số bên phải là quyền truy cập của chủ sở hữu, nhóm và các người dùng khác, ký số thứ tư từ phải sang trái biểu diễn các cờ đặc biệt setuid, setgid và sticky.

**Quyền truy cập biểu diễn dạng số**

#### Ví dụ
Cho phép người dùng trong nhóm programmers có thể cập nhật tập tin:

```bash
$ ls -l sharedFile
-rw-r--r--  1 jsmith programmers 57 Jul  3 10:13  sharedFile
$ chmod 664 sharedFile
$ ls -l sharedFile
-rw-rw-r--  1 jsmith programmers 57 Jul  3 10:13  sharedFile
```


Do các cờ setuid, setgid và sticky không được đặt, lệnh trên tương đương với:


```bash
$ chmod 0664 sharedFile
```


### Chế độ tượng trưng

Lệnh chmod cũng cho phép sử dụng các ký hiệu tượng trưng để điều chỉnh một chế độ cụ thể mà không ảnh hưởng tới các chế độ khác. Chế độ tượng trưng gồm 3 thành phần, kết hợp lại thành một chuỗi:


```bash
$ chmod [tham chiếu][toán tử][chế độ] file...
```


Tham chiếu (hay lớp) dùng để xác định những người dùng nào sẽ được điều chỉnh quyền truy cập. Tham chiếu mặc định sử dụng là "all" cho tất cả các nhóm nếu không có tham chiếu được chỉ định. Tuy nhiên việc thay đổi các quyền truy cập còn phụ thuộc vào thiết lập umask. Tham chiếu được biểu diễn bởi các ký tự sau:

Chương trình chmod sử dụng một toán tử để quy định cách thay đổi chế độ của tập tin:

Một ký tự sẽ biểu diễn chế độ được thêm/xóa trên tập tin. Có ba chế độ cơ bản như sau:

Dùng dấu phẩy để cách các chế độ tượng trưng nếu muốn thực hiện nhiều thay đổi trong một lệnh.

#### Ví dụ sử dụng chế độ tượng trưng
### Các chế độ đặc biệt
### Ví dụ bằng dòng lệnh

## Lời gọi hệ thống

## Đọc thêm
*Tập tin system permissions
*Modes (Unix)
*`[[chown]]`, lệnh dùng để thay đổi chủ sở hữu của một tệp hay thư mục trên các hệ điều hình tương tự Unix
*`[[chgrp]]`, lệnh dùng để thay đổi nhóm của một tệp hay thư mục trên các hệ điều hình tương tự Unix
*`[[cacls]]`, lệnh được sử dụng trên Windows NT và các phiên bản dẫn xuất của nó để sửa đổi các danh sách kiểm soát truy cập được liên kết với một tệp hoặc thư mục
*`[[attrib]]`
*User identifier
*Group identifier
*List of Unix programs

## Tham khảo

## Liên kết ngoài
*
*<code>chmod</code> — manual page from GNU coreutils.
*GNU "Setting Permissions" manual
*Solaris 9 chmod man page
*Mac OS X chmod man page, which also supports access control lists.
*CHMOD-Win 3.0 &mdash; Freeware Windows' ACL ←→ CHMOD converter.
*Beginners tutorial with on-line "live" example
*chmod examples  Searchable examples