Я пытаюсь настроить пользователя в centos, который может читать / писать / удалять файлы / etc в каталоге / var / www / html. С некоторой помощью здесь я дал пользователю возможность входить в систему и просматривать файлы, но теперь они не могут загружать / удалять и т. Д.
Я создал пользователя ftpuser с UID / GID 500, действующей оболочкой / bin / sh и домашним каталогом / var / www /
Я сменил владельца / var / www / html на ftpuser.ftpuser [и попробовал также 0777]
Этот пользователь должен иметь возможность читать / записывать / del файлы в каталоге / var / www / html /.
вот конфиг proftpd:
ServerName "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
ServerType standalone
DefaultServer on
VRootEngine on
#DefaultRoot ~ !adm
DefaultRoot /var/www/
VRootAlias /etc/security/pam_env.conf etc/security/pam_env.conf
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c
#PersistentPasswd off
UseReverseDNS off
User nobody
Group nobody
MaxInstances 20
UseSendfile off
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
# Global Config - config common to Server Config and all virtual hosts
# See: http://www.proftpd.org/docs/howto/Vhost.html
<Global>
Umask 022
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
</Global>
<Directory /var/www>
AllowOverwrite yes
<Limit ALL>
AllowAll
</Limit>
</Directory>
<Limit LOGIN>
AllowUser ftpuser
DenyALL
</Limit>
Не знаю, почему это не сработает. Кто-нибудь видит, что я делаю не так?
Похоже, здесь вам помешал SELinux. Если вы не хотите, чтобы SELinux предотвращал запись файлов ftp где-либо в системе, вам нужно включить логическое значение allow_ftpd_full_access. Прежде всего, проверьте, включен ли он в настоящее время или отключен, запустив:
getsebool allow_ftpd_full_access
Если он сообщает вам, что он выключен, включите его с помощью этой команды (может потребоваться около минуты, чтобы применить во всей вашей системе, поэтому наберитесь терпения):
setsebool -P allow_ftpd_full_access = 1
Кроме того, поскольку вы установили домашний адрес вашего пользователя в / var / www, вам также потребуется установить ftp_home_dir
значение Вкл.
setsebool -P ftp_home_dir = 1
Когда вы устанавливаете хомедир, user_home_t
контекст безопасности, вероятно, также был установлен на / var / www. Установите что-нибудь более общедоступное, например httpd_sys_content_t
или public_content_rw_t
. Ты можешь использовать chcon
для этого.
chcon -R -t httpd_sys_content_t / var / www
После применения этих настроек перезагрузите FTP-сервер, и все будет в порядке.
Видеть эта документация если вам нужна более подробная информация.