一、Linux文件权限
1.r --读取权限---对应八进制4
2.w --写权限 ---对应八进制2
3.x --可执行权限-对应八进制1
4.- --无任何权限-对应八进制0
rwx r-x r-x
7 5 5
二、文件权限
1.u: user --文件的属主(用户)
2.g: group --文件属主所在的组
3.o: other --其他的用户
4.a: all以上三种
三、文件权限修改命令
1)数字表示权限的方法:
1.r --读取权限---对应八进制4
2.w --写权限 ---对应八进制2
3.x --可执行权限-对应八进制1
4.- --无任何权限-对应八进制0
chmod 命令 +使用数字形式修改(八进制数值)
例如:修改文件abc.txt文件权限
-rw-rw-r-- 改成 rwx r-x r-x
6 6 4 7 5 5
命令:
chmod 755 /home/tubin/abc.txt
2)使用字母表示权限的方法
操作符号包括:
+ --增加指定的权限
- --去除指定权限
= --清除所选的权限并将设置为指定权限
权限任意组合:rwx 任一组合方式
chmod +rwx /home/tubin/aaa.txt
chmod -rwx /home/tubin/aaa.txt
chmod =rwx /home/tubin/aaa.txt
实训训练项目内容:
知识运用:
1.文件、目录常用权限管理
2.修改文件、目录的默认权限
3.修改文件、目录的隐藏权限
4.使用ACL进行Linux高级权限管理
5.Linux系统下磁盘限额的方法
1.准备工作
为虚拟机添加一个大小为10G的磁盘作为单个文件管理的磁盘
a.对虚拟机添加一块新的磁盘,进行处理磁盘
1.分区 2.格式化 3.挂载分区
b.Linux系统管理设置在/dev 文件目录下,要使相应的设备挂载到目录中去
进行管理和使用,设备通过文件系统进行管理
步骤:
1)分区
使用命令:fdisk /dev/sdb
命令(输入 m 获取帮助):n --添加一个分区
Partition type: p --选择分区类型(p-代表主分区)
p primary (0 primary, 0 extended, 4 free)
e extended
分区号 (1-4,默认 1):1 --选择分区编号
起始 扇区 (2048-20971519,默认为 2048):设置起始地址
使用默认值 2048
--设置分区(扇区)的大小为2G
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G
--查看磁盘分区的信息
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5676267c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
--保存设置
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘
2)格式化分区(windows操作系统格式化成FAT,FAT32,NTFS等格式)
将第一主分区/dev/sdb1 格式化成Linux文件系统(ext3,ext4,xfs等格式)
命令:mkfs -t ext4 /dev/sdb1
Allocating group tables: 完成 ---提示完成格式化
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
3)挂载分区(将sdb1主分区挂载到目录中)
(1) 手动挂载 --系统重启后手动挂载点就无效了
创建目录: mkdir /data
手动挂载命令:mount /dev/sdb1 /data
查看挂载磁盘的信息:df -hT
/dev/sdb1 ext4 2.0G 6.0M 1.8G 1% /data
(2) 自动挂载(开启计算机自动挂载磁盘)
1)使用命令卸载挂载点:
umount /data
查看挂载磁盘的信息:df -hT --查看不到/dev/sdb1 ext4 2.0G 6.0M 1.8G 1% /data 这条信息了
2)编辑配置文件/etc/fstab
使用命令:
vim /etc/fstab
输入信息:
/dev/sdb1 /data ext4 defaults,usrquota,grpquota 0 0
usrquota--用户磁盘限额(开启)
grpquota--用户组磁盘限额(开启)
3)自动挂载
mount -a
4)查看挂载磁盘信息:df -hT
/dev/sdb1 ext4 2.0G 6.0M 1.8G 1% /data --自动挂载成功
2.准备工作(创建用户和组)
1)创建用户:
useradd user1
useradd user2
2)创建用户的密码
echo "redhat"|passwd --stdin user1 --设置user1的密码为redhat
echo "redhat"|passwd --stdin user2 --设置user2的密码为redhat
3)设置文件相关的权限
cd /data
创建文件和文件目录
touch aa.txt
-rw-r--r--. 1 root root 0 4月 20 17:43 aa.txt --权限使用八进制数字为644
mkdir dir1
drwx r-x r-x. 2 root root 4096 4月 20 17:43 dir1 --权限使用八进制数字为755
只有root用户访问dir1有写入的权限,root组和其他用户和组都没有写入权限
[root@localhost data]# su user1
[user1@localhost data]$ cd dir1
[user1@localhost dir1]$ ls
命令:chmod 700 dir1
drwx --- ---
dir1权限设置成只有root用户可以访问、读取、执行权限,其他的用户组和用户都不能访问(root组中其他成员)
drwx r-x r-x ----> drwx --- --- 权限使用八进制数字为700
[root@localhost data]# su user1
[user1@localhost ~]$ cd /data
[user1@localhost data]$ ls
aa.txt dir1 lost+found
[user1@localhost data]$ cd dir1
-bash: cd: dir1: 权限不够
4)修改文件的所有者
命令:chown 用户名 文件名(文件路径下的文件名)
修改当前的/data下的aa.txt的所有者为user1
chown user1 aa.txt
[root@localhost data]# chown user1 aa.txt
[root@localhost data]# ll
总用量 20
-rw-r--r--. 1 user1 root 0 4月 20 17:43 aa.txt
aa.txt当前的所有者由root变成了user1,对user1用户拥有rw权限
验证权限:
[root@localhost data]# su - user1
上一次登录:四 4月 20 18:37:13 CST 2023pts/0 上
[user1@localhost ~]$ cd /data
[user1@localhost data]$ cat aa.txt
abcdef hijklmn
[user1@localhost data]$ vim aa.txt
[user1@localhost data]$ cat aa.txt
abcdef hijklmn
I love you!~
5)修改文件的所属组
[user1@localhost data]$ ll
总用量 24
-rw-r--r--. 1 user1 root 4 4月 20 18:44 aa.txt ---权限使用八进制数字为644
修改aa.txt权限修改成664 -rw-rw-r--
chmod 664 aa.txt
[user1@localhost data]$ chmod 664 aa.txt
[user1@localhost data]$ ll
总用量 24
-rw-rw-r--. 1 user1 root 4 4月 20 18:44 aa.txt
a.让user1用户和 所属组root具备了读写权限
将root所属组修改成user2组,让user2组具有读写权限,组中的成员user2具备读写权限
修改所属组的命令:
chgrp 用户组 文件名称(文件路径下的文件名)
chgrp user2 aa.txt
[root@localhost data]# chgrp user2 aa.txt
[root@localhost data]# ll
总用量 24
-rw-rw-r--. 1 user1 user2 4 4月 20 18:44 aa.txt
修改后的user2所属组具有读写权限,让user2也具备了读写权限
[root@localhost data]# su user2
[user2@localhost data]$ ls
aa.txt dir1 lost+found
[user2@localhost data]$ vim aa.txt --编辑aa.txt
[user2@localhost data]$ cat aa.txt
abcdef
6)同时修改所有者和所属组
当前的aa.txt文件所有者和所属组分别是user1 user2
[user2@localhost data]$ ll
总用量 24
-rw-rw-r--. 1 user1 user2 7 4月 20 19:07 aa.txt
命令:chown --change own 改变所有权
chown 所有者:所属组 文件名称
将aa.txt文件所有者和所属组修改成root
[user2@localhost data]$ chown root:root aa.txt --提示用户没有这个权限
chown: 正在更改"aa.txt" 的所有者: 不允许的操作
在root用户下修改当前路径下的aa.txt的所有者和所属组修改成root:
[root@localhost data]# chown root:root aa.txt
[root@localhost data]# ll
总用量 24
-rw-rw-r--. 1 root root 7 4月 20 19:07 aa.txt
7)文件访问控制列表(ACL)权限和访问控制列表的设置都是由root用户去设置
例子1:在aa.txt文件中添加user1用户设置rw权限,其他设置权限不改变
不改变所有者和所属组的属性配置
对文件采用单独访问控制设置,引入文件访问控制列表ACL
命令:setfacl -m u:用户名:文件权限 文件名称(路径下的文件名称) --创建文件控制访问列表
命令:getfacl 文件名称 --获取文件控制访问列表信息
set --设置
get --获取
f --文件
acl --访问控制列表
-m --定义访问控制列表(创建)
-x --去除访问控制列表
u: --用户
aa.txt文件在添加ACL前:
[root@localhost data]# ll
总用量 24
-rw-rw-r--. 1 root root 7 4月 20 19:07 aa.txt
查看aa.txt的文件控制访问列表
getfacl aa.txt
在aa.txt文件添加ACL后:在aa.txt的文件权限属性中多出一个+号,+号代表文件创建了ACL,受ACL的控制
将aa.txt添加一个user1用户的rw权限,并且不改变原有所有者和所属组的权限
setfacl -m u:user1:rw aa.txt
[root@localhost data]# setfacl -m u:user1:rw aa.txt
[root@localhost data]# ll
总用量 28
-rw-rw-r--+ 1 root root 7 4月 20 19:07 aa.txt
查看aa.txt的文件控制访问列表
getfacl aa.txt
[root@localhost data]# getfacl aa.txt
# file: aa.txt
# owner: root
# group: root
user::rw-
user:user1:rw- --添加一个用户user组具备了rw权限
group::rw-
mask::rw-
other::r--
使用user1去验证aa.txt受到文件访问控制列表中user1用户的权限控制
使得user1具备了aa.txt的rw的权限
[root@localhost data]# su - user1
上一次登录:四 4月 20 18:44:39 CST 2023pts/0 上
例子2:在aa.txt文件中添加user2用户组设置rw权限,其他设置权限不改变
不改变所有者和所属组的属性配置
命令:setfacl -m g:用户组:权限 文件名称
查看文件aa.txt文件访问控制列表
[user1@localhost data]$ getfacl aa.txt
# file: aa.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::rw-
mask::rw-
other::r--
setfacl -m g:user2:rw aa.txt
[user1@localhost data]$ setfacl -m g:user2:rw aa.txt --提示user1用户没有权限
setfacl: aa.txt: 不允许的操作
使用root用户去操作文件访问控制列表
[root@localhost data]# getfacl aa.txt
# file: aa.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::rw-
mask::rw-
other::r--
[root@localhost data]# setfacl -m g:user2:rw aa.txt
[root@localhost data]# getfacl aa.txt
# file: aa.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::rw-
group:user2:rw- --添加一个user2组具备了rw权限
mask::rw-
other::r-
user2是在user2组中的,user2具备了对aa.txt的rw的权限,使用user2用户去验证aa.txt受到ACL控制
[user2@localhost data]$ vim aa.txt
[user2@localhost data]$ cat aa.txt
abcdef hijklmn
[user2@localhost data]$
二、除了文件添加文件访问控制列表外,目录也可以添加文件访问控制列表
1.针对目录设置文件访问控制列表,对目录中的文件或子目录不设置,不影响目录中文件或子目录
不受原有的目录的ACL的控制
对dir1目录设置文件访问控制列表,添加一个user1用户的rwx权限,并且不改变原有所有者和所属组的权限
setfacl -m u:user1:rwx dir1
[root@localhost data]# ll
总用量 28
-rw-rw-r--+ 1 root root 30 5月 4 09:36 aa.txt
drwx------. 2 root root 4096 4月 20 17:43 dir1
[root@localhost data]# setfacl -m u:user1:rwx dir1
[root@localhost data]# ll
总用量 32
-rw-rw-r--+ 1 root root 30 5月 4 09:36 aa.txt
drwxrwx---+ 2 root root 4096 4月 20 17:43 dir1
[root@localhost data]# getfacl dir1
# file: dir1
# owner: root
# group: root
user::rwx
user:user1:rwx
group::---
mask::rwx
other::---
在目录dir1创建dd.txt,不受到dir1的ACL的控制
[root@localhost dir1]# touch dd.txt
[root@localhost dir1]# ls
dd.txt
[root@localhost dir1]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 4 10:28 dd.txt
[root@localhost dir1]# getfacl dd.txt
# file: dd.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
总结:文件目录dir1下的dd.txt不受到上级目录的ACL的控制
2.针对目录中dir1下的子目录和子文件设置ACL控制列表
对dir1中的子文件夹设置ACL控制列表
命令:setfacl -m d:u:user1:rwx dir2
[root@localhost data]# setfacl -m d:u:user1:rwx dir2
[root@localhost data]# getfacl dir2
# file: dir2
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
在dir2下创建子目录或者子文件,会受ACK访问控制列表控制
[root@localhost dir2]# mkdir aaa
[root@localhost dir2]# getfacl aaa
# file: aaa
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
5.Linux系统下磁盘限额的方法:
1.假设用户user1,设置usr1用户对dev/sdb1分区进行磁盘限额配置
将user1对blocks的soft设置为5000,hard设置为10000;
inodes的soft设置为10,hard设置为15
1)使用user2去查询用户的磁盘的配额信息
quota 命令--查看磁盘配额信息
[user2@localhost ~]$ quota --说明没有产生磁盘配额文件 /data/quota.user
quota: Cannot open quotafile /data/aquota.user: 没有那个文件或目录
2)使用root用户去检查/etc/fstv文件需要进行磁盘配额分区管理,检查用户的配额和用户组的配额信息,
检查没有配额文件,就去生成配额
命令:quotacheck -cugvmf /data
-c 检查
-ug 分别是用户、用户组配置
-v 检查过程中详细信息
-m 创建配额文件
[root@localhost ~]# quotacheck -cugvmf /data
quotacheck: Checked 6 directories and 2 files
quotacheck: Old file not found.
quotacheck: Old file not found. --没有发现磁盘配额文件
生成了用户的配额和用户组的配额
[root@localhost ~]# cd /data
[root@localhost data]# ls
aa.txt aquota.group aquota.user dir1 dir2 lost+found
[root@localhost data]# ll
总用量 56
-rw-rw-r--+ 1 root root 30 5月 4 09:36 aa.txt
-rw-------. 1 root root 6144 5月 11 08:30 aquota.group
--用户组额信息,权限600 只有root用户可以读和写
-rw-------. 1 root root 6144 5月 11 08:30 aquota.user
--用户配额信息,权限600 只有root用户可以读和写
b)创建和修改配额设置
将user1对blocks的soft设置为5000,hard设置10000
将inodes的soft设置为10,hard设置为15
使用命令:edquota -u user1 --为user1用户创建配额信息
Disk quotas for user user1 (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 5000 10000 0 10 15
使用i编辑文档,使用esc键盘:wq保存退出
c)启用配置
在root用户下:
使用命令:quotaon -vug /data
/dev/sdb1 [/data]: group aquota turned on
/dev/sdb1 [/data]: user aquota turned on
[root@localhost data]# su - user1 --切换到user1上查询user1的配额信息
上一次登录:四 5月 4 11:38:33 CST 2023pts/0 上
[user1@localhost ~]$ quota
Disk quotas for user user1 (uid 1002): none
使用命令:touch 文件名称 --使用user1用户创建了五个文件
-rw-rw-r--. 1 user1 user1 0 5月 11 08:47 bbbbb.txt
-rw-rw-r--. 1 user1 user1 0 5月 11 08:46 bbbb.txt
-rw-rw-r--. 1 user1 user1 0 5月 11 08:46 bbb.txt
-rw-rw-r--. 1 user1 user1 0 5月 11 08:46 bb.txt
-rw-rw-r--. 1 user1 user1 0 5月 11 08:46 b.txt
--查看user1的磁盘配额信息:
[user1@localhost dir1]$ quota
Disk quotas for user user1 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 5000 10000 5 10 15
[user1@localhost dir1]$ touch bbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbbbb.txt
sdb1: warning, user file quota exceeded. ---创建文件到了第十一个时系统警告用户配额已经达到最大(soft配额信息警告)
[user1@localhost dir1]$ quota --已经创建了是十一文件,超过了设置soft配额10个,soft软配额10会在6天后自动转换成hard设置15
Disk quotas for user user1 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 5000 10000 11* 10 15 6days
[user1@localhost dir1]$ touch bbbbbbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbbbbbbbb.txt
[user1@localhost dir1]$ touch bbbbbbbbbbbbbbbb.txt
sdb1: write failed, user file limit reached. --如果创建第十六个文件,系统提示操作磁盘超过了磁盘的限额
touch: 无法创建"bbbbbbbbbbbbbbbb.txt": 超出磁盘限额
[user1@localhost dir1]$ quota --查看user1的磁盘配额信息
Disk quotas for user user1 (uid 1002): --15个文件已经达到了文件最大的磁盘限额,15个文件占用了所有配置限额了
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 5000 10000 15* 10 15 6days
d)删除所有的文件,清除配额
[user1@localhost dir1]$ rm -rf * -删除所有文件
[user1@localhost dir1]$ ll
总用量 0
[user1@localhost dir1]$ quota
Disk quotas for user user1 (uid 1002): none --说明user1用户没有使用设置磁盘配额资源
e)定义文件大小的配额
1)向dir1目录中写入文件5个大小为1M的文件
使用命令:dd if=/dev/zero of=aa.dat bs=1M count=5
[user1@localhost dir1]$ dd if=/dev/zero of=aa.dat bs=1M count=5
sdb1: warning, user block quota exceeded.
记录了5+0 的读入
记录了5+0 的写出
5242880字节(5.2 MB)已复制,0.140431 秒,37.3 MB/秒
[user1@localhost dir1]$ dd if=/dev/zero of=aa.dat bs=1M count=5
sdb1: warning, user block quota exceeded. --说明针对user1超过磁盘存储分配block soft配额
记录了5+0 的读入
记录了5+0 的写出
5242880字节(5.2 MB)已复制,0.140431 秒,37.3 MB/秒
[user1@localhost dir1]$ quota
Disk quotas for user user1 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 5120* 5000 10000 7days 1 10 15
[user1@localhost dir1]$ dd if=/dev/zero of=bb.dat bs=1M count=5 --写入5个文件大小分别为1M文件bb.dat
sdb1: write failed, user block limit reached.
dd: 写入"bb.dat" 出错: 超出磁盘限额 --提示的写入的大小超过了用户hard配额大小的限制
记录了5+0 的读入
记录了4+0 的写出
4997120字节(5.0 MB)已复制,0.0216811 秒,230 MB/秒
[user1@localhost dir1]$ quota --查看user1的磁盘配额信息
Disk quotas for user user1 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 10000* 5000 10000 6days 2 10
[user1@localhost dir1]$ ls -lh --查看写入文件的大小和属性(不会超过最大hard限额100000)
总用量 9.8M
-rw-rw-r--. 1 user1 user1 5.0M 5月 11 09:21 aa.dat
-rw-rw-r--. 1 user1 user1 4.8M 5月 11 09:22 bb.dat
--删除所有的文件,user1没有使用任何配额资源
使用命令:rm *.dat
[user1@localhost dir1]$ rm *.dat
[user1@localhost dir1]$ quota --说明user1用户没有使用设置磁盘配额资源
Disk quotas for user user1 (uid 1002): none