【BASH】回顾与知识点梳理(十六)

【BASH】回顾与知识点梳理 十六

    • 十六. 十二至十五章知识点总结及练习
      • 16.1 总结
      • 16.2 练习
      • 16.3 简答题

该系列目录 --> 【BASH】回顾与知识点梳理(目录)

十六. 十二至十五章知识点总结及练习

16.1 总结

  • 绝对路径:『一定由根目录 / 写起』;相对路径:『不由 / 写起,而是由相对当前目录写起』
  • 特殊目录有:., .., -, ~, ~account 需要注意;
  • 与目录相关的指令有:cd, mkdir, rmdir, pwd 等重要指令;
  • rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』指令;
  • 用户能使用的指令是依据 PATH 变量所规定的目录去搜寻的;
  • ls 可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要!
  • 文件的复制、删除、移动可以分别使用:cp, rm , mv 等指令来操作;
  • 检查文件的内容(读文件)可使用的指令包括有:cat, tac, nl, more, less, head, tail, od 等
  • cat -n 与 nl 均可显示行号,但默认的情况下,空白行会不会编号并不相同;
  • touch 的目的在修改文件的时间参数,但亦可用来建立空文件;
  • 一个文件记录的时间参数有三种,分别是 access time(atime), status time (ctime), modification time(mtime),ls 默认显示的是 mtime。
  • 除了传统的 rwx 权限之外,在 Ext2/Ext3/Ext4/xfs 文件系统中,还可以使用chattrlsattr 设定及观察隐藏属性。 常见的包括只能新增数据的 +a 与完全不能更动文件的 +i 属性。
  • 新建文件/目录时,新文件的预设权限使用 umask (默认为0022)来规范。默认目录完全权限为 drwxrwxrwx, 文件则为-rw-rw-rw-
  • 文件具有 SUID 的特殊权限时,代表当用户执行此一 binary 程序时,在执行过程中用户会暂时具有程序拥有者的权限
  • 目录具有 SGID 的特殊权限时,代表用户在这个目录底下新建的文件之群组都会与该目录的组名相同。
  • 目录具有 SBIT 的特殊权限时,代表在该目录下用户建立的文件只有自己与 root 能够删除!
  • 观察文件的类型可以使用 file 指令来观察;
  • 搜寻指令的完整文件名可用 which 或 type ,这两个指令都是透过 PATH 变量来搜寻文件名;
  • 搜寻文件的完整档名可以使用 whereis 找特定目录或 locate 到数据库去搜寻,而不实际搜寻文件系统;
  • 利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的档名。不过由于是基于磁盘查找,相对较慢。

16.2 练习

情境模拟题一:假设系统中有两个账号,分别是 alex 与 arod ,这两个人除了自己群组之外还共同支持一个名为project 的群组。假设这两个用户需要共同拥有 /srv/ahome/ 目录的开发权,且该目录不许其他人进入查阅。 请问该目录的权限设定应为何?请先以传统权限说明,再以 SGID 的功能解析。

  • 目标:了解到为何项目开发时,目录最好需要设定 SGID 的权限!
  • 前提:多个账号支持同一群组,且共同拥有目录的使用权!
  • 需求:需要使用 root 的身份来进行 chmod, chgrp 等帮用户设定好他们的开发环境才行! 这也是管理员的重要任务之一!

首先我们得要先制作出这两个账号的相关数据,账号/群组的管理在后续我们会介绍, 您这里先照着底下的指令来制作即可:

[root@study ~]# groupadd project <==增加新的群组
[root@study ~]# useradd -G project alex <==建立 alex 账号,且支持 project
[root@study ~]# useradd -G project arod <==建立 arod 账号,且支持 project
[root@study ~]# id alex <==查阅 alex 账号的属性
uid=1001(alex) gid=1002(alex) groups=1002(alex),1001(project) <==确实有支持!
[root@study ~]# id arod
uid=1002(arod) gid=1003(arod) groups=1003(arod),1001(project) <==确实有支持!

然后开始来解决我们所需要的环境吧!

  1. 首先建立所需要开发的项目目录:
