概念:同日常生活中的认知一样,能与不能的问题,放在Linux上就是文件能与不能的问题
意义:权限是帮助用户更好的管理,什么人可以读,什么人可以改等等
对象:权限针对的是用户和文件属性。文件属性是针对主体,我们暂时理解为可读、可写和可执行;而用户是能与不能对文件进行操作,如root和普通用户
root是超级用户(皇帝),不受权限的约束,在Linux中属于特权级别。它甚至可以对用户增删等。
而普通用户则受规则的约束(大臣)
root可以切换为普通用户,但普通用户切换为root时需要输入密码(root的根本被普通用户知道,普通用户才可以切换)。切换用户命令看命令1
用户被规则约束------什么规则呢
用户的作用/角色被分为三类:拥有者角色、所属组角色以及other角色。现在我们的逻辑就要放在Linux上了,文件的拥有者就是拥有者角色,他所属的组织就是所属组角色,other角色就是以上两个角色都不是,那就是其他角色。就比如一个公司,他就是拥有者的一个所属组,拥有者可以让公司的人看,但不允许他们改等,其他角色连看都不能看。就是有这样的需求才会划分为三类角色,Linux方便用户管理权限。但这影响不到root(相当于老板),文件的拥有者就是打工人,你可以约束其他人,但老板不受约束(多了就不能说了,懂得都懂)

第一个符号是文件类型,"-"表示普通文件。然后后续九个字符每三个为一组,分别表示拥有者,所属组,其他角色的权限。这三个顺序只能是是否可读r,是否可写w,是否可执行x。若可读就为r,不可就是-。可写、可执行同理。接着依次是拥有者、所属组的名字,other不需要显示。再接着是硬链接数,我暂时也不知道含义。再接着时创建时间,最后是文件名
用户访问文件时机器会确定用户相对于文件的身份角色,但只确认一次。若是拥有者就按拥有者的权限约束当前用户,即使用户还是是所属组,编译器会按拥有者权限约束,因为机器只确认一次,判断是不是拥有者就记作一次,不会再判断是不是所属组了
文件若想被执行需要两个条件:1、用户对于文件具有可执行权限;2、文件是二进制文件,具有可执行的内在能力
安装软件到系统目录下只有root才有权限,而普通用户可以随意在自己的目录下操作,但普通用户可以使用sudo指令提权来做只有root才能做的事情,可以随意sudo吗,肯定不行,是有条件的,普通用户必须在"白名单"中,一旦出现问题,只需要去白名单中追查即可
1、su指令
切换用户
su root(普通用户要切换为root要输入密码,不然就乱套了,每个人都可以当老板,随意对文件操作)
su 普通用户名(root可以直接切换,其他用户如果切换别的用户就需要输入密码,不然也乱套了,公司内的用户拥可以自由切换账号,那么对文件来说此时就不需要划分角色了,每个人想对文件操作,切换为所有者的账号即可,这时登陆的人就是拥有者)
su - 用户名:-代表登录式Shell,模拟完整登录过程。如果时root用户执行此命令直接切换,如果是普通用户要输入密码
su -:默认切换到root用户,完整加载root登录环境
ubuntu机器要切换为root要用sudo -i
2、文件权限修改指令
chmod指令
用户符号:u拥有者、g所属组、o其他角色、a所有角色。+增加权限,-减少权限,=将三个权限替换为等号后的权限。注:只有文件拥有者和root可以修改文件权限
-R:递归修改,目录连同里面所有子目录、里面全部文件,一次性批量修改所有者
示例:chmod u+r dica;chmod u+rw dica;chmod a-w dicb;
chmod a=rw dica

还可以用8进制修改权限(每三个作为一个八进制,r、w、x为1,-为0)
chmod 777 dica

chown指令
修改文件的拥有者
-R:递归修改,目录连同里面所有子目录、里面全部文件,一次性批量修改所有者
chown 用户名 文件名:将文件的拥有者改为指定用户名(需要输入他人的密码,防止甩锅。root可以随意改)
chown 用户名:用户名 文件名:将文件的拥有者和所属组改为指定用户名(也需要输入密码)
chgrp指令(修改所属组)与上面类似不再赘述
补充:文件类型有以下几种,-:普通文件;d:目录;l:链接文件;p:管道文件;c:字符文件;b:块设备文件