0
点赞
收藏
分享

微信扫一扫

chroot(chroot failed to run command)


REDHAT企业版LINUX5.0的DNS配置文件在哪请问我在R

rpm -qa |grep name

rpm -ql namexxx.rpm

REDHAT企业版LINUX5.0的DNS配置文件在哪请问我在R

rpm -qa |grep name

rpm -ql namexxx.rpm

怎么使用Chroot文件系统限制SFTP登录用户访问文件夹权限

在早期的UNIX系统中,根目录在文件系统中是固定的。在包括Linux的现代UNIX中,你可以为每个进程都定义一个根目录。而chroot命令则可以允许你运行/目录以外的进程。

本文将会介绍怎么限制SFTP用户访问其home文件夹或者设置好后制定的目录。即通过ssh登录的用户只能访问给指定的home文件夹下面的某些文件夹,而不是整个home文件夹。

限制用户的访问权限是至关重要的,特别是在一个公用的环境中,只有这样才能让不同的用户只能访问自己分配的文件夹.

重要提示:本文的主要目的也可以设置只通过SFTP登录的用户而不是SSH登录的用户,看了本文教程后可以设置成只能进行文件传输而不允许SSH登录.

最简单的方法就是给SFTP权限创建chrooted文件系统. 这种方法在所有的Unix/Linux操纵系统上都是可以通用的. 使用chrooted我们可以限制用户在他们自己的home文件夹或者制定的文件夹

Restrict Users to Home Directories

In this section, we will create new group calledsftpgroupand assign correct ownership and permissions to user accounts. There are two choices to restrict users to home or specific directories, we will see both way in this article.

创建或更改用户、用户组

首先我们要限制下已有的用户,就那 tecmint举例吧,改用户的home文件路径是/home/tecmint.我们使用下面的命令创建一个新的用户组sftpgroup:

# groupadd sftpgroup

下面分配‘tecmint’ 用户到sftpgroup用户组去.

# usermod -G sftpgroup tecmint

当然你也可以创建一个新的用户比如 senthil,然后分配给tosftpusers用户组.

# adduser senthil -g sftpgroup -s /sbin/nologin # passwd tecmint

修改SSH配置文件

打开 /etc/ssh/sshd_config 配置文件,加入下面代码.

Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /home ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no

保存文件,重启sshd让其生效

# systemctl restart sshd OR # service sshd restart

如果你想让多个用户的跟目录都指定到同一个目录来,那就需要修改每个用户home文件夹的权限了,这样才能避免用户可以访问别个用户的home文件夹

# chmod 700 /home/tecmint

验证SSH和SFTP用户登录

 现在就从本系统登录,然后尝试登录到远程的服务器

# ssh tecmint@192.168.1.150

tecmint– 是远程服务器的登录用户名.

192.168.1.150– 远程服务器IP

然后就会输出类似这样的信息:

tecmint@192.168.1.150's password: Could not chdir to home directory /home/tecmint: No such file or directory This service allows sftp connections only. Connection to 192.168.1.150 closed.

那下面尝试使用SFTP登录试试.

# sftp tecmint@192.168.1.150 

然后就会输出类似这样的信息:

tecmint@192.168.1.150's password: Connected to 192.168.1.150. sftp>

下面看看当前的working目录

sftp> pwd

Remote working directory: /

sftp> ls

tecmint

在这里,tecmint就是一个home文件夹. 进入这个目录去创建一些你喜欢的文件或者文件夹测试下.

sftp> cd tecmint

Remote working directory: /

sftp> mkdir test

tecmint

下面在linux中出于安全的需要,我们会禁止某些用户ssh登陆系统进行操作。我这里以centos操作系统为例记录下如何进行处理。

1、打开sshd的配置文件

vi /etc/ssh/sshd_config2、修改该配置文件,增加或修改如下行

# 禁止用户user1登陆,多个空格分隔denyusers user1 # 禁止用户组group1的所有用户登录,多个空格分隔denygroups group13、保存配置后,重启sshd

/etc/rc.d/init.d/sshd restart完成上面的配置后,就可以禁止用户或用户组的用户进行登录了,第2步中的两个是可以只填一个的,可以根据需要进行调整。配置完毕后,在其他linux机器上使用如下命令进行测试:

# 使用ssh测试[root@servera ~]# ssh user1@192.168.1.168user1@192.168.1.168's password: permission denied, please try again. # 使用sftp测试[root@servera ~]# sftp user1@192.168.1.168user1@192.168.1.168's password: permission denied, please try again.可以看到,确实被系统禁止了,从而也就完成了我们想要的控制了。但这个有一个缺陷是,无法禁止只允许sftp而不允许ssh,如果要这样做,估计只能够单独搭建ftp服务器,比如vsftp,后续再考虑这个。

如何安装centos的chroot环境

1)首先,给chroot环境创建一个目录,例如:

mkdir /data/jails/myos

2)从centos的官方网站或者镜像网站下载对应版本的centos-release文件并安装,例如:

wget centos-release-5-8.el5.centos.x86_64.rpm up.2cto.com/2012/0327/20120327042858716.rar

rpm -i --nodeps --root=/data/jails/myos centos-release-5-8.el5.centos.x86_64.rpm

3)给chroot环境安装yum工具,这样我们就可以进入chroot环境继续安装其它的软件包:

yum -y --installroot=/data/jails/myos install yum

4)给chroot环境mount一些节点(这里不是必须的,但是如果w.2cto.com你需要在chroot环境里面开启某些服务的话,最好做上):

mount --bind /dev /data/jails/myos/dev

mount --bind /proc /data/jails/myos/proc

mount --bind /sys /data/jails/myos/sys

5)搭建完成,进去调整一下时区就大功告成了:

chroot /data/jails/myos

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

补充)如果你发现你的系统网络有问题,可能是你的DNS设置不对,请参考一下主环境里面的/etc/resolv.conf文件。在输入用户名的地方输入root,然后登陆即可

如果是ssh登陆,你可以如下操作

ssh root@服务器ip

举报

相关推荐

0 条评论