【Linux】-- Shell命令运行原理和权限详解(二)

简介: 【Linux】-- Shell命令运行原理和权限详解

(2)chown修改文件拥有者

修改文件拥有者:

chown 【参数】 用户名 文件名

选项:

-R 递归修改目录的拥有者

 比如将IP2.log文件的拥有者改为用户Gino,必须在root权限下修改,可以切换为root之后:

再修改文件拥有者:

(3)chgrp修改文件或目录的所属组

修改文件或目录所属组:

chgrp 【参数】 用户组名 文件名

选项:

-R  递归修改文件或目录的所属组

同样也是要有root权限才能修改,如将IP2.log文件的所属组改为Gino:

假如想同时修改拥有者和所属组,依旧要在root权限下:

chown 拥有者:所属组 文件名

例如,想将IP2.log的拥有者和所属组都改为root,那么可以这样改:

(4)umask查看或修改文件掩码

新创建一个文件,访问权限按理来说,应该是777,但是却发现新创建的目录的权限是755:

这是因为创建文件或目录的时候还要受到umask的影响,假设默认权限是mask,实际创建出来的文件权限是mask & ~umask。

查看文件掩码:

umask

查看到系统的umask为0022:

只需要关心后3位,实际创建出来的文件权限是mask & ~umask。凡是在umask中为1的位,都要在起始权限中去掉:

修改文件掩码:

umask 八进制

将文件掩码由022修改为333,发现创建的新目录的权限也与333对应:

但是如果退出后,重新登录,重新创建新目录,就会发现,修改过的掩码失效了,又变成了022。

这是因为掩码设置只在本次登录有效,退出登录就失效了。

(5)目录的权限

可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。

可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

那么问题来了。只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限,这不矛盾吗?

(6)粘滞位

在root的根目录下,有一个tmp文件夹,这个文件夹下存放的是临时文件,用户在保存文件之前,文件都存放在tmp文件夹中,这个文件夹下存放用户的临时文件,可以看到它的权限有个t:

 

这个文件夹对拥有者和所属组的权限都是rwx,对other的权限是rwt。这个t是什么属性?和r、w、x有什么区别?

先来看下面的例子,root用户在根目录下创建了一个文件夹test,并在这个文件夹中创建了2个文件test1和test2,然后又root用户切换为delia用户,此时发现delia竟然可以删掉test中的文件:

 

这怎么能忍呢?我创建的文件,怎么能够被别人随随便便删掉呢? test目录对other有w和x权限,一旦有w权限,那么也就是other可以对它进行创建文件和删除文件操作。但是不希望一个用户创建的文件被别的用户或删除,那怎么办呢?

在这种场景下,就需要粘滞位,当目录被设置了粘滞位以后,即使用户对该目录有写权限,但是不能删除该目录中其他用户的文件,只有文件的拥有者和root用户才可以删除。这就达到了各个用户可以在目录中读、写、修改、删除文件,但是不能随意删除其他用户文件的目的。

设置粘滞位:

发现设置完粘滞位后,其他用户就不能删除该用户创建的文件了。

因此,当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能由

(1)超级管理员删除

(2)该目录的所有者删除

(3)该文件的所有者删除

相关文章
|
2天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
2天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0
|
5天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
11 0
|
6天前
|
域名解析 网络协议 Linux
Linux 中的 Nslookup 命令怎么使用?
【4月更文挑战第12天】
25 6
Linux 中的 Nslookup 命令怎么使用?
|
22天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
104 1
|
24天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
16 0
|
1天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
22 3
|
5天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
23 0
|
6天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
7天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
23 1