[root@study ~]# mkdir /srv/ahome
[root@study ~]# ll -d /srv/ahome
drwxr-xr-x. 2 root root 6 Jun 17 00:22 /srv/ahome
  1. 从上面的输出结果可发现 alex 与 arod 都不能在该目录内建立文件,因此需要进行权限与属性的修改。 由于其他人均不可进入此目录,因此该目录的群组应为 project,权限应为 770 才合理。
[root@study ~]# chgrp project /srv/ahome
[root@study ~]# chmod 770 /srv/ahome
[root@study ~]# ll -d /srv/ahome
drwxrwx---. 2 root project 6 Jun 17 00:22 /srv/ahome
# 从上面的权限结果来看,由于 alex/arod 均支持 project,因此似乎没问题了!
  1. 实际分别以两个使用者来测试看看,情况会是如何?先用 alex 建立文件,然后用 arod 去处理看看。
[root@study ~]# su - alex <==先切换身份成为 alex 来处理
[alex@www ~]$ cd /srv/ahome <==切换到群组的工作目录去
[alex@www ahome]$ touch abcd <==建立一个空的文件出来!
[alex@www ahome]$ exit <==离开 alex 的身份
[root@study ~]# su - arod
[arod@www ~]$ cd /srv/ahome
[arod@www ahome]$ ll abcd
-rw-rw-r--. 1 alex alex 0 Jun 17 00:23 abcd
# 仔细看一下上面的文件,由于群组是 alex ,arod 并不支持!
# 因此对于 abcd 这个文件来说, arod 应该只是其他人,只有 r 的权限而已啊!
[arod@www ahome]$ exit

由上面的结果我们可以知道,若单纯使用传统的 rwx 而已,则对刚刚 alex 建立的 abcd 这个文件来说,arod 可以删除他,但是却不能编辑他!这不是我们要的样子啊!赶紧来重新规划一下。

  1. 加入 SGID 的权限在里面,并进行测试看看:
[root@study ~]# chmod 2770 /srv/ahome
[root@study ~]# ll -d /srv/ahome
drwxrws---. 2 root project 17 Jun 17 00:23 /srv/ahome
# 测试:使用 alex 去建立一个文件,并且查阅文件权限看看:
[root@study ~]# su - alex
[alex@www ~]$ cd /srv/ahome
[alex@www ahome]$ touch 1234
[alex@www ahome]$ ll 1234
-rw-rw-r--. 1 alex project 0 Jun 17 00:25 1234
# 没错!这才是我们要的样子!现在 alex, arod 建立的新文件所属群组都是 project,
# 由于两人均属于此群组,加上 umask 都是 002,这样两人才可以互相修改对方的文件!

所以最终的结果显示,此目录的权限最好是『2770』,所属文件拥有者属于 root 即可,至于群组必须要为两人共同支持的 project 这个群组才行!

16.3 简答题

  • 什么是绝对路径与相对路径
    绝对路径的写法为由 / 开始写,至于相对路径则不由 / 开始写!此外,相对路径为相对于目前工作目录的路径!

  • 如何更改一个目录的名称?例如由 /home/test 变为 /home/test2
    mv /home/test /home/test2

  • PATH 这个环境变量的意义?
    这个是用来指定执行文件执行的时候,指令搜寻的目录路径。

  • umask 有什么用处与优点?
    umask 可以拿掉一些权限,因此,适当的定义 umask 有助于系统的安全, 因为他可以用来建立默认的目录或文件的权限。

  • 当一个使用者的 umask 分别为 033 与 044 他所建立的文件与目录的权限为何?
    文件:644,622
    目录:744,733

    在 umask 为 033 时,则预设是拿掉 group 与 other 的 w(2)x(1) 权限,因此权限就成为『文件 -rw-r–r-- , 目录 drwxr–r-- 』
    而当 umask 044 时,则拿掉 r 的属性,因此就成为『文件 -rw–w–w-,目录 drwx-wx-wx』

  • 什么是 SUID ?
    仅对二进制文件有效
    执行者对文件需要拥有执行权限x
    执行过程中,执行者获得拥有者权限

  • 当我要查询 /usr/bin/passwd 这个文件的一些属性时(1)传统权限;(2)文件类型与(3)文件的隐藏属性,可以使用什么指令来查询?
    ll /ls -l
    file
    lsattr

  • 尝试用 find 找出目前 linux 系统中,所有具有 SUID 的文件有哪些?
    find / -perm /4000 -print 2>/dev/null

  • 找出 /etc 底下,文件大小介于 50K 到 60K 之间的文件,并且将权限完整的列出 (ls -l):
    find /etc -size +50k -a -size -60k -exec ls -l {} ;
    注意到 -a ,那个 -a 是 and 的意思,为符合两者才算成功

  • 找出 /etc 底下,文件容量大于 50K 且文件所属人不是 root 的档名,且将权限完整的列出 (ls -l);
    find /etc -size +50k -a ! -user root -exec ls -ld {} ;
    find /etc -size +50k -a ! -user root -type f -exec ls -l {} ;
    上面两式均可!注意到 ! ,那个 ! 代表的是反向选择,亦即『不是后面的项目』之意!

  • 找出 /etc 底下,容量大于 1500K 以及容量等于 0 的文件:
    find /etc -size +1500k -o -size 0

    相对于 -a ,那个 -o 就是或 (or) 的意思啰!

该系列目录 --> 【BASH】回顾与知识点梳理(目录)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/72784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Rust日报】2023-08-11 candle:一个极简的Rust机器学习框架

Bevys Third Birthday Bevy 是一个用 Rust 构建的令人耳目一新的数据驱动的游戏引擎&#xff0c;如果你想学习如何使用 Bevy 制作 2D/3D 游戏、可视化、用户界面或其他图形应用程序&#xff0c;那可以访问Bevy官网去了解更多。 阅读原文&#xff1a;https://bevyengine.org/new…

mysql的相关指令

mysql的相关指令 DML 数据操作语言DQL数据查询 mysql -uroot -p //启动数据库 show databases; //查看有哪些数据库 use 数据库名; //使用某个数据库 show tables; //查看数据库内有哪些表 exit; //退出mysql的命令环境 create database 数据库名称 charset utf8; //创建数据…

【BASH】回顾与知识点梳理(二十三)

【BASH】回顾与知识点梳理 二十三 二十三. Linux 账号管理&#xff08;二&#xff09;23.1 账号管理新增与移除使用者&#xff1a; useradd, 相关配置文件, passwd, usermod, userdelusermoduserdel 23.2 用户功能&#xff08;普通用户可使用&#xff09;idfingerchfnchsh 23.3…

uniapp把城市换成26个字母和城市排序

后端返回的数据 我们要得效果 <template><view><view v-for"(value,key) in cities" :key"key"><view style"color: red;"> {{ key }} </view><view style"border: 1rpx solid black;"><tex…

NLP语言模型概览

语言模型结构分类 Encoder-Decoder&#xff08;Transformer&#xff09;: Encoder 部分是 Masked Multi-Head Self-Attention&#xff0c;Decoder 部分是 Casual Multi-Head Cross-Attention 和 Casual Multi-Head Self-Attention 兼具。比如T5&#xff0c;BART&#xff0c;MA…

【分布式技术专题】RocketMQ延迟消息实现原理和源码分析

痛点背景 业务场景 假设有这么一个需求&#xff0c;用户下单后如果30分钟未支付&#xff0c;则该订单需要被关闭。你会怎么做&#xff1f; 之前方案 最简单的做法&#xff0c;可以服务端启动个定时器&#xff0c;隔个几秒扫描数据库中待支付的订单&#xff0c;如果(当前时间-订…

nginx禁用3DES和DES弱加密算法

nginx禁用3DES和DES弱加密算法 项目背景 最近护网行动&#xff0c;收到漏洞报告&#xff0c;如下&#xff1a; 漏洞名称SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】详细描述TLS是安全传输层协议&#xff0c;用于在两个通信应用程序之间提供保密性和数据完整性。 TLS…

C++类和对象(下)

⭐️ 初始化列表 构造函数体内的赋值不能称为初始化&#xff0c;只能将其称为赋值&#xff0c;因为初始化只能初始化一次&#xff0c;而构造函数体内可以多次赋值。 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个成员…

vscode搭建c语言环境问题

c语言环境搭建参考文章:【C语言初级阶段学习1】使用vscode运行C语言&#xff0c;vscode配置环境超详细过程&#xff08;包括安装vscode和MinGW-W64安装及后续配置使用的详细过程&#xff0c;vscode用户代码片段的使用&#xff09;[考研专用]_QAQshift的博客-CSDN博客 问题如下:…

2023国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

MySQL中用什么数据类型存IP地址

提到IP地址(IPv4)&#xff0c;我们脑子里肯定立马浮现类似于192.168.0.1、127.0.0.1这种常见的IP地址&#xff0c;然后结合这个问题“MySQL中用什么数据类型存IP地址&#xff1f;”&#xff0c;于是乎脱口而出用char字符串类型存储。 然后再仔细想想发现&#xff0c;这个IP地址…

日常工具 之 一些 / 方便好用 / 免费 / 在线 / 工具整理

日常工具 之 一些 / 方便好用 / 免费 / 在线 / 工具整理 目录 日常工具 之 一些 / 方便好用 / 免费 / 在线 / 工具整理 1、在线Json &#xff0c;可以在线进行json 格式验证&#xff0c;解析转义等操作 2、Gif动图分解&#xff0c;在线把 gif 图分解成一张张单图 3、在线P…

Java一般用于postgis空间数据库通用的增删查改sql命令

目录 1 增加 2 删除 3 查询 4 更新 "public"."JGSQGW_Geo"为某模式下得表 一般postgrel有这样的设计模式 1 增加 #前端绘制出的数据插入 INSERT INTO "public"."JGSQGW_Geo" ( "geom","gridone","gridon…

React Native 列表组件基础知识

ScrollView 组件 ScrollView组件是一个容器滚动组件&#xff0c;当容器超出指定宽高时就可以进行滚动交互。 ScrollView组件是一次性渲染所有的 React 子组件&#xff0c;这在性能上是比较差的&#xff0c;所以不建议当列表特别长的时候使用此组件。 接下来列举几个常用的一…

使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行

使用node.jsexpress或者使用node.jspm2搭建服务器&#xff0c;将vue或react打包后生成的dist目录在本地运行 vue项目打包后生成的dist目录如果直接在本地打开index.html,在浏览器中会报错&#xff0c;无法运行起来。 通常我是放到后端搭建的服务上面去运行&#xff0c;当时前端…

Springboot整合RabbitMq,详细使用步骤

Springboot整合RabbitMq&#xff0c;详细使用步骤 1 添加springboot-starter依赖2 添加连接配置3 在启动类上添加开启注解EnableRabbit4 创建RabbitMq的配置类&#xff0c;用于创建交换机&#xff0c;队列&#xff0c;绑定关系等基础信息。5 生产者推送消息6 消费者接收消息7 生…

Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.

第一步&#xff1a;下载Visual Studio 2019 下载地址&#xff1a; https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步&#xff1a;安装组件 选择单个组件&#xff0c;勾选以下两个组件 其他错误&#xff1a; 无法打开文件“python37.li…

网络编程(TFTP协议实验)

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <head.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h>#define PORT 69 //端口号&#xf…

16通道AD采集FMC子卡推荐哪些?

FMC149是一款16通道65MHz采样率14位直流耦合AD采集FMC子卡&#xff0c;符合VITA57.1规范&#xff0c;可以作为一个理想的IO模块耦合至FPGA前端&#xff0c;16通道AD通过FMC连接器&#xff08;HPC&#xff09;连接至FPGA从而大大降低了系统信号延迟。 该板卡支持板上可编程采样…

难解的bug

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord 【Android TimeCat】 解决 context.startforegroundservice() did not then call service.startforeground() | XiChens Blog http://www…
最新文章