
Linux系统特殊权限
1.Linux系统权限
s --suid --权限 chmod u+s /bin/rm 任意用户都可以用root权限执行 -s stat查看s的数字为4 -t 粘滞位 --sticky 1777(权限) chmod o+t /tmp/1.任何人都可以在目录里面创建文件
2.每个人只能管理自己的文件,别人的文件还是处理不了 3.作用运行某一个命令的时候相当于属于这个命令所在家庭
rwxr read --4 w write --2 x execute --命令或脚本才能执行 --14.面试题:A用户读取权限B用户写入权限,对于同一个文件
ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。如,某一个文件,不让单一的某个用户访问。
ACL使用两个命令来对其进行控制
getfacl:取得某个文件/目录的ACL设置项目
setfacl:设置某个文件/目录的ACL设置项目-rwxr-xr-x. 1 root root 117656 Nov 6 2016 /bin/ls -421401401 -7 5 5 644 rw-r--r-- 600 rw------- 640 rw-r----- 700 rwx------ 000 ---------
2.umask 控制系统默认权限
Linux系统默认权限控制命令
1.查看当前系统的umask
022
2.一般情况下可以给
文件的最大权限 666
目录可以给的最大权限 777
文件 666 - 022(umask)=644
3.如何计算文件: 666 -022 =644 目录: 777 -022 =755通过umask计算系统默认的权限 文件或目录最大权限 减去umask ,文件某一个位置上有奇数 减完加1
3.Linux系统特殊权限
1.suid以文件的所属用户身份执行命令, 而不是以当前用户的身份执行命令
-rwsr-xr-x. 1 root root 54080 Nov 5 2016 /usr/bin/cat root用户执行cat,最终运行的身份是root bgx用户执行cat, 最终运行的身份是bgx suid root用户执行,最终运行的身份是root bgx用户执行,最终运行的身份是root2.将目录设置为sgid后续如果在该目录下创建文件, 都将与该目录的所属组保持一致
drwxr-srwx. 2 root devops 29 Jun 14 21:01 /opt/ bgx用户登陆后, 在/opt/目录创建文件或者目录属主和属组是 最终属主和属组 bgx devops xlw用户登陆后, 在/opt/目录创建文件或者目录属主和属组是 最终属主和属组 xlw devops root用户登陆后, 在/opt/目录创建文件或者目录属主和属组是 最终属主和属组 root devops3.
sticky任何人都可以在该目录下创建文件以及目录, 但只能删除自己创建的文件和目录drwxrwxrwt. 7 root root 93 Jun 14 21:47 /tmp/4.如何设置特殊权限
用符号表示: setuid=u+s; setgid=g+s; sticky=o+t
用数值表示: setuid=4; setgid=2; sticky=11.1set_uid
文件的执行有效身份为文件的拥有者,而不是执行者的身份。
演示//检查passwd文件权限,匿名用户没有权限查看 [root@x86cloud ~]# chmod 640 /etc/passwd [root@x86cloud ~]# ll /etc/passwd -rw-r----- 1 root root 1548 Dec 9 18:45 /etc/passwd //使用普通用户无法查看 [x86cloud@x86cloud root]$ cat /etc/passwd cat: /etc/passwd: Permission denied //给cat命令赋予suid [root@x86cloud ~]# chmod 4755 /bin/cat [root@x86cloud ~]# ll /bin/cat -rwsr-xr-x. 1 root root 48568 Mar 23 2017 /bin/cat suid授权方法 suid 4000 权限字符s(S),用户位置上的x位上设置。 授权方法:chmod 4755 passwd chmod u+s passwdsuid的作用
1.让普通用户拥有二进制文件的所属主权限,二进制文件需要有执行权限。
2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。
3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。
4.如果普通用户需要操作没有权限的文件,为对应的命令赋予Suid权限。
注意: suid双刃剑, 是一个比较危险的功能, 对系统安全有一定的威胁。1.2set_gid
演示案例[root@x86cloud /]# chmod 777 /opt/ [root@x86cloud /]# chmod g+s /opt/ [root@x86cloud /]# su - x86cloud [x86cloud@x86cloud ~]$ mkdir /opt/sgid_test [x86cloud@x86cloud ~]$ ll /opt/sgid_test -d drwxrwsr-x. 2 x86cloud root 4096 Nov 14 00:27 /opt/sgid_testsgid授权方法
suid 2000 权限字符s(S),取决于属组位置上的x。 授权方法:chmod 2755 directory chmod g+s directorysgid作用
1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。>1.3sticky粘滞位
sticky对目录有写权限的用户仅仅可以删除目录里属于自己的文件,不能删除其他用户的文件
系统中存在的/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。
sticky授权方法粘滞位 1000 权限字符t(T),其他用户位的x位上设置。 授权方法:chmod 1755 /tmp chmod o+t /tmpsticky作用
1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。
2.特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T
3.一个目录即使它的权限为"777"如果是设置了粘滞位,除了目录的属主和"root"用户有权限删除,除此之外其他用户都不允许删除该目录。
4.权限属性chattr
隐藏属性attr
[root@oldboyedu-48 test]# lsattr -------------e- ./abc5.txt -------------e- ./oldboy.txt -------------e- ./abc2.txt -------------e- ./abc7.txt -------------e- ./abc4.txtchattr
--a (append 只能追加) 如果设置了这个权限 只能追加不能删除不能修改
--i (immutable 无敌) 无法修改 无法删除
+-a[root@oldboyedu-48 test]# rm oldboy.txt -f rm: cannot remove .oldboy.txt': Operation not permitted重要的命令或者文件加上隐藏属性
-- /etc/passwd --/etc/shadow --/etc/gshadow修改chattr和lsattr或者直接删除掉
设置文件属性(权限),针对所有用户,包括 root
a:让文件或目录仅可追加内容 i:不得任意更动文件或目录 //创建文件并设置属性 [root@x86cloud ~]# touch file_a file_i [root@x86cloud ~]# lsattr file_a file_i ---------------- file_a ---------------- file_i //设置属性 [root@x86cloud ~]# chattr +a file_a [root@x86cloud ~]# chattr +i file_i [root@x86cloud ~]# lsattr file_a file_i -----a---------- file_a ----i----------- file_i //a权限, 无法覆盖写入和删除文件 [root@x86cloud ~]# echo "aa" > file_a bash: file_a: Operation not permitted [root@x86cloud ~]# rm -f file_a rm: cannot remove ‘file_a’: Operation not permitted //a权限, 只能追加, 适用于日志文件 [root@x86cloud ~]# echo "aa" >> file_a //i权限, 无法写入, 无法删除 [root@x86cloud ~]# echo "i" > file_i bash: file_i: Permission denied [root@x86cloud ~]# echo "i" >> file_i bash: file_i: Permission denied [root@x86cloud ~]# rm -f file_i rm: cannot remove ‘file_i’: Operation not permitted //解除限制 [root@tianyun ~]# chattr -a file100 [root@tianyun ~]# chattr -i file2003.进程掩码umask
umask用于控制系统权限, 默认系统权限较大, 需要靠Umask来变更权限
默认新建文件,系统默认最大权限为666
默认新建目录,系统默认最大权限是777我们在新建文件和目录的默认权限会受到
umask的影响,umask表示要减掉的权限。
创建目录权限值为777-umask
创建普通文件权限值为644-umask
umask涉及到的相关文件/etc/bashrc/etc/profile ~/.bashrc ~/.bash_profile注意umask影响的范围
shell (vim,touch) --umask--> 新文件或目录权限
vsftpd --umask--> 新文件或目录权限
samba --umask--> 新文件或目录权限
useradd --umask--> 用户 HOME1.假设umask值为:022(所有位为偶数) //文件的起始权限值 6 6 6 - 0 2 2 = 6 4 4 2.假设umask值为:045(其他用户组位为奇数) //计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。 6 6 6 - 0 4 5 = 6 2 1 3.默认目录权限计算方法 7 7 7 - 0 2 2 = 7 5 5 umask 044 //umask所有位全为偶数时 示例:mkdir d044 //目录733 示例:touch f044 //文件622 umask 023 //umask值的部分或全部位为奇数时 示例:mkdir d023 //目录754 示例:touch f023 //文件644 umask 035 //umask值的所有位为奇数时 示例:mkdir d035 //目录742 示例:touch f035 //文件642示例1: 在shell进程中创建文件
//查看当前用户的umask权限 [root@x86cloud ~]# umask 0022 [root@x86cloud ~]# touch file0022 [root@x86cloud ~]# mkdir dir0022 [root@x86cloud ~]# ll -d file0022 dir0022/ drwxr-xr-x 2 root root 6 Jan 24 09:02 dir0022/ -rw-r--r-- 1 root root 0 Jan 24 09:02 file0022示例2: 修改shell umask值(临时生效)
[root@x86cloud ~]# umask 000 [root@x86cloud ~]# mkdir dir000 [root@x86cloud ~]# touch file000 [root@x86cloud ~]# ll -d dir000 file000 drwxrwxrwx 2 root root 6 Jan 24 09:04 dir000 -rw-rw-rw- 1 root root 0 Jan 24 09:04 file000示例3: 修改shell umask值(永久生效, 强烈不建议修改)
[root@x86cloud ~]# vim /etc/profile if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi //立即在当前 shell 中生效 [root@x86cloud ~]# source /etc/profile示例4: 通过umask决定新建用户HOME目录的权限
[root@x86cloud ~]# vim /etc/login.defs UMASK 077 [root@x86cloud ~]# useradd dba [root@x86cloud ~]# ll -d /home/dba/ drwx------. 4 dba dba 4096 3 月 11 19:50 /home/dba/ [root@tianyun ~]# vim /etc/login.defs UMASK 000 [root@x86cloud ~]# useradd sa [root@x86cloud ~]# ll -d /home/sa/ drwxrwxrwx. 4 sa sa 4096 3 月 11 19:53 /home/sa/示例 5:例如vsftpd进程/etc/vsftpd/vsftpd.conf
[root@tianyun ~]# yum -y install vsftpd [root@tianyun ~]# man vsftpd.conf anon_umask local_umask