chmod is a shell command for changing access permissions and special mode flags of files (including special files such as directories). The name is short for change mode where mode refers to the permissions and flags collectively.
The command originated in AT&T Unix version 1 and was exclusive to Unix and Unix-like operating systems until it was ported to other operating systems such as Windows (in UnxUtils) and IBM i.
In Unix and Unix-like operating systems, a system call with the same name as the command, chmod(), provides access to the underlying access control data. The command exposes the capabilities of the system call to a shell user.
As the need for enhanced file-system permissions grew, access-control lists were added to many file systems to augment the modes controlled via chmod.
The implementation of chmod bundled in GNU coreutils was written by David MacKenzie and Jim Meyering.