Ubuntu下FTP分权限管理 【第二节 权限分配】

前端之家收集整理的这篇文章主要介绍了Ubuntu下FTP分权限管理 【第二节 权限分配】前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
上一节中我们已经学会了如何在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 用户名

二、新建两个用户

  1. 超级管理员

    • 创建ftp文件

      • # mkdir /home/ftptest
    • 创建超级管理员ftpadmin来管理ftptest目录

      • # sudo useradd -d /home/ftptest -s /bin/bash ftpadmin
    • 设置ftpadmin的密码

      • # sudo passwd ftpadmin
  2. 普通管理员

    • 创建普通管理员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 [用户名]

三、为用户分配组权限

  1. ftpadmin分配ftpmanager组
    # sudo usermod -G ftpmanager ftpadmin
  2. ftpuser01分配ftpmanager组
    # sudo usermod -G ftpmanager ftpuser01
  3. 查看所属组:groups 用户名
    # groups ftpadmin 或者 # groups ftpuser01

四、设置ftp目录的所有者权限(其所有者即为超级管理员

  1. 通过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增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误
修改方法有三个,如下:

  1. 消除ftp根目录写入的权限,如:
    chmod 555 /home/ftptest
  2. 在vsftpd的配置文件增加一项:
    allow_writeable_chroot=YES
  3. 在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

最后确定,保存即可。

好啦,ftp搭建告一段落,如果有什么问题可以联系我,如果文章有什么错误还请指出。

猜你在找的Ubuntu相关文章