Debian
proftpd 虛擬使用者的權限被拒絕
我安裝了 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-data (設置為該目錄的組)中。我更改了虛擬使用者 GID 以匹配系統中的 www-data GID(即33
)。當我使用虛擬使用者創建新文件時,該文件 GID 設置65533
為644
./etc/group
我的系統文件中不存在此 GID 。如何保留文件夾和文件的權限
755
並讓使用者編輯和保存這些文件?
我懷疑 mod_sql 可能正在過濾您在 SQL 數據庫中分配給使用者的 UID/GID 值。預設情況下,mod_sql(出於歷史原因)對數字 ID 施加最小值;低於此最小值的任何值都將映射到預設值。看:
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。