文章目录

  • ACL-设置权限
  • 用ACL为用户授权
  • 设置mask权限
  • 设置默认权限(只能对目录执行)
  • selinux
  • selinux工作方式
  • selinux的上下文
  • selinux的几种模式
  • selinux的布尔值(真或假)
  • 网络用户介绍
  • nfs客户端的使用
  • 主服务器配置
  • 客户端配置


ACL-设置权限

用ACL为用户授权

当我们需要对具体的某个用户/组,进行权限设置的时候,我们要考虑用ACL;

setfacl -m u:用户名:rw- file/dir

setfacl -m g:组名:rw- file/dir

查看权限:

getfacl file/dir

取消acl权限:

setfacl -x u:用户名 file/dir

setfacl -x g:组名 file/dir

nfs空间限制 nfs acl权限_网络用户介绍

设置mask权限

mask权限的作用是,临时让已经配置过acl的权限生效。

设置mask权限:setfacl -m m::r-- hosts(文件)

取消mask权限:setfacl -m u:任意一用户名即可:rw- hosts(文件)

nfs空间限制 nfs acl权限_selinux_02


针对权限,权限位—时,实际上文件还是可读的,因为other有r权限,规则是:只要mask没有设置—,则mask权限生效,如果mask设置了—,则other生效

nfs空间限制 nfs acl权限_ACL-设置权限_03

设置默认权限(只能对目录执行)

设置默认权限以后,该文件后选择的所有文件权限都为该默认权限。(注:设置默认权限仅对新文件生效,之前存在的文件权限不会改变其属性。)

设置默认权限:setfacl -m d:u:用户名:rwx 文件

nfs空间限制 nfs acl权限_网络用户介绍_04


可以看到创建默认权限的时候给了x权限,但查看的时候并没有x权限,是因为创建文件的时候最多的权限是666,也就是rw,所以无论通过何种方式创建文件,都不可能有x权限的,只有后期手动的修改权限。

取消默认权限:setfacl -x d:u:用户名 文件

nfs空间限制 nfs acl权限_nfs空间限制_05

selinux

selinux工作方式

selinux是用于提高系统安全性的;

selinux会为所有的文件及进程分配一个标签,这个标签我们称之为标识,或者 上下文,只有特定的上下文的进程,才能访问特定的上下文资源。 如果上下文不匹配,即使权限是777,依然不能访问。

nfs空间限制 nfs acl权限_ACL-设置权限_06


setenforce 1:开启selinux

setenforce 0:关闭selinux

systemctl stop firewalld

selinux使用方法:先开启selinux,然后安装APACHE阿帕奇(httpd)服务:yum -y install httpd,启动服务:systemctl start httpd, 启动以后打开浏览器网址栏输入该服务器ip,能正常访问内容即可:

nfs空间限制 nfs acl权限_网络用户介绍_07


现在http访问的是/var/www/html/index.html 里的文件,所以可以简单定义里面内容,然后就会正常显示啦,如,echo 11111111 > /var/www/html/index.html (也可以在/var/htm/中新建文件,然后输入网址的时候ip/新建文件名):

nfs空间限制 nfs acl权限_ACL-设置权限_08

selinux的上下文

selinux会为所有的文件及进程分配一个标签,这个标签我们称之为标识,或者 上下文,只有特定的上下文的进程,才能访问特定的上下文资源。 如果上下文不匹配,即使权限是777,依然不能访问。

