目录
目录
前言
linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要。
文件权限大致分为基本权限、高级权限、特殊权限和隐藏权限,下面依次从这四个方面介绍。
Linux用户权限解析
1.基本权限UGO
文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件
图示:
权限对象:属主--->u;属组--->g; 其他人--->o;
权限类型:r(读)、w(写)、x(执行)
例如:
r w x rw- r-- alice hr file1.txt
前面三个“rwx”表示属主权限,随后的“rw-”表示属组权限,最后的“r--”表示其他人权限。
alice表示属主,hr是属组,file1.txt是文件名。
1.1 设置权限:
chown:改变文件或目录的所属主以及所属组
chmod:为文件或目录设置访问权限
更改文件的属主(拥有者)、属组 (所属组)
chown:
[root@linux-server ~]# chown alice.hr file1.txt #修改属主、属组
[root@linux-server ~]# chown tom file1.txt #修改属主
[root@linux-server ~]# chown .it file1.txt #只改属组
[root@linux-server ~]# chown -R alice.hr dir1 #递归修改---针对目录
更改权限
使用符号:
chmod:
例如:
[root@linux-server ~]# chmod u+x file1.txt #属主增加执行权
[root@linux-server ~]# chmod a=rwx file1.txt #所有人等于读写执行
[root@linux-server ~]# chmod a=- file1.txt #所有人都没有权限
[root@linux-server ~]# chmod ug=rw,o=r file1.txt #属主属组等于读写,其他人只读
使用数字:
r--->4;w--->2;x--->1;
例如:
[root@linux-server ~]# chmod 644 file1.txt #给file1.txt文件rw,r,r权限,使用数字时只能三个权限一起赋,不存在chmod 6 file1.txt。
2.高级权限
2.1 suid
给命令加权,使普通用户也可像root用户一样使用该命令。
用法:
1.使用which命令查看命令位置,如cat命令:which cat,查出cat位置为:/usr/bin/cat
2.chmod u+s /usr/bin/cat,执行后普通用户也可执行cat命令。
取消提权:
chmod u-s /usr/bin/cat
2.2 sgid
给目录授权让在该目录下创建的文件自动继承该目录的属组。
[root@linux-server ~]# mkdir /opt/dir1 #创建目录
[root@linux-server ~]# groupadd hr #创建一个组
[root@linux-server ~]# chmod 775 /opt/dir1/ #设置权限
[root@linux-server ~]# ll -d /opt/dir1/ #查看权限
drwxrwxr-x. 2 root root 6 Nov 6 21:26 /opt/dir1/
[root@linux-server ~]# chown .hr /opt/dir1/ #设置属组
[root@linux-server ~]# chmod g+s /opt/dir1/ #设置sgid
[root@linux-server ~]# ll -d /opt/dir1/
drwxrwsr-x. 2 root hr 6 Nov 6 21:26 /opt/dir1/
[root@linux-server ~]# touch /opt/dir1/a.txt
[root@linux-server ~]# ll /opt/dir1/a.txt
-rw-r--r--. 1 root hr 0 Nov 6 21:33 /opt/dir1/a.txt #继承了/opt/dir1目录的属组
2.3 sbit
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
用法:chmod o+t 目录名
案例:
[root@linux-server ~]# cd /home/
[root@linux-server home]# mkdir dir2
[root@linux-server home]# chmod 757 dir2/
[root@linux-server home]# chmod o+t dir2/
[root@linux-server home]# ll -d dir2/
drwxr-xrwt. 2 root root 52 Oct 31 16:49 dir2/
[root@linux-server home]# useradd jack #创建用户
[root@linux-server home]# su - alice
Last login: Wed Nov 6 21:48:12 CST 2019 on pts/2
[alice@linux-server ~]$ touch /home/dir2/alice.txt #用户alice创建文件
[alice@linux-server ~]$ exit
logout
[root@linux-server home]# su - jack
Last login: Wed Nov 6 21:48:36 CST 2019 on pts/2
[jack@linux-server ~]$ touch /home/dir2/jack.txt #用户jack创建文件
[jack@linux-server ~]$ rm -rf /home/dir2/alice.txt
rm: cannot remove ‘/home/dir2/alice.txt’: Operation not permitted
测试jack删除alice创建的文件,无法删除
2.4 sudo给普通用户提权
用法:使用visudo或vim /etc/sudoers打开系统文件,使用vim编辑该文件,在root ALL=(ALL) ALL下面按照该格式把要提权的用户写入文件,如:“Jack ALL=(ALL) ALL”,若实现无密码登入,则“Jack ALL=(ALL) NOPASSWD:ALL”,使用“visudo -c” 检查语法是否正确,然后输入sudo提权,执行后Jack用户便可像root一样使用命令。
目前给普通用户提权的手段:
suid: 基本针对所有用户,任何用户在执行有suid权限的程序时,都是以root身份在执行。
sudo: 有针对性,例如针对某个用户以能够以root的身份执行某些命令。
3.特殊权限
查看 a.txt 权限:getfacl a.txt
setfacl :针对个人设置权限,给一个人查看一个文件的权限
如:setfacl -m u:xiaoming:rwx /tmp/a.txt #给xiaoming用户对 /tmp/a.txt 文件的读写执行权限
回收权限:
1.setfacl -m u:xiaoming:r-- /tmp/a.txt #重新赋权
2.setfacl -b a.txt #回收所有特殊权限
3.setfacl -x u:xiaoming a.txt
4.setfacl -m : : rwx a.txt
4.隐藏权限
查看隐藏权限:lsattr 文件名
用法:
chattr +a file1 #不允许修改文件内容,只允许追加内容
chattr +i file2 #不允许做任何操作
chattr +A file3 #不修改文件的最后访问时间
查看文件的最近访问、最近更改、最近改动时间:stat 文件名
总结
本文简单介绍了在Linux中,用户的基本权限,高级权限,特殊权限和隐藏权限的相关用法.