3

UbuntuでOrientDB(データベース)の起動スクリプトを動作させようとしています。

これは現在、問題を引き起こす行です。

ORIENTDB_DIR="/usr/local/orientdb"
ORIENTDB_USER="www-user"
sudo -u $ORIENTDB_USER sh -c "cd \"$ORIENTDB_DIR/bin\"; /usr/bin/nohup server.sh 1>../log/orientdb.log 2>../log/orientdb.err &"

スクリプトを開始すると、次のようになります。

sh: 1: cannot create ../log/orientdb.log: Permission denied

設定は次のとおりです。

  • www-usersudoersファイルにあります
  • server.sh上記のシェルスクリプトには、rootの実行権限があります。
  • スクリプトを次のように変更すると sudo -u $ORIENTDB_USER sh -c "cd \"$ORIENTDB_DIR/bin\"; /usr/bin/nohup pwd 1>/home/www-user/test.log &"、は作業ディレクトリとしてtest.log表示されます。/usr/local/orientdb/bin/
  • /usr/local/orientdb/log存在しますが、空のフォルダです。

上記と私がユーザーを昇格させるために使用しているという事実を考えるとsudo、なぜ許可がまだ拒否されているのですか?

4

2 に答える 2

0

sudoあなたは少し誤解しているかもしれsudoません—必ずしもユーザーの権利を高めるわけではありません。実際、それは彼らが持っている権利を減らすかもしれません。フラグを渡すsudoと、-uそのユーザーに変更されます。そのユーザーがより多くの権限を持っている場合root(たとえば(-u渡されていない場合のデフォルト))、より多くの権限を取得します。たとえば、ユーザーの権限が少ない場合は、権限nobodyが少なくなります。logディレクトリには次の権限があるとおっしゃいました。

drwxrwxr-x 2 root root 4096 Dec 11 10:13 /usr/local/orientdb/log

それでも、あなたはwww-userユーザーに変わっています。www-userユーザーは、グループの一部でない限り(root可能性は低いですが)、そのディレクトリに書き込むことはできません。所有者とグループのみが書き込み可能であり、www-user明らかにrootユーザーでwww-userはなく、おそらくrootグループの一部でもありません。

-uつまり、に昇格する場合は、(およびそれに関連する引数を)渡さないでくださいroot

于 2012-12-19T02:19:50.833 に答える
0

スクリプトの最後の行を次のように書き直してみてください。

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 &"

それでもうまくいかない場合は、www-userおそらく書き込み権限がありません/usr/local/orientdb/log(存在すると言い/usr/local/orientdb/logsましたが、空のフォルダーであることに注意してください。そのうちの1つにはs最後にあります)

于 2012-12-18T04:54:54.477 に答える