本文介绍了cenos系统中root账号的危险性及权限管理的重要性,详细讲解了文件的基本权限(rwx,UGO),特殊权限(suid,sgid,sticky)和文件扩展权限ACL。并通过实战演示了如何创建一个root都无法删除的文件,以及如何使用chmod和chown命令修改文件权限和属主属组。
root是cenos系统默认的账号,也是权限最高的账号,可以理解为老大哥,但是也是往往最危险的存在因为当服务器被入侵之后所做第一件事就是提权限,或者获取到root密码直接操作。那么权限的管理和就很早关键了,因为root账号可以设置一个连自己都无法删除文件。
本节所讲内容:
7.1文件的基本权限:rwx(UGO)
7.2文件的特殊权限:suidsgidsticky和文件扩展权限ACL
7.3实战:创建一个让root都无法删除的文件
ll查看权限
[root@xuegod63~]#ll/etc/passwd
红框内的9个字符都是权限。
文件权限基本解释:
-rw-r--r--.1rootroot247810月920:10/etc/passwd
-
rwx
r-x
User1
time
FILENAME
文件类型
拥有者的权限
所属组的权限
其他人的权限
拥有者
属组
对象
其中:文件类型,可以为d、l、s、c、b和–
d表示目录文件
l表示符号链接文件
-表示普通文件
s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
c表示字符设备文件,例:虚拟控制台或tty0
b表示块设备文件例:sda,cdrom
7.1.3权限说明
对于文件来说:
r:读cat
w:写vimecho
x:执行运行命令或者脚本
对于目录来说:
r:读(看到目录里面有什么)ls
w:(目录是不可以写的)可以在目录里面建文件,删除,移动touchmkdirrmmvcp
x:目录是不能直接运行的,对目录赋予x权限,代表用户可以进入目录,也就是说,赋予x权限
的用户或群组可以使用cd命令,其他用户要读写该目录内文件,不仅要有该文件的读写权限,也要有
该目录的x权限。
就提示:cat:/home/user1/user1.txt:权限不够
即使user1.txt权限对其组以外的用户都有读权限,也是不行的。
主要是在于user1自己的家目录也是就user1.txt,的上级目录,只对自己有权限。
在home下的每个用户的都有一个规律,家目录权限默认都只对自己开放。别人是无法访问的。但是对于root用户无效的。
给目录添加权限:例如给user1目录添加一个x权限
chmod+x/home/user1
加完x权限后,在使用user2用户去访问user1.txt文件就可以读了(由于文件没有内容所以显示没内容)
UGO:所有者--用户组--其它用户
User-所有者:就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允
许其所在的用户组可以访问所有者的文件。
Group-用户组:用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权
改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权
限。这就是用户组。
Other-其它用户:系统内的其他所有者用户就是other用户类
-rwx------:文件所有者对文件具有读取、写入和执行的权限。
-rwxr--r--:文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
-rw-rw-r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权
限。
drwx--x--x:目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何
数据。
drwx------:除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
举例如下:
每个用户都拥有自己的专属目录,通常放置/home下
ll/home/
总用量0
-rw-rw-r--.1user1user1010月1520:46user1.txt
注:[rwx------]表示目录所有者本身拥有的权限,其它用户是无法进入的。root可以。
su-user1和suuser1的区别?
[root@xuegod63~]#su-user1#从root切换到普通用户user1
user1@xuegod63~]$pwd
/home/user1
这个方式就是切换账号同时又切换目录了,
[root@xuegod63~]#suuser1
[user1@xuegod63root]$pwd#查看切完后的路径
/root
[user1@xuegod63root]$toucha.txt
touch:无法创建'a.txt':权限不够
[user1@xuegod63root]$cd/home/user1/
[user1@xuegod63~]$toucha.txt
因为当用户我是user1但是我还在root的家目录下。因为家目录默认除了自己其他用户是没操作权限的,所以当user1在执行toucha.txt就会提示权限不够。
使用suuser1他是不会切换目录的。
改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主
chgrp:可以用来改变文件(或目录)的默认属组(不常用)
如果你要对目录进行操作,加参数-R
chown
语法:
chownuser:groupfilename比如:chownuser2:user2a.txt把文件的属主改为root属组改为
user2
chownuserfilename
比如:chownuser2a.txt把文件的属主改为user2用户
chown:groupfilename
比如:chown:user1b.txt把文件的属组改为user1组
:也可以用.代替
-R:递归(目录下的所有内容都更改,否则只修改目录)
方法1:使用字符设定
修改权限用的命令:chmod
作用:修改文件,目录的权限
语法:chmod[对谁操作][操作符][赋于什么权限]文件名
对谁操作:
u---->用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其它用户others
a---->所有用户all
操作符:
+#添加权限;-#减少权限;=#直接给定一个权限
权限:rwx
例如下面的组合:
u-wuser拥有者
g+xgroup组
o=rother其他人
a+xall所有人
例:chmod修改权限
chmodu+x1.txt
这个命令的操作是只对当前用户root加了一个x权限,其他不变。
chmodu+x,g=-,o-r1.txt
针对1.txt文件权限组权限g=-表示组权限全部删除,o-r表示其他用户减少r权限。
Shado文件,除root账号其他任何用户都无权限对它操作
权限二进制值八进制值描述
---0000没有任何权限
--x0011只有执行权限
-w-0102只有写入权限
-wx0113有写入和执行权限
r--1004只有读取权限
r-x1015有读取和执行权限
rw-1106有读取和写入权限
rwx1117有全部权限
有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:
权限对文件的影响对目录的影响
r(读取)可以读取文件的内容可以列出目录的内容(文件名)
w(写入)可以更改文件的内容可以创建或删除目录中的任意文件
x(执行)可以作为命令执行文件可以访问目录的内容(取决于目录中文件的权限)
其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.
7.2.1文件的特殊权限:suidsgidsticky
1、SUID(setuid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者的权限
2、SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
3、Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
4、
这3个特殊权限对应的数值为:
SUIDSGIDStickybit
421
chmodu+schmodg+schmodo+t
chmod4664chmod2664chmod1664
suid的代表数字是4,比如4755的结果是rwsr-xr-x
sgid的代表数字是2,比如2755的结果是rwxr-sr-x
sticky位代表数字是1,比如1755的结果是rwxr-xr-t
suid+sgid+sticky=7,比如7755的结果是rwsr-sr-t
SGID:
限定:既可以给二进制可执行程序设置,也可以给目录设置。
给二进制可执行程序设置,则运行程序时,临时获得该程序所属组权限
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组。
Stickybit
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
例:系统中的tmp目录就是这样
其他用户无法删除,只有文件创建者、目录所有者才能删除
Getfacl用来设置或者修改权限setfacl
创建一个文件touch/opt/a.txt
设置只让用户user1对文件a.txt拥有的rwx权限,user1不属于a.txt的所属主,和组,other
的权限还是r--。怎么做?
getfacl/opt/a.txt
查看默认权限。
执行命令:setfacl-mu:user1:rwx/opt/a.txt
给user1用户真对/opt/a.txt文件添加rwx权限
执行修改后结果对比
如果直接使用ll查看显示效果就是这样的
当然在user1用下也可以执行getfacl/opt/a.txt
setfacl-mu:user1:rwx,user2:-/opt/a.txt
这是切换到user2,cat/opt/a.txt执行命令就提示权限不够。
setfacl-xu:user2/opt/a.txt
删除user2的权限。
如果要清空所有的
Setfacl-b/opt/a.txt
权限还原了
创建一个root账号都删除不了的文件
Lsattr查看权限
参数:i不能被修改不能被删除
+i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
+a:只能追加内容如:echoaaa>>hack.sh
发现windows中有文件删除不了,怎么办?使用360强制删除,粉碎文件
那么在Linux下怎么办?
Touch新创建的文件在默认情况下是可以被执行删除
删除命令:rm-rf文件名
执行命令:chattr+iaa.sh给aa.sh文件加个i权限,就能让root都无法删除。
i也是无法进行内容追加的
使用chattr设置i权限需要使用lsattr命令查看,使用gerfaclll命令查看是没效果的。
如果需要root对aa.sh文件有删除权限,就需要把i权限删除
执行chattr-iaa.sh
对于给aa.sh文件加a权限,执行删除提示不允许从操作的而不是权限不够。
a权限和i权限同理都是不可以删除,但是a权限是可以使用echo命令进行追加内容的。
虽然可以追加内容但是不可以使用vim命令进行文件编辑。
针对目录添加i权限
创建一个der2文件
执行命令:Chattr给文件夹添加一个i权限,这个时给der2目录添加一个a.txt文件是不成功的,提示权限不够。目录有了i权限也是无法删除自己,连目录里面的子级文件也无法删除。
注意的是可以子级文件做编辑
使用命令:vim编辑der2/a.txt
Cat查看编辑的内容
推荐阅读
【小白学Linux运维】6.文件的管理和归档…
cenos作为服务器管理系统,除非技术上做维护管理之外,同是还需要对服务器上的文件做管理,同Windows系统一样它也有自己的文件,只是管理的方式不同,以执…