1

I want to start Apache Httpd when Linux starts (with Zero intervention like submitting the root password, I don't want write the root password to start the apache service!!!)

Later of Apache was installed:

# ./configure --prefix=/usr/local/httpd ... --with-included-apr --with-included-apr-util -with-pcre=/usr/local/pcre --with-z=/usr/local/zlib
# make
# make install

I made this (I created an user named httpd with root group):

# useradd -g root -r -c "Httpd User" -s /sbin/nologin httpd
# chown -hvR httpd:root /usr/local/httpd/

I changed the privileges:

# chown -hvR httpd:root /usr/local/httpd/bin/

# ls -ARl --group-directories-first /usr/local/httpd/bin/
/usr/local/httpd/bin/:
total 2004
-rwSr-Sr-x. 1 httpd root  117511 Jul 12 01:29 ab
-rwSr-Sr-x. 1 httpd root    3461 Jul 12 01:07 apachectl
-rwSr-Sr-x. 1 httpd root    7037 Jul 12 01:26 apr-1-config
-rwSr-Sr-x. 1 httpd root    6596 Jul 12 01:27 apu-1-config
-rwSr-Sr-x. 1 httpd root   23523 Jul 12 01:07 apxs
-rwSr-Sr-x. 1 httpd root    9533 Jul 12 01:29 checkgid
-rwSr-Sr-x. 1 httpd root    8925 Jul 12 01:07 dbmmanage
-rwSr-Sr-x. 1 httpd root    1089 Jul 12 01:07 envvars
-rwSr-Sr-x. 1 httpd root    1089 Jul 12 01:07 envvars-std
-rwSr-Sr-x. 1 httpd root   16476 Jul 12 01:29 fcgistarter
-rwSr-Sr-x. 1 httpd root   60832 Jul 12 01:29 htcacheclean
-rwSr-Sr-x. 1 httpd root   33254 Jul 12 01:29 htdbm
-rwSr-Sr-x. 1 httpd root   18193 Jul 12 01:29 htdigest
-rwSr-Sr-x. 1 httpd root   33958 Jul 12 01:29 htpasswd
-rwSr-Sr-x. 1 httpd root 1606472 Jul 12 01:29 httpd
-rwSr-Sr-x. 1 httpd root   16168 Jul 12 01:29 httxt2dbm
-rwSr-Sr-x. 1 httpd root   17904 Jul 12 01:29 logresolve
-rwSr-Sr-x. 1 httpd root   29642 Jul 12 01:29 rotatelogs
# /usr/local/httpd/bin/apachectl start
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

# chmod -R u=rwx,g=rx,o=rx /usr/local/httpd/bin/
# ls -ARl --group-directories-first /usr/local/httpd/bin/
/usr/local/httpd/bin/:
total 2004
-rwxr-xr-x. 1 httpd root  117511 Jul 12 01:29 ab
-rwxr-xr-x. 1 httpd root    3461 Jul 12 01:07 apachectl
-rwxr-xr-x. 1 httpd root    7037 Jul 12 01:26 apr-1-config
-rwxr-xr-x. 1 httpd root    6596 Jul 12 01:27 apu-1-config
-rwxr-xr-x. 1 httpd root   23523 Jul 12 01:07 apxs
-rwxr-xr-x. 1 httpd root    9533 Jul 12 01:29 checkgid
-rwxr-xr-x. 1 httpd root    8925 Jul 12 01:07 dbmmanage
-rwxr-xr-x. 1 httpd root    1089 Jul 12 01:07 envvars
-rwxr-xr-x. 1 httpd root    1089 Jul 12 01:07 envvars-std
-rwxr-xr-x. 1 httpd root   16476 Jul 12 01:29 fcgistarter
-rwxr-xr-x. 1 httpd root   60832 Jul 12 01:29 htcacheclean
-rwxr-xr-x. 1 httpd root   33254 Jul 12 01:29 htdbm
-rwxr-xr-x. 1 httpd root   18193 Jul 12 01:29 htdigest
-rwxr-xr-x. 1 httpd root   33958 Jul 12 01:29 htpasswd
-rwxr-xr-x. 1 httpd root 1606472 Jul 12 01:29 httpd
-rwxr-xr-x. 1 httpd root   16168 Jul 12 01:29 httxt2dbm
-rwxr-xr-x. 1 httpd root   17904 Jul 12 01:29 logresolve
-rwxr-xr-x. 1 httpd root   29642 Jul 12 01:29 rotatelogs
# 

Other

# /bin/su -p -s /bin/sh httpd /usr/local/httpd/bin/apachectl start
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

I created an service for this reason: (short) like this:

SERVICE_HOME=/usr/local/httpd
SERVICE_USER=httpd
SERVICE_NAME=Httpd
SHUTDOWN_WAIT=20

service_pid() {
  echo `ps aux | grep "$SERVICE_USER" | grep "$SERVICE_HOME" | grep -v grep | head -1 | awk '{ print $2 }' `
}

start() {
  pid=$(service_pid)
  if [ -n "$pid" ] 
  then
echo "$SERVICE_NAME is already running (pid: $pid)"
  else
# Start httpd
echo "Starting $SERVICE_NAME"
/bin/su -p -s /bin/sh $SERVICE_USER $SERVICE_HOME/bin/apachectl start
#/bin/su -p -s /bin/sh httpd authbind /usr/local/httpd/bin/apachectl start
  fi
  return 0
}

But was impossible:

I wasd trying with authbind

http://ftp.debian.org/debian/pool/main/a/authbind/authbind_1.2.0.tar.gz

# tar zxvf /.../authbind_1.2.0.tar.gz -C /usr/local/
# cd /usr/local/authbind-1.2.0
# make
# make install

# ls -ARl /etc/authbind/
/etc/authbind/:
total 12
drwxr-xr-x. 2 root root 4096 Jul 12 13:34 byaddr
drwxr-xr-x. 2 root root 4096 Jul 12 13:34 byport
drwxr-xr-x. 2 root root 4096 Jul 12 13:34 byuid

/etc/authbind/byaddr:
total 0

/etc/authbind/byport:
total 0

/etc/authbind/byuid:
total 0
# 

# touch /etc/authbind/byport/80
# chown httpd:root /etc/authbind/byport/80
# chmod 755 /etc/authbind/byport/80

Trying test from the prompt (I need that apache starts with httpd user!!!)

# /bin/su -p -s /bin/sh httpd authbind /usr/local/httpd/bin/apachectl start
/usr/local/bin/authbind: /usr/local/bin/authbind: cannot execute binary file
# /bin/su -p -s /bin/sh httpd exec authbind /usr/local/httpd/bin/apachectl start
sh: exec: No such file or directory
# /bin/su -p -s /bin/sh httpd exec authbind --deep /usr/local/http/bin/apachectl start
/bin/su: unrecognized option '--deep'
Try `/bin/su --help' for more information.
# 

Question 1:

works authbind in RHEL/CentOS/Fedora Environment?


Question 2:

What must be my commands? Is needed exec or --deep together with authbind?


testing authbind with root user has not problem!

# authbind /usr/local/httpd/bin/apachectl start
# authbind /usr/local/httpd/bin/apachectl stop
#

Question 3:

Is needed /bin/su, -p, -s and /bin/sh with httpd user?

  • What are you trying to achieve? If you want you start Apache at boot, this is possible without the use of authbind. Also, why are you installing Apache from source? yum install httpd should be all you need to do... – mjturner Jul 12 '15 at 20:23
  • If you need to install a newer version of Apache, build an RPM and install that, using the source of the CentOS package as a starting point. Then you'll have the correct init scripts, etc. You should never ever install binaries from source on a package-based Linux distribution. – mjturner Jul 12 '15 at 20:28
  • I'm istalling apache from binary "tar.gz" I making test form recently releases (newer versions) – QA_Col Jul 12 '15 at 20:29
  • I'mk obstinate work with binary source, I don't want leave the line queastion, but your porpouse is very instersting for me... (if you have a link for these please give me).... – QA_Col Jul 12 '15 at 20:33
  • This may give you a starting point - unix.stackexchange.com/a/121012/5186. Also, check that there isn't the version of Apache you need in one of the extra repositories for CentOS. – mjturner Jul 12 '15 at 20:36
0

you must to use the new version of authbind supporting IPV6:
http://ftp.debian.org/debian/pool/main/a/authbind/

or

http://www.filewatcher.com/m/authbind_2.1.1.tar.gz.14407-0.html

ftp://ftp.debian.com/debian/pool/main/a/authbind/authbind_2.1.1.tar.gz

tar zxvf /home/.../authbind_2.1.1.tar.gz -C /your/path/
cd /your/path/authbind-2.1.1
make
make install

About the user and group, the user is not necessary to belong to root group...

useradd -r -c "Httpd User" -s /sbin/nologin httpd
chown -hR httpd: /usr/local/httpd/

Now, the autho

touch /etc/authbind/byport/80
chown httpd: /etc/authbind/byport/80
chmod 755 /etc/authbind/byport/80

Answer 1

I have seen several tutorials Authbind for CentOS, RHEL and Fedora, for some reason... works, then the answer is Yes...

Answer 2

starting the server try this in your script:

/bin/su -p -s /bin/sh httpd -c "/usr/local/bin/authbind /usr/local/httpd/bin/apachectl start"

or

/bin/su -p -s /bin/sh $SERVICE_USER -c "/usr/local/bin/authbind $SERVICE_HOME/bin/apachectl start"

stoping the server try this in your script:

/bin/su -p -s /bin/sh httpd -c "/usr/local/bin/authbind /usr/local/httpd/bin/apachectl stop"

or

/bin/su -p -s /bin/sh $SERVICE_USER -c "/usr/local/bin/authbind $SERVICE_HOME/bin/apachectl stop"

Answer 3

About of your Question 3, please check: su and sh

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.