Linux文件管理

Linux系统中,文件以树状图形式存储,即单根文件系统,以用户为分支分别存储文件。

文件操作

相对路径表示方法,.当前目录,..上层目录,~家目录,也可以使用绝对路径/的表示方法,其他常用命令汇总如下

ls 列出目录及文件名
cd 切换目录
pwd 显示当前目录
mkdir 创建新目录  -p可递归创建多级目录
redir 删除空目录
cd 切换目录
touch 创建新文件或修改时间属性rm 删除-f 忽略不存在的文件-i 互动模式,删除前询问使用者-r 递归删除,危险 可以使用通配字符*匹配所有,如rm f* 删除所有f开头的文件
mv 移动格式为 源文件 目录-f 强制,已经存在源文件直接覆盖-i 已经存在文件,覆盖前先询问  mv就是mv -i 的别名-u 若目标已存在,有新的源再升级-v 显示复制的详细过程cp 复制文件或目录 格式为cp 源文件 目的 -d 只复制结构属性而非文件本身,即快捷方式-p 连同属性一同复制-r 递归复制整个目录     通常形式为 -pdr

查看文件

linux中一切皆文件,通常使用cat命令打开文本文件并显示,-n表示从1开始输出行数的编号,-b遇到空白行不输出编号,-s两行以上的空白行当作一行输出,-A显示控制字符。

浏览文件使用less命令,支持翻页和搜索,类似于man手册,还可以使用head查看文件开头部分内容,-n显示行数,-c显示字节数,也可以使用tail从行尾读文件,选项相同,另加了-f循环读取,一般用于看日志信息。

vim编辑器

Linux所有系统都内置vi工具,用于查看编辑文本文件,但使用vi打开文件没有颜色标识,也没有程序编辑能力,所以在此基础上开发了vim编辑器用于解决上述问题,但该工具不内置,需要手动执行yum -y install vim进行安装。

该工具有三种模式,命令模式,输入模式和末行模式,具体区分及使用方法如下:
命令模式:启动时默认模式,输入的是命令,在该模式下:w保存,:q退出,:wq保存并退出
输入模式:命令模式下按i进入输入模式,esc进入命令模式
末行模式:命令模式下输入:进入,通过wq按键进行保存退出等操作,命令模式下保存退出实质是通过末行模式实现。

文件属性及查找

属性查看

Windows通过文件后缀来判断文件类型,Linux不同,文件打开方式不对时会直接出错,类型查看方法有三种,首先是ls -l,通过输出的第一位判断文件类型,具体对应为:

- 文档
d 目录文件
b 块设备文件,如硬盘、u盘等
c字符设备文件
s套接字文件
p管道文件
/ 链接文件,快捷文件

第二种是通过stat 文件查看文件属性,示例新建名为file01的文件信息展示如下图;
查看文件信息
其中要注意的是三个时间,最近访问atime、最近修改mtime和最近改变ctime,最近改变指文件状态发生改变,比如权限,所有者或所属组等信息变化时的时间。
第三种是使用file 文件名方式查看,输出如下图:
file方法查看文件类型

位置查找

文件查找可以使用which 文件名的方法,但该方法只会在其环境变量路径$PATH下查找,相当于只能查找提前设置好了的文件位置,环境变量实质是告诉操作系统程序在运行时的默认配置,目前已有的环境变量可以使用echo $PATH查看。

也可以使用locate范本查找,该程序系统不内置,需首先使用yum -y install mlocate安装下载,该程序是将所有文件位置都存到数据库中,然后根据查找内容在数据库中检索,所以其查找依赖于数据库的建立和更新,一般一天更新一次,也可以使用updatedb手动更新,-c可以设定查找数量,-n设定显示n个,-r根据正则表达式检索。

最常用的还是find实时查找工具,该工具的特征就是速度慢,可以根据多种条件匹配,语句结构为find 选项 路径 查找条件 处理动作,首先介绍查找条件如下:

-name		根据名称查找
-size		根据大小查找 +5M大于5M
-maxdepth	最大深度
-mtime		按时间查找,+5为超过5天 =可省略
-user		按属主查找,nouser为无属主
-group		按属组查找,nogroup无属组
-type		按文件类型查找
-perm		按文件权限
-regex		按正则表达式
-a			多个条件and并列
-o			or并列
-not		取反

