Linux下如何设定权限?

Linux下权限的设定

1.如何查看及读取权限信息

1.查看文件属性

ls -l file 查看文件的属性
ls -l dir 查看目录内文件信息
ls -ld dir 查看目录的属性
ll file 相当于 ls -l file (ls -l 相当于 ll)
ll -d dir 相当于 ls -ld dir
ls -lR file 递归显示子目录

实验操作
(1)查看文件属性

[root@workstation Desktop]# ls -l file1 
[root@workstation Desktop]# ll file1 

例如查看的文件属性为:

 - | rw-r--r--| . | 1 | root | root | 6 |Apr 2 02:03 | filename
 1     2        3   4      5    6      7        8           9  

各字段含义依次为:
类型 / 权限 / 安全上下文 / 硬链接个数/ 拥有者 / 拥有组 / 文件大小 /文件最后一次被修改的时间 / 文件名称

在这里插入图片描述
(2)查看目录内文件信息

[root@workstation Desktop]# ls -l dir1/
[root@workstation Desktop]# ll dir1/
 d | rw-r--r--| . | 2 | root | root | 32 |Apr 2 02:03 | dirname
 1     2        3   4      5    6      7        8           9  

各字段含义一次为:
类型 / 权限 / 安全上下文 / 目录中子目录的个数 / 拥有者 / 拥有组 / 子文件或子目录元数据的大小 /文件最后一次被修改的时间 / 文件名称
在这里插入图片描述
(3)查看目录的属性

[root@workstation Desktop]# ls -ld dir1/
[root@workstation Desktop]# ll -d dir1/

在这里插入图片描述
(4)递归显示子目录

[root@workstation Desktop]# ls -lR dir1/
[root@workstation Desktop]# ll -R dir1/

在这里插入图片描述

2.对于属性各字段的理解
1.对于文件属性的字段的理解

1 类型
2 文件权限
3 SELinux Context(安全上下文)
4 文件硬链接个数
5 文件拥有着
6 文件拥有组
7 文件大小
8 文件最后一次被修改的时间
9 文件名称

(1)文件类型

     -     #普通文件
     d    #目录
     l    #软连接(类似于快捷方式)
     b    #块设备(磁盘/u盘)
     c    #字符设备
     s    #套接字socket(进入程序(eg.数据库)内部操作 ls没有对外的接口)
           套接字类似于程序(例如数据库)的门(程序对外开放的接口)
     p    #管道|

(2)文件权限
| rw- |rw- | r–| 三位为一位,分别代表的是user,group,other(简写为u,g,o)
u:文件拥有者对文件能做什么操作(所有人)
g:文件所有组对文件能做什么操作(所有组)
o:其他人对文件能做什么操作(其它人)

r
w
x 执行
- 没有功能

(3).安全上下文,(判断类似于防火墙的东西是否打开) .表示打开
(4)硬链接个数

储存文件的区域划分为节点区和数据区
当节点区域的内存不够时,可以在数据区已有的文件写数据内容,但是不能创建文件
当数据区的内存不够时,可以新建文件,但是不能在数据区内写数据内容

  • 硬链接:一个节点对应数据区的多个文件(硬链接含义:文件被记录的次数)
  • 软链接:通过找其他的节点,再找对应的文件,也就是数据区的一个文件读英节点区的多个节点

(5)文件拥有着user

(6) 文件所有组grooup

(7)文件大小(文件的字节数)
文件大小是根据文件内容决定的,需要注意,最后还有一个换行符号
(8)文件最后一次被修改的时间
修改文件的时间戳

在这里插入图片描述

[root@workstation Desktop]# touch -t 07201212 file1 

(9)文件名称
3.对于目录各字段的理解
目录与文件的区别是

  • 第4个 代表文件中子目录的个数
  • 第7个 代表子文件或者子目录元数据的大小
    实验:
    == 1.子目录的个数==
    在这里插入图片描述
    2子文件或者子目录元数据的大小
    在这里插入图片描述

解析:
新建目录,里面包含因此隐藏文件,共有6个
新建名称为1的文件,在redhat8中原始有8个元数据,名称1有一个元数据,共有9个元数据

两者相加,故共有15个元数据

2.如何改变文件的拥有者和拥有组

前言知识

chown 用户名 文件 更改文件的拥有者
chgrp 组名称 文件 更改文件的所有组
chown -R 用户名 文件 更改目录的拥有者
chgrp -R 组名称 文件 更改目录的拥有组
chown 用户名:组名称 文件/目录 更改文件或者目录的拥有者和拥有组

