虚拟主机

帮助中心 >  产品文档 >  虚拟主机 >  虚拟主机常见问题及技术支持 >  FTP登录错误:530 User cannot log in, home directory inaccessible

 配置IIS Ftp server,遇到域时,一不小心就会出现错误530 User cannot log in, home directory inaccessible

     经过在网上不断的看帖和实践的尝试,现在归纳几个经验。

 

 1 文件夹权限设置不正确

       百度上基本都是这么说的,这句话没错但是很不严谨,不懂的同学可能都不知道在哪设或者设哪一个。

      

        ftp根路径下右键属性,在选项卡里找到安全,这个是系统的文件权限设置,无论共享还是FTP登录,文件权限都在这里设置。在界面上点击编辑,选择要修改的登录用户权限,在复选框中选择至少读取选项。

    问题 1 ftp登录用户是什么,它在哪?

          IISFTP操作界面中,点击右上角的

            如果针对验证用户,可以对Authenticated Users设置权限,如果没有,在点击编辑进入安全选项卡界面上点击添加,添加这个用户。

           如果针对某一个用户,如yyliu,可以对yyliu用户设置权限,点击编辑进入安全选项卡界面上点击添加,添加yyliu用户。 

           如果针对域用户,如SSCHPC,可以对SSCHPCdomain users设置权限,如果没有,点击编辑进入安全选项卡界面上点击添加,添加SSCHPCdomain users用户。

   问题 2 如果不能修改权限或者无法单独设置权限怎么办?

          windows文件夹权限设置的交互规则是,子文件夹必须继承父文件夹,不能去掉父文件夹已有权限,但可以增加新的权限。

          有经验的同学会立刻想到这样做有时会产生一个新的问题。

          例如:

           我们不想让用户局限在自己的根路径下,可以访问某些其他用户目录或者虚拟目录,我们会将IIS ftp设置为不隔离用户。(关于如何设置隔离用户,给一个http://www.landui.com.NET/page.aspx/305/configuring-ftp-user-isolation-in-iis-7/)。

          这样一来,所有用户目录都会自动的从根目录继承了自己父亲的权限设置,往往这些权限对ftp而言就是破坏性的,因为ftp所有用户都是属于这个组的权限,这个和Linux下有很大不同,LinuxVsftpd程序可以和用户和组很好的结合,可以通过设置用户、组的权限控制FTP的权限。而Windows我们在创建一个目录时,会自动产生很多权限,有时候很方便,但实则比较混乱,只不过我们平时根本没空关注它,抱着能用就行的态度,孰不知有时候会让自己的辛苦管理变成一个个大漏洞。

        如果要在某个用户文件夹上去掉父权限,一个办法就是编辑父目录权限,去掉多余不安全的,另外一个就是在用户目录下拒绝父目录权限,但是windows规则里明确说,拒绝权限要大于允许权限,如果我把用户组权限拒绝了,而额外加了一个自己的用户权限,也是不行的,原因就在于自己用户本身就属于被拒绝的组用户。如sschpc/domain userssschpc/yyliu

        这个时候我们需要通过高级命令cacls命令来跳过这个矛盾,这个属于高级操作,能破坏windows的规则。

       我给大家三个例子,这里不再去解释了,有疑问可以google或联系我。

       a) 只对FTP根目录Dftproot下的用户目录d:ftprootyyliu设置不包括yyliu的子目录的唯一yyliu用户的修改控制权限,使得只有yyliu可以FTP登录到路径d:ftprootyyliu,有列出、读取,修改,写入权限。

       cacls d:ftprootyyliu /p yyliu:c

    

      b)  FTP根目录Dftproot下的用户目录d:ftprootyyliu不包括yyliu的子目录,增加一个xfinity用户的完全控制权限,使得只有yyliuxfinity可以FTP登录到路径d:ftprootyyliu,保持yyliu设置,且xfinity有完全控制权限。

      cacls d:ftprootyyliu /e /p xfinity:f

  

     c) FTP根目录Dftproot下的用户目录d:ftprootyyliu及所有yyliu的子目录,增加一个llhao用户的完全控制权限.

     cacls d:ftprootyyliu /e /t /p llhao:f

  

    小结:

      通过解决以上2个问题,就可以自定义的管理ftp用户文件权限,而且可以不首用户根路径限制,属于高级操作。

 

 2 IIS FTP忘了权限配置

  

      很多同学可能没有注意到,点击IIS ftp网站,会显示FTP管理界面,上面有个图?叫“FTP授权规则,点击进去,点击添加允许规则,最简单的是添加所有用户的一个读取和写入权限,如果是域用户,选择指定的角色和用户组,添加如SSCHPCdomain users,这样设置,在大家尝试了设置目录权限而没有头绪后,应该就不会?报530 User cannot log in, home directory inaccessible,前提是大家不会傻的设置了一个物理不存在的目录。

  

   如果有高手修改了FTP应用程序池的标识,请不要忘了修改回ApplicationPoolIdentity

 

 

 

 3 IIS FTP用户隔离配置没有正确设置目录

 

    隔离用户下的禁用全局虚拟目录,和启用全局虚拟目录,它们的设置的差别就是一个可以设置虚拟目录和物理目录,一个只能设置物理目录。

  设置目录必须遵守规则如下:

     

User Account Types

Physical Home Directory Syntax

Anonymous users

%FtpRoot%LocalUserPublic

Local Windows user accounts
(requires basic authentication)

%FtpRoot%LocalUser\%UserName%

Windows domain accounts
(requires basic authentication)

%FtpRoot%\%UserDomain%\%UserName%

IIS Manager or ASP.Net custom
authentication user accounts

%FtpRoot%LocalUser\%UserName%


   

  举个例子

  隔离用户下的禁用全局虚拟目录:

   文件夹几种情况:

    1)假设建立了一个ftp站点并设置ftp根目录为d:ftproot,域yyliu用户目录在d:ftprootyyliu,域为SSCHPC

      在IIS ftp 管理器ftp中,在ftp站点下设置虚拟目录SSCHPC,路径为d:ftproot.此时ftp路径就有了虚拟的d:ftprootsschpcyyliu,ftp登录后路径为

    2)假设建立了一个ftp站点并设置ftp根目录为d:ftproot,域yyliu用户目录在d:ftprootsschpcyyliu,域为SSCHPC    

        在IIS ftp 管理器ftp中此时ftp路径就有了物理的d:ftprootsschpcyyliu,ftp登录后路径为

 

           如果是本地账户,需要把SSCHPC改为LocalUser,使之成为d:ftprootLocalUseryyliu

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: