./kibana:... cannot execute: Permission denied

My OS :Linux with CentOS7.4
And I deployed elasticsearch on cloud server.
I install kibana with .tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz
tar -xzf kibana-6.2.4-linux-x86_64.tar.gz
and configured kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601
# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
#server.host: "localhost"
server.host: "172.18.183.220"
# Enables you to specify a path to mount Kibana at if you are running behind a proxy. This only affects
# the URLs generated by Kibana, your proxy is expected to remove the basePath value before forwarding requests
# to Kibana. This setting cannot end in a slash.
#server.basePath: ""

    # The maximum payload size in bytes for incoming server requests.
    #server.maxPayloadBytes: 1048576

    # The Kibana server's name.  This is used for display purposes.
    #server.name: "your-hostname"

    # The URL of the Elasticsearch instance to use for all your queries.
    #elasticsearch.url: "http://localhost:9200"
    elasticsearch.url: "120.79.223.63:9200"
    # When this setting's value is true Kibana uses the hostname specified in the server.host
    # setting. When the value of this setting is false, Kibana uses the hostname of the host
    # that connects to this Kibana instance.
    #elasticsearch.preserveHost: true

    # Kibana uses an index in Elasticsearch to store saved searches, visualizations and
    # dashboards. Kibana creates a new index if the index doesn't already exist.
    #kibana.index: ".kibana"

    # The default application to load.
    #kibana.defaultAppId: "home"

    # If your Elasticsearch is protected with basic authentication, these settings provide
    # the username and password that the Kibana server uses to perform maintenance on the Kibana
    # index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
    # is proxied through the Kibana server.
    #elasticsearch.username: "user"
    #elasticsearch.password: "pass"

    # Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
    # These settings enable SSL for outgoing requests from the Kibana server to the browser.
    #server.ssl.enabled: false
    #server.ssl.certificate: /path/to/your/server.crt
    #server.ssl.key: /path/to/your/server.key

    # Optional settings that provide the paths to the PEM-format SSL certificate and key files.
    # These files validate that your Elasticsearch backend uses the same key files.
    #elasticsearch.ssl.certificate: /path/to/your/client.crt
    #elasticsearch.ssl.key: /path/to/your/client.key

    # Optional setting that enables you to specify a path to the PEM file for the certificate
    # authority for your Elasticsearch instance.
    #elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]

    # To disregard the validity of SSL certificates, change this setting's value to 'none'.
    #elasticsearch.ssl.verificationMode: full

    # Time in milliseconds to wait for Elasticsearch to respond to pings. Defaults to the value of
    # the elasticsearch.requestTimeout setting.
    #elasticsearch.pingTimeout: 1500

    # Time in milliseconds to wait for responses from the back end or Elasticsearch. This value
    # must be a positive integer.
    #elasticsearch.requestTimeout: 30000

    # List of Kibana client-side headers to send to Elasticsearch. To send *no* client-side
    # headers, set this value to [] (an empty list).
    #elasticsearch.requestHeadersWhitelist: [ authorization ]

    # Header names and values that are sent to Elasticsearch. Any custom headers cannot be overwritten
    # by client-side headers, regardless of the elasticsearch.requestHeadersWhitelist configuration.
    #elasticsearch.customHeaders: {}

    # Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable.
    #elasticsearch.shardTimeout: 0

    # Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying.
    #elasticsearch.startupTimeout: 5000

    # Specifies the path where Kibana creates the process ID file.
    #pid.file: /var/run/kibana.pid

    # Enables you specify a file where Kibana stores log output.
    #logging.dest: stdout

    # Set the value of this setting to true to suppress all logging output.
    #logging.silent: false

    # Set the value of this setting to true to suppress all logging output other than error messages.
    #logging.quiet: false

    # Set the value of this setting to true to log all events, including system usage information
    # and all requests.
    #logging.verbose: false

    # Set the interval in milliseconds to sample system and process performance
    # metrics. Minimum is 100ms. Defaults to 5000.
    #ops.interval: 5000

    # The default locale. This locale can be used in certain circumstances to substitute any missing
    # translations.
    #i18n.defaultLocale: "en"

