linux-chroot系统

本来是想直接记录到github上的脚本目录中的,但想了下这个只能算是个草稿吧,还是记录到博客中方便翻

groupadd -g 1002 www mkdir /data/chroot-sftp mkdir -p /data/chroot-sftp/{bin,usr,etc,lib64,home,dev} mknod -m 666 /data/chroot-sftp/dev/null c 1 3 mknod -m 666 /data/chroot-sftp/dev/tty c 5 0 mknod -m 666 /data/chroot-sftp/dev/zero c 1 5 mknod -m 666 /data/chroot-sftp/dev/random c 1 8 chmod o+t /data/chroot-sftp/dev/null /data/chroot-sftp/dev/tty /data/chroot-sftp/dev/zero /data/chroot-sftp/dev/random cd /data/chroot-sftp/usr ln -sf ../bin ./bin ln -sf ../lib64 ./lib64 cat >> /etc/ssh/sshd_config <<EOE Match Group www ChrootDirectory /data/chroot-sftp ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no EOE cp -p /bin/ls /bin/cat /bin/rm /bin/echo /bin/sh /bin/touch /bin/vi /bin/mkdir /data/chroot-sftp/bin/ for i in /bin/{ls,cat,echo,rm,sh,touch,vi,mkdir}; do list=$(ldd ${i} | egrep -o '/lib.*\.[0-9]'); for _so in $list; do /bin/cp -v ${_so} /data/chroot-sftp${_so}; done; done # 创建sftp运行账号 useradd sshfsdir -u 1010 -g 1002 -M -d /home/sshfsdir -s /bin/nologin mkdir -p /data/chroot-sftp/home/sshfsdir chown sshfsdir:www /data/chroot-sftp/home/sshfsdir chmod 700 /data/chroot-sftp/home/sshfsdir # 生成公私钥用于远程登陆(实际创建路径为/data/chroot-sftp/home/sshfsdir/.ssh/,保留私钥给远程登陆即可) su - sshfsdir -s /bin/bash -c "ssh-keygen -t rsa -b 4096" su - sshfsdir -s /bin/bash -c "cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys" # 创建系统映射目录 , 让系统可查询到该用户 ln -sf /data/chroot-sftp/home/sshfsdir /home/sshfsdir