filezilla 服务由于下列服务特定错误而终止: 函数不正确。
- > net start filezilla
- filezilla 服务已经启动成功。
复制代码 FileZilla Server 1.8.2 启动成功,但 filezilla-server.exe 马上又关闭了,找不到 filezilla-server.exe 进程。
Windows 事件查看器中的事件日志如下
- 日志名称: System
- 来源: Service Control Manager
- 日期: 2024/4/27 1:57:33
- 事件 ID: 7024
- 任务类别: 无
- 级别: 错误
- 关键字: 经典
- 用户: 暂缺
- 计算机: WUXIANCHENG
- 描述:
- filezilla 服务由于下列服务特定错误而终止:
- 函数不正确。
- 事件 Xml:
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
- <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
- <EventID Qualifiers="49152">7024</EventID>
- <Version>0</Version>
- <Level>2</Level>
- <Task>0</Task>
- <Opcode>0</Opcode>
- <Keywords>0x8080000000000000</Keywords>
- <TimeCreated SystemTime="2024-04-26T17:57:33.913438500Z" />
- <EventRecordID>237895</EventRecordID>
- <Correlation />
- <Execution ProcessID="548" ThreadID="3032" />
- <Channel>System</Channel>
- <Computer>WUXIANCHENG</Computer>
- <Security />
- </System>
- <EventData>
- <Data Name="param1">filezilla</Data>
- <Data Name="param2">%%1</Data>
- <Binary>660069006C0065007A0069006C006C0061000000</Binary>
- </EventData>
- </Event>
复制代码 英文版 Windows 操作系统事件日志内容- Log Name: System
- Source: Service Control Manager
- Date: 2024-4-27 1:57:33
- Event ID: 7024
- Task Category: None
- Level: Error
- Keywords: Classic
- User: N/A
- Computer: WUXIANCHENG
- Description:
- The filezilla service terminated with the following service-specific error:
- Incorrect function.
- Event Xml:
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
- <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
- <EventID Qualifiers="49152">7024</EventID>
- <Version>0</Version>
- <Level>2</Level>
- <Task>0</Task>
- <Opcode>0</Opcode>
- <Keywords>0x8080000000000000</Keywords>
- <TimeCreated SystemTime="2024-04-26T17:57:33.913438500Z" />
- <EventRecordID>521</EventRecordID>
- <Correlation />
- <Execution ProcessID="932" ThreadID="2344" />
- <Channel>System</Channel>
- <Computer>WUXIANCHENG</Computer>
- <Security />
- </System>
- <EventData>
- <Data Name="param1">filezilla</Data>
- <Data Name="param2">%%1</Data>
- <Binary>660069006C0065007A0069006C006C0061000000</Binary>
- </EventData>
- </Event>
复制代码 Windows 报出的错误是“服务由于下列服务特定错误而终止: 函数不正确。”,但实际上真正的原因可能并不是函数不正确。
FileZilla Server 升级到 1.8.2 之前都没有这个问题,升级以后就启动不起来了,FileZilla 官方网站在发布 FileZilla Server 1.8.2 的新闻里面写了这样一句话- FileZilla Server now requires that the configuration directory is owned either by the operating system user account the server runs under, or a more privileged user (SYSTEM, Amdministrators, TrustedInstaller on Windows, root elsewhere)
复制代码 从 FileZilla Server 1.8.2 开始,FileZilla Server 配置目录的所有者必须是运行 FileZilla Server 的操作系统用户或拥有更高权限的用户,不只是配置目录本级,配置目录更每一次上级目录的所有者也需要满足这一条权限要求。而且改变还不止这一点。
在 Windows 上,如果使用从官方下载的 FileZilla Server 安装程序来安装 FileZilla Server,服务会以 SYSTEM 账号运行,SYSTEM 账号权限太大,有很大的风险,建议尽量不要以 SYSTEM 身份运行服务,尤其是第三方程序,FileZilla Server 安装程序可以使用 7-zip 等压缩软件解压缩,然后通过 cmd 的 sc create 命令或者 PowerShell 的 New-Service 来人工创建服务,创建服务时可以指定一个 Windows 普通账号来运行 FileZilla Server 服务,可以使用 --config-dir 参数来指定 FileZilla Server 的配置目录。
普通账号运行服务,确实很安全,但也会带来一些问题,尤其是权限问题,通常是不够导致程序运行不起来,或者无法保存数据到磁盘文件中。
运行服务的普通账号,必须有“作为服务登录“的权限,这要在组策略里面设置,或者使用命令行程序 secedit.exe 修改。
要以普通账号运行 FileZilla Server 服务,运行服务的用户需要对 filezilla-server.exe 等可执行文件有读和执行权限,需要对配置目录及配置目录中的文件至少有读和写权限,如果启用了 FileZilla Server 的日志记录功能,还要对日志目录及文件有相应的权限,在 FileZilla Server 1.8.2 之前,对中间目录没有权限也不影响程序运行,从 FileZilla Server 1.8.2 开始,需要对 filezilla-server.exe 所在的目录及每一层上级目录都至少有读权限,否则就会出现“服务由于下列服务特定错误而终止: 函数不正确。”的错误。
在 Windows 上,使用 icacls 赋予或者撤销 NTFS 权限。- icacls C:\server\filezilla\ /grant wuxiancheng:R
复制代码 其中 C:\server\filezilla 是 FileZilla Server 程序目录,wuxiancheng 是运行 FileZilla Server 的 Windows 账号名,要根据实际情况改写。R 代表读权限,具体用法可以参考官方文档或运行以下命令查看内建使用说明。相关链接 icacls filezilla |
|