www.NASPod.com @ www.NASPod.cn

标签 debina 下的文章

一. 安装ssh和sudo

1 apt-get install ssh
2 apt-get install sudo
3 在root设置sudoers配制文件
chmod +w /etc/sudoers
nano /etc/sudoers
添加一行
用户名 ALL=NOPASSWD: /usr/lib/openssh/sftp-server
其中username是你的用户名, /usr/lib/openssh/sftp-server有的系统可能保存在别的目录,可以查看/etc/ssh/sshd_config文件中Subsystem sftp /usr/lib/openssh/sftp-server。
保存 更改sudoers文件权限
chmod 0440 /etc/sudoers
退出root

二. 禁用root后如何使用winscp获得root权限
第一步:选择协议
这里我用了简体中文语言包,所以设置项显示的是中文。协议我选择了SCP就无法登陆,是不是因为我没装SCP服务呢?

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

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

sudo /usr/lib/openssh/sftp-server
当然有的系统可能保存在别的目录,可以查看/etc/ssh/sshd_config文件中Subsystem sftp /usr/lib/openssh/sftp-server。
如果第一步选择的是SCP协议,那就没有第二步的设置项了,可以直接在SCP/Shell标签,Shell栏填上:
sudo -s

第三步:设置用户权限(参照第一步中sudo设置)
因为之前设置的目录对于普通用户是没有访问和执行的,而我们也无法在会话建立后切换到root用户,所以必须给普通用户访问SFTP二进制文件的权限。
先用root用户登陆终端并编辑/etc/sudoers文件。在root那一行下面添加普通用户yourusername,比如:
Shell

yourusername ALL=NOPASSWD: ALL
这样设置并不安全,该用户可以从任何主机连接,并不用输入root密码而使用任何命令。
所以需要限制该用户的命令,做如下修改:
Shell

yourusername ALL=NOPASSWD: /usr/lib/openssh/sftp-server
后面的SFTP目录根据自己的情况填写,这样该用户执行SFTP服务的时候就不需要root密码了。
登陆后,你就可以看到已经有权限来访问所有文件了。
http://winscp.net/eng/docs/faq_su