nohup - permission denied
You may have been misunderstanding sudo
a bit — sudo
does not necessarily elevate a user's rights; in fact, it may reduce the rights they have. When you pass sudo
the -u
flag, it will change to that user. If that user has more rights — root
, for example (the default if -u
is not passed) — then you'll get more rights. If the user has less rights — nobody
, for example — you'll have less rights. You said that the log
directory has these permissions:
drwxrwxr-x 2 root root 4096 Dec 11 10:13 /usr/local/orientdb/log
Yet, you're changing to the www-user
user. The www-user
user, unless it is part of the root
group (unlikely), will not be able to write to that directory: it is only writable by the owner and group, and www-user
is clearly not the root
user and www-user
is probably not part of the root
group.
In short, don't pass -u
(and its associated argument) if you want to elevate to root
.
Try rewriting the last line of your script to:
sudo -u $ORIENTDB_USER sh -c "/usr/bin/nohup \"$ORIENTDB_DIR\"/bin/server.sh 1> \"$ORIENTDB_DIR\"/log/orientdb.log 2> \"$ORIENTDB_DIR\"/log/orientdb.err &"
If that still doesn't work, then www-user
probably doesn't have write permission to /usr/local/orientdb/log
(Note that you said /usr/local/orientdb/logs
exists but is an empty folder: one of them has a s
at the end)