Linux文件管理

本文详细介绍了Linux的文件目录结构,包括关键目录的用途,如/bin, /root, /etc等。讲解了文件的时间属性,如访问时间、修改时间和改变时间。讨论了文件类型,如普通文件、目录、设备文件等,并展示了如何查看文件类型。还涵盖了文件路径、文件操作如创建、移动、删除,以及权限管理,包括UGO权限、ACL权限和高级权限SUID、SGID、Sticky。最后提到了进程掩码umask和文件隐藏属性。" 89949757,7492304,前端面试必备:柯里化实现解析,"['前端开发', 'JavaScript', '算法', '函数式编程', '面试准备']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux文件管理

1.Linux文件目录结构(倒置树状结构,最开始为/ 目录)

各个目录介绍:

/bin : 普通用户使用的命令

/boot : 存放系统启动相关的文件(如:kernel,grub)

/dev: 设备文件

/etc : 配置文件

/home:普通用户的家目录(图中alice,bob,eve 都是创建的普通用户)

/root: root用户的家目录

/sbin: 管理员使用的命令

/tmp : 临时文件

/usr: 系统文件,相当于windows 下的 C: \windows (应该是最大的目录了)

/var: 存放一些变化文件,比如日志文件(/var/log/messages, /var/log/secure这两个文件很重要,以后会经常用到)

lost+found fsck修复时,存储没有链接的文件或目录

proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态

/lb 和 /lib64 : 开机时常用的动态链接库

/run : 系统运行时所需文件

/srv : 服务启动后需要访问的数据目录

/media : 可移除设备挂载目录

/sys : 跟proc一样虚拟文件系统

/mnt : 用户临时挂载其他的文件系统

(重点目录:/bin ,/root ./boot ,/etc/ home,/root ,/usr,/ proc,/mnt)

2.文件时间

查看当前目录下相关文件:ls

相关参数:-a / -l /-d /-i 可以通过--help查看相应的参数这里只是列出重要的

文件相关时间:

访问时间:atime,查看内容

修改时间:mtime,修改内容

改变时间:ctime,文件属性,比如权限

删除时间:dtime,文件被删除的时间

ls -l 查看的只是文件的修改时间,看详细的时间使用 stat

3.文件类型

ls -l 文件名 //看第一个字符

- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)

d 目录文件(蓝色)

b 设备文件(块设备)存储设备硬盘,U盘 /dev/sda, /dev/sda1

c 设备文件(字符设备)打印机,终端 /dev/tty1

s 套接字文件

p 管道文件

l 链接文件(淡蓝色)

还可以通过file 命令来查看相应的文件类型

4. 文件路径

绝对路径:以 / 开始的路径

相对路径: 从当前路径开始的路径

显示当前路径的命令: pwd

~ : 表示当前用户的家目录( 比如说现在是root用户,~/ 就等同于 /root )

. (有个点哈) 表示当前目录

.. ( 两个点哈) 表示上一层目录

5. 相应操作:

cd : 切换路径

(cd 直接回到当前用户的家目录, cd .. 返回上一级目录)

eg: cd /root # 切换到root目录下

touch : 创建空文件(可以使用正则批量进行,如果没有了解正则,没事,后面我会写出来)

eg:touch file{1..5} # 在当前目录下创建file1到file5

echo “ 内容” > 文件: 可以创建一个非空文件, ( > 表示重定向,不要紧,小编后面也会写到)

mkdir : 创建一个目录,这个只需要记住一个参数就好,其他的用的时候可以查看man手册: -p

-p : 表示创建子目录时候父目录不存在,会帮助你自动创建父目录,你也可以理解成递归创建

eg: mkdir -p /dir1/dir2/dir3 # 递归创建dir1 ,dir2 ,dir3

cp : 当然是copy文件/文件夹啦,可以将多个文件拷贝到同一个目录下哦,注意书写

相关参数: -i (提示) / -f (强制)/ -v (列出过程) / -r(R) (这个厉害了,递归复制)

eg: cp -r /root/ ./ # copy /root下的所有东西到当前目录

mv : 移动,还可以改名(假如目标地址是个目录就是,移动到该目录, 如果是个文件,那就是移动并更名)

eg: mv file.txt /root/file.c # 移动当前目录下的file.txt 到 root目录下,并改名为file.c

rm : (remove) 删除文件或文件夹(-r)

重要参数: -v (显示过程)/ -f (强制删除) / -r ( 递归删除)

eg : rm -rf /dir1/dir2/dir3 # 递归删除dir1 ,dir2 ,dir3

rmdir : 删除空文件夹,(基本没啥卵用,记住rm 就行)

cat : 全部查看文件内容,会在显示屏上列出全部内容

参数 : -n : 显示行号

其他查看命令: more / less /head /tail /tailf ,可以自己下去试一下,小编在这就不列出了

6.文件权限:

6.1基本权限UGO:

