Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Dec 2009 11:21:11 +0000
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        Roby Sadeli <liweitian@gmail.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: file and directory permission
Message-ID:  <4B2E08A7.5020002@infracaninophile.co.uk>
In-Reply-To: <864079110912200218i26ccce96r2ec4b217c6452833@mail.gmail.com>
References:  <864079110912200218i26ccce96r2ec4b217c6452833@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig267E24478BECCCDD4E08C844
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Roby Sadeli wrote:
> Hi there.
>=20
> I have been using FreeBSD for some time but my skill is getting really =
rusty.
> I install nginx via the ports collection and it works just fine.
> The data files (html) is located in /usr/local/www/ and the directory
> permission is as follows:
> drwxrwxr-x  5 root   wheel    512 Dec 20 15:54 www
>=20
> and I changed the user/group permission like this:
> # chown -R www:www /usr/local/www
> # chmod -R 775 /usr/local/www
>=20
> My id is user and looks like this:
> # id user
> uid=3D1001(user) gid=3D1001(user) groups=3D1001(user),0(wheel),80(www)
>=20
> I am trying to create a file in the /usr/local/www and I can't.
> Is there something wrong I did here?
>

Well, yes.  But not really anything to do with your principle aim of
being able to edit your web content as a mortal user.  You've opened
up a bit of a security hole by your changes.

It's a common misconception that because the www directory is somehow the=

territory of the web server, then the UID the web server runs as should o=
wn
the files and directories under it.  This is actually a pretty bad idea,
because it means that anyone suborning your web server can then deface yo=
ur
web content.  This sort of attack is generally through a cgi script or th=
rough
PHP or other applications run with the credentials of your web server, bu=
t in
principle it can apply to a web server daemon serving up nothing by stati=
c
content if the daemon has buffer overflow or similar vulnerabilities.

If the web server needs to handle uploaded files then this should be set =
up
to go to a distinct writable area preferably somewhere completely separat=
e from
/usr/local/www.

Or in other words, to achieve the aim you want, do this:

   * Create a new group for people that are allowed to edit the web
     content to belong to. eg:

        # pw group add -n wwwdev

   * Give that group ownership of the files under the web-root:

        # chown -R root:webdev /usr/local/www=20

   * Make files and directories under the web-root group writeable,but
     not world writeable:

        # chmod -R g+w,o-w /usr/local/www  =20

   * Add your own UID as a member of the wwwdev group:

        # pw group mod -n wwwdev -m user

   * Log out and log back in again to update the group membership in your=

     active session.  [Note: this doesn't happen automatically just by mo=
difying
     /etc/groups -- you need to start a new session]=20

   * Possibly adjust the umask setting in your shell initialization files=
 to
     umask=3D002 -- this means by default files you create will be *group=
* writeable.
     note: due to BSD filesystem semantics files will inherit the group o=
wnership
     from the directory they are created in.  On some other Unixoid OSes =
you would
     need to have the directories SGID to achieve the same effect.

	Cheers,

	Matthew

--=20
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
                                                  Kent, CT11 9PW


--------------enig267E24478BECCCDD4E08C844
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAksuCK0ACgkQ8Mjk52CukIyXdACfVsLLwqauSb7c6iVEL6eGXeXL
iYsAoI5XiZ6QYjZifuziCHK5DSmFp73b
=L780
-----END PGP SIGNATURE-----

--------------enig267E24478BECCCDD4E08C844--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B2E08A7.5020002>