Linux 权限 和 文本编辑工具

145 阅读9分钟

Linux 权限 和 文本编辑工具

Linux权限模型
认证:用户身份认证
授权:不同账户授权不同权限
审计:审计
复制代码

Linux中用户是通过 uid 来确定唯一用户的,一个用户只有一个唯一的uid ,也只有一个所属组(gid),但是可以属于多个所属附加组(groups)

####配置文件所在位置

/etc/passwd 用户信息配置

(用户名:密码:用户id(Uid):所属组(GID):附加组(groups):备注:家目录: 默认shell)

/etc/shadow 密码配置信息

(用户名:加密的密码:最近一次修改密码的时间:密码最短有效期:密码最长有效期:提前多少天提醒:密码过期到失效的时间:密码失效时间(过了这时间就失效了就不能登陆):其他)

/etc/group 组配置信息 (组名称:组密码:组ID:属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组)

用户和组的管理命令

useradd 新增用户

usermod 修改用户

userdel 删除用户

groupadd 新增组

gourpmod 修改组

groupdel 删除组

查看当前用户的信息 id user

###文件权限管理

文件权限 Linux 文件权限分为 属主 所属组 其他用户来定义 每部分权限分为 读"r" 写"w" 执行 "x" 用户的权限是从左往右开始匹配,即 所有者,所属组,其他

r = 4 w = 2 x = 1

常见文件权限

文件权限文件夹权限
"---" 无权限 数字表示0"---" 无权限 数字表示0 不能访问目录
"r--" 只读权限 数字表示4/
"r-x" 读取和执行权限 数字表示5"r-x" 读取和执行权限 数字表示5 只读目录
"rw-" 读写权限 数字表示6/
"rwx" 读写执行数字表示7"rwx" 读写执行数字表示7 可读可写目录

Linux 中对目录和文件权限的区别 想要读取目录中的文件必须得有目录的执行权限

修改文件和目录权限的设置

每个文件有三组固定的权限,分别对应拥有者属主(u user),所属用户组(g group),其他用户(o other) ,并且该顺序是固定的

chmod

1、字符表示法

chmod 属主 所属组 其他用户所有(ugoa) +/- /= 权限(rwx)文件

2、数字表示法

chmod 权限数字 文件

Linux中特殊权限

SUID 作用于二进制可执行文件上用户可继承文件所有者的权限用s表达

即chmod u+s FILE… chmod u-s FILE…即当前用户拥有此文件所有者属主者权限例如etc/shadow文件

SGID 作用于二进制可执行文件上用户 可继承文件所属组的权限,作用于目录上,此目录以下创建的文件所属组继承此目录所属组 即当前用户创建的文件权限并不跟随当前用户的权限,而是继承目录的权限(举例目录的所属组为group01,当前用户所属组为group02,再次目录下创建的文件group仍为group01)

Sticky作用于目录上表示此目录下的文件只有所有者才能删除权限用t表达

chmod 属主 所属组 其他用户所有(ugoa)+/- t

chattr命令 – 更改文件隐藏属性

chattr 参数 常用权限 文件

chattr +i 文件 锁定文件

chattr -R +i /目录 锁定目录以及子目录

ACL 特殊权限

实现灵活的权限管理 setfacl -m -u:(用户名):(赋予的权限) 目录

在普通权限中,用户对文件只有三种身份,就是属主、属组和其他人;每种用户身份拥有读(read)、写(write)和执行(execute)三种权限。但是在实际工作中,这三种身份实在是不够用,我们举个例子来看看。

WeChat 截圖_20230509155240.png

图 1 ACL权限简介

图 1 的根目录中有一个 /project 目录,这是班级的项目目录。班级中的每个学员都可以访问和修改这个目录,老师也需要对这个目录拥有访问和修改权限,其他班级的学员当然不能访问这个目录。需要怎么规划这个目录的权限呢?应该这样:老师使用 root 用户,作为这个目录的属主,权限为 rwx;班级所有的学员都加入 tgroup 组,使 tgroup 组作为 /project 目录的属组,权限是 rwx;其他人的权限设定为 0。这样这个目录的权限就可以符合我们的项目开发要求了。

有一天,班里来了一位试听的学员 st,她必须能够访问 /project 目录,所以必须对这个目录拥有 r 和 x 权限;但是她又没有学习过以前的课程,所以不能赋予她 w 权限,怕她改错了目录中的内容,所以学员 st 的权限就是 r-x。可是如何分配她的身份呢?变为属主?当然不行,要不 root 该放哪里?加入 tgroup 组?也不行,因为 tgroup 组的权限是 rwx,而我们要求学员 st 的权限是 r-x。如果把其他人的权限改为 r-x 呢?这样一来,其他班级的所有学员都可以访问 /project 目录了。

当出现这种情况时,普通权限中的三种身份就不够用了。ACL 权限就是为了解决这个问题的。在使用 ACL 权限给用户 st 陚予权限时,st 既不是 /project 目录的属主,也不是属组,仅仅赋予用户 st 针对此目录的 r-x 权限。这有些类似于 Windows 系统中分配权限的方式,单独指定用户并单独分配权限,这样就解决了用户身份不足的问题。

