为了更好地保护系统的安全,linux系统中采用了用户权限管理。

其中用户的权限分为:普通权限、特殊权限、文件的特殊权限、FACL。

普通权限:

进程安全上下文:

1、判断进程的所有者是否为想要操作的属主,如果是,就按照属主的权限进行授权;如果不是,就转到第二条;

2、判断进程的所有者是否为想要操作的文件的属组中的成员,如果是,就按照属组的权限进行授权;如果不是,就转到第三条;

3、按照其他用户的权限进行授权;

权限的构成:

MODE(Permission):使用权

r:Readable:可读

w:Writable:可写

x:eXecutable:可执行

相对于目录来说:

r:可以使用ls命令获得其中所有的文件名的列表;ls -l命令获取目录中详细的属性信息,也不能使用cd命令进入其中,也不能在路径中引用该目录;

w:可以修改目录中的文件名或文件列表,即:可以在此目录中创建、修改或删除文件名;

x:可以使用ls -l命令来获取其中的文件的详细属性信息,也可以在路径中引用该目录;也可以使用cd命令来进去其中;x权限是目录的最基本权限,任何目录都必须对任何用户开放x权限,否则,用户就无法进入该目录中;

文件:

r:可以查看或获取该文件中存放的数据;

w:修改文件中存放的数据;

x:可以将此文件发起运行位进程;

权限表示三元组:

---    000    0

--x    001    1

-w-   010    2

-wx   011    3

r--     100    4

r-x     101    5

rw-    110    6

rwx    111    7

注意:只有某个文件的属主才能修改文件的使用权(root除外);

修改文件的使用权限:

chmod --> change mode :chmod - change file mode bits

chmod [OPTION]... MODE[,MODE]... FILE...

MODE:符号权限标识法;

例如:chmod u+w file

注意:文件的执行权限;对Linux的文件系统来说,是非常重要的安全的标识;

因为一旦文件具备执行权限,意味着该文件可以被发起执行为进程;

所以默认情况下,文件都不具备执行权限;

chmod [option]... OCTAL-MODE FILE....

如果使用八进制数字表示法,则每次必须给足所有权限位;如果给的权限位不完整,文件系统会自动补足,自己给的权限会放在右侧,左侧用0来补;

chmod [OPTION]... --reference=RFILE FILE...

chmod --reference=/PATH/TO/SOMEFILE DES_FILE

l例子: chmod --reference=a b

选项:

-R :将目标目录中的文件及目录和子目录中的文件统一设置为指定的权限标识;

OWERSHIP:所有权

属主:资源掌控的某个特定用户:owner(user),u

属组:资源掌控的某些特定用户:group,g

其他用户:未曾掌控资源的那些用户;other,o

全部用户:all,a

chown:可以修改文件的属主和属组;

chown [option]... [owner][:[group]] file...

chown owner file

chown :group file

chown owner: file

chown owner:group file

chown [option]... --reference=RFILE file...

-R :将目标目录中的文件及目录和子目录中的文件统一设置为指定的所有权;

注意:修改ownership操作只有超级用户(root)可以完成;

chgrp:只能修改文件的属组;

chgrp -change group owneship

chgrp [option]... group file...

chgrp [option]... --reference=RFILE FILE...

install命令:

安装:复制文件;为文件赋予执行权限

copy files and set attributes

单源复制:

install [OPTION]... [-T] SOURCE DEST

多源复制:

install [option]... SOURCE... DIERCTORY

install [OPTION]... -t DIRECTORY SOURCE...

创建目录:

install [OPTION]... -d DIRECTORY...

常用选项:

-m:指定目标文件的权限,默认为755;

-o:设定目标文件的属主:仅root可用

-g:设定目标文件的属组:仅root可用

注意:install命令不能复制目录,即其源不能为目录;如果其原为目录,则install命令会进入目录,一次复制其中的所有非目录文件到目标位置;

mktemp命令:

一般来讲:临时文件都会创建在/tmp或/var/tmp目录中;无需手动删除,系统会定期自动清除这两个目录中的文件;

-d:创建临时目录;、

特殊权限:SUID、SGID、STICKY

默认情况下,用户发起执行一个进程,该进程的属主是其发起者:也就是说,该进程是以其发起者的身份运行;

SUID:用户发起执行一个进程时,该程序文件如果拥有SUID权限的话,那么此程序发起的进程其属主为该程序文件的属主,而不是其发起者;该权限的显示位在文件的属主权限中的执行权限位;如果属主本来就有执行权限,显示为s,否则显示为S;

SGID:如果某个目录对于一些用户有写权限并且设置了SGID权限时,则所有对此目录有写权限的用户在创建的文件或目录以后,新文件的数组不再是创建用户的基本组,而是继承了该目录的属组;该权限的显示为在文件的属组权限中的执行权限为,如果数组本来就至此那个权限,显示为s;否则显示为S;

STICKY的功能作用:

如果为上述类似的目录设置了STICKY权限,则每个用户人就有能够创建和修改文件名,但每个用户只能删除那些属主为其自身的文件名;

STICKY权限的显示位置:在文件权限的其他用户的执行权限位;如果原来就有至此那个权限,则显示为t;否则,显示T;

suid sgid sicky

---   000  0

--t   001  1

-s-   010  2

-st   011  3

s--   100  4

s-t   101  5

ss-   110  6

sst   111  7

特殊权限的另一种修改方式:

将特殊权限对应的八进制数字放置于普通权限八进制数字的前面即可;

例如:想要给某个目录加上粘滞位:

chmod 1755 DIRECTORY...

umask

权限遮罩码:在创建文件或目录是默认的权限生成标准;

不考虑特殊权限位

对于新创建的文件或目录,不遮挡属主的任何权限,遮住了属组的写权限和其他用户的写权限;

[root@localhost ~]# mkdir test --> rwxr-xr-x

[root@localhost ~]# mkdir test.txt --> rw-r--r--

理解遮罩码:

将遮罩码的值变为二进制,凡是有1的位置,其权限在创建文件是,就不设置;

默认情况下,文件的遮罩码已经有了一个0111,在此基础之上再次应用umask来遮罩权限

文件的特殊属性:

查看文件的特殊属性:

管理文件的SUID权限:

lsattr - list file attributes on a Linux second extended file system

lsattr [ -RVadv ] [ files...  ]

修改设置文件的特殊属性:

chattr:change file attributes on a Linux file system

chattr [ -RVf ] [ -v version ] [ mode ] files...

mode:会使用+-=的方式来设置;

整个chattr最关键最核心的设置就是[mode]部分;

[aAcCdDeijsStTu]都是所需要的属性;

+:杂原有属性设定的基础上,添加新属性;

-:杂原有属性设置中移除指定的属性;

=:不考虑原有的属性设置,直接将文件的属性更新为指定的属性内容;

a:append,设置这个属性的文件,其内容不能被更改和删除,只能以追加的方式向文件中写数据;多数的服务器日志文件会设置为此属性;

A:atime,文件的访问时间戳;IO瓶颈,设置A属性,可以使得文件在被访问时不更改文件的访问时间戳,从而可以有效的防止IO瓶颈的发生;

c:设置文件是否自动压缩后再行存储;

C:设置文件是否开启“写时复制”属性;

d:设置文件在使用dump进行备份的时候,不会成为备份目标;

D:设置文件在文件系统中的异步写操作

i:设置文件不能被删除、修改、设定链接关系;

s:设置文件的保密性删除,一旦设置s属性的文件被删除,其对应存储设备中的使用空间会被一并收回;

u:跟s属性相反,如果这样的文件被删除,则其存储与存储设备中的数据会被保存;

常用的属性:i和a

chattr +i FILE

常用选项:

-R:递归的设置指定目录中的所有文件和子目录的属性

为文件赋予额外的权限机制:FACL:File Access Control List,文件访问控制列表

文件的额外赋权机制:

在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的用户和组的一种赋权机制;

一般在Centos或RHEL7版本以后的发行版中,才逐渐成熟;

与FACL有关的命令:

getfacl: get file access control lists

getfacl [-aceEsRLPtpndvh] file ...

user: USERNAME:MODE

group:GROUPNAME:MODE

other::MODE

getfacl [-aceEsRLPtpndvh] -

setfacl: set file access control lists

setfacl [{-m|-x} acl_spec]  file ...

acl_spec: acl_specification, 指定的访问控制列表

u:USERNAME:MODE

g:GROUPNAME:MODE

MODE:一般使用符号权限标识法;

为用户赋予额外权限:

setfacl -m u:USERNAME:MODE FILE...

为组赋予额外权限:

setfacl -m g:GROUPNAME:MODE FILE...

撤销为用户赋予的额外权限:

setfacl -x u:USERNAME

撤销为组赋予的额外权限:

setfacl -x g:GROUPNAME

