权限管理(Linux运维)

介绍
Linux系统是一个典型的多用户操做系统,不一样的用户处于不一样的地位,为了保护系统的安全性,linux系统对于不一样用户访问同一个文件或目录作了不一样的访问控制。而这种控制就是经过权限实现的,本节课咱们介绍linux权限的使用 node

1、基本权限
基本权限的介绍
Linux中每一个文件或目录都有3个基本权限位,控制三种访问级别用户的读、写、执行,因此linux的基本权限位一共有9个。基本权限位和另外3个能够影响可执行程序运行的3个特殊权限位一块儿构成了文件访问模式。三个属性规定了对应三种级别的用户可以如何使用这个文件,这三个基本权限位对于文件和目录的含义有所差异的,咱们一块儿来看一下linux

字符安全

权限服务器

对文件的含义oracle

对目录的含义运维

ride

学习

意味着咱们能够查看阅读flex

能够列出目录中的文件列表spa

w

意味着,对文件能够修改或删除

能够在该目录中建立、删除文件

x

执行

若是是文件就能够运行,好比二进制文件或脚本。

可使用cd命令进入该目录

那三种访问级别都有哪些呢?每一个文件都有三组不一样的读、写和执行权限,分别适用于三种访问级别,其中每组中的三个栏位分别使用读取权限(r)、写入权限(w)、执行权限(x)或没有相应的权限(-)来表示,共9位来表示。

权限管理(Linux运维)

第一组:适用于文件的属主,图中属主的权限是rwx。

第二组:适用于文件的属组,图中属组的权限是r-x。

第三组:使用于其它用户权限位,图中其它用户权限位是r-x。

当有人试图访问一个文件的时候,linux系统会按顺序执行以下步骤:

(1)使用者拥有这个文件吗?若是是,启用用户权限。

(2)用户是组全部者成员吗?若是是,启用组权限

(3)若是以上两个都不是,启用其它人权限

上面咱们提到的是第一种表示方法,在linux中还有另一种表示方法,八进制表示法,咱们来看下字母和八进制表示方法的对应关系

字符表示法

八进制表示法

含义

r

4

w

2

x

1

执行

因此上面给出的权限rwxr-xr-x换成数字的表示方式就是755,那权限如何设置呢?

基本权限的设置和查看
经过前面的学习咱们知道,用户分为全部者,全部者组,其余人这三类,而每一类有包含三种基本权限,他们的对应关系是

权限位

含义

属主权限位

用于限制文件或目录的建立者

属组权限位

用于限制文件或目录所属组的成员

其它用户的权限

用于限制既不是属主又不是所属组的能访问该文件或目录的其余人员

当咱们使用命令来查看文件或目录时,会看以下内容

[root@localhost ~]# ls -l
总用量 13804
drwxr-xr-x. 2 root root 6 10月 11 06:36 公共
drwxr-xr-x. 2 root root 6 10月 11 06:36 模板
drwxr-xr-x. 2 root root 6 10月 11 06:36 视频
drwxr-xr-x. 2 root root 6 10月 11 06:36 图片
drwxr-xr-x. 2 root root 6 10月 11 06:36 文档
drwxr-xr-x. 2 root root 6 10月 11 06:36 下载
drwxr-xr-x. 2 root root 6 10月 11 06:36 音乐
drwxr-xr-x. 2 root root 6 10月 11 06:36 桌面
-rw-------. 1 root root 1214 10月 11 06:12 anaconda-ks.cfg
-rw-r--r--. 1 root root 1369 10月 11 06:17 initial-setup-ks.cfg
每一行显示一个文件或目录的信息,这些信息包括文件的类型(1位)、文件的权限(9位)、文件的链接数、文件的属主(第3列)、文件的所属组(第4列),大小以及相关时间和文件名。其中Linux 文件的权限标志位九个,分为3 组,分别表明文件拥有者的权限,文件所属用户组的权限和其它用户的权限,如今咱们知道文件有三种权限((r)读取、(w)写入和(x)执行)和三种访问级别((u)用户、(g)主要组和(o)其它人)决定文件能够被如何使用。那如何修改?

修改文件权限 chmod

权限管理(Linux运维)

缩写

含义

u

User(用户)

g

Group (组)

o

Other(其它)

a

All(全部)

+

Add(加)

-

Remove(减去)

=

Set (设置)

r

Read (可读)

w

Write (可写)

x

Execute (执行)

命令

做用

结果权限

chmod o-r a.file

取消其余人的可读权限

rw-rw---

chmod g-w a.file

