gpt4 book ai didi

shell - nohup - 权限被拒绝

转载 作者:行者123 更新时间:2023-12-01 00:27:08 26 4
gpt4 key购买 nike

我正在尝试让 OrientDB(一个数据库)在 Ubuntu 上运行的启动脚本。

目前这是导致问题的行:

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-user 在 sudoers 文件中
  • server.sh 和上面发布的任何 shell 脚本都具有 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 提升用户权限,为什么权限仍然被拒绝?

最佳答案

您可能对 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 的一部分> 组。

简而言之,如果您想提升到 root,请不要传递 -u(及其相关参数)。

关于shell - nohup - 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com