【Linux】权限完结

简介: 上篇文章我们说到对于一个文件所属者和所属组都是同一个人时,使用所属者身份后,在使用所属组的身份对文件进行操作时,不会被允许。因为这个关系只会匹配一次,如何解决这个问题呢?这篇文章会给你答案。

chown指令

功能:修改文件的拥有者
格式:chown [参数] 用户名文件名

519d648457a64d5bb47a4421b1c64aa9.png

所属者和所属组都是同一个人,但是所属组有权限不能操作。

我们可以使用chown指令修改所属者来改变关系。

731d25940f79438ba54906882f146698.png

修改所属者是就相当于把文件给别人,要经过别人的同意,我们直接使用sudo指令进行提权,强行修改。 


chgrp指令

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名文件名
常用选项:-R 递归修改文件或目录的所属组

这个指令和上面chown指令的使用差不多,就不演示了。


文件类型

Windows操作系统下有各种文件类型,通过后缀区分如:.exe.gif.ppt.c等等;

Linux操作系统下也有文件类型,但是Linux的文件类型不通过后缀区分(不代表Linux不用后缀)

如:在Linux下我们不能编译后缀为.txt的文件。

a3e92a74f5b744bbb952c7efae3e14c6.png

第一列中的第一个字符代表文件的类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

caa0e03777bc490bb6d856c955bf8443.png

我们在家目录下可以使用ll指令查看所有文件和属性,因为 -dl、的文件类型最常见,所以其他的文件类型就不展示了。


file指令

功能说明:辨识文件类型。
语法:file [选项] 文件或目录...

我们创建一个新文件里面使用C语言编写一个小程序,使用file指令可以判断这个文件是一个C的程序。


5d082615247c4a04bd43455d141193a9.png

目录的权限

849d2ac3561f4e8ea1ab98b537468424.png

x决定是否可以进入目录

3942223fb4334062a49861658e6fc683.png

w决定是否可以在目录下进行文件的新建和删除

6caa9f42164f47a0b63d1292d5da6877.png

r决定是否有对文件属性查看的权力

于是问题来了换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下

e05d90746f6643099eb4a4af35ba89d9.png


为了解决这个不科学的问题Linux引入了粘滞位的概念。


粘滞位

Linux的家目录下有一个公用的目录tmp,提供给所有用户,可以在里面进行文件的创建,但是文件的其他人不可以对文件进行胡乱的操作。

0cda179a31624a4b96df935e07ff6998.png


超级用户可以对公用的tmp目录的权限进行修改 

77b36948801e426a98b74af406f92ba0.png

当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能由
一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除


umask指令

功能:查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权是:mask&~umask=最终权限。

格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002


2c12f12441674d5fa890766a60b746a5.png


 权限总结

·  目录的可执行权限是表示你可否在目录下执行命令。

·   如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

·   而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目的读权限 

·   所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

 

相关文章
|
5天前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
15 1
|
11天前
|
Linux 数据安全/隐私保护 Windows
Linux专栏10:Linux权限详解(上)
Linux专栏10:Linux权限详解(上)
31 3
|
3天前
|
Shell Linux 程序员
详解shell 运行原理及Linux权限
详解shell 运行原理及Linux权限
|
2月前
|
关系型数据库 MySQL Shell
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
|
2月前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
2月前
|
Linux 数据处理 数据库
深入解析Linux命令id:理解用户身份与权限
`id`命令在Linux中用于显示用户身份(UID, GID和附加组)。它查看系统用户数据库获取信息。参数如`-u`显示UID,`-g`显示GID,`-G`显示附加组,结合`-n`显示名称而非ID。用于确认命令执行者身份,确保权限正确。在脚本中使用时注意权限管理,遵循最小权限原则。
|
2月前
|
Java Linux PHP
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
|
2月前
|
监控 网络协议 Ubuntu
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
|
1月前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
|
1月前
|
Linux 数据安全/隐私保护 iOS开发
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro