需求:
1. 要求创建一个用户,可以ftp至hpux主机,但不能login系统.
2. 此用户登录ftp后只能被限制在某一指定的目录中(例如用户的home目录).
配置方法如下:
1.创建ftp_user组.
2.创建ftp_user用户.
3.编辑/etc/passwd文件,将ftp_user用户这一行改成如下格式:
ftp_user:*:200:200::/home/ftp_user/./:/bin/false
(注:此处home路径./可省略;shell也可写成/usr/bin/ksh,但与此同时要在ftp_user用户的.profile文件首行加上 exit 即可禁止登陆。)
4.编辑/etc/group文件,将ftp_user组这一行改成如下格式:
ftp_user::200:ftp_user
5.编辑/etc/inetd.conf文件,将ftp stream tcp nowait root /usr/lbin/ftpd ftpd -l改成:
ftp stream tcp nowait root /usr/lbin/ftpd ftpd -l -a
6.到/home/ftp_user目录中创建相关目录并复制所需文件:
# cd /home/ftp_user
# mkdir -p usr/bin
# mkdir -p etc
# cp /etc/passwd etc/ (把passwd中除ftp_user的用户条目删掉)
# cp /etc/group etc/ (把group中除ftp_user的条目删掉)
# cp /usr/bin/ls usr/bin/
# cp /usr/bin/pwd usr/bin/
7.到/etc/ftpd目录
# cd /etc/ftpd
# cp /usr/newconfig/etc/ftpd/examples/ftpgroups ./
# cp /usr/newconfig/etc/ftpd/examples/ftpaccess ./
8.编辑/etc/ftpd/ftpgroups,/etc/ftpd/ftpaccess文件,文件内容可以使用以下模板:
# vi /etc/ftpd/ftpgroups
ftp_user:ENCRYPTED PASSWORD HERE:archive
# vi /etc/ftpd/ftpaccess
class all real,guest,anonymous *
limit all 10 Any /etc/msgs/msg.dead
guestgroup cdalog
loginfails 5
readme README* login
readme README* cwd=*
message /welcome.msg login
message .message cwd=*
compress yes all
tar yes all
chmod no guest,anonymous
delete no guest,anonymous
overwrite no guest,anonymous
rename no guest,anonymous
log commands real
log transfers anonymous,real inbound,outbound
shutdown /etc/shutmsg
ftpaccess模版:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# @(#)B.11.11_LR
#
# 登陆失败次数
loginfails 2
# 定义一个名叫all的类,包含所有实际的,guest,anonymous用戶,可以从任何地点登录
class all real,guest,anonymous *
# 注:(class local real 111.111.111.*
# 定义一个名叫local的类,包含所有的本系统实际帐号(real),而且这个类只能从
# 111.111.111.1-111.111.111.254登录)
# 最大允许本地任何的20个用户ftp登录Server
limit local 20 Any /etc/msgs/msg.toomany
limit remote 100 SaSu|Any1800-0600 /etc/msgs/msg.toomany
limit remote 60 Any /etc/msgs/msg.toomany
readme README* login
readme README* cwd=*
# message是当ftp用戶产生某个动作操作时,自動记载到 /home/ftp_user/.login文件中
message /.login login
message /welcome.msg login
message .message cwd=*
# 允许压缩-解压模式,使用戶可以通过服务器得到解压文件
compress yes local remote
tar yes local remote
# allow use of private file for SITE GROUP and SITE GPASS?
private yes
# 对匿名用户的口令进行校验,rfc822表示口令必须是一个标准的email帐号,还有另外两个选项是none(表示不检查)和trival(口令中至少有一个@符号);warn表示发现口令不合法时对用户产生告警信息,但仍然允许登陆,可以使用enforce选项表示一旦口令形式不合法就禁止登陆。
# passwd-check []
passwd-check rfc822 warn
# 记录用户传输的文件,被记录的用户是匿名和实际帐号,记录的方向包括上传和下载
log commands real
log transfers anonymous,real inbound,outbound
# 一般没什么用,但放着也没关系
shutdown /etc/shutmsg
# 定义用戶是否可以使用chmod,overwrite,rename,delete等方法改变服務器上的文件,上面的定义是只有真正
的用戶帐号才可以使用上述方式,而guest和anonymous用户沒有(no)这个权力。
# all the following default to "yes" for everybody
delete no guest,anonymous # delete permission?
overwrite no guest,anonymous # overwrite permission?
rename no guest,anonymous # rename permission?
chmod no guest,anonymous # chmod permission?
umask no guest,anonymous # umask permission?
# 定义上载方式,/home/ftp_user目录下的所有/incoming*目录都可以(yes)上传,上载文件属组为ftp_user用戶,ftp_user用户组,上载文件的属性自动设置为0600,用户可以建立自己的子目录(dirs,否则为nodirs)
# specify the upload directory information
upload /home/ftp_user /incoming* yes ftp ftp 0600 dirs
upload /var/ftp * no
upload /var/ftp /incoming yes root daemon 0600 dirs
upload /var/ftp /bin no
upload /var/ftp /etc no
# directory aliases
alias inc /incoming
# cdpath
cdpath /incoming
cdpath /pub
cdpath /
# path-filter...
path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9_\.]*$ ^\. ^-
path-filter guest /etc/pathmsg ^[-A-Za-z0-9_\.]*$ ^\. ^-
# specify which group of users will be treated as "guests".
guestgroup ftp_user
# 另外,/etc/ftpusers定义了不允许ftp的用户列表
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9.编辑/etc/shells文件,文件内容如下:
/bin/false
/sbin/sh
/usr/bin/ksh
10.重启inetd进程:
# cd /sbin/init.d
# ./inetd -c
配置完毕,测试功能.
参考资料: