CcbeanBlog CcbeanBlog
首页
  • 前端文章

    • JavaScript
    • HTML+CSS
    • Vue
    • React
  • 系列笔记

    • React使用学习
    • Vue2源码探究
  • Node文章

    • 基础
    • 问题
    • 框架
  • 系列笔记

    • 数据结构与算法
  • 构建工具文章

    • webpack
  • 系列笔记

    • Webpack5使用学习
  • MySQL
  • Linux
  • 网络
  • 小技巧
  • 杂记
  • 系列笔记

    • Protobuf Buffers
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Ccbean

靡不有初,鲜克有终
首页
  • 前端文章

    • JavaScript
    • HTML+CSS
    • Vue
    • React
  • 系列笔记

    • React使用学习
    • Vue2源码探究
  • Node文章

    • 基础
    • 问题
    • 框架
  • 系列笔记

    • 数据结构与算法
  • 构建工具文章

    • webpack
  • 系列笔记

    • Webpack5使用学习
  • MySQL
  • Linux
  • 网络
  • 小技巧
  • 杂记
  • 系列笔记

    • Protobuf Buffers
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

  • Linux

    • Linux系统目录结构
    • Linux下安装phpMyAdmin
    • Linux下搭建LNMP环境
    • 小视频笔记(一)
    • 小视频笔记(二)
    • 小视频笔记(三)
      • 8.1 ACL权限
        • 1.权限简介
        • 2.查看分区ACL权限是否开启
        • 3.临时开启分区ACL权限
        • 4.永久开启分区ACL权限
        • 5. 设定ACL权限的命令
        • 6.最大有效权限与删除
        • 7.默认与递归ACL权限
      • 8.2 文件特殊权限
        • 1.SetUID
        • 2.SetUID
        • 3.Sticky BIT
      • 8.3 文件系统属性权限
        • chattr
        • lsattr
      • 8.4 系统命令sudo权限
        • sudo
      • 9.1 分区和文件系统
        • 1.分区类型
        • 2.文件系统
      • 9.2 文件系统常用命令
        • 1. 挂载命令
        • df
        • du
        • fsck
        • dumpe2fs
        • 2.挂载命令
        • 3.挂载光盘与U盘
        • mount挂载光盘
        • unmount卸载光盘
        • 挂载U盘
        • 4.fdisk分区
        • 1.fdisk命令分区过程
        • 2.
  • 网络

  • 小技巧

  • 杂记

  • 系列笔记

  • 更多
  • Linux
ccbean
2018-04-28
目录

小视频笔记(三)

# 小视频笔记(三)

# 8 权限管理

# 8.1 ACL权限

# 1.权限简介

Linux的文件有所有者,所属组,其他人三种权限,但这是远远不够的,比如说,有一个project,项目管理员将所有项目人员添加到该项目的所属组中,分配权限770,有一天,临时来了一个成员,该成员需要先进行学习,然后才能工作,这时我们需要对该成员对project分配读和可执行的权限,不能将其他人权限设为5,文件只有一个所属组,所以对project分配两个所属组的方式不成立,显然此时的权限管理方式无法满足要求,这时候就用到ACL权限了,所谓的ACL权限,可以简单的理解为为某一用户或某一组分配不属于所有,所属组,其他人的额外权限。

# 2.查看分区ACL权限是否开启

# 查看分区使用状况
~ andy$ df -h
Filesystem      Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk1     112Gi   61Gi   51Gi    55% 1632930 4293334349    0%   /
devfs          182Ki  182Ki    0Bi   100%     632          0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%       0          0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%       0          0  100%   /home

命令格式:dumpefs [选项] 分区路径

​ 查询指定分区详细文件系统信息的命令

选项:

​ -h 仅显示超级块中信息,而不显示磁盘块组的详细信息

 dumpe2fs -h /dev/sda3
 

# 3.临时开启分区ACL权限

# 重新挂载根分区,并挂载加入acl权限
[root@localhost ~]# mount -o remount,acl /

# 4.永久开启分区ACL权限

