如何在LINUX上建立虚拟用户

 我来答
Twilght异形
2011-03-22
知道答主
回答量:37
采纳率:0%
帮助的人:17.3万
展开全部
为vsftpd 建立虚拟用户
ftp 2009-07-21 16:07:34 阅读155 评论0 字号:大中小 订阅
Linux的FTP服务支持3种用户:
1.匿名帐户
2.本地帐户
3.虚拟用户
为什么要使用虚拟用户:
匿名帐户可以很好的保证FTP服务器的安全性,但是,对匿名用户的权限管理不够灵活.如果想对访问FTP的帐户给予更多的权限,就可以用本地帐户来实现. 但是,本地帐户默认情况下是可以登陆Linux系统的,这样对Linux系统来说是一个安全隐患.那么怎么能在灵活的赋予FTP用户权限的前提下,保证 FTP服务器乃至整个Linux系统的安全呢?使用虚拟用户就是一种解决办法.
下面,我们就一起来学习,该怎样在Linux下配置FTP服务器的虚拟用户.
开始配置前,让我们先大概了解下FTP虚拟用户的工作原理:
虚拟用户,顾名思义,并不是一个合法的Linux系统帐户,但是他可以用来登陆该系统上运行的FTP服务器.
当用户在连接上FTP服务器后,会被要求输入用户名和密码.FTP服务器在拿到这个用户名和密码后,会调用相应的PAM认证模块对,和系统中的FTP认证文件进行相比较.如果该用户名和密码与FTP认证文件中的某条记录相符,就通过认证,然后该帐户就被映射成一个Linux下的本地帐户,然后根据使用该本地帐户对FTP资源进行访问.否则则断开该连接请求.
了解了FTP虚拟用户的工作原理后,我们就可以开始配置FTP虚拟用户了.
整个过程可以分这几个步骤:
1.准备一个虚拟用户的口令库文件.该文件中保存的用户名和密码是用户连接FTP服务器时,需要输入的用户名和密码.文件可以自己创建,位置无关紧要,文件格式为:奇数行为用户名,偶数行为密码.
例如:touch login.txt //创建一个名为login.txt的虚拟用户口令库文件
vi login.txt //编辑该口令库文件
mike //虚拟用户mike
123 //虚拟用户mike的密码
john //虚拟用户john
321 //虚拟用户john的密码
保存退出.
2.用刚才建立的虚拟用户口令库文件生成FTP服务器的认证文件.该认证文件是一个被加密后的密文.PAM在调用相应的认证模块后,会对从FTP服务器发来的用户名和密码进行加密,然后在跟该文件进行对比,发现相符条目后,登陆用户才会被允许登陆.
db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db
//在运行该命令前,别忘记安装db4-utils软件包,该包包含有db_load命令等.关于该命令的使用不在本文讨论范围内.其中-f参数后跟的为刚才创建的虚拟用户口令库文件.最后的路径为生成的FTP认证文件的存放位置.
为了进一步保证安全,可以将该FTP认证文件的权限设置为600.
3.建立虚拟用户所需要的PAM配置文件.由于FTP服务器在接受到用户的用户名和口令后会调用PAM认证,所以我们还要创建虚拟用户的PAM配置文件.
我们将该文件保存在/etc/pam.d目录下,文件名暂时取为:vsftpd.这里要注意一点就是,该文件名要与FTP服务主配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=vsftpd选项的选项值相同.
创建好该文件后,将下面的内容加入到该文件中:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
改好后,保存退出(注意,/etc/pam.d/vsftpd 这个文件只能有上面两行代码有效,其他内容请用#号注释掉).注意3个红色文件的文件名.该3个文件为1个文件,只不过在使用中写法不同.
4.由于用户在通过PAM的认证后要被映射成一个本地用户,所以我们还要建立一个本地用户供虚拟用户使用.
我们只需要对该本地用户赋予FTP主目录的适当访问权限就行.即使FTP服务器遭到攻击,这个本地用户也没有访问其他目录的权限,相对比较安全一些.
useradd -d /home/ftpsite virtual //用户名为virtual,主目录为FTP的根
chmod 700 /home/ftpsite //将其权限设置为700,可以根据实际情形进行修改
**更正(ftp目录归属与被用于ftp的虚拟用户的情况下)**
000(---------) 可切仅可登陆
500(r-x------) 可见文件列表,可下载,不可上传与ftp上不同名的文件,不可删除、改名、新建文件夹
700(rwx------) 可上传下载文件,可修改文件名,可删除文件,可建立文件夹,可移动文件(可做全部操作)(vsftpd 配置许可的情况下)
5.在FTP的主配置文件中,启用FTP虚拟用户.增加如下选项即可:
guest_enable=YES
guest_username=virtual //将虚拟用户映射成本地的哪个用户.这里用的是virtual,刚才建
立的那个用户.
pam_service_name=/etc/vsftpd/vsftpd //切记要修改该项的值
6.配置到这里就完成了,别忘记重启FTP服务进行测试.
7.为不同的虚拟用户分配权限
默认情况下,虚拟用户拥有相同的权限,就是virtual的权限,我们可以根据实际需求对不同的虚拟用户分配权限.
首先在FTP的主配置文件中加一个选项:
user_config_dir=/etc/vsftpd_user_conf //文件名和路径都可以自己定义
然后创建该目录.
mkdir /etc/vsftpd_user_conf
下面就可以在该目录下编辑不同虚拟用户的权限配置文件了,比如要对mike编辑其权限.
touch mike //建立mike的权限文件.文件名要与虚拟用户名相同
可以根据实际需求为该文件添加下面的选项和值:
anon_world_readable_only=NO //表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES //表示用户可以上传文件
anon_mkdir_write_enable=YES //表示用户有创建和删除目录的权限
anon_other_write_enable=YES //表示用户具有文件改名和删除文件的权限
另外:修改 /etc/selinux 文件夹下的 config 文件,SELINUX=enforcing 修改为 SELINUX=disabled
到这里,虚拟用户就算完成配置完成了.
不过,有一个问题,好象在配置完虚拟用户后,不关FTP主配置文件里怎样配置,匿名用户和本地用户都不能登陆FTP服务器了.该怎样解决这个问题呢?
如果不能上传文件,如果其他配置都和上面一样,而且ftp主目录的权限设置为777都不能上传的话,则可能是防火墙的问题:
========= 以下转自:(http://www.hebgh.org/bbs/Topic.aspx?BoardID=18&TopicID=321) =========
Vsftpd匿名用户无法上传的解决
在CentOS下,通过#yum -y install vsftpd安装好vsftpd并通过编辑/etc/vsftpd/vsftpd.conf进行配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
在/var/ftp/下建立upload目录,设置/var/ftp/upload目录的属性为777,将其属主改为ftp用户
chmod -R 777 /var/ftp/upload
chown ftp:ftp /var/ftp/upload
重启vsftpd。
至此,按理说vsftpd的匿名用户在ftp的upload目录下应具有下载、上传、建目录、删除的权限,但在上传时,却出现了错误
200 Switching to Binary mode.
200 PORT command successful.Consider using PASV.
553 Could not create file.
试了好多天,一直在配置文件上和目录权限上找原因,可都没有解决问题。
今天,看到一篇文章,说出现Consider using PASV是防火墙的原因。
通过setup打开防火墙配置项,看到有SELinux项,有强制、允许、禁用三项,选禁用后,vsftpd的匿名用户就可以进行上传,建目录等操作了。

或者运行命令
#setsebool -P ftpd_disable_trans 1
然后重启vsftpd服务,也可解决这个问题。
解决了上传的问题后,又有了新的问题,就是匿名用户上传的文件无法下载。经查上传的文件的属性为-rw-------。
先是在配置文件中,修改local_umask=022项,没有解决问题,增加如下项
anon_world_readable_only=NO
则能下载,具体原因不详。

后来增加anon_umask-022项,则上传的文件属性为-rw-r--r--,匿名用户可以正常下载。

vsftpd用户目录问题
服务器技术 2009-10-12 17:13:03 阅读216 评论0 字号:大中小 订阅
我这里很简单,也就是设定最多六七个用户,每个用户对应不同的目录,然后这些目录会用在web上。
我看了这里的vsftp的配置,我这样的目的好像用虚拟用户是最好了。但是我不大清楚,这个虚拟用户,是不是说我如果有10个ftp帐号,就要有10个虚拟用户?然后给每个虚拟用户指定目录?如果是这样的话,那我就要
useradd10个用户咯?
这个ftp用户的主目录是怎么定的呢?是在useadd的时候指定的目录么?
请知道的朋友指教一下...感谢...
________________________________________
wolfg 回复于:2005-09-15 14:48:07
引用:原帖由 "baalchina" 发表:
我看了这里的vsftp的配置,我这样的目的好像用虚拟用户是最好了。但是我不大清楚,这个虚拟用户,是不是说我如果有10个ftp帐号,就要有10个虚拟用户?然后给每个虚拟用户指定目录?如果是这样的话,那我就要
useradd10个用户咯?
这个ftp用户的主目录是怎么定的呢?是在useadd的时候指定的目录么?
1. 如果有10个ftp帐号,就要有10个虚拟用户?
正确
2. 给每个虚拟用户指定目录?

3. 如果是这样的话,那我就要useradd10个用户咯?
不需要。所有的虚拟用户都映射到guest_username指定的系统用户上。所以,只需useradd一次,即添加一个用户用作guest_user
配置文件中的相关选项
guest_enable=YES
guest_username=yourguestuser
4. 这个ftp用户的主目录是怎么定的呢?是在useadd的时候指定的目录么?
默认情况下,所有虚拟用户的主目录都是guest用户的主目录。但可以设置每个虚拟用户一个目录:
user_config_dir=/etc/vsftpd_user_config
/etc/vsftpd_user_config目录是分别存放每个虚拟用户特殊配置文件的地方,每个用户一个配置文件,配置文件的名字与虚拟用户名相同
配置文件中的选项的值将会覆盖总的配置文件vsftpd.conf中的值
为每个用户指定用户主目录
local_root=/home/virtual/userdir
也可在vsftpd.conf中设置
user_sub_token=$USER
那么每个虚拟用户的配置文件中设置local_root
local_root=/home/virtual/$USER
$USER就是虚拟用户的用户名,即每个虚拟用户的主目录是/home/virtual下的与自己用户名同名的目录
快又稳
2024-10-23 广告
广州快又稳网络科技有限公司是一家集技术研发、产品创新、服务优化于一体的高新技术企业。公司自成立以来,始终秉承“网络使人类缩进距离,我们让网络快又稳”的核心理念,致力于为全球客户提供高效、安全、易用的互联网解决方案及信息技术服务。在数字时代,... 点击进入详情页
本回答由快又稳提供
出门在外_1
推荐于2016-04-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:76%
帮助的人:5927万
展开全部
  1. vsftp配置文件启用虚拟用户列表文件

    vsftpd验证文件修改下调用虚拟用户文件

    添加相应的虚拟用户;

  2. vi    /etc/vsftpd/vsftpd.conf

    virtual_use_local_privs=YES


        vi    /etc/pam.d/vsftpd

         auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers

         account sufficient      /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

        【检查下这个文件是否生产正常,64位系统使用 /lib64/】

      

         echo testvsftp>>/etc/vsftpd/virtusers
         echo testvsftpmima>>/etc/vsftpd/virtusers

         db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

         /etc/init.d/vsftpd restart

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千里老师
2020-12-24 · 贡献了超过100个回答
知道答主
回答量:100
采纳率:0%
帮助的人:11.1万
展开全部

「Linux专题」在vmware中创建centos7虚拟机

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式