上一节中我们已经学会了如何在Ubuntu中搭建FTP环境,本节将介绍如何为同一个目录分配权限:1.超级管理员(拥有上传,下载,修改,查看的权限);2.普通管理员(只拥有下载与查看的权限)
注:本节的ftp目录,用户均重新创建(按照第一节的方式创建,目的是加深印象)
一、新建一个ftp管理组
# sudo groupadd -g 168 ftpmanager
################# ###### UID ###### ################# >> 0:超级用户(管理员) ################# # 普通用户 1~65535 >> 1~499:系统用户(伪用户)(不能删) >> 500+:普通用户 ################# ###### GID ###### ################# >> 0:系统组(管理员) ################# # 普通组 1~65535 >> 1~499:系统组 >> 500+:普通组 1.添加用户组 groupadd [选项] 组名 选项: -g GID:指定组ID 2.修改用户组 groupmod [选项] 组名 选项: -g GID: 修改组ID -n 新组名:修改组名 例:groupmod -n testgrp group1 # 把组名group1修改为testgrp 3.删除用户组 groupdel 组名 注:不能存在初始用户在该组,否则无法删除 4.把用户添加入组或从组中删除 gpasswd [选项] 组名 选项: -a 用户名:把用户加入组 -d 用户名:把用户从组中删除 例:gpasswd [选项] 用户名 组名 5.查看组 groups 用户名
二、新建两个用户
-
超级管理员
-
普通管理员
-
创建普通管理员
ftpuser01
来管理ftptest目录# sudo useradd -d /home/ftptest -s /bin/bash ftpuser01
-
设置
ftpuser01
的密码# sudo passwd ftpadminn
-
1.添加用户 useradd [选项] 用户名 选项: -u UID: 手工指定用户的UID号 -d 家目录: 手工指定用户的家目录 -c 用户说明:手工指定用户的说明 -g 组名: 手工指定用户的初始组(相当于强制改掉) -G 组名: 指定用户的初始组(相当于加入) -s shell: 手工指定用户的shell。默认是/bin/bash 2.删除用户 userdel [-r] 用户名 选项: -r 删除用户的同时删除用户家目录 手工删除用户: >>># vi /etc/passwd >>># vi /etc/shadow >>># vi /etc/group >>># vi /etc/gshadow >>># rm -rf /var/spool/mail/[用户名] >>># rm -rf /home/[用户名] 如果删除后可通过 useradd [用户名] 若能成功添加,则该用户名之前已删干净了,否则未删干净 3.查看用户ID id [用户名]
三、为用户分配组权限
- 为
ftpadmin
分配ftpmanager组# sudo usermod -G ftpmanager ftpadmin
- 为
ftpuser01
分配ftpmanager组# sudo usermod -G ftpmanager ftpuser01
- 查看所属组:groups 用户名
# groups ftpadmin
或者# groups ftpuser01
四、设置ftp目录的所有者权限(其所有者即为超级管理员)
- 通过chown更改文件或目录(可以通过参数-R递归修改)的所有者。注:所有者,必须存在于(/etc/passwd)下
# sudo chown ftpadmin -R /home/ftptest
修改前:
修改后:
五、修改文件夹的权限
sudo chmod -R 755 /home/ftptest
``` 关于权限755的解释: 在linux终端先输入ll,可以看到如: -rwx-r--r-- (一共10个参数) 表示文件所属组和用户的对应权限。 第一个跟参数属于管理员,跟chmod无关,先不管. 2-4参数:属于user 5-7参数:属于group 8-10参数:属于others r==>可读 w==>可写 x==>可执行 r=4 w=2 x=1 所以755代表 rwx r-x r-x ==>rwxr-xr-x 管理员ftpadmin拥有读写执行权限,组用户和其他用户拥有读写权限(即可以下载查看,并不能新建和修改) 如果是777 则代表 rwxr-rwx-rwx 所有用户都可读可写可执行。 ```
六、连接测试
连接测试,发现竟然 失败了!!!!!!!!!!!!!!!!
~~~尼玛~~~什么鬼
情况1.
用ftp工具连接的或许会报类似这样的错误:500 OOPS: vsftpd: refusing to run with writable root inside chroot(). Please contact your web hosting service provider for assistance.
在网上查了一下,发现原来:从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
修改方法有三个,如下:
- 消除ftp根目录写入的权限,如:
chmod 555 /home/ftptest
- 在vsftpd的配置文件中增加一项:
allow_writeable_chroot=YES
- 在ftptest中再建一个文件夹作为根目录为root01,修改两个用户的管理目录为root01
# sudo usermod -d /home/ftptest ftpadmin
# sudo usermod -d /home/ftptest ftpuser01
提示:
方法1,则需要子啊ftptest中新目录下超级管理员才能有写的权限;
方法2,可能影响其他ftp目录的管理,还存在安全性问题;
方法3,对我来说除了多了几条命令,其他的都还是比较满意,正式使用时我都是采用此法。
经过调整后,连接成功了!
用ftpadmin新建了一个文件222和一个文件夹333都成功了,修改222的内容也成功了
再来试试普通管理员ftpuser01
新建文件和文件夹都失败了
下载成功了
但是上传却失败了
通过测试,我们发现只有ftpadmin拥有随意上传,下载,新建,修改的权限,ftpuser01只能下载和查看,证明了我们的权限分配没有错。
情况2.
用ftp工具连接的或许会报类似这样的错误:530 Login incorrect. Please contact your web hosting service provider for assistance.
查了一下资料,并通过测试发现问题主要出现在:购买的阿里云ECS未开放外网访问端口。
解决办法:开放端口。
参考自:http://www.winbiz.cn/zh_cn/Ne...
登录阿里云ECS服务器控制面板,【网络和安全】->【安全组】,在右边选择【配置规则】->【添加安全组规则】,协议选全部,授权对象填0.0.0.0/0
最后确定,保存即可。