实验操作:
思路:先建立文件和目录,再监控文件和目录所有人所有组改变的过程
step1:监视文件

[root@workstation Desktop]# watch -n 1 ls -lR /mnt/

在这里插入图片描述
step2.更改文件的所有人和所有组
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
step3.递归更改目录用户名/组名称

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.让你增加对文件权限的认知理解!

- 此位表示权限未开启
r 查看权限 对文件,可以查看文件里的内容;对目录,可看目录中有什么内容(列出目录中文件/目录名称)
w 可写权限 对文件,可以更改文件内的内容;对目录,可以对目录里文件和内容进行重命名/删除/新建操作,但是不能修改文件的时间戳和权限
x 可执行权限 对文件,可用文件名称调用文件内部记录的程序命令;对目录,可进入目录(进入目录后怎么操作,要看用户对此目录有何权限)

r:查看权限(可读权限)
在这里插入图片描述
在这里插入图片描述

w:可写权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
对于修改权限,可以修改目录权限,不能修改文件权限
x:可执行权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.文件权限设定方式

1.依照模板复制权限
(1)复制文件,但是没有复制文件的权限

[root@workstation mnt]# cp file file3

在这里插入图片描述
(2)复制文件权限以及文件内容

[root@workstation mnt]# cp -p file file2

在这里插入图片描述
(3)复制文件权限,但是不复制文件内容

注意(1)第一个为源文件 第二个为待效果文件(2)第二个文件一定要存在

[root@workstation mnt]# chmod --reference=file file3

在这里插入图片描述
(4)复制目录权限,但是不复制目录内容

注意:第二个目标文件一定要存在
在这里插入图片描述

2.字符方式设定文件权限
(1)同时更改拥有者/拥有组和其他人权限,使用逗号隔开

[root@workstation mnt]# chmod o+r,u-r,g-r dir

在这里插入图片描述
(2)可同时改变可读/可写/可执行权限

[root@workstation mnt]# chmod o-rwx dir

在这里插入图片描述
(3)-r -x -w 的区别
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3.数字方式设定文件权限

[root@workstation mnt]# chmod 777 file

在这里插入图片描述

5.系统预留权限阀值

1.对于权限来说,开放的越大(例如rwx都开了),共享效果越明显,但是安全性越差;
2.资源存在的意义在于共享,在系统中应该开放相应的权力(共享一定的资源),并且保留不安全的权力以确保系统功能性及安全性。

1.临时修改权限
(1)shell 中可以直接使用umask来查看系统预留权限值


[root@workstation Desktop]# umask
0022

系统默认的权限预留值为0022
建立目录时,权限值默认为为777-022=755
建立文件时,权限值默认为为777-022-111=644

在这里插入图片描述
(2)并且可以直接使用umask设定系统预留权限值

[root@workstation Desktop]# umask 337

在这里插入图片描述

临时更改系统默认权限值为337
建立目录时,权限值默认为777-337=440
建立文件时,权限值默认为777-337-111=440

2.永久修改权限

(1)系统默认权限预留阀值的更改需要更改两个配置文件
(2)两个配置文件分别是(1)shell配置文件 /etc/bashrc (2)系统环境配置文件 /etc/profile

(3)修改完配置文件后,需要告诉系统,配置文件已经更新
(4)告诉系统的命令为 source /etc/bashrc ; source /etc/profile ;

step1:vim打开配置文件

[root@workstation Desktop]# vim /etc/profile
[root@workstation Desktop]# vim /etc/bashrc

解读配置文件内容:

    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
       umask 002
    else
       umask 226
    fi

如果uid大于199,并且uid等于gid的情况下,在第一行修改;(并且的关系)
否则在第二行修改
root用户在第二行修改呀,因为root的uid为0

普通用户一般在第一行进行预留权限阀值的修订

step2:找到umask关键字(/ 反斜杠搜索功能),更改文件配置
step3:告诉系统,配置文件已经修改

[root@workstation Desktop]# source /etc/bashrc 
[root@workstation Desktop]# source /etc/profile

在这里插入图片描述
在这里插入图片描述

6.特殊权限

stickyid粘滞位 目录:当目录上有stickyid权限时,所有用户均可在该目录创建文件,但只有文件所有人和root用户可删除该目录下的文件;对文件的影响:不调用的时候也会被加载到交换空间
sgid强制位 当目录上有sgid权限时,任何人在该目录建立的文件或者目录的所有人都属于该目录(理解:我在这个厂子干活,我所生产的物品是属厂商的)
suid冒险位 对于文件,当文件上有suid权限时,任何人执行这个文件所产生的进程都属于文件的所有人(拥有者)(理解:当我用工厂的机器加工商品时,这个机器的所有人仍然归工厂所有)

