Pro FTPd changes world permissions to "0" regardless of umask
Hi there,
I am completely despaired with a strange permission-problem:
I've transferred a old ISPcp-installation to debian squeeze (64Bit/amd64) using ISPCp-1.0.7 - everything seems good:
But ProFTP (1.3.3a - 6squeeze1) ALWAYS changes world permissions of any uploaded file or directory to "0" > E.g. instead of 644 / 755 I always get 640 / 750 - world permissions seem completely unaffected by the umask setting and always result as "none/0" - If I cahnge Umask in the config file the owner and group permissions reflect the changes but world permissions remain "0"
I already decativated basically any module that I did not understand or need - effect remains the same: After transfer I can do an CHMOD in FTP without problems but this is too compilcated for the average user.
My Config is:
#
# ispCP OMEGA ProFTPd config file
#
#
#
# Includes required DSO modules. This is mandatory in proftpd 1.3
#
Include /etc/proftpd/modules.conf
Include /etc/proftpd/ispcp-aio.conf
# Include /etc/proftpd/ispcp/*.conf
ServerName "XXXXXXXXXXXXXXX"
ServerType standalone
DeferWelcome off
# DebugLevel 9
ShowSymlinks on
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
UseReverseDNS off
IdentLookups off
AllowStoreRestart on
AllowForeignAddress on
Umask 022
LogFormat traff "%b %u"
TimeoutNoTransfer 1200
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir message
#LsDefaultOptions "-l"
DenyFilter \*.*/
DefaultRoot ~
# Uncomment this if you are using NIS or LDAP to retrieve passwords:
#PersistentPasswd off
# Port 21 is the standard FTP port.
Port 21
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 50
# Set the user and group that the server normally runs at.
User nobody
Group nogroup
# Normally, we want files to be overwriteable.
<Directory /*>
AllowOverwrite on
HideNoAccess on
</Directory>
<Limit ALL>
IgnoreHidden on
</Limit>
<Global>
RootLogin off
TransferLog /var/log/proftpd/xferlog
ExtendedLog /var/log/proftpd/ftp_traff.log read,write traff
PathDenyFilter "\.quota$"
</Global>
<IfModule mod_delay.c>
DelayEngine off
</IfModule>
#
# ISPCP Managment;
#
SQLBackend mysql # enable for proFTPd >= 1.3
SQLAuthTypes Crypt
SQLAuthenticate on
SQLConnectInfo ispcp@localhost vftp XXXXXXXXXXX 30
SQLUserInfo ftp_users userid passwd uid gid homedir shell
SQLGroupInfo ftp_group groupname gid members
SQLMinID 2000
#
# ISPCP Quota management;
#
QuotaEngine on
QuotaShowQuotas on
QuotaDisplayUnits Mb
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
QuotaLock /var/run/proftpd/tally.lock
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
#
# SSL via TLS
#
#<IfModule mod_tls.c>
# TLSEngine off # on for use of TLS
# TLSLog /var/log/proftpd/ftp_ssl.log # where to log to
# TLSProtocol SSLv23 # SSLv23 or TLSv1
# TLSOptions NoCertRequest # either to request the certificate or not
# TLSRSACertificateFile /etc/proftpd/ssl.crt # SSL certfile
# TLSRSACertificateKeyFile /etc/proftpd/ssl.key # SSL keyfile
# TLSVerifyClient off # client verification
#</IfModule>
Debug logging of affected transfer::
XXXX - in dir_check_full(): path = '/htdocs/testfile', fullpath = '/var/www/virtual/xxxxxxxx/htdocs/inventory.zip'.
XXXX - in dir_check_full(): setting umask to 0022 (was 0022)
XXXX - dispatching CMD command 'STOR inventory.zip' to mod_xfer
XXXX - passive data connection opened - local : XXXX
...
One last information: the target is stored on NFS (v3, rw, async, no_root_squash)
So what??? Any ideas anybody??
Best regards,
Andreas
|