千家信息网

LINUX下的权限细分设置是什么

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇文章给大家分享的是有关LINUX下的权限细分设置是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。业务部门提过来一个FTP配置需求
千家信息网最后更新 2024年11月22日LINUX下的权限细分设置是什么

本篇文章给大家分享的是有关LINUX下的权限细分设置是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

业务部门提过来一个FTP配置需求,具体情况如下:

请提供一台FTP服务器,需要创建的FTP目录及账号规则如下!

人员配置情况:

北京总部:5人(需创建2个账号:bjzb读权限 bjguanli读写执行权限)

北京大区:8人(需创建1个FTP账号:bjdq)

上海大区:6人(需创建1个FTP账号:shdq)

广州大区:5人(需创建1个FTP账号:gzdq)

FTP目录及账号权限创建设计:

/data/bj (北京大区)

账号bjdq权限:写权限、读权限、执行权限

账号shdq、gzdq权限:读权限

账号bjzb权限:读权限

账号bjguanli权限:读权限、写权限、执行权限

/data/sh (上海大区)

账号shdq权限:写权限、读权限、执行权限

账号bjdq、gzdq权限:读权限

账号bjzb权限:写权限、读权限

账号bjguanli权限:读权限、写权限、执行权限

/data/gz (广州大区)

账号gzdq权限:写权限、读权限、执行权限

账号bjdq、shdq权限:读权限

账号bjzb权限:写权限、读权限

账号bjguanli权限:读权限、写权限、执行权限

大家看到这则需求时,基本上会感觉,权限实现起来有点困难。因为在linux下,对一个文件可以进行操作的对象被分为三类:file owner(文件的拥有者)、group(组,注意不一定是文件拥有者所在的组)、other(其他)。在每个类里,权限都是一致的,而在一个相同的类里实现不同的权限就不那么方便了,而上述提到的需求就是要在同一个类里实现不同的权限。那么我们就需要通过LINUX下的ACL来实现题中的需求。简单地说acl就是可以设置特定用户或用户组对于一个文件及目录的操作权限,需要掌握的命令也只有三个:getfacl,setfacl,chacl.

我们来具体说一下文章开头提到的那个需求的实现过程

1、目录和账号的创建

默认情况下,在linux下建立用户的时候,有个默认的家目录,一般是在/home下,但是如果我们想在系统中建立多个用户,而家目录都不在/home 下的话,就需要用useradd -d 来指定家目录

#groupadd ftpgroup

# useradd bjdq -d /data/bj -g ftpgroup

#passwd bjdq

# useradd shdq -d /data/sh -g ftpgroup

#passwd shdq

# useradd gzdq -d /data/gz -g ftpgroup

#passwd gzdq

#useradd bjzb

#passwd bjzb

#useradd bjguanli

#passwd bjguanli

补充还有一个方法是修改/etc/default/useradd文件

# useradd defaults file

GROUP=100

HOME=/home (将默认的HOME改为你设定的目录)

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

这样也可以在建用户的时候,指定特定的用户主目录。

2、FTP的设置

FTP服务器地址:192.168.1.130

修改FTP配置文件
# vi /etc/vsftpd/vsftpd.conf

在里面添加如下语句
local_enable=YES //是否允许本地用户登录FTP服务器,默认是允许
write_enable=YES //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

local_umask=007 #用户的权限

chroot_list_enable=YES //如果希望用户登录后不能切换到自己目录以外的其它目录,需要设置该项来锁定用户目录
chroot_list_file=/etc/vsftpd/chroot_list

userlist_enable=YES #设置userlist_enable=YES,那么只允许/etc/vsftpd/user_list中列出的用户具有该功能
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
~
"/etc/vsftpd/vsftpd.conf" 147L, 5079C written
设置完重启ftp服务
# service vsftpd restart
关闭 vsftpd:[确定]
为 vsftpd 启动 vsftpd:[确定]

三、权限的设置

由于/data/bj的所有者是bjdq,/data/sh的所有者是shdq,/data/gz的所有者是gzdq,这样自然就有了读、写、执行权限,我们只需设置组和其他的权限即可

为了限定bjdq、shdq、gzdq的用户不能切换目录,我们还需要把bjdq、shdq、gzdq这三个用户写入chroot_list文件。
[root@localhost vsftpd]# echo "bjdq" >>chroot_list
[root@localhost vsftpd]# echo "shdq" >>chroot_list
[root@localhost vsftpd]# echo "gzdq" >>chroot_list

权限设置如下:

#chmod 755 /data/bj

#chmod 755 /data/sh

#chmod 755 /data/gz

针对bjzb和bjguanli这两个账户的权限设置如下

#setfacl -R -m u:bjzb:rx /data/bj

#setfacl -R -m u:bjguanli:rwx /data/bj

#setfacl -R -m u:bjzb:rx /data/sh

#setfacl -R -m u:bjguanli:rwx /data/sh

#setfacl -R -m u:bjzb:rx /data/gz

#setfacl -R -m u:bjguanli:rwx /data/gz

[root@localhost data]# ls -l
total 12
drwxr-xr-x+ 4 bjdq ftpgroup 4096 Jan 18 19:09 bj
drwxr-xr-x+ 4 shdq ftpgroup 4096 Jan 18 19:12 sh
drwxr-xr-x+ 4 gzdq ftpgroup 4096 Jan 18 19:22 gz
最后大家可以通过getfacl来查看这三个目录的权限并通过客户端登陆来验证。

(注:setfacl -x g:ftpgroup file 删除ftpgroup组对file文件的所有权限
setfacl -x u:bjguanli /data/bj 删除bjguanli用户对/data/bj目录的权限保留读权限
setfacl -x u:bjzb file 删除bjzb用户对file文件的所有权限)

#getfacl --omit-header /data/bj

getfacl: Removing leading '/' from absolute path names

# file: data/bj

# owner: bjdq

# group: ftpgroup

user::rwx

user:bjguanli:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:bjguanli:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

其他目录权限设置类似
四、客户端测试
[root@localhost /]# ftp 192.168.1.130
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
Name (localhost:root): bjdq
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/data/bj
Login failed.
ftp> quit
注意这个报错,你需要考虑IPTABLES和SELINUX的限制了。
可以直接关闭IPTABLES和SELINUX,如果是不能关则需要做如下调整
在IPTABLE里开放FTP服务,允许21、20端口通行。
针对SELINUX的安全限制,可以使用这句
[root@localhost test]# setsebool ftpd_disable_trans 1 #关闭SELinux对ftp的保护
[root@localhost test]# service vsftpd restart

最后再试,一切正常。

[root@localhost test]#ftp 192.168.1.130

Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
Name (localhost:root): bjdq
331 Please specify the password.
Password:

Login successful.

ftp> pwd

"/"

ftp>bye

经验证,最后权限设置,符合业务部门的需求。

以上就是LINUX下的权限细分设置是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0