У меня есть веб-сайт, работающий на Apache под Linux в каталоге / var / www.
На этом сайте есть файлы вне корня веб-каталога в / var / www-store, которые записываются и читаются пользователем apache www-data.
Мне нужен другой пользователь, у которого есть доступ для чтения и записи к подкаталогу этого хранилища файлов / var / www-store / sync, но по соображениям безопасности я не хочу, чтобы у них был доступ (чтение или запись) к любым файлам за пределами этого каталог или где-нибудь еще в файловой системе.
Кроме того, файлы, написанные этим пользователем, должны быть доступны для записи пользователем apache и наоборот.
Может ли кто-нибудь помочь с разрешениями, которые мне нужно установить для этого пользователя и этих каталогов, чтобы обеспечить безопасность, описанную выше.
Вы можете установить групповое владение для каталога и файлов, которыми вы хотите поделиться с пользователем, а не где-либо еще в файловой системе?
chown -R apache:[user-name-here] /var/www-store/sync/*
Это рекурсивно установит групповое владение каталогом. apache
будет владельцем, а ваш пользователь будет владельцем группы, поэтому вам нужно будет убедиться, что каталог и файл могут быть прочитаны и записаны в:
chmod ug+rw /var/www-store/sync/*
Вышеупомянутая строка позволит пользователю и владельцу группы читать и писать в каталог.
Затем вам нужно убедиться, что родительский каталог также не имеет разрешений на чтение или запись для всех пользователей. Это также можно сделать с помощью chmod
:
chmod o-rw /var/www-store/
Обратите внимание, что указанная выше строка не является рекурсивной, иначе она повлияет на ранее установленный permissinso. Который должен быть всем, что вам нужно, и в противном случае это, по крайней мере, поможет вам начать. Отказ от ответственности: Я на самом деле не пробовал это, поэтому не могу точно сказать, что это сработает, но если нет chmod
и chown
должен помочь вам в этом. Если вы делаете это из соображений безопасности, вы, вероятно, захотите тщательно протестировать это и в другом каталоге, возможно, лучше всего сделать его специально для тестирования.
Если пользователю не нужен физический TTY, вы можете попробовать создать пользователя только для sftp и настроить ChrootDirectory OpenSSH для группы пользователя.
Вы можете добавить другого пользователя в группу. А затем предоставьте этой группе доступ для чтения и записи в каталог /var/www-store/sync
.
chown -R www-data:somegroup /var/www-store/sync
chmod -R 770 /var/www-store/sync