How do I give addmin permission to PHP user/permission to write to filesystem on Ubuntu 14 server?

Posted on 2014-08-07
Last Modified: 2014-08-07

When joomla or wordpress try to write to the filesystem, which user do they use?
Is it possible to give that user admin permissions?

I did a test on my MAIN SERVER (ubuntu 14.04 x64 with php 5.5.9) and on page 3 of this application I got one error:
PHP cannot write to filesystem:

I also use two shared hosting servers, one in the US and on in Italy and the same test does not give that error:

How is it that automatically on those servers when I use Joomla or Wordpress the CMS installation software can write to .htaccess, configuration.php and wp-config.php files and tmp, cache, logs folders without any problems and on my I get errors?

On my ubuntu MAIN SERVER server (with the php permissions problem) I manually upload or and unzip them and then I use the following command to give the permissions:

for the directories
sudo find /site_installation_folder/ -type d -exec chmod 755 {} \;

for files only
sudo find /site_installation_folder/ -type f -exec chmod 644 {} \;

What am I doing wrong and how to enable the right permissions so that I don't have to set 777 chmod permissions on any folder?

thanks in advance
Question by:badwolfff
    LVL 12

    Assisted Solution

    Having permissions like 755 or 644 are meaningless by themselves.  We would need to know the assigned to these files and folders also.
    Generally, apache runs as user "apache".  PHP is an extension of your web server, and will use it's credentials.
    So, to write a file, apache would need write permissions to that file.

    You can see that the permissions 755 with the owner being root.root would be different than if the were apache.apache.

    If you change the to apache.apache, then your appropriate permissions for regular files would be 550 (440 really for static sites, but with php apps, you will run into non-execute permissions problems often).
    For any files you need apache to write to, it would be 660.
    LVL 2

    Accepted Solution

    php runs normally under the apache user.

    ubuntu apache standard is the username www-data.  so give write access to this user should solve the problem.

    you can do this on a folder with    chown -R www-data:www-data foldername

    Author Comment

    Hi mugojava thanks for your message.
    Do I change the owner for a CMS folder using:

    sudo chown -R apache:apche /path_to_folder/


    Author Comment

    ah thanks David will try right away :)
    LVL 12

    Expert Comment

    Yes, that how to change the  Then set your permissions the same way using chmod
    (sudo chmod -R 550 /path_to_folder/)
    And on the certain files that need apache to write -
    (sudo chmod 660 /path_to_folder/file.ext)

    Do you understand what each integer's place means in the chmod permissions?

    Author Comment

    works! thanks!

    I changed the permissions on the entire folder and everything works.

    By the way, when I use SCP now to connect, my user "lupocatttivo" cannot delete, rename etc. files that are owned by www-data. Is it possible to add my user "lupocatttivo" to the www-data group as well as the admin group (which it already is). Is this possible?

    thanks again
    LVL 1

    Expert Comment

    LVL 12

    Expert Comment

    Yes, you can do that, or just use sudo.  Sudo is safer.

    Every user also has a "group", so you can change owner to like apache.lupocatttivo, and give yourself either r+w (6) or rwx (7),  So for apache.lupocattivo, 570 would give apache read, your group "lupocatttivo" rwx, and all others nothing.

    In the permissions, say 660, the first 6 is for "user", second 6 is for "group", and last 0 is "all others".

    Apache will work correctly if it's got appropriate permissions as either user or group.  You don't have to have it as both user and group, that's just a common method.

    Featured Post

    6 Surprising Benefits of Threat Intelligence

    All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

    Join & Write a Comment

    1. Introduction As many people are interested in Linux but not as many are interested or knowledgeable (enough) to install Linux on their system, here is a safe way to try out Linux on your existing (Windows) system. The idea is that you insta…
    In order to have all security and back ups taken care of, WordPress users can sign up for services with WP Engine.
    The purpose of this video is to demonstrate how to exclude a particular blog category from the main blog page. This is can be used when a category already has its own tab, or you simply want certain types of posts not to show up on the main blog. …
    The purpose of this video is to demonstrate how to reset a WordPress password if you are locked out and cannot reset the password. A typical use would be if you cannot access the email to which WordPress would send the password recovery email to…

    754 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    20 Experts available now in Live!

    Get 1:1 Help Now