I use ./kibana to launch kibana then failed:
[XXX@foxbert bin]$ ./kibana
./kibana: line 24: /root/home/kibana-6.2.4/bin/../node/bin/node: Permission denied
./kibana: line 24: exec: /root/home/kibana-6.2.4/bin/../node/bin/node: cannot execute: Permission denied

And I use command chmod 777 kibana-6.2.4 to change the file permission,but It's still the same problem.

what sould I do?

That usually means if the file has execute permission, that you are running the wrong architecture (i.e. 32bit). Could you perhaps give us the output of uname -a for that system?

Linux foxbert 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Hmm okay that does look all fine.

Could you perhaps execute the following two commands and paste the output:

ls -lha /root/home/kibana-6.2.4/node/bin
file /root/home/kibana-6.2.4/node/bin/node

Thanks
Tim

[root@foxbert home]# ls -lha /root/home/kibana-6.2.4/node/bin
total 30M
drwxrwxrwx 2 gzc gzc 4.0K Apr 13 04:57 .
drwxrwxrwx 6 gzc gzc 4.0K Apr 13 04:57 ..
-rwxrwxrwx 1 gzc gzc 30M Apr 13 04:57 node
-rwxrwxrwx 2 gzc gzc 2.0K Apr 13 04:57 npm

[root@foxbert home]# file /root/home/kibana-6.2.4/node/bin/node
/root/home/kibana-6.2.4/node/bin/node: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, BuildID[sha1]=c36fd95f36359eff321530422ea8668ca216bbc4, not stripped
[root@foxbert home]#

@jbudz Do you have any idea what could possibly go on here? This looks alright for me.

Your first post shows a prompt of XXX@foxbert, suggesting a login with a functional id you chose to obfuscate. Can you post the results of

ls -ld /root/home/kibana-6.2.4/node/bin
ls -ld /root/home/kibana-6.2.4/node
ls -ld /root/home/kibana-6.2.4
ls -ld /root/home
ls -ld /root

If the last one does not include o+x then "chmod o+x /root".

Don't do 777. If o needs x then chmod o+x :smiley: 701 might be fine.

[root@foxbert ~]# ls -ld /root/home/kibana-6.2.4/node/bin
drwxrwxrwx 2 gzc gzc 4096 Apr 13 04:57 /root/home/kibana-6.2.4/node/bin
[root@foxbert ~]# ls -ld /root/home/kibana-6.2.4/node
drwxrwxrwx 6 gzc gzc 4096 Apr 13 04:57 /root/home/kibana-6.2.4/node
[root@foxbert ~]# ls -ld /root/home/kibana-6.2.4
drwxrwxrwx 12 gzc gzc 4096 Apr 13 04:57 /root/home/kibana-6.2.4
[root@foxbert ~]# ls -ld /root/home
drwxr-xr-x 4 root root 4096 Jun 12 11:48 /root/home
[root@foxbert ~]# ls -ld /root
dr-xr-x---. 8 root root 4096 Jun 10 11:13 /root

Let me explain. I replaced user GZC with XXX
And I use the command chmod o+x /root then restart elasticsearch and kibana...it works!
[GZC@foxbert bin]$ ./kibana
log [08:55:34.291] [info][status][plugin:kibana@6.2.4] Status changed from uninitialized to green - Ready
log [08:55:34.390] [info][status][plugin:elasticsearch@6.2.4] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [08:55:34.586] [info][status][plugin:timelion@6.2.4] Status changed from uninitialized to green - Ready
log [08:55:34.594] [info][status][plugin:console@6.2.4] Status changed from uninitialized to green - Ready
log [08:55:34.599] [info][status][plugin:metrics@6.2.4] Status changed from uninitialized to green - Ready
log [08:55:34.625] [info][listening] Server running at http://172.18.183.220:5601
log [08:55:34.966] [info][status][plugin:elasticsearch@6.2.4] Status changed from yellow to green - Ready

woo~ It's very kind of you!!!:laughing::laughing::laughing::laughing:
Thank you very much!!!
@Badger
@timroes

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.