一、使用情况
1.1、场景:
某个大公司,在一个部门,有一个经理和手下有两个员工,在操控一个Linux项目,项目又分为三期做,然而一期比较重要,经理带着员工做完了,公司就觉得技术难点已经做完攻克了,不需要投入之前的人了,到了二期就招外包人员去顶替之前员工做的事,然后会做linux权限控制,外包人员就需要招甲方人员授权。
1.2、外包
指企业将某些业务活动或服务委托给外部公司或个人来进行,以降低成本、提高效率或专注核心业务。
1.3、外包的情况
- 企业需要专业技能或资源,但自身无法内部开发或维护,因此选择外包给专业公司或个人来完成。
- 企业需要降低成本,外包可以帮助企业节省人力、物力和财力,提高效率和竞争力。
- 企业需要快速扩展业务或进入新市场,外包可以帮助企业快速获得所需的资源和服务。
- 企业需要专注于核心业务,将非核心业务外包给专业公司或个人来处理,以提高企业的专业性和效率。
二、基础权限chmod
命令格式:chmod [options] mode files
options:选择 mode模式(u代表用户) files文件
-r u=rw start.sh
命令ll可以查询出来
开头字母;l:代表链接,d代表文件夹,-代表文件
后面有点:代表没有做acl控制
拥有者:就是当前用户 拥有组:就是所在的组
r代表卡读(看) w代表可以写(修改),x 代表可以执行(可以运行)
相加为7,所有有全部权限,
拿到的数字去相加得到的数字与421去对应就知道有什么权限了
如:5 4+1可以读和执行
三、ACL
3.1、ACL是
Access Control List的缩写,指访问控制列表。ACL是一种用于控制网络设备或操作系统上资源访问权限的机制,通过ACL可以限制哪些用户或哪些网络设备可以访问特定的资源。ACL通常用于路由器、交换机、防火墙等网络设备上,也可以在操作系统中用于控制文件和目录的访问权限。ACL可以根据不同的条件设置不同的访问规则,如IP地址、端口号、协议类型等。
我创建的文件自己和组内人员都可以操作,临时用户就是第三方人员也是外包进入,只有r-x可以读和执行
3.2、思考
如何实现如下的权限控制:
- 每个项目成员在有一个自己的项目目录,对自己的目录有完全权限
- 项目组中的成员对项目目录也有完全权限
- 其他人对项目目录没有任何权限
- 对于被分配进入项目的临时人员,只有读和执行权限,不能修改
初步思路:
- 创建一个临时组(例如:temp),并将临时组的权限设置位 r-w
- 将临时组也作为项目目录的所属组
- 对于临时用户作为临时组的成员即可
问题:
- Linux基本权限中,文件和目录同时只能有一个分组
- 变成775权限导致不是外包人员也能看
解决办法
- 使用ACL来解决上面的问题
3.3、具体操作
第一步:创建文件夹(查询是否创建成功ll,东西太多用管道符)
第二步:创建用户(可以是多个,用户=员工,张三zs、李四ls)
第三步:创建组(tgroup组名字)
第四步:把员工放到一个组里(-a追加和添加的意思 可以查看是否加进去 cat /etc/group)
第五步:修改目录的所有者和所有组(chown own代表拥有者)
第六步:修改权限为770
第七步:添加临时用户(外包人员 临时用户名字tempuser)
第八步:给临时用户设置密码
可以不是8个字符不管它的提示进行输入
第九步:设置ACL(给临时用户分配特定权限 一个一个加权限)
第十步:查看是否成功没
具体代码演示:
mkdir /project
ll | grep project
useradd zs
groupadd tgroup
gpasswd -a zs tgroup
chown root:tgroup /project
chmod 770 /project
useradd tempuser
passwd tempuser
setfacl -m u:tempuser:rx /project
getfacl /project
mask: 最多可以分配的权限 other其他用户
操作文件夹里面
具体代码演示:
进入文件夹
cd /project
创建文件
vim root.txt
进入编辑
i
写内容按EEC退出保存
wq
用临时用户查看别人文件
cat +文件
上面需要一个一个授权
3.4、解决一起授权
解决办法搞一个临时组,给这个组只有读和执行的权限,每来一个外包人员就丢进去
第十一步:控制组的ACL权限(创建临时组---专门放外包人员 )
与第9步区分 一个用-u一个一个用户设置,这个-g
groupadd temp
setfacl -m g:temp:rx/project
getfacl /project
有组后的做法
添加新用户
useradd tempu02
设置密码
passwd tempu02
丢到组里
gpasswd -a tempu02 temp
总:如果用项目发现没有权限,就需要思考是领导没有给你权限还是合作方没给权限了,合作方没给,可以分析两方关系是否好