Each file and folder located in your account has certain permissions assigned. They define who is authorized to write, read or execute this file.
Once it is created in your cPanel, default permissions are assigned. In most cases there is no need to change them, but certain installations or updates may require a file or folder permissions change.
There are three types of access:
- read: file can be only read
- write: file can be edited
- execute: file can be executed as program
There are three types of user groups, these access types can be applied to:
- owner: the owner of the file
- group: other files which are in the same folder or group
- world: anyone else
The access level is defined in numbers:
- 0 - no access to the file
- 1 - execute only
- 2 - write only
- 3 - write and execute
- 4 - read only
- 5 - read and execute
- 6 - read and write
- 7 - read, write and execute (full permissions)
The following permissions need to be set in order for your files to be displayed properly in the browser:
- For all HTML and image files the permissions have to be set to 644 (or 0644). They will be readable by all the user groups, but writable by user only. These permissions are set automatically when the file is created.
- Folders the permissions have to be set to 755 (or 0755). The folders will be readable and executed by others, but writable by user only. These permissions are set automatically when the folder is created.
- For all CGI files the permissions have to be set to 755 (or 0755). The files will be readable and executed by others, but writable by user only. These permissions are NOT set automatically once the file is created, you should adjust them manually.
It is possible to view file/folder permissions either via File Manager in cPanel or SSH command line.
cPanel File Manager
1. Log into your cPanel, navigate to Files section and click File Manager icon
2. Check-mark Document Root for: option and choose the domain you wish to access directory for. Click on Go then
3. You will be able to see currently assigned permissions in the right-hand column called Perms.
4. To edit the current permissions for certain file/folder, right-click on it and choose Change Permissions. Related window will pop-up.
5. Set required permissions for each user group and save the changes. It is also possible to use the same button in the File Manager upper-bar menu:
SSH command line
1. Once logged in to your account via SSH, run the following command to check the permissions assigned to files and folders in the current directory: ls -l
NOTE: you can also use ls -alh command to get the list of ALL the files within the directory (even hidden ones) in a human readable format and with additional details.
2. To check the permissions assigned to files and folders in certain directory (not the one you are currently in), just add the full path after the command:
ls -l /home/$USER$/destination_directory
where $USER$ is your cPanel username and destination_directory is the path to the directory you check permissions in. You will get the following output:
3. In Linux shell environment permissions are expressed in the following way:
drwxr-xr-x
The very first character stands for file type: d - directory. Next three letters represent the owner permissions (user ones):
r = read
w = write
x = execute
- = no permission
Normally the Owner has all three permissions represented by rwx.
The next three characters define the Group permissions, and the last letters represent World ones. In place of ‘w’ there is a hyphen, which means that writable permissions are not allowed for Group and World.
NOTE: checking and understanding of file/folder permissions via shell environment is mostly for advanced users. If you have no other intention but check/edit file permissions, it is recommended to use GUI cPanel interface.
That's it!