CentOS 7 WinSCP 普通用户上传文件无权限解决
问题描述
Linux 环境:CentOS 7.3 SFTP 工具:WinSCP
无法使用 root 远程登录,使用普通用户登录时上传文件会出现 permission denied 提示,错误返回码为 3。
解决方案
1. 查找 sftp-server 路径
远程登录 Linux 系统,输入 su 命令并输入 ROOT 管理员密码。执行以下命令查找 sftp-server 路径:
find / -name sftp-server -print
2. 修改 sudoers 配置
得到 sftp-server 文件路径后,编辑 /etc/sudoers 配置文件:
visudo
在文本中找到 root ALL=(ALL) ALL,按 i 键进入插入模式,在其下方增加以下内容(将 dejan 替换为你的普通用户名):
dejan ALL=NOPASSWD:/usr/libexec/openssh/sftp-server
保存前需注释掉 Defaults requiretty 限制(部分版本可能不存在此语句):
找到 Defaults requiretty,在其前面加 # 号:
#Defaults requiretty
注意: 如果修改错误不想保存,输入 :q!;保存退出输入 :x。
3. 配置 WinSCP
在 WinSCP 端进行连接设置,填写主机名、端口号、用户名和密码后,点击'高级'按钮。
设置 SFTP
在 SFTP 设置中确认相关参数。
设置 Shell
在 Shell 设置中指定正确的 Shell 路径。
确定保存后即可登录并进行文件上传。
常见问题
- CentOS 7.3 未找到 requiretty 语句:跳过该步骤即可。
- 用户名替换:务必将示例中的
dejan替换为实际使用的普通用户名。