[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl #加入acl
[root@localhost ~]# mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效

注: fastab是系统开机启动默认挂载的文件

# 5. 设定ACL权限的命令

命令:setfacl 选项 文件名 设置ACL权限

选项:

  • -m 设定ACL权限
  • -x 删除指定的ACL权限
  • -b 删除所有的ACL权限
  • -d 设定默认ACL权限
  • -k 删除默认ACL权限
  • -R 递归设定ACL权限

命令:getacl 路径 查看ACL权限

准备工作,创建需要的用户和用户组

[root@262e395bc9e9 ~]# useradd zhangsan
[root@262e395bc9e9 ~]# useradd lisi
[root@262e395bc9e9 ~]# useradd st
[root@262e395bc9e9 ~]# groupadd tgroup
[root@262e395bc9e9 ~]# mkdir /tmp/project
[root@262e395bc9e9 ~]# chown root:tgroup /tmp/project/
[root@262e395bc9e9 ~]# chmod 770 /tmp/project/

给用户设定ACL权限

# 给用户st赋予r-x权限,使用“u:用户名:权限”格式
[root@262e395bc9e9 ~]# setfacl -m u:st:rx /tmp/project
# 设定结果 多了个“+”
[root@262e395bc9e9 ~]# ll -d
drwxrwx---+ 2 root tgroup 4096 Aug  9 07:22 /tmp/project
[root@262e395bc9e9 project]# getfacl .
# file: .
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---

# 切换用户测试 没有w权限
[root@262e395bc9e9 project]# su - st
[st@262e395bc9e9 ~]$ cd /tmp/project/
[st@262e395bc9e9 project]$ touch test.js
touch: cannot touch 'test.js': Permission denied

给用户组设定ACL权限

[root@262e395bc9e9 project]# groupadd tgroup2
[root@262e395bc9e9 project]# setfacl -m g:tgroup2:rwx /tmp/project
[root@262e395bc9e9 project]# getfacl /tmp/project
getfacl: Removing leading '/' from absolute path names
# file: tmp/project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:tgroup2:rwx
mask::rwx
other::---

# 6.最大有效权限与删除

​ 最大有效权限mask:mask是用来指定最大有效权限的。如果 我给用户赋予了ACL权限,是需要和 mask的权限“相与”才能得到用户的真正权限 。

[root@262e395bc9e9 project]# setfacl -m m:rx /tmp/project
[root@262e395bc9e9 project]# getfacl /tmp/project
getfacl: Removing leading '/' from absolute path names
# file: tmp/project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx			    #effective:r-x
group:tgroup2:rwx		#effective:r-x
mask::r-x
other::---

它并不影响所有者的权限,而是影响所属组和ACL的权限。

删除ACL权限

# 删除指定用户的ACL权限
[root@localhost /]# setfacl -x u:用户名 文件名
# 删除指定用户组的ACL权限
[root@localhost /]# setfacl -x g:组名 文件名

使用:

[root@262e395bc9e9 project]# setfacl -x g:tgroup2 /tmp/project
[root@262e395bc9e9 project]# getfacl .
# file: .
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---

[root@262e395bc9e9 project]# setfacl -b /tmp/project
[root@262e395bc9e9 project]# getfacl .
# file: .
# owner: root
# group: tgroup
user::rwx
group::rwx
other::---

# 没“+”
[root@262e395bc9e9 project]# ll -d
drwxrwx--- 2 root tgroup 4096 Aug  9 07:22 .

# 7.默认与递归ACL权限

​ 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。

setfacl -m u:用户名:权限 -R 目录

​ 注:-R只能在这个位置,其他位置会报错

使用:

[root@262e395bc9e9 project]# setfacl -m u:st:rx -R /tmp/project 
[root@262e395bc9e9 project]# ll -a
total 16
drwxrwx---+ 4 root tgroup 4096 Aug  9 08:26 .
drwxrwxrwt  1 root root   4096 Aug  9 07:22 ..
drwxr-xr-x+ 2 root root   4096 Aug  9 08:25 test1
drwxr-xr-x+ 2 root root   4096 Aug  9 08:26 test2

​ 默认ACL权限:如果给父目录设定 了默认ACL权限,那么父目录中所有新建 的子文件都会继承父目录的ACL权限 。这个操作只会对新创建在目录下的文件生效,对现有的文件无影响,如果现有文件也需要设置ACL权限,需要使用递归赋予权限。

setfacl -m d:u:用户名:权限 文件名

​ 注:d指的是default

使用:

[root@262e395bc9e9 project]# setfacl -m d:u:st:rx /tmp/project
[root@262e395bc9e9 project]# mkdir test3 
[root@262e395bc9e9 project]# getfacl test3
# file: test3
# owner: root
# group: root
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:st:r-x
default:group::rwx
default:mask::rwx
default:other::---

# 8.2 文件特殊权限

# 1.SetUID

# 2.SetUID

# 3.Sticky BIT

# 8.3 文件系统属性权限

# chattr

名称 说明
命令名称 chattr
原意 change attributes
所在路径 /usr/bin/chattr
功能描述 更改系统文件属性
语法 chattr [+-=]. [选项] 文件或目录名

+:增加权限 -:删除权限 =:等于某权限

选项说明:

  • i: 如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件 。
  • a: 如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据(数据增加只能是追加的方式);如果对目录设置a属性,那么只允许在目录中建立和修改文件 ,但是不允许删除 。

chattr对于保护文件系统当中重要数据免遭误操作是非常有效的。但是可以通过+-进行方便的设置是否可以操作,它不是为了限制用户,而是为了防止连在root用户在内的用户进行误操作的措施。

# lsattr

名称 说明
命令名称 lsattr
原意 ls attributes
所在路径 /usr/bin/lsattr
功能描述 查看系统文件属性
语法 chattr 选项名 文件名

选项说明:

  • -a:显示所有文件和目录
  • -d:若目标是目录,仅列出目录本身的属性,而不是子文件的

# 8.4 系统命令sudo权限

# sudo

名称 说明
命令名称 sudo
原意 super user do
所在路径 /usr/bin/sudo
功能描述 root把本来只能超级用户执行的命令赋予普通用户执行
语法 sudo 系统命令

使用:

  1. 赋予普通用户权限或用户组权限
# 实际修改的是/etc/sudoers文件 直接用vi修改这个文件也可以
[root@262e395bc9e9 tmp]# visudo

# 用户名 被管理主机的地址=(可使用的身份)  授权命令(绝对路径)
root ALL=(ALL)          ALL

# %组名 被管理主机的地址=(可使用的身份)   授权命令(绝对路径)
%wheel  ALL=(ALL)       ALL

ALL=(ALL)第一个ALL并不是定义允许哪个ip地址或网络允许访问我们,而是定义允许哪一个用户在哪一台计算机上执行某一条命令,即写的是被管理主机的地址。限制的是访问IP而不是来源IP。第二个ALL指的是可使用的用户。第三个ALL标识授权命令,写ALL其实是不合理的,赋予的能力过于强大,正常来讲,应该写具体哪个命令,使用的是绝对路径。

[root@262e395bc9e9 tmp]# visudo
sc ALL= /sbin/shutdown –r now
# 赋予sc此权限很危险,用户可以操作任何文件。不过看公司使用全都给的ALL。。。
sc ALL=/usr/bin/vim

注意:如果命令写的越简单,代表用户具有的权限越大。比如说上面的命令没有写-r now代表用户可以执行shutdown的所有参数。即命令可以根据需求,进行修改。

sudo -l可查看拥有的权限

# 9.文件系统管理

# 9.1 分区和文件系统

# 1.分区类型

分区有三种类型:

  • 主分区: 总共最多只能分四个
  • 扩展分区:只能有一个,也算作主分区的一种 ,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
  • 逻辑分区:逻辑分区是在扩展分区中划分的, 如果是IDE硬盘,Linux最多支持59个逻辑分区 ,如果是SCSI硬盘Linux最多支持11个逻辑分区 。

​ 分区可以理解为把一个大柜子分为几个小柜子,但是只允许打四个柜子,但当物品分类更多四个柜子不够用时,可以把其中一个小柜子再进行划分成更细致的柜子。这种分区方法的目的就是为了突破四个分区的限制。

分区表示方法:

设备文件名

分区名称 文件名
主分区1 /dev/sda1
主分区2 /dev/sda2
主分区3 /dev/sda3
扩展分区 /dev/sda4
逻辑分区1 /dev/sda5
逻辑分区2 /dev/sda6
逻辑分区3 /dev/sda7

注:sd代表SCSI或sdtype硬盘接口,a代表第一块硬盘,1 2 3 4代表四个主分区,只能给主分区使用,就算空下来也不能给逻辑分区使用。 从5开始代表逻辑分区。

更习惯的分区方式是:

# 2.文件系统

有了分区之后,硬盘还不能使用,必须格式化之后才可以使用。格式化就是为了写入文件系统。

Linux默认文件系统分类:

  • ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2 文件系统。1993年发布,最大支持16TB 的分区和最大2TB的文件1TB=1024GB=1024*1024KB。
  • ext3:ext3文件系统是ext2文件系统的升 级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性 。支持最大16TB的分区和最大2TB的文件 。
  • ext4:它是ext3文件系统的升级版。ext4 在性能 、伸缩性和可靠性方面进行了大量改进。EXT4的变化可以说是翻天覆地的,比如向下兼容 EXT3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配 、延迟分配、持久预分配、快速FSCK、日志校 验、无日志模式、在线碎片整理、inode增强、 默认启用barrier等。1EB=1024PB=1024*1024TB

# 9.2 文件系统常用命令

# 1. 挂载命令

# df

名称 说明
命令名称 df
原意
所在路径 /usr/bin/df
功能描述 统计文件系统的占用情况
语法 df [选项] [挂载点]

选项说明:

  • -a:显示所有的文件系统信息,包括特殊文件系统,如 /proc、/sysfs
  • -h:使用习惯单位显示容量,如KB,MB或GB等
  • -T:显示文件系统类型
  • -m:以MB为单位显示容量
  • -k:以KB为单位显示容量。默认就是以KB为单位

# du

名称 说明
命令名称 du
原意
所在路径 /usr/bin/du
功能描述 统计目录或文件大小
语法 df [选项] [挂载点]

选项说明:

  • -a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
  • -h:使用习惯单位显示磁盘占用量,如KB,MB或GB等
  • -s:统计总占用量,而不列出子目录和子文件的占用量

注:此命令一般不用做统计文件大小,因为完全可用ls代替,但ls统计目录大小时,只会统计目录下一级子目录和文件的文件名所占用空间大小,而不会统计子目录和文件中的数据占用的空间多大。

[root@262e395bc9e9 /]# ls -lh /
total 56K
-rw-r--r--   1 root root  12K Aug  4 22:05 anaconda-post.log
lrwxrwxrwx   1 root root    7 Aug  4 22:04 bin -> usr/bin
drwxr-xr-x   5 root root  360 Aug  8 09:30 dev
drwxr-xr-x   1 root root 4.0K Aug  9 13:06 etc
drwxr-xr-x   1 root root 4.0K Aug  9 07:39 home
lrwxrwxrwx   1 root root    7 Aug  4 22:04 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Aug  4 22:04 lib64 -> usr/lib64
drwxr-xr-x   2 root root 4.0K Apr 11 04:59 media
drwxr-xr-x   2 root root 4.0K Apr 11 04:59 mnt
drwxr-xr-x   2 root root 4.0K Apr 11 04:59 opt
dr-xr-xr-x 166 root root    0 Aug  8 09:30 proc
dr-xr-x---   1 root root 4.0K Aug  8 09:30 root
drwxr-xr-x   1 root root 4.0K Aug 10 03:19 run
lrwxrwxrwx   1 root root    8 Aug  4 22:04 sbin -> usr/sbin
drwxr-xr-x   2 root root 4.0K Apr 11 04:59 srv
dr-xr-xr-x  13 root root    0 Aug 10 03:52 sys
drwxrwxrwt   1 root root 4.0K Aug  9 12:28 tmp
drwxr-xr-x   1 root root 4.0K Aug  4 22:04 usr
drwxr-xr-x   1 root root 4.0K Aug  4 22:04 var
[root@262e395bc9e9 /]# du -sh /etc/
2.7M	/etc/

du命令和df命令的区别:

df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除 ,但是程序并没有释放空间) ;du命令是面向文件的,只会计算文件或目录占用的空间。

