Разрешить загрузку / скачивание файла ssh/sftp, но запретить изменение существующих файлов

У меня есть машина Linux Mint, которая обеспечивает своего рода дамп файла, который предоставляется через nginx.

Моя проблема в том, что один пользователь (upload_usr) должен иметь возможность помещать новые файлы / каталоги в одну конкретную папку, но ему нельзя позволять заменять или изменять любые существующие файлы.

Это должно работать так:

  • положить.txt -> хорошо
  • положить a.txt -> запретить
  • cat a.txt -> хорошо
  • положить b.txt -> хорошо
  • rm a.txt -> disallow

Важно то, что другой пользователь, не являющийся пользователем root, должен иметь возможность r/w в этом каталоге.

Какой самый простой способ добиться этого?

1 ответ

Решение

(Предполагая openssh с sftp-сервером.)

Если вы разрешите SSH, то это практически невозможно. Однако, если вы разрешите только SFTP:

должен иметь возможность размещать новые файлы / каталоги в одной определенной папке

использование ChrootDirectory

Для других требований -P blacklisted_requests а также -u umask должно быть достаточно. (Вы можете увидеть типы запросов, запустив /usr/lib/openssh/sftp-server -Q requests.)

положить.txt -> хорошо

разрешать write (разрешено по умолчанию)

положить a.txt -> запретить

Запустите sftp-сервер с -u 0222 и запретить и setstat fsetstat,

cat a.txt -> хорошо

разрешать read (разрешено по умолчанию)

положить b.txt -> хорошо

разрешать write (разрешено по умолчанию)

rm a.txt -> disallow

запрещать remove (а также rmdir?)

TLDR Ограничить пользователей с ChrootDirectory и беги sftp-server с -u 0222 -P remove,rmdir,setstat,fsetstat

Другие вопросы по тегам