Solved

Apache Webserver and FTP permissions

Posted on 1998-11-19
3
390 Views
Last Modified: 2013-12-27
I have a Solaris 2.5 (x86) system running the Apache Webserver.  The Apache Webserver is running as the "NOBODY" user and "NOBODY" group.  The root directory for the Apache Webserver is:

/var/www/domain

Under this directory are 4 subdirectories:
/cgi-bin
/htdocs
/logs
/conf

Within the htdocs directory are all the .htm/.html files, .gif and .jpg images for the "root" webpage (these are the pages that a user sees via a browser when he/she types a URL of http://www.domain.com)

ALSO WITHIN the htdocs directory are subdirectories for different webpages.  All of the following directories would be examples of this:
/var/www/domain/htdocs/webpageA
/var/www/domain/htdocs/webpageB
/var/www/domain/htdocs/webpageC
...etc

Each of these sites are accessed via a browser by entering the URL:  http://www.domain.com/webpage~ (where "~" is A, or B, or C, etc.)

Additionally, within each one of the subdirectories (webpageA, webpageB, webpageC, etc.) is a cgi-bin directory.

NOTES:  This web server serves a large school district (comprised of 20 separate schools and a main administrative center).  The domain for the school is ncusd203.org and the main page (maintained by a webmaster at the administrative center) is located at http://www.ncusd203.org

Each one of the schools has its own webpages.  For example, Central H.S. webpages are located at http://www.ncusd203.org/central

Each school has its own "webmaster" that is responsible for that school's webpages.  Each individual school's webmaster needs to be able to FTP files into the proper directory, but NOT be able to change directories (cd ..) using their FTP client software to get into any other school's web directory.  This is to ensure that a webmaster is only responsible for his/her own individual school and isn't able to "accidentally" delete, modify, etc. any other school's webpages.

Now, for the question, how do I actually set up the permissions to dis-allow the changing of directories by each individual, yet still allow the Apache Webserver to access the needed files (remember, the Apache Webserver is running as NOBODY:NOBODY) and still allow all pages to be viewed by the outside world (via browsers).

I have tried to chmod the ".." file in each directory, but this prevented the webpages from being access via the web.

Any thoughts?  I look forward to hearing your answers!  Also, please be kind and don't select "answer" to this question unless you are absolutely sure of the answer.  This will "lock" out the other experts from giving comments.  If a comment provided actually helps me solve this problem, I will email you immeidately and make sure that you are awarded the points!  Thanks.
0
Comment
Question by:turnkey
  • 2
3 Comments
 
LVL 1

Accepted Solution

by:
ernaniaz earned 300 total points
ID: 2007951
You can do this using only uid and gid permissions. Exemple follows:

User            uid   gid
---------------------------------
account1        1001  users (100)
account2        1002  users (100)
account3        1003  users (100)
.

setup your /var/www/domain/htdocs as:

permissions       uid  gid    name
drwxr-x--- (750)  1001 nobody webpageA
drwxr-x--- (750)  1002 nobody webpageB
drwxr-x--- (750)  1003 nobody webpageC
.

The apache server will read and execute files using the "nobody" gid permission of read and execute (r-x, 5).

Good work.
--Ernani Azevedo
0
 
LVL 1

Expert Comment

by:ernaniaz
ID: 2007952
Sorry, I forgot you request to don't check "answer" while write the text and simulate here im my machine...

--Ernani Azevedo
0
 
LVL 1

Author Comment

by:turnkey
ID: 2007953
Do you know anything about Bourne shell scripting?  I would like to make your suggested changes using a sh script.  I've put an additional question in the "Programming...UNIX" section of experts-exchange for some more points!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hello fellow BSD lovers, I've created a patch process for patching openjdk6 for BSD (FreeBSD specifically), although I tried to keep all BSD versions in mind when creating my patch. Welcome to OpenJDK6 on BSD First let me start with a little …
Let's say you need to move the data of a file system from one partition to another. This generally involves dismounting the file system, backing it up to tapes, and restoring it to a new partition. You may also copy the file system from one place to…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

920 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

13 Experts available now in Live!

Get 1:1 Help Now