如何建立一个只归属于某个目录下的ftp账户?如ftptest通过ftp登陆到系统时,系统认为/home/ftptest就是他的根(/)。
以下方法在hpux11下测试通过,如在hpux下实现此功能,需要安装wu_ftp这个软件,或者更新你的ftp。
假设要在系统中建立一个ftptest(属于ftptest组),要想在它ftp的时候始终在/home/ftptest目录以及它的子目录下。下面是他的建立步骤。
1。在/etc/passwd中建立相应的ftptest条目,注意他的主目录的写法:
ftptest:Aci$xi:555:555:ftp user for chroot:/home/ftptest/./:/bin/ksh (确信/etc/shells中有/bin/ksh,否则请加上,密码由你自己决定 )
2。在/etc/passwd中建立相应的组ftptest
ftptest::555:ftptest
3。建立/home/ftptest以及相应的目录(主要是~ftp/usr/bin和~/ftp/etc)
#mkdir /home/ftptest
#chown ftptest:ftptest /home/ftptest
#su - ftptest
$pwd //make sure it is under /home/ftptest
$mkdir -p usr/bin
$cp /sbin/ls usr/bin ; cp /bin/pwd usr/bin
$mkdir etc
$cp /etc/passwd etc ; cp /etc/group etc (为了安全,你需要修改passwd中的不必要的项,如root)
4。编辑/etc/inetd.conf 确信ftp的那一行是这样写的:
ftp stream tcp nowait root /usr/lbin/ftpd ftp -l -a (一定要加上 -a 这 个参数)
5。重新初始化inetd : 执行: inetd -c
6。产生相应的ftpaccess/ftpgroups文件
#cd /etc/ftpd
#touch ftpgroups
#vi ftpaccess //这个文件的内容大致如下:
-=-=-=-=-= Cut Here =-=-=-=-=-
class all real,guest,anonymous *
# Define the line that limits the ftponly group to their own directories
# in the ftp-root heirarchy.
guestgroup ftptest //这里要和你的组ftptest一致。
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 transfers anonymous,real inbound,outbound
shutdown /etc/shutmsg
passwd-check rfc822 warn
-=-=-=-=-= Cut Here =-=-=-=-=-
HP-UX下FTP的相关配置
1. 匿名FTP
这是最常见的服务:一台机器就是一个单独的FTP服务器。大多数的UNIX版本会自动完成这一设置:通常ftp的根目录为/home/ftp如果由于某些原因,在你的机器上并未设置匿名FTP服务,它的设置工作如下所示:
以下叙说中的~ftp是在/etc/passwd文件中指定的匿名ftp用户的主目录。
FTP守护进程,ftpd,会识别出匿名用户并对帐户进行适当地调整,访问的根目录会设置为~ftp。
这意味着用户最多只能访问~ftp中的文件和目录。当然还可以进行更多的限制。由于文件系统的根已经修改,需要对几个目录和文件进行设置以满足最低的功能要求。
~ftp的属主应为root而且只有root 才能写入。
~ftp/bin的属主也应为root而且只有root 才能写入。它其中应该包含ls程序。
~ftp/bin/ls的属主应为root,其访问权限应该为—x—x—x模式,如果不是这样,可以用chmod 111 ~ftp/bin/ls来修改。
~ftp/lib应该包含libc.so.5。这些内容可以在/lib目录下找到。
如果打算让列表将用户和组ID翻译成名字,则需要创建~/ftp/etc目录。它应当具有755访问权限,并且应包含将名字和ID相关联的passwd和group文件。
加密的口令字段并未使用,应当置为空。唯一需要存在的字段是username,UID,和GID。
上载和下载目录~ftp/pub应该具有755访问模式,并且属主应为ftp。
这样才能允许其他人向目录中上载内容或从目录中读取内容。当然也可以按自己的期望修改所有权和访问权限
ftp用户在/etc/passwd中的条目应为:
ftp: * : 14: 50 : FTP user : /home/ftp;
FTP是由inetd控制的服务,因此在/etc/services中也要有一个对应项。一般都是设置好的,如果没有,可以手工加入下一项:
ftp 21/tcp
2.系统中其它的用户的FTP访问
当其它用户帐号(不是anonymous或ftp)连接系统时,必须满足三个条件才能授予访问权限。
(1)用户名和口令必须有效。
(2)用户名必须不在/etc/ftpusers中。
(3)用户必须有一个有效的shell,也就是说,他的shell必须出现在/etc/shells列表中。
3. 设置仅可以进行FTP连接的帐号
设置用户帐号仅能进行FTP连接是可能的。这些帐号类似于匿名帐号并且能够与之共存。由于根目录已被重置,需要设置bin,lib和etc目录,设置的方法通在匿名帐号种设置它们是一样的。
要设置特定的帐号仅可进行FTP访问需要编辑/etc/ftpaccess文件。
以下就是一个例子,其中设置了两个用户,ftpbob和jane作为只能使用FTP功能的用户。
#
# /etc/ftpaccess
#
class all real,guest,anonymous *
class ftponly ftpbob,jane *
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 no guest,anonymous
delete no guest,anonymous
rename no guest,anonymous
overwrite no guest,anonymous
guestgroup ftponly
class 行设置用户组和主机匹配模式以匹配远程主机。“*” 号匹配所有主机。
相应的/etc/passwd项为:
jane:9pthxXoQVw:518:518:jane’s FTP-on
ftpbob:l8Leijpehfp:518:518:Bob’s FTP-on
这两个用户的shell都是有效的shell,并且还会拒绝shell访问。主目录将变成ftp会话的根目录。除此之外,ftpbob帐号会修改目录到/a/ftp/ftpbob/incoming。
可以注意到ftpaccess文件还设置了其他一些参数。
real是任何有效帐号的关键字,“anonymous”代表任何匿名用户,”guest“指guest级别的访问帐号。
compress和tar项告知ftpd何时允许动态的压缩和解压缩,存档和恢复(tar/untar)。
README和messages项设置文件搜索模式以便在连接和进入目录(README)时候自动显示信息。
在上面的例子中,低级访问帐号(anonymous和guest)不能删除文件、修改文件模式或重新命名文件。
Loginfails完成立所期望的工作、在指令次数的登陆尝试失败后放弃。