stickyid粘滞位

思路:
(1)建立public公共目录(给目录满权限),建立监控
(2)其次:普通用户全部都可以在目录内增删任意文件,此目录存在问题(我的东西能被别人的删掉)
(3)t权限: chmod o+t /mnt/public chmod o-t /mnt/public
对目录的影响:other位有t 文件只能被所有人和超级用户删除(操作不被认可)
对文件的影响:不调用的时候也会被加载到交换空间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
sgid强制位

实验思路:
(1)保证实验环境纯净,建立public 设置权限满权限,监控watch -n 1 ls -lR /mnt/
(2)创建proc组,改变public所有组为 proc
[root@workstation mnt]# groupadd proc
[root@workstation mnt]# chgrp proc public/
(3)切换到student,使用student建立的文件,但是文件的所有组属于student
(3)但是我们需要,在public组内建立的文件,需要和public的拥有组是一样的
(4)所以需要chmod g+s /mnt/public/
[root@workstation ~]# chmod g+s /mnt/public/
(5)任何用户再再建立文件的时候,文件的拥有组属于proc组
理解:
在工厂中建立了奔驰汽车,是属于公司工厂的
这里prod是生产商,student是自己,自己建的汽车是属于工厂的
注意点:当目录具有sgid权限时,再次建立的文件和public目录时相同的拥有组,但是现存的文件的拥有组不会改变
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

suid冒险位

程序是文件 程序正在运行的状态是进程
来理解:我们用程序在干活 活是谁的 和工具是谁的是两码事

(1)eg cat本身是属于root组,student组运性,这个进程就是student的!谁发起的 进程是谁的
(2)想要实现:不管是谁执行,进程都是文件的所有组。(用户提升了,本身和root用户不沾边)
(3)具体做法:可以先让命令有xxxx身份。当你用这程序工具时,将具有xxx身份。
(4)usermod -G root student (却是student做任何事情都是root) 只是想让student运行cat时,使用root身份!
(5) chmod u+s /bin/cat 任何人在运行cat 都是root用户 运行完之后,该是谁还是谁。只是在执行这个程序时,让你变成所有人/所有组。

(1)cat命令实验
step1:监视进程的所有人和所有组

[root@workstation Desktop]# watch -n 1 "ps ax -o user,group,comm | grep cat"

step2:student用户运行cat命令,显示cat进程的所有人是student
step3:更改冒险位(更改所有人

[root@workstation Desktop]# chmod 4777 /usr/bin/cat

或者(更改所有组

```bash
[root@workstation Desktop]# chmod 6777 /usr/bin/cat

step4:任何用户执行cat都是root身份(因为设置了root时的冒险位)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)rm命令实验
使用rm实验防止问题:防止删除文字的时候,误操作
step1:监视进程和rm文件(/usr/bin/rm)
step2:更改文件的所有人和所有组(以便其他用户在执行这个命令时,使用的是更改后的所有人和所有组)

[root@workstation Desktop]# chown student:student /usr/bin/rm

step3:更改冒险位

[root@workstation Desktop]# chmod u+s,g+s /usr/bin/rm

step4:使用root执行删除命令,显示没有权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.ACL权限列表

(1) 引入:想让root和student对文件可写。access control listACL(添加谁可以作什么)
(2)当开启权限列表后,文件权限属性的后一位出现“+“加号
(3)权限列表打开时,查看权限列表权限: getfacl 用户名

ACL实验思路:
(1)实验环境干净
(2)监视目录和权限列表

[root@workstation Desktop]#watch -n 1 "ls -l /mnt/;getfacl /mnt/file"

(3)打开权限列表(权限后一位添加“+”,并且添加有user:student:rwx)

[root@workstation Desktop]# setfacl -m u:student:rwx /mnt/file

(4)去除权限列表(没有特定指定用户)user:student:rwx消失!,但“+”仍在

[root@workstation Desktop]# setfacl -x u:student /mnt/file

(5)关闭权限列表 “+”也消失

[root@workstation Desktop]# setfacl -b /mnt/file

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了11 篇原创文章 · 获赞 3 · 访问量 532

猜你喜欢

转载自blog.csdn.net/baidu_40389082/article/details/103807275