Question
A bit confused about Linux permission settings
It’s not clear to me if my linux permission settings are secure or if I am making a mistake. I would be glad if someone chimed in on my setup running Php5-fpm on Ubuntu 14.04:
- Document root for each virtual host: /home/<username>/public_html
- Ownership of public_html and all its contents recursively set to username:username (
chown -R username:username
) - Added the user to the www-data group with this command:
usermod -a -G www-data username
so that Apache can write to the few folders/files inside public_html that it needs to. - My /etc/passwd file looks like username:x:1001:1001:,,,:/home/<username>:/bin/bash
- My /etc/group file looks like www-data:x:33:username,username
- Each of my Apache virtual hosts has a matching php5-fpm pool.conf file, where the user and group are both username (not username and www-data) so that PHP can run as the user.
- Umask within the user account seems to be set by default to 775 for both directories and files, as any files or directories uploaded through FTP or the application get 775 permissions.
Technically, in any application, Apache should only need to read most files and write to a few directories or files, which I believe is the whole point of NOT setting ownership of the entire document root to username:www-data.
But, in my setup, all the files within a user account (document root) have permissions set to -rw-rw-r– and all the directories within the document root have permissions set to drwxrwxr-x. This makes me a bit nervous as it seems like Apache can write to all the files and directories within the user account space as the user has been added to the www-data group.
I hope someone with a better understanding of file permissions can comment on this setup.
Or, is my setup correct/secure and I just need to set the proper umask for the user?
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
×
Hi @cloudnine Just to clarify, the
/home/username
will contain other data thanpublic_html
, which should not be accessible to Apache?