【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.mzph.cn/news/34211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

permission denied while trying to connect to the Docker daemon socket 错误

安装 docker 执行错误如下&#xff1a; $ docker pspermission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json”: dial unix /var/run/docker.sock: connect:…

基于亚奈奎斯特采样和SOMP算法的平板脉冲响应空间插值matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...................................................................... %fine regular gr…

本地构建包含java和maven的镜像

目录 1.前提条件 2.下载 2.1.创建Dockerfile 3.构建镜像 参考文章 1.前提条件 本地环境需要的系统和软件 win10 Docker Desktop Powershell 图1 Win10安装Docker后&#xff0c;直接在Powershell使用Docker命令 有些Developer不习惯win10系统&#xff0c;却想要使用Lin…

C++初阶——运算符重载

前言&#xff1a;前面介绍过了函数重载&#xff0c;C为了增强代码的可读性引入了运算符重载的概念&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其返回值类型。 下文博主将通过自定义类型日期类的比较引出运算符重载&#xff0c;以此凸显运算符重载提高代码…

Arraylist集合

保存数据会经常使用到数组&#xff0c;但数组存在以下几个缺陷: 长度固定&#xff1b;保存的必须为同一类型的元素&#xff0c;&#xff08;基本数据类型&#xff0c;或引用数据类型&#xff09;&#xff1b;使用数组进行增加元素的步骤比较麻烦&#xff1b; 这个时候就需要用一…

安卓:网络框架okhttp

目录 一、okhttp介绍 1. OkHttpClient类&#xff1a; 常用方法&#xff1a; 2. Request类&#xff1a; 常用方法&#xff1a; 3. Response类&#xff1a; 常用方法&#xff1a; 4. Call类&#xff1a; 常用方法&#xff1a; 5. Interceptor接口&#xff1a; 常用方法&…

在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

MySQL语句总和之MySQL数据库与表结构操作

目录 1、启动MySQL服务 2、进入MySQL数据库 3、退出数据库 4、查看MySQL数据库所有库 5、创建、删除、使用、查看所处库操作 6、创建表 7、查看表结构 8、表结构操作 1&#xff09;修改表名 2&#xff09;自增长操作 3)添加一个address字段放在Phone字段后面 4)添加…

python爬虫3:requests库-案例1

python爬虫3&#xff1a;requests库-案例1 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网…

SQLAlchemy 入门:Python 中的 SQL 工具包和 ORM

SQLAlchemy 是 Python 中一款非常流行的数据库工具包&#xff0c;它对底层的数据库操作提供了高层次的抽象。在本篇文章中&#xff0c;我们将介绍 SQLAlchemy 的两个主要组成部分&#xff1a;SQL 工具包 (SQL Toolkit) 和对象关系映射器 (Object-Relational Mapper, ORM) 的基本…

linux初学者小命令

linux初学者小命令 一.在正式学习linux命令之前需要先认识一下linux环境中命令是如何被执行的shell是一个属于linux内核的软件&#xff0c;在系统启动后加载进RAM(内存)内&#xff0c;每个用户通过终端登录系统后&#xff0c;就会运行。负责不间断的接收用户的输入&#xff0c…

分布式系统监控zabbix安装部署及使用

目录 一.zabbix监控 1.什么是zabbix 2.zabbix功能 3.zabbix的构成 4.zabbix的3种架构 4.1 C/S架构 4.2 分布式架构&#xff1a;zabbix-proxy-client架构 4.3 master-node-client架构 6.zabbix监控模式 二.zabbix部署及图形化页面显示设置(192.168.158.25) 1.zabbix安装…

uniapp 用 hbuilderx下载 uview

uView2.0重磅发布&#xff0c;利剑出鞘&#xff0c;一统江湖 - DCloud 插件市场 1.uniapp官网下载资源 2按下载 3.官网安装文档 要按 这个红色圈错了 然后看他的配置步骤 第四easycom 就可以 不用配了

第二课-一键安装SD-Stable Diffusion 教程

前言 看完这篇文章并跟着操作,就可以在本地开始 SD 绘图了。 理论上来说,这篇课程结束,想要画什么图都可以画了。 启动器介绍 SD 是开源的,可以在 github 上找到。但直接下载源码安装,非常费劲,而且因为国内外差异,就是我这样的秃头程序员也难以应对。 所以,我们改…

SQL SERVER 异地备份到远程共享文件夹异常处理

SQL SERVER 异地备份到远程共享文件夹异常处理 SQL Server 异地备份到远程共享文件夹异常处理 - 灰信网&#xff08;软件开发博客聚合&#xff09; -- 允许配置高级选项 EXEC sp_configure show advanced options, 1 GO -- 重新配置 RECONFIGURE GO -- 启用xp_cmdshell EXEC sp…

闭环控制方法及其应用:优缺点、场景和未来发展

闭环控制是一种基本的控制方法&#xff0c;它通过对系统输出与期望值之间的误差进行反馈&#xff0c;从而调整系统输入&#xff0c;使系统输出更加接近期望值。闭环控制的主要目标是提高系统的稳定性、精确性和鲁棒性。在实际应用中&#xff0c;闭环控制有多种方法&#xff0c;…

HCIP的BGP基础实验

一、实验需求 除R5的5.5.5.0环回外&#xff0c;其他所有的环回均可互相一访问。 二、实验步骤 1.配置ip 2.建立邻居关系 2.1 R1和R2建立直连的EBGP邻居关系 [r1]bgp 1 [r1-bgp]router-id 1.1.1.1 [r1-bgp]peer 12.1.1.2 as-number 2 要建的话双方都要建下面配置R2 [r2]bgp…

【python】【sql】格式化注意事项

如果需要格式化表名到 sql 语句&#xff0c;sql 引擎是不支持的。 所以表名需要用字符串格式化&#xff0c;但其他参数最好用 sql 自带的格式&#xff0c;这样就不用去调一些细节&#xff0c;比如字符串的值是否要带引号之类的。 比如&#xff1a; cur.execute(SELECT {0} FR…

Token 失效退出至登录页面

目录 前端设置&#xff1a; 1. 在登录页面&#xff0c;调用登录的接口后&#xff0c;直接获取当前时间并保存在本地&#xff0c;类似保存token。 2. 在路由守卫 获取本机存储的时间戳&#xff0c;加15分钟与当前时间进行对比&#xff0c;如果大于当前时间说明token失效&…

系统架构设计专业技能 · 系统安全分析与设计(四)【加解密、数字信封、信息摘要、数字签名、数字书证、网络安全、信息安全】

系列文章目录 系统架构设计专业技能 网络规划与设计&#xff08;三&#xff09;【系统架构设计师】 系统架构设计专业技能 系统安全分析与设计&#xff08;四&#xff09;【系统架构设计师】 系统架构设计高级技能 软件架构设计&#xff08;一&#xff09;【系统架构设计师…