史上最详细的Linux权限管理(基本权限、特殊权限、ACL、sudo、管理命令)

1、权限简介

文件的权限主要针对三类对象进行定义:

  • owenr:属主,u
  • group:属组,g
  • other:其他,o

每个文件针对每个访问者都定义了三种权限:

权限对应的操作对象权限说明
r文件可读,可以使用类似cat等命令查看文件内容
w文件可写,可以编辑或删除此文件
x文件可执行,eXacutable,可以在命令提示符下当作命令提交给内核运行
r目录可以对此目录执行ls以列出内部的所有文件
w目录可以在此目录中创建文件,也可以删除此目录中的文件
x目录可以使用cd切换进此目录,也可以i使用ls -l查看内部文件的详细信息

权限的八进制与十进制转换:

权限八进制十进制
- - -0000
- - x0011
- w -0102
- w x0113
r - -1004
r - x1015
r w -1106
r w x1117

2、权限管理命令

2.1 修改权限的命令 chmod

// 修改三类用户的权限:
// 语法:chmod MODE file,...
-R	#递归修改权限


// 修改某些用户或某些类用户权限:
u,r,o,a (用户类别)

chmod 用户类别=MODE file,...
chmod 用户类别=MODE,用户类别=MODE file,...


// 修改某类的用户某位或某些位权限:
u,g,o,a (用户类别)
chmod 用户类别+|-MODE file,...
chmod 用户类别+|-MODE,用户类别+|-MODE file,...
chmod +|-MODE file,...

// 语法:
chmod u:g:o:a +|-|= r|w|x filename
chmod 777 filename

// 示例:
[root@JLin ~]# ll
-rw-r--r-- 1 root root        0 7月   7 18:11 test1
[root@JLin ~]# chmod o+x test1 
[root@JLin ~]# ll
-rw-r--r-x 1 root root        0 7月   7 18:11 test1
[root@JLin ~]# chmod 776 test1 
[root@JLin ~]# ll
-rwxrwxrw- 1 root root        0 7月   7 18:11 test1

2.2 修改文件属主和属组的命令 chown

chown命令只有管理员可以使用

chown USERNAME file,...
-R	#修改目录及其内部文件的属主

chown USERNAME:GROUPNAME file,...
chown USERNAME.GROUPNAME file,...

2.3 修改文件的属组命令 chgrp

// 语法:chgrp [OPTION]... GROUP FILE...
-R	#递归修改

3、遮罩码

遮罩码控制文件和目录的默认权限

  • 文件的默认权限上644
  • 目录的默认权限是755

使用umask隐藏权限

  • 文件最终的权限为:
    • 666-umask
  • 目录最终的权限为:
    • 777-umask

4、Linux安全上下文与特殊权限

4.1 Linux安全上下文

前提:进程又属主和属组;文件有属主和属组

  • 任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限
  • 启动为进程后,其进程的属主为发起者,属组为发起者所属的组
  • 进程访问文件时的权限取决于进程的发起者:
    • 进程的发起者是文件的属主时,则应用文件属主权限
    • 进程的发起者是文件的属组时,则应用文件属组权限
    • 应用文件“其他”权限

4.2 特殊权限

Linux默认权限是根据Linux安全上下文的方式来控制的,而特殊权限的存在打破了Linux安全上下文的规则

suid:4	#针对应用程序设置
chmod u+s filename
chmod 4755 filename

sgid:2	#针对目录设置
chmod g+s dir
chmod 2755 dir

sticky:1
chmod o+t dir
chmod 1777 dir

5、ACL文件访问控制列表

facl (Filesystem Access Contorl List),利用文件扩展保存额外的访问控制权限

// 语法:setfacl [-bkndRLP] { -m|-M|-x|-X ...} file...
-m	#设定
    u:UID:perm
    G:GID:perm
setfacl -m u:用户:权限 filename
setfacl -m g:组:权限 filename

6、sudo权限委派

sudo可以实现某个用户能够以另外哪一个空户的身份通过哪些主机执行什么命令
sudo的配置文件:/etc/sudoers
使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:

  • who which_hosts=(runas) command
who:User_Alias,表示运行命令者的身份
which_hosts:Host_Alias,用过那些主机
runas:Runas_Alias,以哪个用户的身份
command:Cmnd_Alias,运行哪些命令

别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
别名分类:

  • 用户别名:
User_Alias NETWORKADMIN = 
    用户的用户名
    组名,使用%引导
    还可以其他已经定义的用户别名
  • 主机别名:
Host_Alias = 
    主机名
    IP地址
    网络地址
    其它主机别名
  • Runas别名:
Runas_Alias =
    用户名
    %组名
    其它的Runas别名
  • 命令别名:
Cmnd_Alias =
    命令路径
    目录(此目录内的所有命令)
    其它已定义的命令别名

// sudo 命令语法:sudo [options] COMMAND
-V	#显示版本编号
-h	#会显示版本编号及指令的使用方式说明
-l	#列出目前用户可以使用的所有sudo类命令
-v	#因为sudo在第一次执行时或者在N分钟内没有指定(N默认为5)会问密码,这个参数时重新做一次确认,如果超过N否则,也会问密码
-k	#让认证信息失效,如果不指定-k,默认认证信息在5分钟后失效
-b	#将要执行的指令放在后台执行
-u USERNAME	#以指定的用户名执行命令,默认为root

7、管理命令

w	#显示当前登录到系统的用户有哪些,以及其正在做什么
sleep	#睡眠,写脚本为防止上一个命令没执行完下一命令就开始执行时可以加上
sleep *	#表示停顿*秒后再执行后面的命令
sleep NUMBER[SUFFIX] ...
    SUFFIX:
	s:秒,默认
	m:分
	h:小时
	d:天
last	#显示/var/ log / wtmp文件,显示用户登录历史及系统重启历史
-n *	#显示最近*次的相关信息
lastb	#显示/var / log/ btmp文件,显示用户错误的登录尝试
-n *	#显示最近*次的相关信息
lastlog	#显示每个用户最近一次成功登录信息
-u username	#显示特定用户最近的登录信息
basename	#显示路径基名
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汉只只

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值