linux权限管理总结

本文发布时间: 2019-Mar-21
文件或目录的权限目录和文件拥有:读r、写w、执行x权限。// 使用 ls -l命令查看当前目录的文件权限信息#ll-rw-r--r-- 1 root root 161 Mar 20 20:39 test.txt // test文件所有者拥有读写权限、所属组和其他用户拥有读权限drw-r--r-- 1 root root 248 Mar 23 21:03 download权限对文件的作用r :读取文件内容(cat、more、head、tail)w:编辑、新增、修改文件内容(vi、echo),但不包含删除文件x:可执行对文件来讲:最高权限是执行权限(x),所以文件要少赋予执行权限。权限对目录的作用r:可以查询目录下文件名(ls)。w: 具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切此目录下文件或目录。(touch、rm、mv、cp)。x:可以进入目录(cd)。对目录来讲:最高权限是写权限(w),所以目录要少赋予写权限。注:0没有任何权限,5(rx)可以查看和进入,7(rwx)拥有最高权限;1、4、6权限对目录没有意义。分配文件基本权限时,核心原则:在最小权限情况下能够实现要求即可!chmod 修改文件或目录的权限/*使用[u、g、o、a][+、-、=]来设置文件或目录的权限[r、w、x]u:user 所有者g:group 所属组o:other 其他a:all 所有用户,包括所有者、所属组、其他+:增加权限-:减少权限=:设置权限*/// 给test的拥有者u,文件增加某权限#chmod u+x,g+r test#chmod a+w test#chmod u-x test#chmod g=rwx test/*使用数字设置文件或目录的权限rwx在Linux下分别对应十进制4、2、1 即3bit二进制的111*/// 设置dir目录的所有者拥有所有权限,所属组和其他用户拥有读和执行的权限#chmod 755 dir/chown 改变文件或目录的所有者格式:chown newUser 文件名让其他人拥有最高权限的最佳做法是使用chown更改文件的所有者。// 同时改变文件的所有者和所属组chown user:group 文件名chgrp 改变文件或目录的所属组格式:chgrp newUser 文件名注:linux创建文件时,默认其所有者为当前用户、其所属组为与当前用户名相同的组。/* 用例 *1 当前用户创建一个test目录 *2 创建新的用户xm,并让他拥有test目录的所有权限 *3 让组用户可以拥有查看权限 *4 其他人没有这个目录的任何权限*/// 创建test目录 #mkdir test// 添加用户xm和密码 #useradd xm#passwd xm// 创建用户user1、user2#useradd user1 #useradd user2// 创建user组#groupadd user// 把user1、user2添加到user组#gpasswd -a user1 user#gpasswd -a user2 user// 更改test目录的所有者和组#chown xm:user test// 更改test目录权限#chmod 750 user默认权限umask 查看默认权限#umask0022 // 第一位0是特殊权限umask值的修改临时修改umask 0033永久修改vi /etc/profile文件的默认权限文件默认不能建立为执行文件,必须手工赋予执行权限所以文件默认权限最大为666默认权限需要换算成字母再相减建立文件之后的默认权限,为666减去umask值例如:666 - 022(umask值)-rw-rw-rw- 减去 —–w–w- 等于 -rw-r–r–666 - 033(umask值)-rw-rw-rw- 减去 —–wx-wx 等于 -rw-r–r– (注:空减去某权限仍为空)目录的默认权限目录默认权限最大为777默认权限需要换算成字母再相减建立文件后的默认权限,为777减去umask值ACL权限ACL权限简介Linux基本权限管理中是分为用户所有者、所属组和其他人,如果有人想拥有和基本权限中任何权限都不一样的时候,基本权限无法满足这种需求,这时候可以考虑使用ACL权限。例如:Linux中有一个test目录,它的所有者为xiaoming,拥有所有权限;文件夹所在组stu,也拥有所有权限;其他人没有任何权限。但是,要给一个新用户xiaowang对test目录拥有读和执行权限时,基本权限满足无法分配需求。ACL权限用来解决用户身份不够的情况。windows系统给文件分配权限时,不用考虑文件的所有者和所属组,可以给任何用户分配相应的权限;ACL权限和windows系统一样,可以分配任何用户相应的权限而不考虑文件所有者和所属组的权限,这解决基本权限无法分配复杂权限的问题。开启、查看和设置ACL权限// 查看分区ACL权限是否开启// df 查看分区情况// dumpe2fs命令是查询指定分区详细文件系统信息命令;-h仅显示超级块中信息,而不显示磁盘块组的详细信息#dumpe2fs -h /dev/sda5 // 临时挂载 根分区/ 的ACL权限#mount -o remount,acl / // 永久开启分区ACL权限#vi /etc/fstab // defaults权限默认包括挂载ACL权限,如果没有ACL权限,在defaults后添加即可UUID=6634633e-001d-43ba-8fab-202f1df93339 / ext4 defaults,barrier=0,acl 1 1//重新挂载文件系统或重启动系统,使修改生效#mount -o remount /// 查看acl权限#getfacl 文件名 // 设置acl权限setfacl [option] 文件名options:-m 设定acl权限 给用户赋予文件(或目录)acl权限,使用'u:用户名:权限'格式 例子:给用户lw赋予文件test读执行权限:setfacl -m u:lw:rx test 给组分配acl权限使用'g:组名:权限'格式-x 删除指定的acl权限-b 删除所有的acl权限-d 设定默认的acl权限-k 删除默认的acl权限-R 递归设定acl权限// 解决上面提到的问题#useradd xiaoming#groupadd stu#mkdir /home/test#chmod 770 /home/test#chown xiaoming:stu /home/test#useradd xiaowang// 设置acl权限#setfacl -m u:xiaowang:rx /home/test// 查看acl权限#getfacl /home/test# file: /home/test# owner: xiaoming# group: stuuser::rwxuser:xiaowang:r-xgroup::rwxmask:rwx //????other::---最大有效权限与删除ACL权限最大有效权限maskmask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。user::xiangwang:r-xmask::rwx // xiaowang的权限与mask值相与,得到xiaowang的真实权限// r-x 与 rwx得到有效权限r-x删除ACL权限// 删除指定用户的acl权限#setfacl -x u:用户名 文件名// 删除指定用户组的acl权限#setfacl -x g:组名 文件名// 删除指定文件的所有的acl权限#setfacl -b 文件名默认ACL权限和递归ACL权限递归ACL权限递归是父目录在设定ACL权限时,当前所有的子文件和子目录也拥有相同的ACL权限。递归ACL权限赋予文件会报错。// 格式:setfacl -m u:用户名:权限 -R 目录名#cd test#touch file1#touch file2// 赋予用户lw拥有test目和test目录下文件的rx权限// 使用 -R 参数设置递归权限,lw用户对file1和file2文件拥有了x权限,造成了权限溢出#setfacl -m u:lw:rx -R test/ #touch file3 // 新建file3,没有acl权限#getfacl file3 默认ACL权限默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。// 格式:setfacl -m d:u:用户名:权限 -R 目录名sudo权限sudo权限的概念root把本来只能超级用户执行的命令赋予普通用户执行。sudo的操作对象是系统命令。sudo权限的使用// 查看sudo配置文件//man 5 sudoers查看配置文件详细#visudo // 实际修改的是/etc/sudoers文件// 用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)root ALL=(ALL) ALL// 组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)%wheel ALL=(ALL) ALL// 普通用户不能执行shutdown命令#visudo/* 编辑/etc/sudoers文件1 增加user1 ALL=(ALL) /sbin/shutdown -r now配置。注:命令写的越简单,user1用户得到的权限越大,命令写的越详细,user1用户得到的权限就越小;系统命令要写成绝对路径,以兼容其他版本。2 保存退出*/// 登陆普通用户账号user1,执行系统命令#su - user1$sudo -l // 要求输入user1密码,才能查看可执行的系统命令$sudo /sbin/shutdown -h now // 执行关机命令不被允许$sudo /sbin/shutdown -r now //执行重启命令// 给普通用户执行添加用户和密码的权限# visudo// 添加 user1 ALL=/usr/sbin/useradd 配置// 添加 user1 ALL=/usr/bin/passwd 配置注:这使user1可以更改root的密码// user1 ALL=/usr/bin/passwd [A-Za-z]*, !/usr/binpasswd '', !/usr/bin/passwd root,则user1无法更改root密码// 添加 user1 ALL=/bin/vi 注:这使user1可以编辑/etc/shadow文件,更改root用户等密码文件特殊权限SetUID权限只有可执行的二进制程序才能设定SetUID权限命令执行者要对该程序拥有x(执行)权限命令这行者在执行改程序时获得该程序文件属主的身份SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效;如passwd命令,其他用户都可以使用passwd更改自己的密码设置和取消SetUID权限/*设置SetUID权限,4代表设置SetUID、2代表SetGID、1代表stickyBIT u+s :代表给文件加上SetUID权限 g+s :代表给目录加上SetGID权限 o+s :代表给文件加上STICKBIT权限*/#ll-rwxr-xr-x .... test#chmod 4755 test // 或chmod u+s test-rwsr-xr-x ... test// 若文件没有执行权限,但设置SetUID时,执行位显示大S,这没有意义。// 取消SetUID权限#chmod u-s test#chmod 0755 test危险的SetUID权限关键目录应严格控制写权限,比如”/”、”/usr” 等用户的密码设置要严格最受密码三原则对系统中默认应该具有SetUID权限的文件作以列表,定时检查有没有这之外的文件被设置了SetUID权限不能对vi等编辑器赋予SetUID权限,这样vi就能编辑/etc/shadow文件而更改root密码。SetGID权限SetGID针对文件的作用只有可执行的二进制程序才能设置SetGID权限命令执行者要对该程序拥有x(执行)权限命令执行在执行程序的时候,组身份升级为改程序文件的属组SetGID权限同样只在改程序执行过程中有效,也就是说组身份改变只在程序执行过称重有效。注:与SetUID作用相似// locate命令#ll /usr/bin/locate-rwx--s--x 1 root slocate ... /usr/bin/locate// locate 搜索数据库/var/lib/mlocate.db#ll /var/lib/mlocate.db-rw-r----- 1 root slocate ... /var/lib/mlocate.db // 普通用户时没有权限搜索这个数据库// locate属于slocate组且设置了SetGID权限,slocate组拥有对mlocate.db读的权限,所以普通用户使用locate时组身份自动升级为slocate组则可以使用locate命令查询mlocate.db数据库。命令结束后,用户user身份返回user组身份。SetGID针对目录的作用普通用户必须对此目录拥有r和x权限,才能进入此目录普通用户在此目录中的有效组会变成此目录的属组若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组// 在root用户在/tmp目录创建test目录,并更改目录权限为777#cd /tmp#mkdir test#lldrwxr-xr-x 2 root root ... test#chmod 777 test#lldrwxrwxrwx 2 root root ... test// user用户在/tmp/test目录创建file1$cd /tmp/test$touch file1$ll-rw-rw-r-- 1 user user ... file1// root用户更改test目录为2777即设置SetGID#chmod 2777 test#lldrwxrwsrwx 2 root root ... test// user用户在/tmp/test目录创建file2$touch file2$ll-rw-rw-r-- 1 user user ... file1-rw-rw-r-- 1 user root... file2 // 新建file2文件所属组为root组设置和取消SetGID权限// 设置SetGID权限#chmod 2755 test/#chmod g+s test/// 取消SetGID权限#chmod 0755 test/#chmod g-s test/Sticky BITSBIT粘着位作用黏着位目前只针对目录有效普通用户对目录拥有w和x权限,若普通用户可以拥有此目录的w权限如果该目录没有黏着位,普通用户因为拥有所有权限,可以删除该目录所有的文件,包括其他用户建立的文件;该目录赋予黏着位后,普通用户就算拥有目录的w权限,也只能删除自己建立的文件,不能删除其他用户建立的文件。如/tmp 目录即拥有黏着位设置与取消黏着位// 设置黏着位#chmod o+t dir#chmod 1777 dir// 取消黏着位#chmod o-t dir#chmod 0777 dir不可改变位权限chattr [+-=] [option] 文件名或目录名+ : 增加权限- :删除权限=:等于某权限options:i:如果对文件设置i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。a:如果对文件设置a属性,那么只能在文件中增加数据,但不能删除也不嗯呢该修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但不允许删除。注:不允许使用vi增加文件数据,因为无法判断vi是增加还是修改或删除文件数据,所以只能使用echo data>> file来追加数据。chattr对文件或目录都生效#chattr +i file#lsattr file----i-------e- file#vim abc // 不允许修改#rm -rf file //不允许删除// 删除i属性#chattr -i file


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表