Linux之权限管理

本文详细介绍了Linuxchmod命令用于文件权限管理和ACL(AccessControlList)的概念,包括如何设置文件所有者、用户组权限,使用绝对模式和符号模式,以及如何通过ACL实现更精细的权限控制,如项目目录权限分配和临时用户的访问限制。
摘要由CSDN通过智能技术生成

目录

一. chmod

二. ACL

        2.1 什么是ACL权限

        2.2 操作步骤

2.2.1 添加测试目录、用户、组,并将用户添加到组

2.2.2 修改目录的所有者和所属组

2.2.3 设定权限

2.2.4 为临时用户分配权限 r-x

2.2.5 验证acl权限

2.2.6 控制组的acl权限


一. chmod

Linux chmod (英文全拼:change mode) 命令是控制用户对文件的权限的命令。
Linux/Unix 的文件调用权限分为三级:文件所有者 (0wner)、用户组 (Group)、其它用户 (Other Users)。

只有文件所有者超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

使用权限:所有使用者

语法:

chmod [-cfvR] [--help] [--version] mode file...

参数说明:

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

        由于Linux是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境,所以文件的权限归属就至关重要。
        为了保障系统的安全性文件的隐私性,一个文件针对不同权限的账户有着不同的权限,如下图:

如图所示,文件权限是由一个字符串所表示,其所代表的含义为:

其中,文档类型有如下表示方法:

  • d - 目录,例如上表档名为 [.gconf] 的那一行;
  • - - 文档,例如上表档名为 [install.log]  那一行;
  • l - 连结档(link file);
  • b - 装置文件里面的可供储存的接口设备(可随机存取装置);
  • c - 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

        权限由rwx三个字幕表示,分别表示为可读、可写、可执行,如果没有该权限,则用 “ - ” 表示,对于目录来说,必须有x权限,否则无法读取目录内容。

        如果文件名前面有“.”,则表示这个文档或目录是隐藏的。

二. ACL

        2.1 什么是ACL权限

        ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

思考如何实现如下的权限控制:

  • 每个项目成员在有一个自己的项目目录,对自己的目录有完全权限
  • 项目组中的成员对项目目录也有完全权限
  • 其他人对项目目录没有任何权限
  • 对于被分配进入项目的临时人员,只有读和执行权限,不能修改

        2.2 操作步骤

2.2.1 添加测试目录、用户、组,并将用户添加到组
[root@localhost ~]# mkdir /project

[root@localhost ~]# useradd zs

[root@localhost ~]# useradd ls

[root@localhost ~]# groupadd tgroup

[root@localhost ~]# gpasswd -a zs tgroup

正在将用户“zs”加入到“tgroup”组中

[root@localhost ~]# gpasswd -a ls tgroup

正在将用户“ls”加入到“tgroup”组中

 查看组是否正常建立

[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
...tgroup:x:1003:zs,ls
2.2.2 修改目录的所有者和所属组
[root@localhost ~]# chown root:tgroup /project

[root@localhost ~]# ll -d /project

drwxr-xr-x. 2 root tgroup 6 8月  23 18:35 /project
2.2.3 设定权限

输入chmod 770 /project

[root@localhost ~]# chmod 770 /project
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 8月  23 18:35 /project
2.2.4 为临时用户分配权限 r-x

1. 添加临时用户

[root@localhost ~]# useradd tempuser

[root@localhost ~]# passwd tempuser

2. 为临时用户分配特定权限

输入 getfacl /project 查看/project的详细控制信息

[root@localhost ~]# setfacl -m u:tempuser:rx /project

[root@localhost ~]# getfacl /project

getfacl: Removing leading '/' from absolute path names

# file: project

# owner: root

# group: tgroup

user::rwx

user:tempuser:r-x

group::rwx

mask::rwx

other::---

3. 查看目录权限,注意+,表示文件或目录有acl权限

[root@localhost ~]# ll -d /project

drwxrwx---+ 2 root tgroup 6 8月  23 18:35 /project
2.2.5 验证acl权限

1. 切换到临时用户tempuser

[root@localhost ~]# su tempuser

[tempuser@localhost root]$

2. 验证可以进入project目录

[tempuser@localhost root]$ cd /project

[tempuser@localhost project]$

3. 验证不能在project中创建文件

[tempuser@localhost project]$ touch test.txt

touch: 无法创建"test.txt": 权限不够
2.2.6 控制组的acl权限

1. 创建一个temp组

[tempuser@localhost project]$ su root
密码:
[root@localhost project]# groupadd temp

2. 设置组的acl

[root@localhost project]# setfacl -m g:temp:rx /project

3. 查看设置后acl

[root@localhost project]# getfacl /project

getfacl: Removing leading '/' from absolute path names

# file: project

# owner: root

# group: tgroup

user::rwx

user:tempuser:r-x

group::rwx

group:temp:r-x

mask::rwx

other::---

4. 创建一个用户,并将该用户设置为temp组

[root@localhost project]# useradd tempu02

[root@localhost project]# passwd tempu02

更改用户 tempu02 的密码:

新的 密码:

5. 将用户添加到temp组中

[root@localhost project]# gpasswd -a tempu02 temp

正在将用户“tempu02”加入到“temp”组中

6. 验证

[root@localhost project]# su tempu02

# 可以进入目录

[tempu02@localhost project]$ cd /project

[tempu02@localhost project]$ ls

# 不能创建文件

[tempu02@localhost project]$ touch aa.txt

touch: 无法创建"aa.txt": 权限不够
  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值