通过一定条件,拦住一部分人,给另一部分权利来访问资源,比如Vip、门禁等。
(1)权限 = 用户角色 + 文件属性。
(2)Linux中的用户:root超级管理员、普通用户。
(3)对于文件来说有三种角色:user 所有者、group 所属组用户(所有者所在组的用户)、others 其它用户。“组”的这种权限管理概念,主要是多人协作时有用。
对于x可执行权限的理解:拥有可执行权限!=可执行,可执行==具有可执行权限+文件是可执行文件。
对一个目录或文件无x权限,意味着无法cd到目录,无法在目录下执行命令;也无法执行一个可执行文件;
对一个目录或文件无r权限,意味着无法用ls查看目录内有哪些文件,也不能用cat读取文件内容;
对一个目录或文件无w权限,意味着无法在这个目录创建文件,也无法删除、编辑文件。
有几点要注意:目录有-r权限,不代表可以进入目录读取文件,这一点是-x控制的而不是-r。目录具有-x权限,没有-r权限,则可以cd进入这个目录,也可以在这个目录下执行命令;但由于没有-r权限,即使可以执行ls命令,也任然无法读取目录下有哪些文件或目录。
但有一点并不科学,只要用户有目录的写权限
,那就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限,例如张三创建的文件,凭什么李四能删除掉。一个文件能不能被删除,与用户是否有这个文件的写权限无关,只要有这个文件所在目录的写权限,即使是普通用户也可以为所欲为,为了解决这个问题,Linux引入了粘滞位
。
chmod +t 目录
设置目录为粘滞位,该目录下的文件只能由超级管理员、目录的所有者或文件的所有者删除。
多个Linux用户协作,如果想实现多个用户文件信息共享,注意不能在任何一个用户家目录里面创建文件来共享(只有拥有者对家目录有权限),而是在系统的非用户目录下创建共享目录,并且对other用户放开所有权限。
但这样还是会出问题,比如张三在这个共享目录创建了一个文件,这个文件张三只想给李四看,王五就不爽了把这个文件删了,所以需要使用粘滞位
来防止这种情况。不开放写权限也可以解决问题,但是这样一来其它用户就无法再共享目录中创建文件,那就无法做到共享了。
Windows系统通过后缀区分文件类型,但是Linux不是以后缀区分,也就是Linux的文件不需要后缀。但我们习惯使用Windows,学习Linux创建文件也习惯加上后缀让我们自己好区分。
虽然Linux文件不需要后缀,但不是说Linux文件不需要文件后缀,比如在Linux使用gcc编译器变成C/C++文件,那gcc编译器就会区分了,如果不是.c或.cpp结尾,没办法编译。
su:切换超级用户
su [用户名]:切换用户
会提示输入密码。
超级用户的命令提示符是#,普通用户是$。
给任何指令提权,以root的身份执行:sudo 后接任何指令
需要输入你的密码,不是root用户的密码,很奇怪!
修改文件权限,只有文件的拥有者和root用户可以修改文件权限。
-R 递归修改目录权限
+号增加权限,-号减少权限,=号赋予权限
u:user,即所有者
chmod u+rwx filename
chmod u-rwx filename
g:group,即所属组
o:other,即其它用户
a:all,所有用户
普通用户如果对这个文件没有相应权限,即使这个文件的所有者是你,那也无法执行相应操作!
只有root不受权限约束!
使用权限数值修改权限:
chmod 744 fimename
第一个7即文件拥有者可读可写可执行;
第二个4即所属组成员可读;
第三个4即其它用户可读。
修改文件或目录的拥有者。
-R 递归修改目录下的文件所属者
chown username filename
chown zhangsan test.c
修改文件或目录的所属组
-R 递归修改目录下的文件所属组
chgrp [-R] 用户组 文件名
查看、修改或设置文件掩码,超级管理员用户的默认文件掩码一般是0022,普通用户是0002。
新建文件的默认权限是0666,新建目录的默认权限是0777。但创建后的文件或目录不是这个默认权限值,因为会受到umask文件掩码的影响,实际上创建文件或目录的权限是:默认权限 & ~umask
,按位取反后的umask文件掩码,按位与文件或目录的默认权限。
也可以不用这么麻烦去算,直接把默认权限减去文件掩码就能得到创建后的权限,不过要记住权限值的原理并不是相减得到,而是上述说的默认权限 $ ~umask
。
umask 查看
umask 044 设置或修改为044
显示当前登录用户
显示文件类型