LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2628|回复: 3

SFTP代替FTP传输文件,如何限制用户在家目录?

[复制链接]
发表于 2008-9-28 10:21:19 | 显示全部楼层 |阅读模式
这两天没上网,都没地方问去。急。今天终于可以发帖子问问各位大侠了。

主要看了 /etc/ssh/sshd_config 文件最后第二行。默认开启了SFTP

Subsystem sftp /usr/lib/openssh/sftp-server

想着用最简单实用的一招:

$sudo usermod -s /usr/lib/ssh/sftp-server user

结果没什么用,普通用户想去哪就去哪里。

又看到说要修改: /etc/ssh/sshd_config :

# 注释 Subsystem sftp /usr/lib/openssh/sftp-server
加入下面几行。
Subsystem sftp internal-sftp
Match group sftponly
         ChrootDirectory /home/www
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp

然后:
$ sudo  chown root.root /home/user
$ sudo usermod -d / user
$ sudo adduser user sftponly

结果还是一样。普通用户想到哪里就哪里,根本就限制不住在WWW目录中。

请各位大侠帮忙看看,怎么办。
 楼主| 发表于 2008-9-28 17:41:51 | 显示全部楼层
没人用过吗?郁闷。
回复 支持 反对

使用道具 举报

发表于 2008-10-3 01:46:34 | 显示全部楼层
google之,应该可以找到,以前弄过,稍微有点复杂,实在想不起来了,只记得google有相关资料可查,中文没有就查英文。
回复 支持 反对

使用道具 举报

发表于 2008-10-4 23:19:18 | 显示全部楼层
使普通用户仅使用SFTP而没有使用Shell的权限
默认情况下管理员给系统添加的账号将同时具有SFTP和SSH的权限。让普通用户使用shell执行命令也是有很大的安全隐患的,如果能够禁止用户使用shell执行命令而仅使用SFTP传输文件,就能消除这种安全隐患,完全实现FTP的功能,
正如上文所述,SFTP没有单独的守护进程,只能借助于sshd守护进程,所以我们仍然需要使用SSH服务器,要保证sshd守护进程处于运行状态。具体实现方法如下:
首先,在编译安装时,编译中一定要有“--enable-static” 选项。安装成功后,在安装目录下的bin目录中执行下面的命令:
[root@localhost bin]# ls -l ssh-dummy-shell* sftp-server2*
将看到下列输出内容:
-rwxr-xr-x 1 root root 1350417 Apr 28 16:30 sftp-server2
-rwxr-xr-x 1 root root 3566890 Apr 28 16:30 sftp-server2.static
-rwxr-xr-x 1 root root 72388 Apr 28 16:30 ssh-dummy-shell
-rwxr-xr-x 1 root root 1813412 Apr 28 16:30 ssh-dummy-shell.static
其中带“static”后缀名,且比较大的两个文件就是加上“--enable-static”选项后生成的,后面我们将用到这里两个文件。
下面以添加普通账号test为例讲述具体操作步骤。
1.在“/home”目录(或者将要存放普通用户宿主目录的目录)下创建“bin”子目录,并将两个static文件复制到此目录下(复制后改名去掉static后缀),执行如下命令:
[root@localhost bin]# cd /usr/local/ssh3.2/bin
[root@localhost bin]#cp ssh-dummy-shell.static /home/bin/ssh-dummy-shell
[root@localhost bin]# cp sftp-server2.static /home/bin/sftp-server
[root@localhost bin]#chown -R root.root /home/bin
[root@localhost bin]#chmod -R 755 /home/bin
2.添加一个组,使以后所有禁止使用shell的用户都属于这个组,这样便于管理更多的用户:
[root@localhost bin]#groupadd template
3.在添加系统账号时使用如下命令:
[root@localhost root]#useradd -s /bin/ssh-dummy-shell -g template test
[root@localhost root]#passwd test
[root@localhost root]#mkdir /home/test/bin
[root@localhost root]#cd /home/test/bin
[root@localhost bin]#ln /home/bin/ssh-dummy-shell ssh-dummy-shell
[root@localhost bin]#ln /home/bin/sftp-server sftp-server
[root@localhost bin]#chown -R root.root /home/test/bin
[root@localhost bin]#chmod -R 755 /home/test/bin
3.用户添加成功后,还需要修改/etc/ssh2/sshd2_config文件,将下列内容:
#ChRootGroups sftp,guest
改为:
ChRootGroups sftp,guest,template
修改上面这行内容,主要是为了禁止普通用户查看系统的其它目录,把其权限限制在自己的主目录下。重新启动SSH服务器程序,在客户端使用SSH Secure File Transfer Client登录,即使选择显示根目录,普通用户也看不到其它的任何目录,而是把自己的主目录当作根目录。注意,这里使用的是按用户所属组限制,这样可以使包含在template组内的所有用户都可以实现此功能。若您只要限制个别用户的话,可以修改下面的内容:
#ChRootUsers anonymous,ftp,guest
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表