处理动作如下:

‐print		默认的处理动作,显示至屏幕
‐ls			类型于对查找到的文件执行ls ‐l命令
‐delete		删除查找到的文件

用户管理

Linux是多用户,多任务的分时操作系统,为了方便管理多个用户,又产生了用户组的概念,输入id命令可查看当前用户的信息,其中uid为用户名,gid为用户组id,groups为附加组id,该过程可加选项输出特定的id,uid的分配规则为,0是超级管理员root,999以下为系统用户,1000以上是普通用户。下面通过ll命令示例查看文件信息:
文件信息

相关文件

之前说过Linux中一切皆文件,用户及相关信息都是以文件形式保存的,首先看passwd文件,
在这里插入图片描述
该格式分别为用户名:密码:uid:gid:描述:家目录:登陆后执行的命令,第一行为root用户,下面的都是其他用户,这里我还没新建其他用户,所以下面的可能是一些默认指令。

上面的密码使用x占位,具体真实的密码存放在shadow文件中,只输出第一行即可head -n 1 /etc/shadow,输出为root:$6$6PX6oUZ8qOx72WpA$RGimaIGG.PNWuQLOjI6bmbUD.E3AvjBbnm5rtzVhBCfdAtEFJGNt3mDdqPajfdoSZ3GsMzttAE3wvMD33KNbK1::0:99999:7:::
具体格式为用户名:加密算法,加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段该字段中加密算法为$6$SHA-512算法加密。

还有group文件存储用户和用户组的关系。

login.defs文件,实现对登录的限制,设置和id规则等,优先级低于passwdshadow,可以用change 选项 用户名命令修改,选项如下:

-d		将最近一次密码设置时间设置为最近日期 用change -d o 用户名 设置下次登陆时更改密码 
-m		设置两次改变密码之间相距的最小天数
-M		设置将两次改变密码之间相距的最大天数
-w		设置密码过期前的警告天数

用户组管理

添加用户组,groupadd 选项 组名,详细参数如下:

-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 500;
-K:覆盖配置文件/etc/login.defs
-o:允许添加组 ID 号不唯一的工作组。
-f:如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。

修改用户组,groupmod 选项 组名,选项
-g:将组 ID 改为 GID
-n:改名为 NEW_GROUP

删除用户组,groupdel 组名

组成员管理,gpasswd 选项 组名,具体选项如下:

-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:替换组中的全部用户列表,不包含在内的用户将会从组中删除;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

用户管理

useradd 选项 用户名添加用户,选项如下:

-c comment:指定一段注释性描述。
-d 目录:指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-m:创建用户的主目录
-g 用户组:指定用户所属的用户组,默认会创建一个和用户名同名的用户组。
-G 用户组:用户组 指定用户所属的附加组,一个用户可以属于多个附加组。
-s Shell文件:指定用户的登录Shell。
-u 用户号:指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

su命令切换用户,默认在当前目录切换,加-用户名为切换到用户目录,-c 命令执行命令后切换回原用户,-s shell使用指定的 shell 替代目标用户的默认 shell。

usermod 选项 用户修改用户,选项如下:

-c<备注>:修改用户帐号的备注文字。
-a:追加,默认的修改是覆盖
-d登入目录>:修改用户登入时的目录。
-e<有效期限>:修改帐号的有效期限。
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号。
-g<群组>:修改用户所属的群组。
-G<群组>:修改用户所属的附加群组。
-l<帐号名称>:修改用户帐号名称。
-L:锁定用户密码,使密码无效。
-s:修改用户登入后所使用的shell。
-u:修改用户ID。
-U:解除密码锁定。

userdel -r 用户名删除用户,-r表示删除目录下所有文件。

shell命令

用户登录后默认执行的指令存放在/etc/passwd文件中,最后的字段是登录成功后的命令,如图所示:
shell命令
/bin/bash是Linux的命令行工具,我们正常登陆之后默认就是进入命令行
/sbin/nologin如果写成nologin,那么用户将无法登录,有些只作为进程存在而无需切换登录状态的用户适用于该状态。

