1.文件的权限主要针对三类对象进行定义:
我们可以把owner 当成小明,group当成小明他家里人,other当成隔壁老王
2.每个文件针对每个访问者都定义了三种权限:
权限 | 对应的操作对象 | 权限说明 |
---|---|---|
r | 文件 | 可读,可以使用类似cat等命令查看文件内容 |
w | 文件 | 可写,可以编辑或删除此文件 |
x | 文件 | 可执行,eXacutable,可以在命令提示符下当作命令提交给内核运行 |
r | 目录 | 可以对此目录执行ls以列出内部的所有文件 |
w | 目录 | 可以在此目录中创建文件,也可删除此目录中的文件 |
x | 目录 | 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息 |
3.权限的八进制与十进制转换:
|权限|八进制|十进制|
|—|000|0|
|–x|001|1|
|-w-|010|2|
|-wx|011|3|
|r–|100|4|
|r-x|101|5|
|rw-|110|6|
|rwx|111|7|
-R 递归修改权限
[root@MR tmp]# ls
123 abc qqq shadow
[root@MR tmp]# ls -l abc
总用量 0
-rw-r--r--. 1 root root 0 3月 27 09:54 123
-rw-r--r--. 1 root root 0 3月 27 09:54 3445
-rw-r--r--. 1 root root 0 3月 27 09:55 efsf
[root@MR tmp]# chmod -R 666 abc
[root@MR tmp]# ls -l abc
总用量 0
-rw-rw-rw-. 1 root root 0 3月 27 09:54 123
-rw-rw-rw-. 1 root root 0 3月 27 09:54 3445
-rw-rw-rw-. 1 root root 0 3月 27 09:55 efsf
-R 修改目录及其内部文件的属主(中间用冒号或者逗号隔开)
[root@MR tmp]# ls -l abc
总用量 0
-rw-rw-rw-. 1 root root 0 3月 27 09:54 123
-rw-rw-rw-. 1 root root 0 3月 27 09:54 3445
-rw-rw-rw-. 1 root root 0 3月 27 09:55 efsf
[root@MR tmp]# chown -R zhou:zhou abc
[root@MR tmp]# ls -l abc
总用量 0
-rw-rw-rw-. 1 zhou zhou 0 3月 27 09:54 123
-rw-rw-rw-. 1 zhou zhou 0 3月 27 09:54 3445
-rw-rw-rw-. 1 zhou zhou 0 3月 27 09:55 efsf
为什么文件创建以后默认权限是644?
为什么目录创建以后默认权限是755?
这是由遮罩码umask来控制的。
[root@MR ~]# cat /usr/bin/umask
#!/bin/sh
builtin umask "$@"
从名字就能看出来,遮罩码umask是用来隐藏一些权限的。举例:如果你不想让人家认出你,你会怎么办?
[root@zhoulijie ~]# umask
0022
文件最终的权限为:
目录最终的权限为:
文件默认是不能具有执行权限的,如果算得的结果有执行权限则将其权限整体加1
前提:进程有属主和属组;文件有属主和属组
linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。
SUID(4) //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
chmod u+s file
chmod u-s file
//如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
SGID(2) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
//默认情况下,用户创建文件时,其属组为此用户所属的基本组;
//一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组 \
//为此设定了SGID的目录的属组
chmod g+s DIR
chmod g-s DIR
//如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
Sticky(1) //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
chmod o+t DIR
chmod o-t DIR
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
4755 //有SUID,文件权限为755
2755 //有SGID,文件权限为755
1755 //有Sticky,文件权限为755
7755 //有SUID、SGID、Sticky,文件权限为755
//这里前面的4、2、1分别表示SUID、SGID、Sticky
//语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m //设定
u:UID:perm
g:GID:perm
//setfacl -m u:test:rw file
//setfacl -m g:test:rw file
//如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。 如:\
//setfacl -m du:test:rw file,此时在此目录中创建的文件均继承此访问控制列表所设置的权限
-x //取消
u:UID
g:GID
//setfacl -x u:test file
//setfacl -x g:test file
-b //Remove all
//语法:getfacl [-aceEsRLPtpndvh] file ...
//getfacl file
//文件权限应用次序:
//默认情况下:
Owner --> Group --> Other
//有设置facl的情况下:
Owner --> facl,user --> Group --> facl,group --> Other
sudo可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令
sudo的配置文件:/etc/sudoers
使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:
别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
别名分类:
用户别名:
主机别名:
Runas别名:
命令别名:
sudo命令语法:sudo [options] COMMAND
-V //显示版本编号
-h //会显示版本编号及指令的使用方式说明
-l //列出当前用户可以使用的所有sudo类命令
-v //因为sudo在第一次执行时或是在N分钟内没有执行(N默认为5)会问密码,这个参数 \
//是重新做一次确认,如果超过N分钟,也会问密码
-k //让认证信息失效,如果不指定-k,默认认证信息在5分钟后失效
-b //将要执行的指令放在后台执行
-u USERNAME //以指定的用户名执行命令,默认为root
w 显示当前登录到系统的用户有哪些,以及其正在做什么
[zhou@zhoulijie ~]$ w
20:36:03 up 18 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root tty1 20:18 17:47 0.02s 0.02s -bash
root pts/0 20:18 3.00s 0.13s 0.04s w
sleep //睡眠
s:秒,默认
m:分
h:小时
d:天
last 显示/var/log/wtmp文件,显示用户登录历史及系统重启历史
[zhou@zhoulijie ~]$ last
root pts/0 192.168.83.1 Mon Apr 8 20:18 still logged in
root tty1 Mon Apr 8 20:18 still logged in
reboot system boot 3.10.0-123.el7.x Mon Apr 8 20:17 - 20:37 (00:19)
............................以下省略............................
-n # 显示最近#次的相关信息
[zhou@zhoulijie ~]$ last -n 2
root pts/0 192.168.83.1 Mon Apr 8 20:18 still logged in
root tty1 Mon Apr 8 20:18 still logged in
wtmp begins Wed Mar 6 16:48:05 2019
lastb 显示/var/log/btmp文件,显示用户错误的登录尝试
[root@zhoulijie ~]# lastb
root ssh:notty 192.168.83.1 Wed Mar 27 09:48 - 09:48 (00:00)
root pts/0 Wed Mar 6 17:16 - 17:16 (00:00)
root tty1 Wed Mar 6 16:48 - 16:48 (00:00)
btmp begins Wed Mar 6 16:48:38 2019
-n # 显示最近#次的相关信息
[root@zhoulijie ~]# lastb -n 2
root ssh:notty 192.168.83.1 Wed Mar 27 09:48 - 09:48 (00:00)
root pts/0 Wed Mar 6 17:16 - 17:16 (00:00)
btmp begins Wed Mar 6 16:48:38 2019
lastlog 显示每个用户最近一次成功登录信息
[root@zhoulijie ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 一 4月 8 20:42:13 +0800 2019
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
............................以下省略............................
-u username //显示特定用户最近的登录信息
[root@zhoulijie ~]# lastlog -u zhou
用户名 端口 来自 最后登陆时间
zhou pts/0 一 4月 8 20:28:24 +0800 2019