getfacl 文件名 #查看ACL权限 setfacl 选项 文件名 #设定ACL权限

VIM编辑器

vim编辑器三种模式 命令模式 插入模式 扩展命令模式

进入vim编辑器默认就是命令模式 进入插入模式需要按I ,从插入模式进入命令模式按esc , 从命令模式进入扩展命令模式按 ":"

打开文件 vim 文件

退出vim :q

打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。

vim /home/fanfan/first.txt 进入之后按I进入插入模式然后在里边输入“马哥出品,必属精品”然后按esc退出插入模式进入命令模式再按:wq进行保存退出

命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。

常用vim快捷键

移动 H 左J下 K右 L上

e : 跳跃到单词末尾 b :跳跃到单词首字母 w : 跳跃到下一个单词的首字母 shift + 6 : 跳跃到本行的开头 shift + $ : 跳跃到本行的末尾

Ctrl + F :向下一页 Ctrl + B :向上一页 Ctrl + E :向下(符合视觉) Ctrl + Y: 向上 shift + g : 翻到文件末尾 gg : 翻到文件开头

删除光标所在字符 dd : 删除光标所在行 u : 撤销 dw : 移除光标往后的单词

y : 复制某一块 yy : 复制整行 y^ : 复制从光标到行头的内容 y$ : 复制光标到行尾的内容 yw : 复制一个word

文本处理工具

cat 查看文件 用法: cat [参数] 文件

tac 倒序显示 逆向显示

rev 逆向显示一行

hexdump 以ascii 十进制 十六进制 显示文件内容

head 显示文件的前面行数 用法head -n #

tail 显示文件的 倒数行数用法 tail -n #

cut 按列抽取文档中的指定的字段 用法 cut [参数] 文件

paste 合并文件 用法paste [参数] 文件1文件2

分析文本工具

wc统计文本数量

-w 单词总数

-l 行数

-m字符数

sort 文本排序用法 sort [参数] 文件

uniq 文本去重 用法uniq [参数]文件 通常和sort搭配使用

grep [参数] 文件名

总结变量命名规则:字母数字下划线,不能以数字开头不支持横短线-

命名规则大驼峰即变量名称所有单词首字母大写,小驼峰开头一个小写,其他单词首字母大写

通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?

#!/bin/bash   #开头的语句表示注释信息脚本申明:第一行开头表示此行以下的代码是通过/bin/bash程序来解释执行。
head=30
foot=80
rabbit=$(((foot-head-head)/2))
chicken=$[head-rabbit]
echo rabbit=$rabbit
echo chicken=$chicken

保存为.sh的脚本文件,然后给脚本执行权限 即可算出各类数量

#!/bin/bash
frog=$1mouth=$frog
eye=$[2*mouth]
leg=$[2*eye]
echo mouth=$mouth
echo eye=$eye
echo leg=$leg 
​
青蛙几张嘴的问题

结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,

#!/bin/bash   #开头的语句表示注释信息脚本申明:第一行开头表示此行以下的代码是通过/bin/bash程序来解释执行。

磁盘存储

磁盘存储术语总结 : head 磁头 track 磁道柱面数目 sector 扇区 sylinder 柱面

两种分区方式

MBR 适合硬盘小于2T分区 最多4个主分区或者三个主分区一个扩展分区(N个逻辑分区)

GTP

支持最大128个主分区 支持8Z、64Z

常用分区命令

lsblk 列出所有块设备

fdisk 管理mbr分区

gdisk管理gtp分区

parted 交互式分区(输入命令之后立刻执行)

不重启更新内存中的内核分区表 partprobe (centos6为:partx -a 硬盘分区路径

更新删除分区:partx -d 硬盘分区路径)

mkfs 创建分区用法 mkfs[.分区格式 ] [块设备名称]

blkid 查看块设备属性用法 blkid[参数] [块设备名称]

fsck修复文件系统用法fsck [参数] 设备名 修复的时候必须提前卸载当前分区

mount 挂载文件系统 用法mount [参数] [设备名] [目录名]

挂载的时候目录名必须存在 默认不写任何参数即可查看当前挂载情况

umount 卸载 用法umount [设备名] [目录名]

将挂载写入/etc/fstab文件可以实现永久挂载

swap 分区

关闭swap分区 swapoff -a (K8S时候会用到)

磁盘常见工具

du 查看文件的大小 只有数据部分

df 查看的文件系统的大小 包含文件系统的元数据

raid 磁盘阵列

分为raid 0 1 5 10 01

规格磁盘数量磁盘利用率容错率特点
raid 01+n无容错写入速度最快但是没有容错
raid 12,+50%N-1读取速度提升明显写入速度下降
raid53,3+(N-1)/N一块读写性能提升
raid104,4+(N-1)/N每组镜像最多一块读写性能提升
raid014,4+(N-1)/N每组镜像最多一块读写性能提升