权限问题:将postgres作为postgres用户创建

时间:2014-02-05 16:49:41

标签: shell postgresql

我有以下postgres备份脚本,它是一个shell脚本并编写为运行ans postgres用户。

但问题是postgres用户无权编写这些目录。我作为用户在这些机器上没有sudo,但我已将目录更改为755并添加到具有执行读写执行的主要权限的组中的一个。由于postgres用户不属于unix用户组,我想我遇到了这个问题。

我的目标是将其放在cron-tab中,但在此之前我需要以适当的权限运行脚本:

#!/bin/bash
# location to store backups 
backup_dir="/location/to/dir"
# name of the backup file has the date
backup_date=`date +%d-%m-%Y`
# only keep the backup for 30 days (maintain low storage)
number_of_days=30
databases=`psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in $databases; do
  if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
    echo Dumping $i to $backup_dir$i\_$backup_date
    pg_dump -Fc $i > $backup_dir$i\_$backup_date
  fi
done
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;

1 个答案:

答案 0 :(得分:1)

在此之前,请务必以超级用户身份(sudo su)登录并尝试执行以下操作:

  1. useradd -G unix postgres(将postgres用户添加到unix组)

  2. su postgres(以postgres用户身份登录)

  3. mkdir folder(转到postgres需要写文件的目录)

  4. ***从这一行开始是我对@ find-missing-semicolon问题

    的回答

    为了说明shell脚本的示例,您可以使用read命令捕获密码并将其放入变量。在这里,我将密码存储在密码中,然后将其回显。我希望这会有所帮助。

    `#!/bin/bash`
    
    `read -s -p "Password: " password`
    `echo $password`