所以现在来说一下 上下文不匹配的情况是什么样:以上述的apache为例,在/var/www/html/**该目录下的任何文件都是可以通过浏览器正常访问的,这时候,我们在根目录下建一个www:mkdir /www ,然后 cd /var/www/html目录中,建一个/www的软连接:ln -s /www www :

nfs空间限制 nfs acl权限_selinux_09


在软连接www目录中新建index.html(默认访问该文件内容,所以该文件必须有) 并在里面写入任意内容:echo wwwwww > /www/index.html,这时候通过浏览器访问该软连接地址:

nfs空间限制 nfs acl权限_网络用户介绍_10


/var/www/html/www/index.html确实存在,为什么会Forbidden呢,这就是之前说的 上下文不一样,因为www实际是属于根目录下的www,并非/var/www/html/中的原生文件,所以解决这个问题就是,必须把上下文改成一致:

nfs空间限制 nfs acl权限_ACL-设置权限_11


ps auZ |grep 服务名称:查看上下文信息

ls -ldZ 文件名:查看文件的上下文(::中间的便是上下文信息)

chcon -R -t 上下文 目录名称:修改上下文

nfs空间限制 nfs acl权限_网络用户介绍_12


修改成功以后,再次到浏览器访问该目录,即可正常访问了:

nfs空间限制 nfs acl权限_ACL-设置权限_13


restorecon -R 目录名:撤销定义的上下文信息。

nfs空间限制 nfs acl权限_nfs客户端的使用_14


自定义文件默认的上下文信息:semanage fcontext -a -t 上下文 文件名,如:semanage fcontext -a -t httpd_sys_content_t '/www(/.)?’ ——(/.)?解释:()?代表括号里的内容可有可无,(/.*) /固定存在,.代表一个或多个,所以整体可以理解为递归/www(?前为不存在),(/.)?问号前内容存在:/www/adf,/www/adf/adf,/www/adf/adf/adf,…

nfs空间限制 nfs acl权限_nfs客户端的使用_15


删除自定义默认上下文:semanage fcontext -d -t 上下文 文件名

不知道上下文的情况下可以用–引用参考:chcon -R --reference=引用参考文件 文件名,如:chcon -R --reference=/var/www/html /www :

nfs空间限制 nfs acl权限_selinux_16


万能(通用)上下文,改为此以后就不存在上下文不匹配的情况了,chcon -R -t public_content_t 文件 :

nfs空间限制 nfs acl权限_网络用户介绍_17

selinux的几种模式

输入setenforce可以看到介绍selinux有1和0两种模式:

nfs空间限制 nfs acl权限_ACL-设置权限_18


enforcing——强制模式,必须要满足selinux的条件,不满足的话,则阻止访问且警报。

nfs空间限制 nfs acl权限_ACL-设置权限_19


permissive——允许模式,可以不满足selinux的条件,不满足也可以访问,但是有警报。

所以有时我们访问不了服务的时候,想想是不是selinux导致的,可以临时关闭selinux,就是切换到pemissive模式:setenforce 0(关闭selinux)→允许模式, setenforce 1(开启selinux) → 强制模式 , getenforce → 查看状态

nfs空间限制 nfs acl权限_ACL-设置权限_20


修改selinux的默认选项:vi /etc/selinux/config 中修改SELINUX=项内容即可;

nfs空间限制 nfs acl权限_nfs空间限制_21

selinux的布尔值(真或假)

所谓的布尔值我们可以理解为一个开关功能;

getsebool -a :查看所有布尔值,其中on为启用,off为禁用

nfs空间限制 nfs acl权限_网络用户介绍_22


在没有selinux的情况下,我们要启用某服务的某功能,只要在这个服务的配置文件里配置即可,但有了selinux之后,你还得要让selinux同意开启这个功能才行;所以,需要记住一条规则,就是当我们搭建某个服务然后从客户端往这个服务里写东西写不进去的时候,请按照下面的三个步骤进行检查:

检查配置文件是否允许

检查文件系统的权限

检查selinux上下文或布尔值让以ftp为例: 先直接ftp上传任意一个文件,如果put或get后面不跟设备名,则代表当前设备名,就是使用ftp…这个设备名:

nfs空间限制 nfs acl权限_selinux_23


排查1:检查配置文件是否运行:vi /etc/vsftpd/vsftpd.conf,发些权限被关闭了,把#删掉,然后重启服务:systemctl restart vsftpd

nfs空间限制 nfs acl权限_nfs客户端的使用_24


现在重新上传文件,发现依然报错,只是报错与1中不一样:

nfs空间限制 nfs acl权限_nfs空间限制_25


排查2:检查文件系统的权限 ls /var/ftp -ld

nfs空间限制 nfs acl权限_ACL-设置权限_26


然后ftp进入到新建的目录中重新上传文件:

nfs空间限制 nfs acl权限_网络用户介绍_27


排查3:检查selinux上下文或布尔值 → 先关闭selinux试试:setenforce 0 ,关闭后再次ftp中上传文件,可以正常上传:

nfs空间限制 nfs acl权限_nfs客户端的使用_28


然后把selinux开启:setenforce 1 ,然后查看布尔值:getsebool -a |grep ftp :

nfs空间限制 nfs acl权限_selinux_29


setsebool 服务 on / setsebool 服务 1:开启布尔服务(临时生效)

setsebool 服务 off / setsebool 服务 0:关闭布尔服务(临时生效)

nfs空间限制 nfs acl权限_ACL-设置权限_30


setsebool - P 服务 on / setsebool 服务 1:开启布尔服务(永久生效,会自动写入进配置文件中)

setsebool -P 服务 off / setsebool 服务 0:关闭布尔服务(永久生效)

把ftp的布尔服务(2个服务连接一起的)开启:

nfs空间限制 nfs acl权限_网络用户介绍_31


因为配置文件中有说明:

nfs空间限制 nfs acl权限_网络用户介绍_32


然后在到ftp中上传文件 也是可以正常上传(为了简单起见,所以一般直接关闭selinux即可):

nfs空间限制 nfs acl权限_selinux_33


可以通过图形化配置selinux和布尔值:system-config-selinux &

安装:先通过yum查找包名:yum whatprovides */system-config-selinux

