linux文件权限设置与磁盘配额设置

您所在的位置:网站首页 linux如何清理磁盘空间 linux文件权限设置与磁盘配额设置

linux文件权限设置与磁盘配额设置

2023-06-08 09:47| 来源: 网络整理| 查看: 265

一、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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3