可在该文件中手动修改指令,实现用户登录自启动项。

用户密码管理

root用户可直接修改普通用户密码,普通用户需要提供原密码才能修改,指令为passwd 选项 用户名,选项如下:

-k:保持身份验证令牌不过期
-d:删除已命名帐号的密码(只有根用户才能进行此操作)
-l:锁定指名帐户的密码(仅限 root 用户)
-u:解锁指名账户的密码(仅限 root 用户)
-x:密码的最长有效时限(只有根用户才能进行此操作)
-n:密码的最短有效时限(只有根用户才能进行此操作)
-w:在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i:当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S:报告已命名帐号的密码状态(只有根用户才能进行此操作)
--stdin:从标准输入读取令牌(只有根用户才能进行此操作)

也可以使用管道符从标准输入中读入口令,指令为echo 密码|passwd -stdin 用户修改密码。

有关路径

我们在找etcpasswd的文件时使用的是cd \etc,而在我们执行目录时只需cd 目录即可,为什么这里要加斜杠呢?而且我在目录下执行ls时也发现,工作目录下并没有etc这个文件夹,到底什么时候加斜杠,什么时候直接cd,Linux系统中的目录到底是怎么个结构呢?必须得研究研究,通过如下几条命令应该就看的很清除了:
路径

可以看到进入用户的默认工作目录为root,上层就是最根的目录/,etc和其他配置文件是和root目录并列的结构,具体配置文件内容可以看,普通用户是在home文件中。

权限管理

用户权限管理

sudo 选项 用户 命令实现暂时给用户执行命令的权限,执行时系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限,普通用户默认不具有sudo权限,需要将其添加到admin组或者wheel组或者sudo组中,执行选项如下:

