1000 FAQs, 500 tutorials and explanatory videos. Here, there are only solutions!
Understand CHMOD (file permissions on server)
This guide details CHMOD (short for change mode), which allows you to change the access permissions of a file or directory.
Change FTP permissions
The permissions (refer to this other guide on Wikipedia) available for each user/group are as follows:
- read: grants the right to list (also requires execution permission) and read within a directory and/or read a file
- write: grants the right to create, modify, rename, and delete files and/or directories
- execution: for a directory: allows traversing it to read its subdirectories -> For a file: allows executing it if it is a program or a script for example.
- set uid (?): on a file with execution rights, this will cause it to be executed with the owner's rights if it uses the system call execve or setuid
- set gid (?): all new files created will belong to the group of the directory and on a file with execution rights this will have the effect of executing it with the rights of the group
- sticky bit (?): on a directory, the files in the directory can only be renamed or deleted by the owner, even if other users have write permission. This right is not really useful on files.
The FTP Manager allows you to change file permissions (including those of /web
).
Most FTP software/clients allow you to change file access rights; the function is usually called "CHMOD" and can be found under "Properties", "Permissions" or "Attributes" (usually by right-clicking on the file or folder to be modified). A box often allows you to apply permissions to all subdirectories and files in the folder, recursively.
Once you have checked the permissions you are interested in, confirm and the rights will be modified except for those you are not authorized to modify or rather that the user under which you are identified does not have the right to modify.
Example with Filezilla:
Learn more
When discussing changing permissions, it generally involves doing a "chmod 777
", "chmod 666
" or similar. So three digits where:
- the first corresponds to the owner's rights
- the second corresponds to the group's rights
- the third digit corresponds to the rights of other users.
And the rights break down as follows:
- "4" for the read right (read)
- "2" for the write right
- "1" for the execution right (execute)
Then, you just need to add these numbers. For example, if you want all rights for the owner but no rights for others, you will do "chmod 700" (4 + 2 + 1 = 7). If you want only read and write rights for everyone (4 + 2 = 6), you will do a "chmod 666".
These values are known to any good FTP software/client, so you will have the possibility to enter the number directly into your FTP software/client to change the permissions.
To change permissions on files or directories in PHP, you can also do it with the function βchmodβ, as in the following example:
chmod ("/a_folder/a_file", 0755)
Note that the value to be applied must be in octal, hence the leading zero is mandatory. Be careful if you store the value in a variable, you will have a data type issue, which you can bypass with the function octdec()
, as in the following example:
$mode = 0755;chmod("a_folder/a_file", octdec($mode))