Skip to content

Permission denied for port 514 #79

Closed
@jonarmani

Description

@jonarmani

The latest image won't allow the container to listen to the default syslog port (TCP or UDP 514).

To replicate on CentOS 7: docker run logstash -e 'input {syslog{}} output {stdout{}}'

Even when logged in as root and using sudo docker run... this gets these errors where the listeners start up but immediately die:

Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
07:13:08.239 [main] INFO  logstash.setting.writabledirectory - Creating directory {:setting=>"path.queue", :path=>"/usr/share/logstash/data/queue"}
07:13:08.256 [LogStash::Runner] INFO  logstash.agent - No persistent UUID file found. Generating new UUID {:uuid=>"3fd52e0a-90e4-4129-a71b-6094be14a7fd", :path=>"/var/lib/logstash/uuid"}
07:13:08.530 [Ruby-0-Thread-8: /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:101] INFO  logstash.inputs.syslog - Starting syslog udp listener {:address=>"0.0.0.0:514"}
07:13:08.533 [Ruby-0-Thread-9: /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:105] INFO  logstash.inputs.syslog - Starting syslog tcp listener {:address=>"0.0.0.0:514"}
07:13:08.536 [[main]-pipeline-manager] INFO  logstash.pipeline - Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
07:13:08.545 [Ruby-0-Thread-9: /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:105] WARN  logstash.inputs.syslog - syslog listener died {:protocol=>:tcp, :address=>"0.0.0.0:514", :exception=>#<Errno::EACCES: Permission denied - bind(2)>, :backtrace=>["org/jruby/ext/socket/RubyTCPServer.java:124:in `initialize'", "org/jruby/RubyIO.java:871:in `new'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:159:in `tcp_listener'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:122:in `server'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:106:in `run'"]}
07:13:08.545 [Ruby-0-Thread-8: /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:101] WARN  logstash.inputs.syslog - syslog listener died {:protocol=>:udp, :address=>"0.0.0.0:514", :exception=>#<SocketError: bind: name or service not known>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:160:in `bind'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:141:in `udp_listener'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:122:in `server'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.2.0/lib/logstash/inputs/syslog.rb:102:in `run'"]}
07:13:08.593 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
07:13:08.647 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}

Notice for TCP the issue is reported as: exception=>#<Errno::EACCES: Permission denied - bind(2) while for UDP the issue is: SocketError: bind: name or service not known Both of these are indicative of improper permissions for root for privileged ports (<1024).

I get the same result when attempting to pass the user root with: docker run --user=root logstash -e 'input {syslog{}} output {stdout{}}'

Tried on Docker version 1.13.0, build 49bf474 and the officially image-supported 1.12.3 (build 6b644ec).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions