wu-ftp限制用户目录的方法 [ 网站地图 ]

发表于:2010-3-16 浏览:91 作者: 来源:互联网

关键字:wu-ftp,限制用户目录

描述:1、给此类ftp的用户单独建立一个组,以便日后的安全设置#vi/etc/groupftpusertest::110: #vi/etc/passwdvip:uRYSITFlfU2.A:114:110::/etldata/data/vip:/sbin/shbms:SwbgoWL9TpkPA:116:110::/etldata/dat

1、给此类ftp的用户单独建立一个组,以便日后的安全设置
# vi /etc/group
ftpusertest::110:

# vi /etc/passwd
vip:uRYSITFlfU2.A:114:110::/etldata/data/vip:/sbin/sh
bms:SwbgoWL9TpkPA:116:110::/etldata/data/bms:/sbin/sh
cal:bEdkOC98pZvyA:117:110::/etldata/data/cal:/sbin/sh
bil:88Zkp7x4vppOQ:118:110::/etldata/data/bil:/sbin/sh
ics:MClDg34tAuZaA:119:110::/etldata/data/ics:/sbin/sh
ins:RHVZvyZElPbBQ:120:110::/etldata/data/ins:/sbin/sh
obs:VNo.ssJ0UU50g:121:110::/etldata/data/obs:/sbin/sh
stl:UIHxzZz8S.U6c:122:110::/etldata/data/stl:/sbin/sh

2、禁止这个组的用户以telnet方式登陆,不给该组用户指定login shell 就可以了
# vi /etc/profile
    uid=`id -g`
    if [  "$uid" -eq "110" ]; then
        echo "Sorry, no logins allowed, try later!"
        sleep 5
        exit 0
    fi

3、修改ftpaccess配置文件  
# vi /etc/ftpd/ftpaccess
class all real,guest,anonymous *   注释:real表示server上真实的用户,也就是passwd里有的用户
loginfails 5
readme README * login
readme README * cwd= *
message /welcome.msg login
message .message cwd= *
compress yes all
tar yes all
overwrite yes real
chmod yes guest
delete yes guest
overwrite yes guest
rename yes guest
guestgroup ftpusertest  注释:定义guest用户的范围。就是server里属于ftpusertest这个组的用户都是guest用户。
restricted-gid ftpusertest  注释:这一句好重要,限制了guest用户在自己的目录里。

4、修改inetd.conf文件,找到ftp那行,然后在末尾加上-a,表示读取ftpaccess配置文件
# vi /etc/inetd.conf
ftp          stream tcp6 nowait root /usr/lbin/ftpd    wu.ftpd -a

5、重启inetd服务
# killall -HUP inetd

6、用ls 命令看不到ftp用户主目录下的文件,想要看到的话,需要建立相应下面的目录:

# cd /etldata/src_data/ins/huawei
# mkdir usr
# chown bin:bin usr
# chmod 555 usr

# cd /etldata/src_data/ins/huawei/usr
# mkdir bin
# chown root bin
# chmod 555 bin

#cp -p /sbin/ls    /etldata/src_data/ins/huawei/usr/bin/ls

补充知识:

1、限制所有用户的远程登录

在/etc/profile文件中适当的位置写下这段语句:

ttyno=`tty` # 获得用户登录的tty信息
if [ $ttyno != "/dev/console" ]; then # 判断是否从控制台登录
        echo "You cannot login remotely"
        ttyno=`echo $ttyno | cut -c6-20 ` # 获得终端的识别符 如 pts/?
        pid=`ps -t $ttyno|grep -v ps|tail -1|awk ‘{print $1}‘` # 获得该终端进程号
        kill -9 $pid # 杀掉该进程
        exit 1
fi

说明: 先判断用户是不是通过CONSOLE登录上来的,如果是则允许登录,否则找到该终端的进程号,使用kill命令断掉终端连接。

当然,通过将/etc/inetd.conf文件中的telnet行注释掉可以屏蔽远程用户的telnet服务,但是无法管理ssh.使用这段脚本就都管了。

2. 禁止指定用户的远程登录

思路:在/etc目录下创建一个login-user文件,该文件的每一行是一个允许远程登录的用户的帐号。为了安全,建议将该文件设为0600属性。然后在/etc/profile文件中写下如下脚本:

ttyno=`tty|cut -c6-20` # 获得该登录的终端信息,如 pts/?
user=`/usr/ucb/whoami` # 获得用户的帐号
grep -w $user /etc/login-user # 检查/etc/login-user文件中是否有该用户
if [ $? -ne 0 ]; then # 如果没有该用户,则拒绝该用户的登录
        echo "You have not the privilege to  login remotely"
        pid=`ps -t $ttyno|grep -v ps|tail -1|awk ‘{print $1}‘`
        kill -9 $pid
        exit 1
fi


站长资讯网 做中国最丰富的资讯网站 沪ICP备05004089号