# fsck

系统在启动时会自动执行,不需要手动执行,是底层修复命令,自己执行有时候反而会出问题,了解就好

名称 说明
命令名称 fsck
原意
所在路径 /usr/sbin/fsck
功能描述 文件系统修复命令
语法 df [选项] [挂载点]

选项说明:

  • -a:不用显示用户提示,自动修复文件系统
  • -y:自动修复。和-a作用一致,不过有些文件系统只支持-y

# dumpe2fs

名称 说明
命令名称 dumpe2fs
原意
所在路径 /usr/sbin/dumpe2fs
功能描述 显示磁盘状态 (主要用来查看数据块大小)
语法 dumpe2fs [选项] 分区设备文件名

# 2.挂载命令

名称 说明
命令名称 mount
原意
所在路径 /usr/bin/mount
功能描述 查询和挂载
语法 mount [-la][-t 文件系统][-L 卷标名][-o 特殊选项] 设备文件名 挂载点

选项说明:

  • -l:查询系统中已经挂载的设备时,会显示卷标名称。

  • -a:根据配置文件/etc/fstab的内容,自动挂载

  • -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9600等文件系统

  • -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载

  • -o 特殊选项:可以指定挂载的额外选项,用逗号隔开特殊选项,如:remount,noexec

    特殊选项说明:

