当前位置: 首页 > Linux

Linux基础(十二)小白如何学习Linux?权限管理文件权限

时间:2023-04-06 19:55:16 Linux

前言小文章《其实你离成功只差3厘米》每个人的一生都在向往成功,而成功的经历往往要经历一段磨难。男人半途倒地。当你费尽心思去完成一个项目或一个人生小目标时,你会发现一切其实都只是一个积累的过程。这辈子没有人是被这么多次的苦难教会做人的。被生活一记又一记耳光打得满地都是的感觉特别难受,但你要记住:不管情况有多糟糕,只要你不承认,生活是打不倒你的。不管困境有多大,坚持下去,都会是光明的未来。关键是你要坚持,不要停下来!权限管理-文件权限添加一个用户到一个组,该用户拥有该组的权限。当用户要对某个文件进行操作时,系统会依次查找该用户是否为该文件的所有者,然后是组成员,最后是其他人。如果一个人扫描成为所有者,则他具有所有者的权限,以后无需扫描,依此类推。文件权限管理基本权限1.1基本权限介绍基本权限类型r:readable="4w:writable="2x:executable="1权限属于所有者:u属于组:g其他:o例如[root@aliyun~]#ls-la.txt-rw-r--r--1rootroot1146Jul1618:42a.txt文件类型:-:文本文件d:目录b:设备块c:字符设备s:socketfilel:softlinkpermissionhardlinknumber所有者和组文件占用的空间(字节))文件(目录)最后访问(修改)时间文件名1.2设置修改所有者和组的权限[root@aliyun~]#chownalice.hrfile1#改变所有者和组[root@aliyun~]#chownalicefile1#只改变所有者[root@aliyun~]#chown.hrfile1#只改变组[root@aliyun~]#chown-R/test#递归修改u,g,o对应的权限加减chmodu+x,g-w,o+ra.txt赋值chmoda=rwxa.txtchmoda=-a.txtchmodug=rw,o=rfile1numberchmod644file1chmod-R777xxx当主用户加入文件所在组时,他拥有该组的权限,其他人没有1.3权限对文件或目录的意义文件:ls-lfilenamer:cat可以读取文件内容w:文件x可以修改:可以执行文件的代码。如果文件的代码是编译后的结果,只有x权限才能执行,但如果文件的代码是解释型脚本程序,则需要r权限。执行目录:ls-dl文件名r:ls可以浏览文件内容w:可以在目录或目录下新建文件x:可以执行目录下的程序。需要执行权限。可以正常切换目录,涉及/a/b/c等多层目录。每一关都需要拥有x权限才能正常进入下一关。当前用户需要的权限1.x对沿途所有文件夹的权限2.对目标文件夹的r或w权限r-》可以浏览w-》可以创建、删除、移动子文件和子目录进行操作(操作文件内容),需要当前用户的权限1.对沿途所有文件夹的X权限2.对目标文件的r或w权限r-》可以读取文件内容w-》可以修改文件内容!!!注意!!!储备知识:vim修改的原理是删除源文件,然后将content的内容覆盖到新的文件中,并将新的文件名重命名为原文件名示例:1.当前用户拥有x权限一路上的所有文件夹2.当前用户对目标文件夹具有w权限。3.但是当前用户对目标文件没有w权限。这时候可以用vim编辑文件内容,wq!可以强制保存退出完成文件修改。实际上,源文件被删除了。如果丢失,可以通过检查操作前后文件的inode号来判断。示例1:创建/删除目录内容:x目录权限+w目录权限1.设置权限[root@aliyun~]#mkdir-p/a/b/c[root@aliyun~]#chmod-Ro=x/a#其他o对当前目录及其子目录有x权限[root@aliyun~]#chmodo+w/a/b/c#其他o对/a/b/有w权限c目录2.查看权限[root@aliyun~]#ls-dl/adrwxr-x--x3rootroot4096Aug1116:24/a[root@aliyun~]#ls-dl/a/bdrwxr-x--x3rootroot4096Aug1116:24/a/b[root@aliyun~]#ls-dl/a/b/cdrwxr-x-wx2rootroot4096Aug1116:25/a/b/c3,验证[root@aliyun~]#[root@aliyun~]#su-ggLastlogin:TueAug1116:17:28CSTonpts/2[gg@aliyun~]$touch/a/b/c/1.txt[gg@aliyun~]$退出www.24shopol.comlogout[root@aliyun~]#ls/a/b//c/1.txt例2:浏览目录内容:x目录权限+r目录权限[root@aliyun~]#mkdir-p/a/b/c[root@aliyun~]#chmod-Ro=x/a[root@aliyun~]#chmodo+r/a/b/c[root@aliyun~]#[root@aliyun~]#touch/a/b/c/{1..3}.txt[root@aliyun~]#[root@aliyun~]#su-ggLastlogin:TueAug1116:27:33CST2020onpts/2[gg@aliyun~]$ls/a/b/c1.txt2.txt3.txt例3:要执行目录下的程序:目录x权限+文件x权限,如果文件是解释型语言脚本程序需要对文件有r权限[root@aliyun~]#mkdir-p/a/b/c[root@aliyun~]#chmod-Ro=x/a/b/c[root@aliyun~]#cp/bin/echo/a/b/c[root@aliyun~]#chmodo=x/a/b/c/echo[root@aliyun~]#[root@aliyun~]#su-ggLastlogin:TueAug1116:30:17CSTonpts/2[gg@aliyun~]$/a/b/c/echo"hellofly"hellofly2特殊权限文件权限管理2.1SUID普通用户不是root也不属于root组,所以对/etc/shadow文件没有任何权限[root@aliyun~]#ll/etc/shadow---------1rootroot1109Aug1116:11/etc/shadow但普通用户可以使用passwd命令修改密码,修改密码就是修改/etc/shadow文件。如何实现???[root@aliyun~]#llwhichpasswd-rwsr-xr-x1rootroot27856Aug92019/bin/passwd可以看到一个s权限,s权限的特殊性SUID权限只对二进制可执行文件有效如果执行者对二进制可执行文件有x权限,执行者将拥有文件所有者的权限此权限只有效在执行该二进制可执行文件示例[root@localhost~]#llwhichcat-rwxr-xr-x.1rootroot54160Oct312018/usr/bin/cat[root@localhost~]#chmod4755whichcat#或chmodu+swhichcat[root@localhost~]#llwhichcat-rwsr-xr-x.1rootroot54160October312018/usr/bin/cat[root@localhost~]#su-egon[egon@localhost~]$cat/etc/shadow#看内容就明白了:1.在没有suid设置,我们以用户身份登录,执行目标文件的命令会依次比较当前登录的用户是否是目标文件的所有者、组或其他人来判断是否有操作权威。2、在设置suid的情况下,我们以用户身份登录,执行操作目标文件的命令。当前用户会被Command转换成文件的所有者身份,然后用这个身份去对应目标文件。如果身份不是目标文件的所有者,那么会直接归类为其他人,组sgid不会被检索。示例准备mkdir/testchmod777/test/echo1111>/test/a.txtchmod000/test/a.txtchownuser1.group1/test/a.txtchownegon.devops/usr/bin/catchmodu+s/usr/bin/catexperiment[root@egon~]#ll/test/a.txt#目标文件的拥有者:user1,群组:group1----------。1user1group14October2918:31/test/a.txt[root@fly~]#[root@fly~]#[root@fly~]#ll/usr/bin/cat#命令文件的所有者:飞行-rwxr-xr-x。1电子gondevops541602018年10月31日/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:insufficientpermissions[root@fly~]#chmodo+r/test/a.txt[root@fly~]#su-lili-c"cat/test/a.txt"111[root@fly~]#[root@fly~]#[root@fly~]#chmodo-r,g+r/test/a.txt[root@fly~]#ll/test/a.txt--r-----.1user1group14October2918:31/test/a.txt[root@fly~]#usermod-a-Ggroup1egon[root@fly~]#ll/usr/bin/cat#确保suid还在-rwsr-xr-x。1flydevops541602018年10月31日/usr/bin/cat[root@fly~]#idflyuid=1005(fly)gid=1005(fly)group=1005(fly),1003(group1)[root@fly~]#[root@fly~]#su-lili-c"cat/test/a.txt"#lili--->fly,fly用户没有a.txt的所有者,所以直接当成某人else,虽然egon属于文件a。txt是group1的成员,但是对suidcat没用:/test/a.txt:Insufficientpermissions[root@fly~]#[root@fly~]#su-fly-c"cat/test/a.txt"#如果当前用户与suid用户重叠,则不进行用户转换,owner、group、others的顺序将与1111进行比较。注:sgid规则与suid相同,suid与sgid是同时设置的,此时suid的优先级高于sguid2.2SGID时的SGID作用于普通文件时,类似于SUID。执行文件时,用户将获得文件所属组的权限。如果该目录同时被SGID修饰,则该目录下用户创建的文件属于该目录所属组[root@localhost~]#mkdir/test[root@localhost~]#chmodg+s/test/#相当于chmod2755/test/[root@localhost~]#ll-dl/test/drwxr-sr-x2rootroot6Aug1117:06/test/[root@localhost~]#[root@localhost~]#chown.fly/test/#以后任何人在此目录下创建的一组文件或目录就是fly2.3SBIT其实SBIT与SUID和SGID关系不大。SBIT是restricteddeletionflag或stickybit的缩写,有时也称为StickySBIT目前只对目录有效,用于防止非文件所有者删除文件。一个常见的例子是/tmp目录:[root@localhost~]#ls-dl/tmp/drwxrwxrwt。13rootroot4096August11August1117:09/tmp/[root@localhost~]#chmodo+t/test/#orchmod1755/test权限信息中最后一个t表示该目录设置了SBIT权限。SBIT对目录的作用是:当用户在目录下新建文件或目录时,只有他和root有删除权限,主要针对共享文件夹。3、文件权限管理:umask新建文件和目录的默认权限由umask1决定,对于uid>199且owner等于数组的用户,umask:文件为0002,664,目录为7752。对于1以外的用户,例如root用户,umask:0022file644directory755inux中文件默认权限为666,默认目录权限为777,受umask影响,文件权限计算方式:直接减去偶数位,减去奇数位后在文件开头加1权限值umask值运算文件权限为666022(如果每一位为偶数)后,可以直接减去644666033(如果每一位有奇数或偶数则减去(原奇数位减去奇数位后加1)644666325(如果每一位有奇数或偶数)减法(奇数位后原奇数位加1)减)442目录权限计算方法:直接将文件umask值运算后的初始权限值减去计算文件权限777022减去755777033减去744777325减去452总结:umask设置越小,权限越大,使用cautionwithtemporarysettingumask[root@localhost~]#umask000//SetumaskpermissionPermanentlysetumask[root@localhosttmp]#vim/etc/profile#或者/etc/bashrc的内容一样...如果[$UID-gt199]&&["id-gn"="id-un"];thenumask002//表示uid默认umask值大于等于199表示普通用户elseumask022//表示uid默认umask值小于199表示root