Установка разрешений на запись для временного хранилища, предоставляемого Azure (виртуальная машина на базе Linux)

Помимо использования его для пространства подкачки, я собираюсь использовать временное хранилище, доступное в моей виртуальной машине Azure (ОС Ubuntu 14.04), также для хранения временных файлов Postgresql.

Чтобы включить это, мне нужно создать символическую ссылку на / $ PGDATA / base / pgsql_tmp , которая указывает на / mnt / pgsql_tmp . Это должно быть ln -s / mnt / pgsql_tmp $ PGDATA / base / pgsql_tmp .

Это разумно обеспечивает сохранение и чтение всех временных файлов из временного хранилища на SSD. Однако есть одна загвоздка: пользователь postgres НЕ имеет прав на запись в / mnt :

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

Как убедиться, что postgres также имеет разрешение на запись в / mnt ? Должен ли я просто выполнить sudo chmod -R 777 / mnt и покончить с этим?

Я знаю, что это элементарно, но, поскольку это рабочий сервер, и у меня уже настроен своп в / mnt , я не хочу неправильно его настроить и столкнуться с проблемами завтра.


ps вот как сейчас выглядит временное хранилище:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       221G  9.9G  200G   5% /mnt
3
задан 19 March 2017 в 15:09
2 ответа
ln -sTf /mnt/pgsql_tmp $PGDATA/base/pgsql_tmp  # did you get that correct?
chown -R postgres              /mnt/pgsql_tmp
chmod o+x    /mnt          # note: no -R,  this turns 750 to 751 for /mnt only

Эффект:

 su - postgres
 echo 1 > /mnt/file   # fails
 ls   /mnt            # fails
 cat /mnt/anything    # fails
 echo 1 >  /mnt/pgsql_tmp/file   # works
 ls /mnt/pgsql_tmp               # works
 cat /mnt/pgsql_tmp/file         # works

chmod o+x означает, что [o]твой бит +e[x]ecute, который дает им разрешение на пересечение /mnt в любую поддиректорию. Другие разрешения не нужны для /mnt только для /mnt/pgsql_tmp

4
ответ дан 3 December 2019 в 05:11

Чтобы позволить пользователю postgres записывать в папку, было бы предпочтительно, чтобы он был владельцем папки, вместо того, чтобы давать доступ на чтение и запись всем.

Если /mnt должен использоваться только postgres, то вы должны сделать postgres владельцем папки /mnt и всех ее вложенных папок

sudo chown -R /mnt postgres

, возможно, вы захотите сделать это только для вложенной папки /mnt e. g. в /mnt/pgsql_tmp

sudo chown -R /mnt/pgsql_tmp postgres
3
ответ дан 3 December 2019 в 05:11

Теги

Похожие вопросы