Я установил Администратора Proftpd GUI, чтобы помочь управлять моими пользователями FTP. Проблема, которую я имею, состоит в том, что я должен установить полномочия каталога на 777, чтобы позволить виртуальным пользователям, сохраненным в mysql базе данных отредактировать и сохранить файлы. Если я изменяю его на 775, пользователь отклонил Разрешение.
Это - мой proftpd.conf файл
Include /etc/proftpd/modules.conf
ServerName "ServerName"
ServerType standalone
ServerIdent on "Servers identifying string"
DeferWelcome on
DefaultServer on
DisplayLogin .welcome # Textfile to display on login
DisplayConnect .connect # Textfile to display on connec$
#DisplayFirstChdir .firstchdir # Textfile to display on first $
UseReverseDNS off
IdentLookups off
Port 21
Umask 022
MaxInstances 15
MaxClientsPerHost 3 "Only %m connections per host a$
MaxClients 10 "Only %m total simultanious log$
MaxHostsPerUser 1
User proftpd
Group www-data
ScoreboardFile /var/log/scoreboard
# Some logging formats
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Define log-files to use
TransferLog /var/log/proftpd.xferlog
ExtendedLog /var/log/proftpd.access_log WRITE,READ write
ExtendedLog /var/log/proftpd.auth_log AUTH auth
ExtendedLog /var/log/proftpd.paranoid_log ALL default
SQLLogFile /var/log/proftpd.mysql
# Set up authentication via SQL
# ===========
AuthOrder mod_sql.c
SQLAuthTypes Backend
SQLConnectInfo proftpd_admin username password
SQLUserInfo usertable userid passwd uid gid homedir shell
SQLGroupInfo grouptable groupname gid members
SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiratio$
# Log the user logging in
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'"$
# logout log
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
# display last login time when PASS command is given
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"
# xfer Log in mysql
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now($
SQLLOG ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now($
AllowStoreRestart on
AllowRetrieveRestart on
RequireValidShell off
#PathDenyFilter "\\.ftp)|\\.ht)[a-z]+$"
DefaultRoot ~
DenyFilter \*.*/
<Directory /path/to/dir>
AllowOverwrite on
HideNoAccess off
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
<Directory /path/to/dir>
AllowOverwrite on
HideNoAccess on
<Limit READ>
AllowAll
</Limit>
<Limit STOR MKD>
AllowAll
</Limit>
</Directory>
Я поместил proftpd
пользователь, который выполняет proftpd сервис в www-данных (группа, которая установлена на тот каталог). Я изменил виртуальных пользователей GID для соответствия www-данным GID от системы (который является 33
). Когда я создаю новый файл с виртуальным пользователем, тот файл, GID установлен на 65533
и полномочия с 644
. Этот GID не существует в моих системах /etc/group
файл.
Как я могу сохранить папку и полномочия файлов к 755
и позвольте пользователю отредактировать и сохранить те файлы?
Я подозреваю, что mod_sql может фильтровать значения UID / GID, которые вы назначили своим пользователям в своей базе данных SQL. По умолчанию mod_sql (по историческим причинам) устанавливает минимальное значение для числовых идентификаторов; любые значения ниже этого минимума сопоставляются со значением по умолчанию. См .:
http://www.proftpd.org/docs/contrib/mod_sql.html#SQLMinID
, и это значение 65533 взято из значений по умолчанию, например:
http: //www.proftpd. org / docs / contrib / mod_sql.html # SQLDefaultUID
Учитывая это, вы можете попробовать добавить:
SQLMinID 1
в свой файл proftpd.conf.