为Azure提供的临时存储设置写入权限(基于Linux的VM)

前端之家收集整理的这篇文章主要介绍了为Azure提供的临时存储设置写入权限(基于Linux的VM)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
除了将它用于交换空间之外,我将使用Azure VM(Ubuntu 14.04 OS)中可用的临时存储来存储 Postgresql临时文件.

为了实现这一点,我将在/ $PGDATA / base / pgsql_tmp创建一个指向/ mnt / pgsql_tmp的符号链接.所以这应该是ln -s / mnt / pgsql_tmp $PGDATA / base / pgsql_tmp.

这样可以合理地确保从基于SSD的临时存储中存储和读取所有临时文件.但是,有一个问题:用户postgres没有写入/ mnt的权限:

  1. drwxr-xr-x 4 root root 4.0K Mar 18 12:40 mnt

我如何确保postgres对/ mnt也有写权限?我应该只是做sudo chmod -R 777 / mnt并完成它吗?

我知道这是基本的,但由于它是一个生产服务器,我已经在/ mnt中设置了交换设置,我不想错误配置它并在明天遇到问题.

附:这就是临时存储目前的样子:

  1. Filesystem Size Used Avail Use% Mounted on
  2. /dev/sdb1 221G 9.9G 200G 5% /mnt

解决方法

  1. ln -sTf /mnt/pgsql_tmp $PGDATA/base/pgsql_tmp # did you get that correct?
  2. chown -R postgres /mnt/pgsql_tmp
  3. chmod o+x /mnt # note: no -R,this turns 750 to 751 for /mnt only

效果

  1. su - postgres
  2. echo 1 > /mnt/file # fails
  3. ls /mnt # fails
  4. cat /mnt/anything # fails
  5. echo 1 > /mnt/pgsql_tmp/file # works
  6. ls /mnt/pgsql_tmp # works
  7. cat /mnt/pgsql_tmp/file # works

chmod o x意味着给[o] thers e [x] ecute位,这使它们有权遍历/ mnt进入任何子目录.对于/ mnt / pgsql_tmp,/ mnt不需要其他权限

猜你在找的Linux相关文章