-u:以指定用户或 ID 运行命令(或编辑文件)
-l:显示出自己(执行 sudo 的使用者)的权限
-b:将要执行的指令放在后台执行
-i: 以目标用户身份运行一个登录 shell;可同时指定一条命令。相当于切换到root,不过只需要用户自己的密码即可。`

sudoers文件十分敏感,写入时三思而行。

文件权限管理

属主属组其他UGO管理

该管理决定赋予用户或用户组以何种方式访问文件,文件权限可以通过ls -l查看,标识三位一组,分别对应属主,属组和其他,rwx分别表示读、写、执行权限,对于目录的权限分别为:可用ls,可创建删除目录,和可用cd访问。

修改文件属主chown 选项 属主:属组 文件名,选项为-R处理目录及其下子目录,-V显示详细的处理信息。

修改文件权限chmod 选项 对象+权限 文件名,同样可用-R递归处理子文件及目录,具体解释为:

u表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是。
+表示增加权限、-表示取消权限、=表示唯一设定权限。
r表示可读取,w表示可写入,x表示可执行

权限也可使用八进制数来标识,即1为可执行,2为只写,4为只读,0-7八位数字即可标识权限。

文件访问控制列表ACL管理

上面的方法只能针对三种关系管理,为了实现对具体用户实现更精准的管理,需要使用ACL方法实现。

获取文件权限信息getfacl 文件名

给予用户权限setfacl -m u:用户名:权限 文件或目录名

移除用户权限setfacl -x u:用户名:权限 文件或目录名
移除用户组权限setfacl -x g:用户组名:权限 文件或目录名

上述权限管理方法都不会被子目录或文件继承,可以修改默认设置实现,setfacl -x d:g:用户组名:权限 文件或目录名,前面加了d接口设置默认权限。

可用选项如下:

-m:更改文件的访问控制列表
-M:从文件读取访问控制列表条目更改
-x:根据文件中访问控制列表移除条目
-X:从文件读取访问控制列表条目并删除
-b:删除所有扩展访问控制列表条目
-k:移除默认访问控制列表
-d:应用到默认访问控制列表的操作
-R:递归操作子目录

mask有效权限,用户管理用户或用户组能够拥有的最大ACL权限,设置其最大不能超过mask的规定,设置方法为setfacl -m m::权限 目录,因为没有明确用户,缺省即可。

特殊权限

suid只用在文件上,开放属主权限给其他用户,如passwd的权限为rws,只有root有写权限,但普通用户也可用修改文件,就是赋予了普通用户属主权限,添加方法为chmod u+s 文件名chmod 4765 文件名,八进制标识权限中,4表示uid,2表示gid,1表示sticky

sgid用于文件或目录上,文件是对其他用户开放属组的权限,目录是规定其下创建所有子目录或文件的属组都相同,设置方法为chomd g+s 目录或文件

sticky只用于目录,表示目录下的所有文件和子目录只能由属主删除,设置方法为chmod o+t 目录

总结

本章学习了Linux中管理文件的方法,包括文件查看,编辑,和权限管理方法,而由于Linux中一切皆文件,所以连带着用户的管理方法也一起在本章学习,命令都比较简单,但很杂需要实际联系才能熟练,还有选项和不同命令的融合,难度会随着学习的指令变多急速上升。

此外在实践中对路径产生的疑惑也得以解决,Linux中根目录下存放系统的配置文件和用户目录,其中root用户单独存放,普通用户则统一存放在home文件夹中。

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

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

相关文章

面试问到Spring中的@Autowired注解,可以这样答

前言 在Spring框架中&#xff0c;依赖注入是一个核心概念&#xff0c;它允许将一个对象的依赖关系外部化并由Spring容器来管理。Autowired注解是实现这一点的关键工具之一。当然&#xff0c;这块知识也是面试官们老生常谈的问题。 下面就跟着博主的步伐&#xff0c;一起来探讨…

动手学深度学习24 AlexNet

动手学深度学习24 AlexNet 1. AlexNet传统机器学习AlexNet 2. 代码3. QA 1. AlexNet 传统机器学习 AlexNet AlexNet & LeNet对比 加了三层隐藏层&#xff0c;通道数和全连接层单元数更多 计算需要的浮点数&#xff0c;10亿次浮点数计算。 2. 代码 import torch fro…

【信息学奥赛】两个整型变量的值交换

【信息学奥赛】两个整型变量的值交换 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 编写如下一个函数&#xff0c;用于将两个整型变量的值交换 输入&#xff1a; 两个数 输出&#xff1a; 交换后的两个数 样例输入&#xff1a; 3 2样…

HTTPS单双向认证流程详解与联想

HTTPS单向认证 HTTPS在单向认证传输的过程中会涉及到三个密钥&#xff1a; 服务端的公钥和私钥&#xff0c;用来进行非对称加密交换密钥 客户端生成的随机密钥&#xff0c;用来进行对称加密传输数据 认证过程 1.客户端向服务器发起HTTPS请求&#xff0c;连接到服务器的443端…

【算法】位运算算法——两整数之和

题解&#xff1a;两整数之和(位运算算法) 目录 1.题目2.位运算算法3.参考代码4.总结 1.题目 题目链接&#xff1a;LINK 2.位运算算法 这个题目难点就在于不能用、- 那什么能够代替加号呢&#xff1f; 既然数的层面不能用号&#xff0c;那二进制的角度去用号即可。 恰好&a…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏&#xff0c;而且录屏效率太慢&#xff0c;本文将介绍你一种高效率的工具&#xff0c;小浪助手.exe&#xff0c;它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了&#xff0c;有需要的自己下载一下 注意&#xf…

福建聚鼎科技:装饰画生意到底有没有前景

在当今社会&#xff0c;随着人们生活水平的提高和审美需求的多样化&#xff0c;家居装饰行业迎来了新的发展机遇。装饰画作为家居装饰的重要组成部分&#xff0c;其市场前景备受关注。那么&#xff0c;装饰画生意到底有没有前景呢? 从市场需求的角度来看&#xff0c;装饰画市场…

服务器数据恢复—异常断电导致ESXi虚拟机无法启动的数据恢复案例

服务器数据恢复环境&#xff1a; 某大厂PS4000服务器&#xff0c;服务器上部署VMware ESXi虚拟化平台。 服务器故障&#xff1a; 机房断电&#xff0c;重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件&#xff0c;发现无法启动的虚拟机的配置文件除了磁盘文…

Django序列化器中validate没起作用?validate的触发时机

今天上班的时候分配了一个任务&#xff0c;是修复前端的一个提示优化&#xff0c;如下图所示&#xff1a; 按照以往的经验我以为可以直接在validate上进行校验&#xff0c;如何抛出一个异常即可 &#xff0c;例如&#xff1a; class CcmSerializer(serializers.ModelSerialize…

第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展&#xff1a;求二进制的每位数字 &#xff08;注意&#xff1a;进制转换、1的个数、位运算&#xff09; x…

【源码】2024完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城

后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 前端UNIAPP 后端PHP 一键部署版本 获取方式&#xff1a; 微&#xff1a;uucodes

Vue2+Element 封装评论+表情功能

有需要的小伙伴直接拿代码即可&#xff0c;不需要下载依赖。 评论组件如下&#xff1a; 创建 comment.vue 文件。 表情组件 VueEmoji.vue 在评论组件中使用。 <template><div class"comment"><div class"flex_box"><h2>评论 {…

香橙派AIpro开发板初体验

香橙派AIpro开发板初体验 一、引言 在当前的AI发展浪潮中&#xff0c;边缘计算逐渐成为了研究的热点。香橙派AIpro开发板作为一款基于昇腾AI技术的开发板&#xff0c;凭借其强大的算力和丰富的接口&#xff0c;为AI边缘计算提供了强大的支持。最近&#xff0c;我也是拿到了官…

男士内裤哪种款式舒服?五条实用技巧让你轻松挑选

对于很多男生来说&#xff0c;依然很难挑到真正舒适的内裤。比如卡臀卡裆&#xff0c;走路时不时还得提拉一下&#xff0c;真的很尴尬。又紧又闷的内裤&#xff01;尤其是炎热的夏天&#xff0c;黏糊糊的贼难受&#xff01;到底有没有一款舒适透气男士内裤呢&#xff1f;那今天…

Kafka之【生产消息】

消息&#xff08;Record&#xff09; 在kafka中传递的数据我们称之为消息&#xff08;message&#xff09;或记录(record)&#xff0c;所以Kafka发送数据前&#xff0c;需要将待发送的数据封装为指定的数据模型&#xff1a; 相关属性必须在构建数据模型时指定&#xff0c;其中…

【YOLOv10】使用yolov10训练自己的数据集/验证 /推理 /导出模型/ONNX模型的使用

YOLOv10: 实时端到端的目标检测。 性能 YOLOv10比最先进的YOLOv9延迟时间更低&#xff0c;测试结果可以与YOLOv9媲美&#xff0c;可能会成为YOLO系列模型部署的“新选择”。 目录 1 数据准备 2 配置文件 3 训练 4 验证 5 预测 6 导出模型 7 ONNX模型的使用 官方论文地址…

ubuntu下载离线软件包及依赖

目录 一、前言 二、正文 1.准备环境 2.开始下载 3.后续工作 三、总结 一、前言 由于给客户提供的设备机不允许上网&#xff0c;那么所有待安装的软件包及依赖库都需要提前下载好&#xff0c;然后通过局域网传过去再安装。 另外&#xff0c;软件包可能还依赖其他的库&…

如何利用Firebase Hosting来托管网站

文章目录 如何利用Firebase Hosting来托管网站前提条件详细步骤1. 安装 Firebase CLI2. 登录 Firebase3. 初始化 Firebase 项目4. 准备网站文件5. 部署到 Firebase6. 配置自定义域名&#xff08;可选&#xff09; 常见问题 如何利用Firebase Hosting来托管网站 以下是更详细的…

解决git status提示error bad signature 0x00000000

问题描述&#xff1a; 操作git的时候电脑卡了&#xff0c;重启电脑后git status就提示bad signature 0x00000000&#xff0c;index file corrupt错误&#xff0c;如下&#xff1a; 解决办法&#xff1a; rm -f .git/index git reset

【算法】dd爱转转

✨题目链接&#xff1a; dd爱旋转 ✨题目描述 读入一个n∗n的矩阵&#xff0c;对于一个矩阵有以下两种操作 1:顺时针旋180 2:关于行镜像 如 变成 给出q个操作&#xff0c;输出操作完的矩阵 ✨输入描述: 第一行一个数n(1≤n≤1000)&#xff0c;表示矩阵大小 接下来n行&#xff…