Web750 Support Articles and How-to guides:


Setting Proper File Permissions (using "chmod") for Different Website Files and PHP / Perl Scripts in cPanel


Introduction:


As a website owner, ensuring the security and integrity of your website is of utmost importance. One critical aspect of maintaining a secure website is setting proper file permissions (chmod) for different files and scripts. This easy-to-understand guide walks you through configuring the proper permissions for regular website files (html/txt/CSS), PHP scripts, and Perl scripts within the cPanel control panel.


Section 1: Understanding File Permissions (chmod)


Before we proceed, let's grasp the concept of file permissions. In cPanel, file permissions are represented by a three-digit code comprising numbers ranging from 0 to 7. Each digit signifies the level of access for different user groups: owner, group, and others.


Here's a quick breakdown of what each number means:


0: No permission


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


Section 2: Setting Proper File Permissions


2.1 Regular Website Files (html/txt/CSS):


For everyday website files like HTML, text, and CSS, you can ensure their security by setting the following permissions:


Directories: 755 (rwxr-xr-x) - This means the owner has full access (read, write, and execute), while others in and outside the group can only read and execute.


Files: 644 (rw-r--r--) - This ensures the owner can read and write the files, while others can only read the files.


To set these permissions using CPanel's File Manager:


Log in to your cPanel account and go to "File Manager."


Locate the file or directory you want to modify.


Change Permissions by performing a right-click on the file or directory.


Enter the numeric value (755 or 644) in the permission field.


Click "Change Permissions" to save your changes.


2.2 PHP Script file permissions (chmod)


PHP scripts may require different permissions based on their purpose. In most cases, you can apply the following permissions:


Directories: 755 (rwxr-xr-x) - Same as regular website files, allowing the owner full access and others to read and execute.


Files: 644 (rw-r--r--) - Same as regular website files, granting the owner read and write permissions and others read-only access.


However, some PHP scripts may need write access to specific directories for tasks like data storage or file uploads. In such cases, set the directory permission to 775 (rwxrwxr-x) and files to 664 (rw-rw-r--). Always exercise caution when granting write permissions, as it can pose security risks if unnecessary.


To set permissions via cPanel File Manager:


Follow steps 1 and 2 from Section 2.1.


Change the numeric value to 755 or 775 for directories and 644 or 664 for files.


Click "Change Permissions" to apply the changes.


Section 3: Perl Script file permissions (chmod):


Similar to PHP scripts, Perl scripts can have the following permissions:


Directories: 755 (rwxr-xr-x) - Allowing the owner full access and others to read and execute.


Files: 644 (rw-r--r--) - Providing the owner read and write permissions and others read-only access.


If a Perl script requires write access to specific directories, use the same permissions mentioned for PHP scripts: 775 (rwxrwxr-x) for directories and 664 (rw-rw-r--) for files.


Setting permissions through cPanel File Manager follows the steps described in Section 2.2.


Section 4: How Incorrect File Permissions Can Impact Your Website


While we've discussed the importance of setting proper file permissions for your website files and scripts, it's equally crucial to understand how incorrect file permissions can negatively impact your website's security and functionality.


Vulnerabilities to Unauthorized Access: If you set file permissions too loosely, unauthorized users might gain access to sensitive files or scripts on your website. That could lead to data breaches, defacement of your website, or even complete server control by malicious actors.


Website Malfunction: Setting overly restrictive file permissions can prevent legitimate users, including your web server, from accessing necessary files and scripts. That can cause your website to malfunction, resulting in error messages or incomplete page loads.


Security Vulnerabilities in Scripts: Many web applications use PHP and Perl scripts. Incorrect permissions on these scripts can enable attackers to modify or inject malicious code, leading to security vulnerabilities compromising your website's integrity.


Data Loss and Corruption: Improper file permissions can lead to accidental data loss or corruption, exceptionally when scripts require written access to specific directories. Without proper restrictions, one script may overwrite or delete data essential for other functions of your website.


How to Avoid Incorrect File Permissions (chmod):


Regular Auditing: Perform periodic audits of your website's file permissions to ensure they align with the best practices mentioned in this guide. You can use CPanel's File Manager to check and modify permissions.


Avoid Using '777': Never set file permissions to '777' (rwxrwxrwx), as it gives full read, write, and execute access to everyone. That is a significant security risk and should be avoided at all costs.


Grant Permissions Selectively: Only grant the necessary permissions for specific files and directories. For instance, if a script only requires read access, do not grant write or execute permissions.


Follow Script Recommendations: Many scripts come with specific file permission recommendations from their developers. Always adhere to these guidelines, designed to ensure optimal security and functionality.


Implement Security Plugins: Consider using security plugins or tools to automate file permission checks and ensure your website's permissions remain secure.


Conclusion:


Properly configuring file permissions is vital for safeguarding your website's security and ensuring its smooth functioning. With the cPanel control panel, managing file permissions is a straightforward process. For regular website files, set permissions to 755 for directories and 644 for files.


The same permissions apply for PHP and Perl scripts unless write access is necessary; in this case, your website file directories should be set to 775 and files to 664.


Always be cautious when granting write permissions, as it can compromise your website's security. By following this guide, you'll establish the appropriate file permissions, creating a safe and reliable web hosting environment for your website.


Useful links / Resources


  • CHMOD (cPanel)

  • CHMOD (Wikipedia)

  • CHMOD (Php.net)

  • Support Article (in Spanish)

  • Support Article (in Portuguese)

  • Go back to Web750