У меня есть машина с монетным двором Linux, которая предоставляет своего рода дамп файла, который предоставляется через nginx.
Моя проблема в том, что один пользователь (upload_usr) должен иметь возможность размещать новые файлы / каталоги внутри одной конкретной папки, но ему не должно быть разрешено заменять или изменять любой существующий файл.
Это должно работать так:
Важно то, что другой пользователь, не являющийся пользователем root, должен иметь возможность читать / писать в этом каталоге.
Каким будет самый простой способ добиться этого?
(Предполагая, что openssh с sftp-сервером.)
Если вы разрешите SSH, это будет практически невозможно. Однако, если вы разрешаете только SFTP:
должен иметь возможность размещать новые файлы / каталоги внутри одной конкретной папки
Использовать ChrootDirectory
Для других требований -P blacklisted_requests
и -u umask
должно быть достаточно. (Вы можете увидеть типы запросов, запустив /usr/lib/openssh/sftp-server -Q requests
.)
положить a.txt -> нормально
позволять write
(разрешено по умолчанию)
положить a.txt -> запретить
Запустите sftp-сервер с -u 0222
и запретить и setstat
fsetstat
.
cat a.txt -> нормально
позволять read
(разрешено по умолчанию)
поставить b.txt -> нормально
позволять write
(разрешено по умолчанию)
rm a.txt -> запретить
запретить remove
(и rmdir
?)
TL; DR Ограничьте пользователей с ChrootDirectory
и беги sftp-server
с участием -u 0222 -P remove,rmdir,setstat,fsetstat