nfs空间限制 nfs acl权限_网络用户介绍_34


筛选出报名后 :yum -y install policycoreutils-gui-2.2.5-15.e18.x86_64

nfs空间限制 nfs acl权限_selinux_35


安装成功后运行:system-config-selinux &

nfs空间限制 nfs acl权限_网络用户介绍_36


nfs空间限制 nfs acl权限_网络用户介绍_37


说一个关于上下文的实例: 新增http端口号808:

因为http默认端口为80,所以可以筛选查看:netstat -nutlp | grep :80

nfs空间限制 nfs acl权限_ACL-设置权限_38


vi /etc/httpd/conf/httpd.conf,然后在配置文件中 :Listen ,再该处添加一个808

nfs空间限制 nfs acl权限_nfs客户端的使用_39


重启服务:systemctl restart httpd ——会报错

nfs空间限制 nfs acl权限_selinux_40


查看80端口的上下文:semanage port -l | grep ‘\b80\b’

nfs空间限制 nfs acl权限_网络用户介绍_41


然后更改端口的上下文:semanage port -a -t http_port_t -p tcp 808 (把端口类型是tcp的端口号808的上下文改为http_port_t)然后重启,正常:

nfs空间限制 nfs acl权限_ACL-设置权限_42


再到浏览器使用808端口访问文件,正常:

nfs空间限制 nfs acl权限_selinux_43


尝试修改ssh的默认端口为2000

网络用户介绍

查看网络用户的详细信息:getent passwd 用户名
网络用户有2种方式
1、使用LDAP客户端(使用服务器较少的场景,家目录需要手动创建)
2、配置freeIPA(域的概念,适合服务器较多的场景,可以自动给网络用户创建家目录)

nfs客户端的使用

主服务器配置

先关闭防火墙:systemctl stop firewalld

vim /etc/exports :如果里面有内容,全删除

systemctl restart nfs-server, systemctl enable nfs-server:启动nfs服务并设置为开机启动

vim /etc/exports :在里面编辑以下内容(/aa是挂载目录)

nfs空间限制 nfs acl权限_网络用户介绍_44


exportfs -arv:分享aa的内容

nfs空间限制 nfs acl权限_ACL-设置权限_45

客户端配置

首先要知道服务器共享的目录是什么

showmount -e 主服务器ip (如果没有改命令:yum -y install showmount)

nfs空间限制 nfs acl权限_网络用户介绍_46


然后新建一个文件用于挂载该目录:mkdir /nfs

挂载:mount 主服务器ip:目录 /nfs 即可完成,注:挂载的该目录默认是没有写权限的

nfs空间限制 nfs acl权限_selinux_47


开机自动挂载,写进/etc/fstab中:

nfs空间限制 nfs acl权限_nfs空间限制_48