# "runuser: cannot set groups: Operation not permitted" Error While running ES as Service

**URL:** https://discuss.elastic.co/t/runuser-cannot-set-groups-operation-not-permitted-error-while-running-es-as-service/123293
**Category:** Elasticsearch
**Created:** [March 9, 2018, 3:12pm UTC](https://discuss.elastic.co/t/runuser-cannot-set-groups-operation-not-permitted-error-while-running-es-as-service/123293 "2018-03-09T15:12:41Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![deepanshu\_mittal](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@deepanshu\_mittal](https://discuss.elastic.co/u/deepanshu_mittal)
#### Post date: [March 9, 2018, 3:12pm UTC](https://discuss.elastic.co/t/runuser-cannot-set-groups-operation-not-permitted-error-while-running-es-as-service/123293/1 "2018-03-09T15:12:41Z")

</div>

I am getting "runuser: cannot set groups: Operation not permitted" Error while running ES as service on OEL6 linux machine. I am using following /etc/init.d/elasticsearch file

#!/bin/bash

# 

# elasticsearch

# 

# chkconfig: 2345 80 20

# description: Starts and stops a single elasticsearch instance on this system

# 

### BEGIN INIT INFO

# Provides: Elasticsearch

# Required-Start: $network $named

# Required-Stop: $network $named

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: This service manages the elasticsearch daemon

# Description: Elasticsearch is a very scalable, schema-free and high-performance search solution supporting multi-tenancy and near realtime search.

### END INIT INFO

# 

# init.d / servicectl compatibility (openSUSE)

# 

if [-f /etc/rc.status]; then  
. /etc/rc.status  
rc\_reset  
fi

# 

# Source function library.

# 

if [-f /etc/rc.d/init.d/functions]; then  
. /etc/rc.d/init.d/functions  
fi

# Sets the default values for elasticsearch variables used in this script

#SU="sudo -u"  
ES\_USER="root"  
ES\_GROUP="root"  
ES\_HOME="/etc/elasticsearch"  
MAX\_OPEN\_FILES=65536  
MAX\_MAP\_COUNT=262144  
LOG\_DIR="/var/log/elasticsearch"  
DATA\_DIR="/var/lib/elasticsearch"  
CONF\_DIR="/etc/elasticsearch"

PID\_DIR="/var/run/elasticsearch"

# Source the default env file

ES\_ENV\_FILE="/etc/sysconfig/elasticsearch"  
if [-f "$ES\_ENV\_FILE"]; then  
. "$ES\_ENV\_FILE"  
fi

# CONF\_FILE setting was removed

if [! -z "$CONF\_FILE"]; then  
echo "CONF\_FILE setting is no longer supported. elasticsearch.yml must be placed in the config directory and cannot be renamed."  
exit 1  
fi

exec="$ES\_HOME/bin/elasticsearch"  
prog="elasticsearch"  
pidfile="$PID\_DIR/${prog}.pid"

export ES\_JAVA\_OPTS  
export JAVA\_HOME  
export ES\_INCLUDE  
export ES\_JVM\_OPTIONS  
export ES\_STARTUP\_SLEEP\_TIME

# export unsupported variables so bin/elasticsearch can reject them and inform the user these are unsupported

if test -n "$ES\_MIN\_MEM"; then export ES\_MIN\_MEM; fi  
if test -n "$ES\_MAX\_MEM"; then export ES\_MAX\_MEM; fi  
if test -n "$ES\_HEAP\_SIZE"; then export ES\_HEAP\_SIZE; fi  
if test -n "$ES\_HEAP\_NEWSIZE"; then export ES\_HEAP\_NEWSIZE; fi  
if test -n "$ES\_DIRECT\_SIZE"; then export ES\_DIRECT\_SIZE; fi  
if test -n "$ES\_USE\_IPV4"; then export ES\_USE\_IPV4; fi  
if test -n "$ES\_GC\_OPTS"; then export ES\_GC\_OPTS; fi  
if test -n "$ES\_GC\_LOG\_FILE"; then export ES\_GC\_LOG\_FILE; fi

lockfile=/var/lock/subsys/$prog

# backwards compatibility for old config sysconfig files, pre 0.90.1

if [-n $USER] && [-z $ES\_USER] ; then  
ES\_USER=$USER  
fi

if [! -x "$exec"]; then  
echo "The elasticsearch startup script does not exists or it is not executable, tried: $exec"  
exit 1  
fi

checkJava() {  
if [-x "$JAVA\_HOME/bin/java"]; then  
JAVA="$JAVA\_HOME/bin/java"  
else  
JAVA=`which java`  
fi

```
if [! -x "$JAVA"]; then
    echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
    exit 1
fi

```

}

start() {  
checkJava  
[-x $exec] || exit 5

```
if [-n "$MAX_OPEN_FILES"]; then
    ulimit -n $MAX_OPEN_FILES
fi
if [-n "$MAX_LOCKED_MEMORY"]; then
    ulimit -l $MAX_LOCKED_MEMORY
fi

```

# if [-n "$MAX\_MAP\_COUNT" -a -f /proc/sys/vm/max\_map\_count]; then

# sysctl -q -w vm.max\_map\_count=$MAX\_MAP\_COUNT

# fi

```
# Ensure that the PID_DIR exists (it is cleaned at OS startup time)
if [-n "$PID_DIR"] && [! -e "$PID_DIR"]; then
    mkdir -p "$PID_DIR" && chown "$ES_USER":"$ES_GROUP" "$PID_DIR"
fi
if [-n "$pidfile"] && [! -e "$pidfile"]; then
    touch "$pidfile" && chown "$ES_USER":"$ES_GROUP" "$pidfile"
fi

cd $ES_HOME
echo -n $"Starting $prog: "
# if not running, start it up here, usually something like "daemon $exec"
daemon --user $ES_USER --pidfile $pidfile $exec -p $pidfile -d -Edefault.path.logs=$LOG_DIR -Edefault.path.data=$DATA_DIR -Edefault.path.conf=$CONF_DIR
retval=$?
echo
[$retval -eq 0] && touch $lockfile
return $retval

```

}

stop() {  
echo -n $"Stopping $prog: "  
# stop it here, often "killproc $prog"  
killproc -p $pidfile -d 86400 $prog  
retval=$?  
echo  
[$retval -eq 0] && rm -f $lockfile  
return $retval  
}

restart() {  
stop  
start  
}

reload() {  
restart  
}

force\_reload() {  
restart  
}

rh\_status() {  
# run checks to determine if the service is running or use generic status  
status -p $pidfile $prog  
}

rh\_status\_q() {  
rh\_status \>/dev/null 2\>&1  
}

case "$1" in  
start)  
rh\_status\_q && exit 0  
$1  
;;  
stop)  
rh\_status\_q || exit 0  
$1  
;;  
restart)  
$1  
;;  
reload)  
rh\_status\_q || exit 7  
$1  
;;  
force-reload)  
force\_reload  
;;  
status)  
rh\_status  
;;  
condrestart|try-restart)  
rh\_status\_q || exit 0  
restart  
;;  
\*)  
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"  
exit 2  
esac  
exit $?

Please help me on same to get this issue resolved. I am using ES6.1.2

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [March 9, 2018, 3:29pm UTC](https://discuss.elastic.co/t/runuser-cannot-set-groups-operation-not-permitted-error-while-running-es-as-service/123293/2 "2018-03-09T15:29:50Z")

</div>

Please format your code, logs or configuration files using `</>` icon as explained in [this guide](https://discuss.elastic.co/t/about-the-elasticsearch-category/21) and not the citation button. It will make your post more readable.

Or use markdown style like:

````
```
CODE
```

````

There's a live preview panel for exactly this reasons.

Lots of people read these forums, and many of them will simply skip over a post that is difficult to read, because it's just too large an investment of their time to try and follow a wall of badly formatted text.  
If your goal is to get an answer to your questions, it's in your interest to make it as easy to read and understand as possible.  
Please update your post.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [April 7, 2018, 3:01am UTC](https://discuss.elastic.co/t/runuser-cannot-set-groups-operation-not-permitted-error-while-running-es-as-service/123293/5 "2018-04-07T03:01:42Z")

</div>

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