Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I am trying to learn Linux better but currently only have very limited experience - so please excuse my ignorance in this matter.

I am trying to start rails on port 80, and as another user by using

sudo -u [user_name] bundle exec rails s --port=80 -e production

but this is failing with

eventmachine.rb:572:in 'start_tcp_server': no acceptor (RuntimeError)

Running sudo netstat -anltp|grep :80 shows that port 80 is not open\listening.

I have tried the following, with limited success:

sudo bundle exec rails s --port=80 -e production works in starting the server on port 80, but not as the user I want,

sudo -u [user_name] bundle exec rails s -e production works in starting the server as the correct user, but not on the desired port.

I have temporarily set the user to be in the Administrators group as I have read that its required for ports < 1024, but that hasn't seemed to help either.

What else can I try?

share|improve this question
    
To get around this limitation, I have just set the iptables to redirect port 80 to port 3000, and am starting the rails server using the default port. –  fatty Jun 25 '12 at 7:10

1 Answer 1

up vote 0 down vote accepted

You can start services on ports <1024 with root user. The group (administrator in your case) has nothing to do with it.

There are a few things you can do though. For example:

  • User iptables to redirect the ports (configurable with root rights).
  • If the program allows it or you have access to the code: start as root, bind(), then drop privileges.
  • There is a utility called authbind that is meant for such cases, but I personally have never used it, so I cannot comment on how well it works.
  • Use setcap to add privilege to your program.
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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