文件系统组成和基本操作:

文章详细介绍了Linux系统中文件的权限管理,包括用户身份(user,group,other)、权限查看(ls-l,ls-ld)以及权限的rwx表示法。此外,还讨论了如何通过chmod、chown和chgrp命令修改权限和所有权。同时,提到了命令执行的本质是执行文件,以及标准输入输出(stdin,stdout,stderr)和重定向的概念。最后,文章提到了管道和tr命令在处理命令输出中的作用。
摘要由CSDN通过智能技术生成

权限管理:

匹配访问的身份:

访问文件有三种访问身份:user,group,other

实际上访问文件是通过进程来访问文件,通过进程来辨别文件的权限是属于拥有人还是用有组还是其他人

如何查看文件的权限

ls -l 查看文件的权限

ls -ld 查看目录的权限

  -rw-------. 1 root  root 1794 Dec 13 2020 anaconda-ks.cfg  

第一个字符串:

-表示普通文件

d:目录

c:字符设备 鼠标键盘等设备

l:链接文件

b:块设备 block 存数据的设备成为块设备

第二个字符串

rw-------. 权限

  • 例:rwxrw-rw- 第一个rwx为拥有人的权限,第二个rw-为拥有组的权限,第三个rw-为其他人的权限

第三个字符串

1:链接数 :

针对文件而言指的是文件最多可以被删几次

目录而言目录里面有多少子目录

第四个字符串

root:拥有人

第五个字符串

root:拥有组

第六个字符串

1794:文件大小单位默认字节

第七个字符串

Dec 13 2020 文件最后一次修改的时间 M time

第八个字符串

anaconda-ks.cfg文件名

文件的权限:

权限分配拥有人拥有组其他人
字符表示rwxrwxrwx
权限项执行执行执行
数字表示421421421

文件匹配优先级:

一个用户访问文件的时候,匹配哪个权限:

  1. 当前用户为文件的拥有人,则匹配拥有人的权限

  2. 当前用户不是文件的拥有人,则查看该用户所在的组是否匹配文件的拥有组,如果是,则匹配拥有组的权限

  3. 当前用户既不是文件的拥有人,也不是文件的拥有组,则匹配文件的其他人权限

文件权限和目录权限的影响:

权限对文件的影响对目录的影响
r(读)可以读取文件的内容可以列出目录的内容
w(写)可以更改文件的内容可以创建或删除目录中的任意文件
x(执行)可以作为命令执行文件可以进入目录(还需要r权限才可以读目录内容)

命令的本质:

能够执行命令的本质其实是执行一个文件,每个命令都是以一个文件的形式去存放在目录中

which 查看命令所在的文件

查看文件状态的两个命令: ls -l 、stat

执行文件的脚本时要使用绝对路径,不能使用相对路径,或者使用./来指定脚本路径

CP是否能够复制一个文件,需要什么样的权限(最小权限)

cp 源文件 目标文件

对源文件本身的权限 需要r权限

对源文件所在目录所在的权限 需要x权限

删除文件跟文件本身没有关系,跟所在的目录的权限有关

修改文件拥有人和拥有组基础命令:

 chmod -R o+rw               /data/ 修改目录及其目录下所有文件的权限
 ​
 chown user1                 /data 把/data的拥有人修改为user1 
 ​
 chown -R user1 /data        把/data以及/data下的所有文件的拥有人修改为user1 
 ​
 chown user1:user1 /data    把/data 下的拥有人以及拥有组修改为user1 
 ​
 chgrp admin /data           只把/data 的拥有组修改为admin

修改文件的权限:

权限类型:

权限分配拥有人拥有组其他人
字符表示rwxrwxrwx
权限项执行执行执行
数字表示421421421

权限身份:

  • u:拥有人

  • g:拥有组

  • o:其他人

  • a:代表全部

权限执行动作:

  • +:增加权限

  • -:减少权限

  • =:重新赋予权限

打开的文件权限匹配的本质

用户在打开文件的时候 会开启一个进程,用户的UID会匹配进程的UID 用户的GID匹配进程的GID,文件的权限匹配的UID不是来自用户的UID,而是匹配进程的UID

当自己手动创建一个组时在删除用户的时候该组不会被自动删除,但是如果时创建用户的时候自动创建出来的,在删除用户的时候会自动把组删除

标准IO和管道:

IO:input and output

输入和输出

stdout:标准输出:默认输出,就是输出到屏幕上的内容

stdin:标准输入:输入设备:默认一般就是键盘和鼠标

stderr:错误输出

0代表输入

1代表正确的输出

2代表错误的输出

重定向:

输出重定向:

>正确输出重定向,如果文件不存在,则会自动创建,如果文件存在,则会覆盖文件之前的内容

>> 追加输出重定向,如果文件不存在,则会自动创建,如果文件存在,则会在文件末尾追加

2>错误输出重定向

&>全部输出重定向

2>&1 把错误的输出作为正确的输出

例:

 find /etc -name passwd 查找/etc 下名字叫passwd的文件
 ​
 find /etc/ -name passwd > find.out 2> find.err 正确的输出到find.out,错误的输出到find.err 可以连用
 例:find /etc/ -name passwd > find.out 2>&1 把正确的输出到find.out并且把错误的的当作正确的输出到find.out
 一般用root用户和普通用户进行测试 

输入重定向:

< 输入重定向

<<多行输入

cat 多行重定向输入

 [root@dcncloud yum.repos.d]# cat > /etc/yum.repos.d/local.repo << EOF  
 > [local]
 > name=local
 > enabled=1 
 > baseurl=file:///CentOS
 > gpgcheck=0 
 > EOF
 把cat输入的内容重定向到1.txt里面 EOF是结束位 
 << EOF指定结束的位置
 >> 输出
 将输入内容打印出来并重定向到1.txt中 然后用<<EOF输入

标准输入的三种方法:

  1. 来自键盘

  2. 来自文件

  3. 来自管道

扩充

完全清空历史记录有两步:

1. history -c

2. echo > .bash_history

/dev/null 特殊的文件 可以作为接收任何输出的设备,并且不会保存,可以作为垃圾回收站使用

echo $? 用来查看上一条命令是不是执行成功 如果为0 则成功

tee 用来将标准输入的内容输出到标准输出并可以保存为文件

管道

  • ”|“ 管道符

  • 通过管道的都是正确的结果

  • 重定向后的内容 不会经过管道

  • 命令1 | 命令2 | 命令3 把命令1 处理的结果交给命令2 作为命令2的输入信息 然后以此传递

tr 转换

从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出

tr 'a-z' 'A-Z'

cat aaa.txt|tr 'a' 'c' 字母c替换字母a

tr a c < test 将test文件中的a变成c

默认输入是键盘,<文件名 可以默认输入改为文件内容,输入可以来自文件, 也可以来自管道

例:

 echo y | rm -i 1.txt 
 #把y这个结果写进rm -i里面
 ​
 echo 111 |passwd --stdin user1 
 #设置密码
 ​
 df -h |tee df.out| grep /dev/mapper/rhel-root|tee df.err| awk '{print $5}' 
 #将命令1的结果保存到df.out里面 并且当作命令2的输入 以此类推  三通管道 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值