【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)该文件的所有者删除

相关文章
|
5月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
299 3
|
6月前
|
存储 Unix Shell
Shell 输出命令完全指南:echo 与 printf 的深度剖析
本文深入解析了 Shell 编程中 `echo` 和 `printf` 两个核心输出命令的用法与区别。`echo` 简单易用,适合基础输出;`printf` 功能强大,支持复杂格式化。文章从语法、转义序列、高级技巧到实际应用场景(如日志记录、进度显示)逐一讲解,并对比两者的性能与适用场景,帮助开发者根据需求灵活选择。最后通过进阶技巧和常见问题解答,进一步提升对两者的掌握程度。
308 1
|
7月前
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
8月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
7月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
366 6
|
8月前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
341 6
|
9月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
258 20
|
9月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
316 12
|
10月前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
1444 14
|
11月前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
1296 7