把设备文件名和挂载点连接起来

使用:

#重新挂载/boot分区,并使用noexec权限 
[root@localhost sh]# mount -o remount,noexec /home
[root@localhost sh]# cd /home 
[root@localhost boot]# vi hello.sh 
[root@localhost boot]# ./hello.sh
[root@localhost boot]# chmod 755 hello.sh
hello world
[root@localhost boot]# mount -o remount,exec /home

# 3.挂载光盘与U盘

# mount挂载光盘

#建立挂载点
[root@localhost ~]# mkdir /mnt/cdrom/

#挂载光盘 
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/

[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/

mount其实就是把设备文件和挂载点连接起来。上述就是把/dev/cdrom设备文件挂载到/mnt/cdrom。

挂载挂盘时,设备文件使用/dev/cdrom和/dev/sr0效果相同,其实前者是后者的一个软链接。

[root@localhost ~]# ll /dev/cdrom
lrwxrwxrwx. l root root 3 1月 14 17:26 /dev/cdrom -> sr0 

访问数据的时候,直接去挂载点访问数据。

# unmount卸载光盘

[root@localhost ~]# umount 设备文件名或挂载点
[root@localhost ~]# umount /mnt/cdrom

# 挂载U盘

# 查看U盘设备文件名
[root@localhost ~]# fdisk –l
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/

**注意:**Linux默认是不支持NTFS文件系统的。在Linux中, 把fat和fat16分区识别为fat,把fat32分区识别为vfat。

# 4.fdisk分区

# 1.fdisk命令分区过程

# 1. 添加新硬盘
# 2. 查看新硬盘
[root@localhost ~]# fdisk -l
# 3. 使用fdisk命令分区
[root@localhost ~]# fdisk /dev/sdb
# 4. 重新读取分区
[root@localhost ~]# partprobe

# 2.

编辑 (opens new window)
上次更新: 2021/11/10, 12:11:50
小视频笔记(二)
Http协议简介

← 小视频笔记(二) Http协议简介→

最近更新
01
阅读精通正则表达式总结
09-29
02
项目搭建规范的配置
07-15
03
Vite的使用
07-03
更多文章>
Theme by Vdoing | Copyright © 2018-2023 Ccbeango
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式