【问题标题】:Create a file as one user and edit it as another user以一个用户身份创建文件并以另一个用户身份对其进行编辑
【发布时间】:2019-09-29 09:08:42
【问题描述】:

我正在编写一个 shell 来自动化一个进程,这个 shell 将以 root 或其他用户身份运行,但不以 postgres 用户身份运行(这意味着用户将只运行脚本)

我作为 postgres 用户在测试时所做的是

touch /var/lib/postgresql/10/main/recovery.conf
sudo nano recovery.conf (wrote some content )
ctrl +O

但是,每当我尝试以其他用户(包括 root)身份在我的 shell 中使用以下行来执行此操作时

sudo -H -u postgres bash -c "touch /var/lib/postgresql/10/main/recovery.conf"

该文件是作为我想要的 postgres 用户创建的,然后我运行

sudo -H -u postgres bash -c echo "content" > /var/lib/postgresql/10/main/recovery.conf

得到一个

-bash: /var/lib/postgresql/10/main/recovery.conf: Permission denied

为什么我可以创建文件但不能在上面放内容?

我已经尝试使用 chmod 授予 775 和 777 权限

chmod 775 recovery.conf

作为 psotgres 用户,我得到了

-rwxrwxr-x 1 postgres postgres  133 May 11 22:11 recovery.conf

以 postgres 用户身份访问此文件,但错误仍然存​​在,所以我对发生的事情感到困惑

【问题讨论】:

    标签: postgresql ubuntu psql chmod


    【解决方案1】:

    在您尝试放置“echo”命令的第二行,请使用:

    /var/lib/postgresql/10/main/recovery.conf
    

    以 / 开头

    【讨论】:

    • 好尴尬,现在至少我可以找到该文件,但是,现在的问题是,即使在以 psotgres 用户身份运行 chmod 775 recovery.conf 后,我也无法编写它-bash: /var/lib/postgresql/10/main/recovery.conf: Permission denied 跨度>
    • 我会做不同的事情,也许你应该试试,如果适用的话:echo "content" |须藤 postgres -a /var/lib/postgresql/10/main/recovery.conf。有关更多信息,我认为这篇文章恢复得很好:networkworld.com/article/3322504/…
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2014-07-07
    • 2019-05-13
    相关资源
    最近更新 更多