一般为了安全,都会禁止root登陆ssh,但是用普通用户在打开winscp会话后无法通过su获得root权限,能操作的文件就很有限了(当然你可以提高普通用户的权限,但并不推荐这样做)。所以在开始会话前就要通过sudo命令切换到root用户。

首先,新建会话的时候协议要选择SFTP或SCP,因为FTP协议不支持这个功能。具体选择哪个,要看你服务器的协议信息。

要看服务器的协议信息,可以进入“Commands” > “Server/protocol Information”.中文对应的是 “命令” > “服务器/协议信息”

可以看到:

可见我使用的是OpenSSH服务。

第一步:选择协议

这里我用了简体中文语言包,所以设置项显示的是中文。协议我选择了SCP就无法登陆,是不是因为我没装SCP服务呢?

第二步:指定SFTP目录

之前查询过协议信息,使用了OpenSSH服务,所以我要为登陆的普通用户指定SFTP服务的二进制文件。

在SFTP标签的SFTP服务器选项,填上:

sudo /bin/sftp-server

当然有的系统可能保存在别的目录,比如我填的就是:

sudo /usr/lib/openssh/sftp-server

如果第一步选择的是SCP协议,那就没有第二步的设置项了,可以直接在SCP/Shell标签,Shell栏填上

sudo -s

 第三步:设置用户权限

因为之前设置的目录对于普通用户是没有访问和执行的,而我们也无法在会话建立后切换到root用户,所以必须给普通用户访问SFTP二进制文件的权限。

先用root用户登陆终端并编辑/etc/sudoers文件。在root那一行下面添加普通用户yourusername,比如:

yourusername ALL=NOPASSWD: ALL

这样设置并不安全,该用户可以从任何主机连接,并不用输入root密码而使用任何命令。

所以需要限制该用户的命令,做如下修改:

yourusername ALL=NOPASSWD: /bin/sftp-server

后面的SFTP目录根据自己的情况填写,这样该用户执行SFTP服务的时候就不需要root密码了。

登陆后,你就可以看到已经有权限来访问所有文件了。

官方FAQ

转载请注明出处:www.aojgame.com

[related_posts limit="3"]