自从 0.99.2 版本开始, pure-ftpd 就开始支持虚拟用户。虚拟用户方式十分类似 /etc/passwd ,将用户的相关信息,如口令、姓名、 uid 、目录等,存入文件。但是该文件只适用于 FTP 。
这意味着,可以为 FTP 设置虚拟用户,而不需要在系统中添加系统用户。同时,可以为这些用户单独设置配额、 ratio 、带宽等限制。很多虚拟用户可以共享同一个系统用户的属性,因此建议为这些虚拟用户单独创建一个系统用户,从而方便管理。
LNMP 一键包里pure ftpd的命令行是:
lnmp ftp {add|list|edit|del|show}
使用lnmp ftp add 的方式增加FTP账户后,再使用 lnmp ftp show 查看:
Login : sanxing Password : $6$1iHVhLYDFs3bPep... UID : 1001 (www) GID : 1001 (www) Directory : /storage/wwwroot/sanxing.abc.net/./ Full name : Download bandwidth : 0 Kb (unlimited) Upload bandwidth : 0 Kb (unlimited) Max files : 0 (unlimited) Max size : 0 Mb (unlimited) Ratio : 0:0 (unlimited:unlimited) Allowed local IPs : Denied local IPs : Allowed client IPs : Denied client IPs : Time restrictions : 0000-0000 (unlimited) Max sim sessions : 0 (unlimited)
这种方式创建了一个虚拟的ftp用户 sanxing,依赖于系统创建的 ftp 用户:
cat /etc/passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin cat /etc/group ftp:x:50:
下面重点来了,我们来把这个 sanxing 用户设置为只读权限:
一、FTP只读权限设置:
打开 /usr/local/pureftpd/etc/pureftpd.passwd 修改UID值1001(www)为其他UID(必须大于MinUID=100),比如9999(不存在的用户ID):
sanxing:$6$1iHVhLYDFs3bP:1001:1001::/storage/wwwroot/sanxing.abc.net/./::::::::::::
修改为
sanxing:$6$1iHVhLYDFs3bP:9999:1001::/storage/wwwroot/sanxing.abc.net/./::::::::::::
或者直接命令行修改:
/usr/local/pureftpd/bin/pure-pw usermod sanxing -u 9999 -g 1001
二、生成索引文件,立即生效:
/usr/local/pureftpd/bin/pure-pw mkdb
三、修改目录的权限(其他用户other给读权限,删除写权限):
chmod -R o-w /storage/wwwroot/sanxing.abc.net/ chmod -R o+r /storage/wwwroot/sanxing.abc.net/
注意,有些程序,比如 laravel 需要一些目录有 执行 权限(x):
现在登录FTP,用户就只有查看的权限了。
补充:
pure-pw的使用方法:
Usage : pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>] -D/-d <home directory> [-c <gecos>] [-t <download bandwidth>] [-T <upload bandwidth>] [-n <max number of files>] [-N <max Mbytes>] [-q <upload ratio>] [-Q <download ratio>] [-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>] [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>] [-y <max number of concurrent sessions>] [-z <hhmm>-<hhmm>] [-m] pure-pw usermod <login> -f <passwd file> -u <uid> [-g <gid>] -D/-d <home directory> -[c <gecos>] [-t <download bandwidth>] [-T <upload bandwidth>] [-n <max number of files>] [-N <max Mbytes>] [-q <upload ratio>] [-Q <download ratio>] [-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>] [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>] [-y <max number of concurrent sessions>] [-z <hhmm>-<hhmm>] [-m] pure-pw userdel <login> [-f <passwd file>] [-m] pure-pw passwd <login> [-f <passwd file>] [-m] pure-pw show <login> [-f <passwd file>] pure-pw mkdb [<puredb database file> [-f <passwd file>]] [-F <puredb file>] pure-pw list [-f <passwd file>]