# 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