1、权限简介
文件的权限主要针对三类对象进行定义:
- owenr:属主,u
- group:属组,g
- other:其他,o
每个文件针对每个访问者都定义了三种权限:
权限 | 对应的操作对象 | 权限说明 |
---|---|---|
r | 文件 | 可读,可以使用类似cat等命令查看文件内容 |
w | 文件 | 可写,可以编辑或删除此文件 |
x | 文件 | 可执行,eXacutable,可以在命令提示符下当作命令提交给内核运行 |
r | 目录 | 可以对此目录执行ls以列出内部的所有文件 |
w | 目录 | 可以在此目录中创建文件,也可以删除此目录中的文件 |
x | 目录 | 可以使用cd切换进此目录,也可以i使用ls -l查看内部文件的详细信息 |
权限的八进制与十进制转换:
权限 | 八进制 | 十进制 |
---|---|---|
- - - | 000 | 0 |
- - x | 001 | 1 |
- w - | 010 | 2 |
- w x | 011 | 3 |
r - - | 100 | 4 |
r - x | 101 | 5 |
r w - | 110 | 6 |
r w x | 111 | 7 |
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 #显示路径基名