取消组的写入权限

rw-r--r--

chmod ug+w a.file

赋予用户和组写入权限

rwxrwxr--

chmod o+w a.file

赋予其余人写入权限

rw-rw-rw-

chmod go-rwx a.file

取消组和其余人的阅读、写入和执行权限

rw-------

chmod a-w a.file

取消全部人的写入权限

r-- r-- r--

chmod uo-r a.file

取消用户和其它人的阅读权限

-w-rw--w-

chmod go=rw a.file

将组和其余人的权限设置为阅读和写入

rw-rw-rw-

使用数字的表示方式相似chmod 755 a,执行完成后a这个文件的权限对应就是 -rwxr-xr-x,这是文件权限的两种修改方式,若是你想修改文件的全部者和全部者组须要使用的命令就是chown,chgrp

[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 18 01:26 file1
[root@localhost test]# chown oracle file1
[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 oracle root 0 10月 18 01:26 file1
[root@localhost test]# chgrp oracle file1
[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 oracle oracle 0 10月 18 01:26 file1
这里,咱们涉及到了三条与权限修改相关的命令

操做

能够执行的用户

chmod

Root用户和文件的全部者

chgrp

Root用户和文件的全部者(必须是组成员)

chown

只有root用户

以上是三种基本权限 -R

文件或目录的默认权限
每个新产生的文件都会有一个默认的权限,这个权限是经过系统中的umask来控制的

文件的最大权限是666

目录的权限是777

使用umask查看

2、特殊权限
特殊权限的介绍
以前咱们提到了特殊权限有三个,这三个特殊权限是在可执行程序运行时影响操做权限的,它们分别是SUID,SGID,sticky-bit位

特殊权限

说明

SUID

当一个设置了SUID 位的可执行文件被执行时,该文件将以全部者的身份运行,也就是说不管谁来执行这个文件,他都有文件全部者的特权。任意存取该文件拥有者能使用的所有系统资源。若是全部者是 root 的话,那么执行人就有超级用户的特权了。

SGID

当一个设置了SGID 位的可执行文件运行时,该文件将具备所属组的特权,任意存取整个组所能使用的系统资源;若一个目录设置了SGID,则全部被复制到这个目录下的文件,其所属的组都会被重设为和这个目录同样,除非在复制文件时保留文件属性,才能保留原来所属的群组设置。

stickybit

对一个文件设置了sticky-bit以后,尽管其余用户有写权限,也必须由属主执行删除、移动等操做;对一个目录设置了sticky-bit以后,存放在该目录的文件仅准许其属主执行删除、移动等操做。

一个典型的例子就是passwd命令,这个命令容许用户修改本身的密码。咱们能够看到原本是rwx的权限表示形式变成了rws,一样若是/usr/bin/passwd这个文件同时被设置了三个特殊权限,那么权限的格式就会变成rwsrwsrwt,须要注意的是特殊权限设置的前置要求是可执行,也就是若是没有x权限位,是不要设置的,即使你使用root用户设置上了特殊权限,也不会生效。

[root@localhost test]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 34928 5月 11 11:14 /usr/bin/passwd
特殊权限的设置和查看

特殊权限的设置也是使用chmod

[root@localhost test]# ll
总用量 0
-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod u+s file1
[root@localhost test]# ll
总用量 0
-rwsr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod g+s file1
[root@localhost test]# ll
总用量 0
-rwsr-sr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod o+t file1
[root@localhost test]# ll
总用量 0
-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1
或者使用数字

[root@localhost test]# chmod u-s,g-s,o-t file1
[root@localhost test]# ll
总用量 0
-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod 7755 file1
[root@localhost test]# ll
总用量 0
-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1

3、隐藏权限
隐藏权限的介绍
有时候你发现即时使用的是root用户也不能修改某个文件,大部分缘由是由于使用过chattr命令锁定了该文件,这个命令的做用很大,经过chattr能够提升系统的安全性,可是这个命令并不适合全部的目录,如/dev,/tmp,/var。与咱们前面看到的chmod这些命令修改权限不一样的是chattr修改的是更底层的属性,这里面咱们所提到的隐藏权限指的就是使用chattr来设置属性

隐藏权限的设置和查看
chattr的用户与咱们以前讲的chmod,chow这些命令类似,都是直接对须要修改的文件进行操做就能够了

[root@localhost test]# chattr +AaiSd file1
[root@localhost test]# lsattr file1
--S-iadA---------- file1
[root@localhost test]# chattr = file1
[root@localhost test]# lsattr file1
------------------ file1
A 文件或目录的atime不可被修改
S 硬盘I/O同步选项,功能相似sync。
a 只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
d 文件不能成为dump程序的备份目标。
i 设定文件不能被删除、更名、设定连接关系,同时不能写入或新增内容。

经过上面的例子能够看到查看的时候使用的是lsattr,chattr还有不少参数,各位能够在man手册中获取到帮助,另外有些参数的使用是有局限性的。

4、acl权限
acl权限的介绍
linux的权限很是重要,咱们以前所说的几种权限中,可是并不能只针对一个用户或者一个组进行单独设置,而ACL权限能够帮助咱们实现这个功能,好比说有一个文件的全部者和全部者组都是a,这个文件的权限是660,我可让b这个用户能够对文件进行读写的操做,而b这个用户并不属于a组的成员。那咱们来看下如何使用

acl权限的设置和查看
若是要使用acl权限,首先要肯定你的文件系统支持acl权限,若是再Default mount options字段出现acl字样就意味着你的文件系统支持acl,不过在CentOS8中默认是都支持的。

[root@localhost test]# tune2fs -l /dev/sda1
tune2fs 1.44.3 (10-July-2018)
Filesystem volume name: <none>
Last mounted on: /boot
Filesystem UUID: be03eaec-6474-42ea-8f79-06e7198f5155
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
.
.
.
配置acl权限咱们须要使用两个命令一个是setfacl用来设置acl权限,另外一个是getfacl用来查看acl权限

setfacl

-m :设置acl
-x :删除指定的acl
-b :删除全部的acl
getfacl用来查看文件的acl权限,如今咱们来看下如何设置

[root@localhost test]# ls
file file1
[root@localhost test]# ll file1
-rw-r--r-- 1 root root 0 10月 18 02:48 file1
[root@localhost test]# setfacl -m u:oracle:rw file1 为指定的用户配置一个rw的权限
[root@localhost test]# setfacl -m u::rwx file1 若是没有指定用户则默认是为该文件的全部者设置
[root@localhost test]# ll file1
-rwxrw-r--+ 1 root root 0 10月 18 02:48 file1 全部者权限变成的rwx并且后面多了一个+号
你会发现使用ll(等同于ls -l)命令查看时会发现多了一个+号,这只是提醒咱们此文件被设置了acl权限,可是具体是什么样的,咱们还须要使用getfacl来查看

[root@localhost test]# getfacl file1

file: file1 文件名

owner: root 全部者

group: root 全部者组

user::rwx user:后面是空的,表明的是全部者的权限
user:oracle:rw- 咱们以前给额外用户设置的权限
group::r-- 全部者组的权限
mask::rw- 默认的有效权限
other::r-- 其余人的权限
以上是咱们针对一个额外的用户设置的权限,同理能够设置针对组和其余人的acl权限

[root@localhost test]# setfacl -m g:oracle:rw file1
[root@localhost test]# setfacl -m o:rw file1
[root@localhost test]# getfacl file1

file: file1

owner: root

group: root

user::rwx
user:oracle:rw-
group::r--
group:oracle:rw-
mask::rw-
other::rw-
删除指定的acl

[root@localhost test]# setfacl -x u:oracle file1 删除用户acl
[root@localhost test]# getfacl file1

file: file1

owner: root

group: root

user::rwx
group::r--
group:oracle:rw-
mask::rw-
other::rw-
[root@localhost test]# setfacl -x g:oracle file1 删除组acl
[root@localhost test]# getfacl file1

file: file1

owner: root

group: root

user::rwx
group::r--
mask::r--
other::rw-
[root@localhost test]# chmod o=r file1 删除其余人直接使用chmod就能够
[root@localhost test]# ll file1
-rw-r--r-- 1 root root 0 10月 18 04:21 file1
[root@localhost test]# getfacl file1

file: file1

owner: root

group: root

user::rw-
group::r--
other::r--
删除全部acl

[root@localhost test]# setfacl -m u:oracle:rw,g:oracle:rw,o:rwx file1
[root@localhost test]# getfacl file1

file: file1

owner: root

group: root

user::rw-
user:oracle:rw-
group::r--
group:oracle:rw-
mask::rw-
other::rwx

[root@localhost test]# setfacl -b file1
[root@localhost test]# getfacl file1

file: file1

owner: root

group: root

user::rw-group::r--other::rwx你没看错,权限在指定的时候是能够指定多个的,咱们以前提到的chmod也能够这样使用。

相关文章
相关标签/搜索