注意:如果设置了FACL之后在修改目标文件的使用权限,那么FACL中设置的条目就可能收到影响而导致与要求不符;因此,如果真的需要设置FACL,就要在已经确定目标文件的使用权限以后再行设置;

转载于:https://blog.51cto.com/gt520/1912623

我的朗科运维第五课(1)相关推荐

  1. 我的朗科运维第五课(2)

    bash的特性之多命令执行: 当我们想要多个命令同时执行时,我们可以使用以下做法: 1.利用 `` 把我们要执行的第二个命令给引起,或者用 $() 把我们要执行的第二个命令给括起来: 格式:   ~] ...

  2. 我的朗科运维第六课(2)

    文本三剑客 grep系:grep.egrep.fgrep,文本搜索工具,基于"PATTERN"对于给定的文本进行模糊搜索: sed:Stream EDitor,流编辑器,行编辑器, ...

  3. 我的朗科运维第六课(1)

    文本处理三剑客 grep系:grep.egrep.fgrep,文本搜索工具,居于"PATTERN"对于给定的文本进行模糊搜索. sed:tream EDitor,流编辑器,行编辑器 ...

  4. 我的朗科运维第四课(2)

    用户和组的管理 所采用的认证为Cisco开发的AAA认证体系: Authetication:认证,核实身份是否正确: Authorization:授权,对已经核实身份的用户进行资源分配: Accoun ...

  5. 我的朗科运维第四课(1)

    bash特性之变量: 变量名:一段连续的内存空间名. 变量值:变量名中存储的数据. 命名规则: 1.只能以字母或"_"开头,不能使用数字,后面可以是任意字母.数字和下划线: 2.大 ...

  6. Linux云自动化运维第三课

    Linux云自动化运维第三课 一.正则表达式 1.匹配符 * ###匹配0到任意字符 ? ###匹配单个字符 [[:alpha:]] ###匹配单个字母 [[:lower:]] ###匹配单个小写字母 ...

  7. Linux云自动化运维第六课

    Linux云自动化运维第六课 第九单元  openssh-server 一.openssh-server 功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell 二.客户端连接方式 ss ...

  8. Ansible自动化运维(五)----Ansible剧本

    Ansible自动化运维(五)----Ansible剧本 Ansible核心的功能,作用就是进行配置管理. Ansible需要编写的 playbook 剧本需要遵循一定的规则,格式,这个格式就称之为y ...

  9. 一线运维 DBA 五年经验常用 SQL 大全

    一线运维 DBA 五年经验常用 SQL 大全(一) 1.查看表空间使用率. set line 220 select total.tablespace_name,round(total.MB, 2) a ...

最新文章

  1. 使用镀锌铁皮制作负阻器件
  2. DataGridView 里数据的动态明细 DataGridView GridView
  3. python怎么导入视频-Python模块导入详解
  4. 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径...
  5. oracle更改归档日志路径,oracle修改归档日志的路径
  6. java jar 目录_将Java类路径中的所有jar包括在一个目录中
  7. android 存储方式以及路径简介
  8. MySQL中cast()与convert()的用法
  9. 前端小技巧之ajax后遍历生成相同结构不同数据的dom
  10. Java —— 连接邮箱,读取收件箱中的邮件
  11. Win10教育版变为企业版
  12. 买书问题的动态规划实现
  13. 流量卡之家:预约量超百万!华为5G手机线上线下产品紧俏 A股概念股大涨
  14. AcWing 658. 一元二次方程公式
  15. 《Thinking in java》-学习笔记(9)
  16. android 车载安富蓝牙电话开发,Android平台BLE低功耗蓝牙开发
  17. js查找数组元素位置
  18. 01.什么是数学建模
  19. Mac用命令行在访达中打开指定目录
  20. 笔记本电脑既连内网网线又连无线WiFi

热门文章

  1. 为什么要学习nodejs_NodeJS简介以及为什么需要学习它
  2. 什么才是好的企业云盘
  3. 结构化分析和设计常见图
  4. Ultimate Retouch Panel for Mac(PS磨皮插件)
  5. 招投标信息采集与查询
  6. gmtime 和 localtime 的区别
  7. JavaScript 异步 setTimeout promise async await
  8. Error while building/deploying project demo (kit: Desktop Qt 5.6.3 MinGW
  9. 水货、行货、有锁版、无锁版的区别
  10. 数据结构与算法(C语言版)---哈夫曼编译码器