WinSCP 中普通用户以 root 身份登录 Linux
16lz
2021-01-22
版本说明: Windows 10, CentOS 7, WinSCP 5.7.7 (Build 6257)
问题背景
使用 WinSCP 登录 CentOS 上传文件,使用的是普通用户,且已加入 sudoers
,向 /usr/local
目录上传文件时,提示没有权限。
解决方案
- 首先确保你的目标主机的
sshd
服务正在运行 - 用来在 WinSCP 登录的普通用户已加入
sudoers
获取
sftp-server
的位置从
/etc/ssh/sshd_config
文件中获取:sudo cat /etc/ssh/sshd_config | grep sftp
结果:
Subsystem sftp /usr/libexec/openssh/sftp-server
直接查找:
sudo updatedb
locate sftp-server结果:
/usr/libexec/openssh/sftp-server
/usr/share/man/man8/sftp-server.8.gz
以管理员方式运行 WinSCP,打开对应帐户的
Advanced Site Settings
对话框中,选中Environment
→SFTP
节点,在右边的Protocol options
-SFTP server
输入框中,填入sudo -s /usr/libexec/openssh/sftp-server
,这里的/usr/libexec/openssh/sftp-server
换成在你的系统中,由第 3 步得到的路径,之后保存。在 CentOS 中执行
sudo visudo
以编辑/etc/sudoers
文件- 找到需要在 WinSCP 登录的账户名配置信息,大概在第 98 行,将:
myloginname ALL=(ALL) ALL
改为:myloginname ALL=(ALL) NOPASSWD: ALL
。这一步的目的是切换为root
角色时不需要输入密码,因为 WinSCP 只能执行不需要请求用户输入其他信息(比如:密码等)的命令。
切记:记得使用完后,将这一行的内容恢复到修改前的样子! - 找到
Defaults requiretty
这一行,在前面加一个#
号注释掉这一行,这一步的目的是关闭控制终端。
- 找到需要在 WinSCP 登录的账户名配置信息,大概在第 98 行,将:
到此,即可以 root
角色登录系统啦!
解决方案优化
也许你担心由于上述解决方案的第 5 步,在切换为 root
时不需要输入密码,会造成系统不安全。
确实是这样,如果你系统安全要求较高,我建议你新建一个帐户,专门用于 WinSCP 中以 root
角色登录。
原文链接:http://xueliang.org/article/detail/20160926003344351
更多相关文章
- Media-S 简介(一个开源的DRM解决方案)
- AppScan安全问题解决方案
- PLSQL乱码解决方案
- 数据库不支持中文解决方案(mysql)
- Mysql替代解决方案Cassandra
- [置顶] Android屏幕适配解决方案
- 物流货运移动APP解决方案
- 转:Android Studio Error:Connection timed out: connect.解决方
- android.os.NetworkOnMainThreadException的解决方案