您的位置:首页 > 编程语言 > PHP开发

FTP:530 User cannot log in, home directory inaccessible,如何正确有效管理IIS FTP文件权限

2012-08-10 13:23 591 查看
 

    You 've configured your IIS Ftp server on Windows2008, and as you try to login to your domain or local, the following error message is always displayed "530 User cannot log in, home directory inaccessible"

    try to configure all permissions on root or related folders, but result of all failures. how could we do?

 

 

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

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

 

 1 文件夹权限设置不正确

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

      

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

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

          在IIS的FTP操作界面中,点击右上角的

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

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

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

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

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

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

          例如:

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

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

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

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

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

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

       cacls d:\ftproot\yyliu /p yyliu:c

    

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

      cacls d:\ftproot\yyliu /e /p xfinity:f

  

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

     cacls d:\ftproot\yyliu /e /t /p llhao:f

  

    小结:

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

 

 2 IIS FTP忘了权限配置

  

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

  

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

 

 

 

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

 

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

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

     

User Account Types

Physical Home Directory Syntax

Anonymous users

%FtpRoot%\LocalUser\Public

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:\ftproot\yyliu,域为SSCHPC

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

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

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

 

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

 

 

 

最后我要抱怨一下csdn为什么不能部署一个插件,可以直接从本地截图而不是上传图片文件

其他参考:

http://blog.geek4support.com/unable-to-login-to-a-domain-via-ftp-cannot-log-in-home-directory-inaccessible/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