UGO 分别表示 user group other

用ll (相当于ls -l ) 查看一个文件:

权限对象: UGO

权限类型及相对的数值: r ( 读) 4 ; w ( 写) 2 ; x (执行) 1

更改文件属主属组: chown 更改主.更改组 更改文件(注意中间有个点哈)

eg : chown alex.alex test.txt # 更改test.txt文件属主属组为alex

重要参数: -R : 递归更改,即该目录下所有文件的属主属组都将被更改

只更改属组: chgrp (其实没啥用,要只更改属组,可以用chown .属组 文件 就行,不更改可以用空格)

更改文件的权限: rwx 命令: chmod

emmmm,这个不好描述,直接上例子:

eg:

[root@localhost ~]# touch test.tx

[root@localhost ~]# ll test.tx

-rw-r--r-- 1 root root 0 Mar 8 19:37 test.tx

[root@localhost ~]# chmod u+x,g+x,o+x test.tx

[root@localhost ~]# ll test.tx

-rwxr-xr-x 1 root root 0 Mar 8 19:37 test.tx

[root@localhost ~]# chmod 777 test.tx

[root@localhost ~]# ll test.tx

-rwxrwxrwx 1 root root 0 Mar 8 19:37 test.tx

[root@localhost ~]# chmod a-x test.tx

[root@localhost ~]# ll test.tx

-rw-rw-rw- 1 root root 0 Mar 8 19:37 test.tx

[root@localhost ~]# chmod u=rwx,g=rw,o=r test.tx

[root@localhost ~]# ll test.tx

-rwxrw-r-- 1 root root 0 Mar 8 19:37 test.tx

可以看出来a 表示给UGO同时更改,也可以使用+,- ,= ,也可以使用数值(r=4,w=2,x=1)

6.2 基本权限ACL

UGO设置基本权限: 只能一个用户,一个组和其他人

ACL 设置基本权限: r,w,x

ACL权限为,在不更改文件的属主属组情况下,让其他属组或者属主对该文件有相应的权限;

查看acl权限: getfacl

设置文件的ACL权限:setfacl

相关参数: -m (修改) / -b (全部删除,回到刚创建时的权限)/ -x (删除指定的权限)

eg: [root@localhost ~]# setfacl -m u:alex:rwx test.tx # 给test.tx 文件添加了一个alex用户可以对其有rwx的权限

[root@localhost ~]# getfacl test.tx

# file: test.tx

# owner: root

# group: root

user::rwx

user:alex:rwx

group::rw-

mask::rwx

other::r--

[root@localhost ~]# setfacl -x u:alex test.tx #删除alex 用户的权限

[root@localhost ~]# setfacl -b test.tx # 删除所有的权限,回到刚建立的时候权限

6.3高级权限:suid,sgid,sticky

高级权限的类型

suid 4

sgid 2

sticky 1 粘滞位

设置特殊权限

a、字符

chmod u+s file

chmod g+s dir

chmod o+t dir

b、数字

chmod 4777 file

chmod 7777 file

chmod 2770 dir

chmod 3770 dir

SUID简介:

1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.

2.命令执行者要对该程序文件拥有执行(x)权限.

3.命令执行者在执行该程序时获得该程序文件属主的身份.

4.SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

有点蒙了吧,哈哈,其实简单来说就是让本来没有相应权限的用户运行这个程序时,可以访问没有权限访问的资源,就给个用户提升了权限,可以执行这个二进制文件的权限

那么问题来了,怎么查看一个问题是不是二进制文件呢?

[root@localhost ~]# file -i test.tx

test.tx: inode/x-empty; charset=binary

开始操作:

SUID:

[root@localhost ~]# ll test.tx

-rwxrw-r--+ 1 root root 0 Mar 8 19:37 test.tx

[root@localhost ~]# chmod u+s test.tx 也可以用 chmod 4754 test.tx

[root@localhost ~]# ll test.tx

-rwsrw-r--+ 1 root root 0 Mar 8 19:37 test.tx

SGID: 新建文件继承目录属组 <针对目录>

sticky : 粘滞位: 这个表示sticky 用户只能删除自己的文件 <针对目录>

《记不住也不要紧,个人觉得用的不太多》

6.4.进程掩码 mask 和umask

进程 新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限

0777 - 文件UGO权限 = umask

(这个小编表示知道就行,因为实在觉得用的不多)

6.5 文件隐藏属性:(表示也是知道就行)

lsattr chattr

就是一个文件除了ll 可以查看的属性外, 还有好多隐藏的属性;

用lsattr 查看:(默认隐藏属性为空,但是可以自己设置,每个位置都有相应的属性)

[root@localhost ~]# lsattr test.tx

---------------- test.tx

九个位置分别表示: A , s , a ,c, d ,i ,s, u ,j (相对应的参数意思,想了解可以去百度查看:https://www.cnblogs.com/luckysimple/p/5067344.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值