目录
❤️1. Linux用户的概念
☸️1.1 角色切换
㊗️1.1.1 普通用户切换到超级用户
㊗️1.1.2 超级用户切换到普通用户
❤️2. Linux权限管理
☸️2.1 文件权限的理解
㊗️2.1.1 文件权限的深入理解
☸️2.2 文件权限的更改
㊗️2.2.1 文件访问权限的相关设置方法
㊗️2.2.2 文件访问权限的修改方法和理解
☸️2.3 修改文件的所有者、所属组
㊗️2.3.1 修改文件的所有者
㊗️2.3.2 修改文件的所属组
㊗️2.3.3 同时修改文件的所有者和所属组
❤️3. 知识点补充
☸️3.1 缺省权限:umask
️Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制 !
普通用户:在linux下做有限的事情!️超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
️su和su-的区别:
(1)对于su -:首先whoami查看当前的用户,pwd查看当工作的目录,在su - 进行目录的切换
也可以用sudo -s,利用su -s要输入的是用户的密码;而su -要输入的是超级用户的密码!
(2)对于su:首先whoami查看当前的用户,pwd查看当工作的目录,在su进行目录的切换
su/su-的区别:都是普通用户到root用户的转换;su还使用当前路径,su- 跳转到root的家目录!
直接exit或者ctr+d就可以登出,回到普通用户
注意:
(1)以上都是我们才开始登录的是普通用户,切换到超级用户root,再切换回来的过程!
(2)如果是我们才开始登录的就是超级用户root,怎么切换普通用户呢?利用su - 用户名;切换回来还是exit或者ctrl+d回到超级用户root
️文件的权限是为了约束普通人
1. 文件属性:r(读)、w(写)、r(执行),对应的数字码为:4、2、1
2. 人属性:u(文件的拥有者)、g(文件的所属组)、o(文件的其他人)
️文件权限的理解和作用
对于同一个项目,可能需要很多人共同去完成;我们只想让共同完这个项目的人可以看见,其他人都看不见;
假如拥有者是你,对于你来说,其他所有的人都是其他人;那么怎么让和你共同完成项目的人也能看到呢?这就需要所属组,我们创建一个所属组(g);把共同完成这个项目的人全都加到这个组里,就能很好的解决这个问题!这样就能对同组内可见,其他人不可见!
️对于第一位的文件类型又有很多种:
️我们最常见的文件类型就是前两种d和-;感兴趣的同学不妨找一找:
ls -l /dev 里面有很多以字符c开头的设备和其他文件的类型;
对于管道文件很少见,我们利用mkfifo f创建一个管道文件f,在ll就可以查看了
️基本权限
读(r/4):Read对文件而言,具有读取文件内容的权限;
对目录来说,具有浏览该目录信息的权限;
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限;
执行(x/1):Execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;
“—”表示不具有该项权限;
️文件权限值的表示方法
字符表示方法
8进制数值表示方法
️chmod 功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项: R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限️chmod命令权限值的格式:用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
️用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
️修改方法1:利用字符进行修改
就拿222这个文件进行举例:
给222的其他人(o)增加wx权限;所有者(x)减去w权限
把222所有权限都去掉
️修改方法2:三位8进制数字
第二种方法更加的简单,但没有第一种直观;我们利用r(4)、w(2)、x(1);就相当于3位比特位:000-111(0-7);比如一个权限要修改成rwx r-x r-x对应的数字就是:7 5 5;
假如把上述的222文件修改为rw- rw- r 对应就是664
️-R递归方式修改权限
对于递归方式的修改权限类似于递归方式的创建,我们就先用mkdir -p递归创建几个目录
mkdir -p /japan/1/2/3;并ll查看权限,都是有可执行x的;
对于目录来说,在创建时会默认有可执行权限x的,这样才能进入目录;如果我们想要把japan目录包括他后面的目录都无法进去;直接执行:chmod -R a-x japan即可!
️普通用户可以删除root用户创建的文件的例子
什么?我并没有sudo提升权限,普通用户居然删除可以删除我root用户创建的文件?
那还得啦了!其根本原因是目录权限的问题!
(1)首先我们先执行whoami和pwd验证一下当前的用户和家目录是不是root;验证完成就开始创建目录mkdir /temp;并设置权限为777,chmod 777 /temp;cd /temp在里面在创建一个文件,touch 111;
(2)我们查看111的权限,ll /temp/111发现权限对于其他人(只有r权限),并且所有者和所数组都是root;
(3)su - zl切换到普通用户zl,执行rm -rf /temp/111竟然可以删除root刚才创建的111文件?其根本原因是文件所在的目录temp的权限是777!
️chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名 ;参数-R递归修改常用选项:-R 递归修改文件或目录的所有者
️示例:递归修改-R
这个其实和递归创建mkdir -p很相似;假如我们递归修改一个目录111:sudo chown -R root 111,它会把111目录下的其它目录或者用户的所有者都改成root!这里不太好截屏展示,感兴趣的小伙伴自己动手试试!
️chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
️示例:我们把文件222的所数组修改为root;给被人东西要经过别人的同意,所以要加上sudo进行运行权限的提升:
同样和chown修改所有者一样,修改所属组chgrp也可以利用-R参数进行递归修改!
这样分开一个个修改太麻烦了,如何同时修改文件的所有者和所属组呢?
️示例:我们把222文件的所有者和所属组修改回来,变成zl
️如果想进入一个目录,需要什么权限?
不是w,也不是r,需要可执行权限x
️注:对于r(读)、w(写)、x(执行)
对于文件而言:读(w)代表可以读取内容,写(r)代表可以修改内容,可执行(x)代表可执行文件;
对于目录而言:读(w)代表可以浏览目录,写(r)代表可以删除移动目录,可执行(x)代表可进入目录;
所以对于目录的创建,默认都有可执行权限x;对于文件的创建默认没有可执行权限x;
️问题的提出
不知道大家发现没有发现我们每次创建的目录权限都是一样的rwx r-x r-x,比如我们创建一个boduo目录,并查看它的权限:
而创建的文件权限都是目录权限减去x权限rw- r-- r--:
这是为什么呢?
️问题的解决
这就和缺省权限有关了;我们利用umask命名查看一下,发现结果是0022,第一个0是特殊权限不需要管,022是什么意思呢?
我们不妨在加一个参数-S:就会以rwx的形式显示新建文件的缺省权限,umask -S
所以我们创建的目录权限都是rwx r-x r-x,去掉可执行权限x,就是文件的权限了rw- r-- r-
我们理解了这一层再来解释022什么意思:2是w权限,所以就是0ww;用777权限rwxrwxrwx与022权限0ww异或结果就是创建的目录权限rwx r-x r-x;