每一个人的人生都渴望成功 而成功的经历每每都要经历一段熬的过程 分别只是熬的长短 更有甚者是有的人熬过去了 有的人在半路倒下了。当你千辛万苦完成了一个项目 一我的生的小目标的时候 反过头来 你会发现 其实一切不过是一场厚积薄发的过程而已。
人这辈子 谁不得有那么几次被苦难教作人。
那种被生活一巴掌连着一巴掌呼得满地找牙的感受特别很差 可是你要记得:不管境况多糟糕 只要不认怂 生活就没办法撂倒你。
再艰难的困境
走下去就是柳暗花明
关键是 你要挺住 不要停!node
把一个用户加入了一个组 该用户就拥有了该组的权限 当一个用户要操做某个文件时 系统会依次检索该用户是不是该文件的拥有者 其次是组成员 最后是其余人 若是扫描到是拥有者 则具有拥有者的权限 没必要日后扫描 以此类推vim
基本权限类型数组
- r:可读=》4
- w:可写=》2
- x:可执行=》1
权限的归属bash
- 属主:u
- 属组:g
- 其余人:o
例如
[root@aliyun ~]# ls -l a.txt
-rw-r--r-- 1 root root 1146 Jul 16 18:42 a.txtide文件类型:
-:文本文档
d:目录
b:设备block
c:字符设备
s:套接字文件
l:软连接ui权限rest
硬连接个数code
属主递归
属组文档
文件所占用的空间(以字节为单位)
文件(目录)最近访问(修改)时间
文件名
修改属主、属组
[root@aliyun ~]# chown alice.hr file1 # 改属主、属组
[root@aliyun ~]# chown alice file1 # 只改属主
[root@aliyun ~]# chown .hr file1 # 只改属组[root@aliyun ~]# chown -R /test # 递归修改
修改u、g、o对应的权限
加减法
chmod u+x,g-w,o+r a.txt
赋值
chmod a=rwx a.txt
chmod a=- a.txt
chmod ug=rw,o=r file1数字
chmod 644 file1chmod -R 777 xxx/
注意:把某一个非属主用户添加到文件的属组里,他就拥有了该组的权限,而再也不是其余人
文件:ls -l 文件名
- r:能够cat读取文件内容
- w:能够修改文件
- x:能够执行文件代码,若是该文件的代码是编译好的结果,那么只有x权限便可执行,但若是该文件的代码是一个解释型的脚本程序,则须要配合r权限才可执行
目录:ls -dl 文件名
- r: 能够ls浏览文件下的内容
- w:能够在目录下建立新文件or目录
- x:
- 能够执行目录下的程序,除了对目录有执行权限外,还要对程序文件有执行权限才行。
- 能够正常切换到目录下
- 涉及到多层目录如/a/b/c,须要对每一级都有x权限才能够正常走到下一级
一:对文件夹的操做(不操做文件内容),须要当前用户具有的权限
一、对沿途全部文件夹有x权限
二、对目标文件夹有r或w权限
r-》能够浏览
w-》能够建立、删除、移动子文件和子目录二:对文件的操做(操做文件内容),须要当前用户具有的权限
一、对沿途全部文件夹有x权限
二、对目标文件有r或w权限
r-》能够读取文件内容
w-》能够修改文件内容!!!注意!!!
储备知识:vim修改的原理是将源文件删掉,而后再将内容的内容覆盖写入了新文件,新文件名重命名为原文件名
例子:
一、当前用户对沿途全部文件夹都有x权限
二、而且当前用户对目标文件夹有w权限
三、可是当前用户对目标文件没有w权限
此时当前用能够vim编辑文件内容,而且能够wq!强制保存退出完成文件修改,实际上是将源文件删掉了,能够经过查看先后操做的文件inode号来肯定
一、设置权限
[root@aliyun ~]# mkdir -p /a/b/c
[root@aliyun ~]# chmod -R o=x /a # 其余人o对当前目录及其子目录都有x权限
[root@aliyun ~]# chmod o+w /a/b/c # 其余人o对/a/b/c目录有w权限二、查看权限
[root@aliyun ~]# ls -dl /a
drwxr-x--x 3 root root 4096 Aug 11 16:24 /a
[root@aliyun ~]# ls -dl /a/b
drwxr-x--x 3 root root 4096 Aug 11 16:24 /a/b
[root@aliyun ~]# ls -dl /a/b/c
drwxr-x-wx 2 root root 4096 Aug 11 16:25 /a/b/c三、验证
[root@aliyun ~]#
[root@aliyun ~]# su - gg
Last login: Tue Aug 11 16:17:28 CST 2020 on pts/2
[gg@aliyun ~]$ touch /a/b/c/1.txt
[gg@aliyun ~]$ exit
logout
[root@aliyun ~]# ls /a/b//c/
1.txt
[root@aliyun ~]# mkdir -p /a/b/c
[root@aliyun ~]# chmod -R o=x /a
[root@aliyun ~]# chmod o+r /a/b/c
[root@aliyun ~]#
[root@aliyun ~]# touch /a/b/c/{1..3}.txt
[root@aliyun ~]#
[root@aliyun ~]# su - gg
Last login: Tue Aug 11 16:27:33 CST 2020 on pts/2
[gg@aliyun ~]$ ls /a/b/c
1.txt 2.txt 3.txt
[root@aliyun ~]# mkdir -p /a/b/c
[root@aliyun ~]# chmod -R o=x /a/b/c
[root@aliyun ~]# cp /bin/echo /a/b/c
[root@aliyun ~]# chmod o=x /a/b/c/echo
[root@aliyun ~]#
[root@aliyun ~]# su - gg
Last login: Tue Aug 11 16:30:17 CST 2020 on pts/2
[gg@aliyun ~]$ /a/b/c/echo "hello fly"
hello fly
普通用户不是root也不属于root组,因而它对/etc/shadow文件没有任何权限
[root@aliyun ~]# ll /etc/shadow
---------- 1 root root 1109 Aug 11 16:11 /etc/shadow
可是普通用户却能够用passwd命令修改密码,而修改密码都是在修改/etc/shadow文件,如何实现的???
[root@aliyun ~]# llwhich passwd
-rwsr-xr-x 1 root root 27856 Aug 9 2019 /bin/passwd
能够看到一个s权限,s权限的特殊之处
- SUID 权限仅对二进制可执行文件有效
- 若是执行者对于该二进制可执行文件具备 x 的权限,执行者将具备该文件的全部者的权限
- 本权限仅在执行该二进制可执行文件的过程当中有效
[root@localhost ~]# ll
which cat
-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[root@localhost ~]# chmod 4755which cat
# 或者 chmod u+swhich cat
[root@localhost ~]# llwhich cat
-rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat[root@localhost ~]# su - egon
[egon@localhost ~]$ cat /etc/shadow # 能够看到内容
一、在没有设置suid的状况下,咱们登陆了一个用户,来执行操做目标文件的命令
会依次比对当前登陆用户是不是目标文件的属主、属组、其余人来肯定是否拥有操做权限二、在设置了suid的状况下,咱们登陆了一个用户,来执行操做目标文件的命令
当前用户会转换成命令文件的属主身份,而后拿着该身份去对应目标文件,若是该身份不是目标文件的主人,那么就直接被归为其余人一栏,不会检索组
sgid同样
准备
mkdir /test
chmod 777 /test/
echo 1111 > /test/a.txt
chmod 000 /test/a.txt
chown user1.group1 /test/a.txt
chown egon.devops /usr/bin/cat
chmod u+s /usr/bin/cat实验
[root@egon ~]# ll /test/a.txt # 目标文件的属主:user1,属组:group1
----------. 1 user1 group1 4 10月 29 18:31 /test/a.txt
[root@fly ~]#
[root@fly ~]#
[root@fly ~]# ll /usr/bin/cat # 命令文件的属主:fly
-rwxr-xr-x. 1 egon devops 54160 10月 31 2018 /usr/bin/cat
[root@fly ~]#
[root@fly ~]#
[root@fly ~]# su - lili -c "cat /test/a.txt" # lili切换为fly用户执行,fly用户没有对上a.txt的属主,因此直接被当成其余人,没有任何权限
cat: /test/a.txt: 权限不够
[root@fly ~]# chmod o+r /test/a.txt
[root@fly ~]# su - lili -c "cat /test/a.txt"
111
[root@fly ~]#
[root@fly ~]#
[root@fly ~]# chmod o-r,g+r /test/a.txt
[root@fly ~]# ll /test/a.txt
----r-----. 1 user1 group1 4 10月 29 18:31 /test/a.txt
[root@fly ~]# usermod -a -G group1 egon
[root@fly ~]# ll /usr/bin/cat # 确保suid还在
-rwsr-xr-x. 1 fly devops 54160 10月 31 2018 /usr/bin/cat
[root@fly ~]# id fly
uid=1005(fly) gid=1005(fly) 组=1005(fly),1003(group1)
[root@fly ~]#
[root@fly ~]# su - lili -c "cat /test/a.txt" # lili--->fly,fly用户没有对上a.txt的属主,因此直接被当成其余人,虽然此时egon属于文件a.txt的属组group1的成员,可是对suid来讲那没用
cat: /test/a.txt: 权限不够
[root@fly ~]#[root@fly ~]# su - fly -c "cat /test/a.txt" # 若是当前用户与suid的用户重叠,那么就无所谓用户转换,一样会按照:属主、属组、其余人的次序依次对照
1111注意:
sgid规则同suid
同时设置suid与sgid的状况下,suid优先级高于sguid
当SGID 做用于普通文件时,和 SUID 相似,在执行该文件时,用户将得到该文件所属组的权限。
- 当 SGID 做用于目录时,意义就很是重大了:
当一个用户对某一目录有写和执行权限时,该用户就能够在该目录下创建文件
若是该目录同时用 SGID 修饰,则该用户在这个目录下创建的文件都是属于这个目录所属的组
[root@localhost ~]# mkdir /test
[root@localhost ~]# chmod g+s /test/ # 等同于chmod 2755 /test/
[root@localhost ~]# ll -dl /test/
drwxr-sr-x 2 root root 6 8月 11 17:06 /test/
[root@localhost ~]#
[root@localhost ~]# chown .fly /test/ # 后期任何人在该目录下建立的文件or目录的属组都是fly
其实 SBIT 与 SUID 和 SGID 的关系并不大。
SBIT 是 the restricted deletion flag or sticky bit 的简称,有时也称为Sticky
SBIT 目前只对目录有效,用来阻止非文件的全部者删除文件。比较常见的例子就是 /tmp 目录:
[root@localhost ~]# ls -dl /tmp/
drwxrwxrwt. 13 root root 4096 8月 11 17:09 /tmp/
[root@localhost ~]# chmod o+t /test/ # 或者 chmod 1755 /test
权限信息中最后一位 t 代表该目录被设置了 SBIT 权限。SBIT 对目录的做用是:当用户在该目录下建立新文件或目录时,仅有本身和 root 才有权力删除,主要做用于一个共享的文件夹。
新建文件、目录的默认权限是由umask决定的
一、uid>199而且属主与数组相等的用户下,umask: 0002
- 文件 664
- 目录 775
二、除1以外的其余用户下,好比root用户,umask: 0022
- 文件 644
- 目录 755
inux中文件默认权限为66六、目录权限默认为777,在umask的影响下
文件权限计算方法:偶数位直接相减,奇数位相减后加1
文件的起始权限值 umask值 操做 计算后文件权限 666 022 (每位若是都是偶数) 直接相减便可 644 666 033 (每位若是有奇数或偶数 相减(奇数位相减后在其原奇数位加1 644 666 325(每位若是有奇数或偶数) 相减(奇数位相减后在其原奇数位加1) 442 目录权限计算方法:直接相减便可
文件的起始权限值 umask值 操做 计算后文件权限 777 022 相减 755 777 033 相减 744 777 325 相减 452 总结:umask设置的越小,权限越大,慎用
临时设置umask
[root@localhost ~]# umask 000 //设置umask权限
永久设置umask
[root@localhost tmp]# vim /etc/profile # 或者/etc/bashrc内容同样
......
if [ $UID -gt 199 ] && [ "id -gn
" = "id -un
" ]; thenumask 002 //表示uid大于等于199的默认umask值,表示普通用户elseumask 022 //表示uid小于199的默认umask值,表示rootfi