Linux文件权限、文件与目录相关命令(查询字典)

本文详述了Linux文件权限的重要性和不同属性,包括如何使用chgrp、chown、chmod进行权限修改。讨论了权限对文件和目录的影响,强调了目录的rwx权限含义。此外,介绍了目录与路径的概念,列举了如cd、pwd、mkdir、rmdir等常用命令,以及文件内容查看、文件时间修改、umask和特殊权限SUID、SGID、SBIT。最后,概述了文件系统的概念、挂载点的意义,并提及了一些辅助命令。

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

文件权限

linux文件属性

	dr-xr-x---.		( d > 目录
	-r-xr-x---.		( - > 文件
	lr-xr-x---.		( l > 连接文件
	br-xr-x---.		( b > 区块(block) 设备文件,如硬盘软盘
	cr-xr-x---.		( c > 字符(character)设备文件,如鼠标键盘

root不受系统权限限制,即使文件权限是[----------],root都可以读写。

修改文件属主/属组权限(chgrp/chown/chmod)

chgrp (change group)

  • 语法: chgrp [-R] groupname dirname/filename
  • -R ( 递归更改文件属性,即更改包括该目录下的所有子文件属性)

chown (change owner)

  • chown [-R] owner dir/filename (只修改owner)
  • 或者:chown [-R] owner:group dir/filename (不仅修改owner,同时修改group)
  • chown [-R] .group dir/filename (这样写也行)
  • chown [-R] .group dir/filename ( . 的前面不写owner,这样可以单纯修改group)

chmod (修改权限)

  • 方式一:chmod [-R] xyz dir/filename
  • rwx权限的数字对照 —> r : 4 ,w : 2 ,x : 1
  • 方式二,例:chmod u=rwx,g=rw,o=r dir/filename
  • u = user , g = group , o = other , a = all
  • +(加入),-(移除),=(设置)
  • chmod g+w,o-x dir\filename
  • 注意 ‘ u=r,g=r,o=r ’ 中间没有任何空格

权限对文件的意义

r (read): 可读取文件内容

w (write): 可以编辑、新增、修改文件内容,不包括删除该文件

x (eXecute): 该文件具有被系统执行的权限

权限对目录的意义(重要)

r (read contents in directory): 可以读取目录结构列表,只有当目录具有 [ r ] 权限的时候,才可以使用 [ ls ] 将该目录下的文件列出。

w (modify contents of directory): 可以改动该目录结构列表。

  • 建立新的文件与目录
  • 删除已经存在的文件与目录
  • 将已存在的文件或目录重命名
  • 移动该目录内的文件、子目录位置

x (access directory): 代表用户能否进入该目录成为工作目录,工作目录指当前目录;若某用户对一个目录的权限是 [ rw- ],那么他可以使用 [ ls ] 读取该目录里面的内容,但不能用 [ cd ] 切换到这个目录,也就无法执行该目录下的任何命令,即使具有 [ w ] 权限

注意:要开放目录给任何人浏览,应该至少给与 r、x 的权限,但 w 权限不可随便赋予

目录与路径

绝对路径:一定由根目录/写起,如:/etc/group

相对路径:不是由/写起,如:cd …/ 切换到上一层目录

对于文件名的正确性来说,绝对路径的正确优于相对路径,特别是在写程序来管理系统时,务必使用绝对路径。

目录的相关操作(cd/pwd/mkdir/rmdir)

.代表此层目录
. .代表上层目录
-代表前一个工作目录
~代表当前用户所在的家目录
~account代表account这个用户的家目录

cd (change directory)

下例中假设已经用 su - 切换成root身份

  • cd ~account(进入account用户的家目录,即 /home/account)
  • cd ~ (回到自己的家目录,即 /root)
  • cd (没有加任何路径,表示回到自己的家目录 /root)
  • cd . . (切换到当前目录的上层目录,即根目录 /)
  • cd - (回到上一次操作的目录,即 /root)

提醒:Linux的默认命令行( bash shell )具有文件补齐功能,可以利用 [Tab]键来自动补全路径,这样可以避免写路径时输入错误。

pwd (print working directory)

  • [ -P(大写) ] 可选参数,显示出真正的路径,而非链接路径

mkdir (make directory)

  • [ -p ] 递归创建,即一层一层的创建,目录下面还有子目录
  • mkdir test/test1/test2/test3 (创建失败)
  • madir -p test/test1/test2/test3 (创建成功)
  • [ -m ] 设置文件权限
  • mkdir -m 611 testing (创建了一个权限是d rw- r-- r- - 的目录testing)
  • 若不使用 -m 参数,则会使用默认权限umask

rmdir (remove directory)(删除“空”目录)

  • [ -p ] 连同上层‘空的’目录也一起删除
  • rmdir -p test/test1/test2/test3

执行路径的变量: $PATH

  • echo $PATH (显示当前用户的 PATH)
  • PATH="${PATH}:dir/filename" (添加PATH)
  • 不同身份用户默认的PATH不同,默认能够随意执行的命令也不同
  • 使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查找PATH来的正确

文件与目录相关操作(ls/cp/rm/mv)

ls文件与目录查看)

  • ls [ options ] [ dir/filenam ]
  • -a <全部文件,连同隐藏文件(.开头的文件)一起列出>
  • -d <仅列出目录本身,而不是列出目录内的文件>
  • -l <详细信息显示,包含文件的属性与权限等>
  • –full-time <以完整时间模式输出,full前面是两个->
  • 例:ls -al --full-time /home

cp (除复制文件外,还可以建立链接文件和复制整个目录)

  • cp [ options ] 源文件(source) 目标文件(destination)
  • -a <连同文件所有的特性一起复制>
  • -i <若destination已经存在,在覆盖时会先询问是否进行操作>
  • -p <连同文件的属性一起复制过去,而非使用默认属性>
  • -r <递归复制,用于目录的复制>
  • -d <若源文件为链接文件属性(link file),则复制链接文件属性而非文件本身>
  • -s <复制称为符号链接文件(symbolic link),即’快捷方式’文件>
  • -l <进行硬链接(hard link)的链接文件建立,而非复制文件本身>

在复制时需要考虑的问题:

  • 是否需要完整的保留源文件的信息?
  • 源文件是否为符号链接文件?
  • 源文件是否为特殊文件?如FIFO、socket等
  • 源文件是否为目录?

rm (删除文件或目录)

  • rm [ options ] dir/filename
  • -f <f是force的意思,忽略不存在的文件,不会出现警告信息>
  • -i <询问是否操作>
  • -r <递归删除,常用于目录的删除>

mv (移动文件与目录,或重命名)

  • mv [ options ] source destination
  • mv [ options ] source1 source2 source3… directory
  • -f <force,如果目标文件已经存在,不会询问而直接覆盖>
  • -i <若目标文件已经存在,则询问是否覆盖>
  • -u <若目标文件已经存在,且source比较新,才会更新>

文件内容查看(cat/more/less/head/tail)

cat (concatenate) (一次性全部读取)

  • cat [ options ] file
  • -A <显示包括特殊字符(空白符、换行符等)所有的内容>
  • -n <打印行号,连同空白行也有行号>
  • -b <d打印行号,不包括空白行>

more (一页一页读取)

  • 空格键 >下翻一页
  • 回车键 >下翻一行
  • b >回翻 (此操作只对文件有用,对管道无用)
  • q >离开

less (一页一页读取)

  • 空格键 >下翻一页
  • pagedown \ pageup
  • /字符串 >向下查找字符串
  • ?字符串 >向上查找字符串
  • n >重复前一个查找
  • g >跳到第一行
  • G >跳到最后一行
  • q >离开

head (读取前面几行)

  • head [ -n number ] file

tail (读取后面几行)

  • tail [ -n number ] file

修改文件时间或创建新文件(touch)

文件的三个时间

  1. 修改时间 【modification time,mtime】(内容数据变更,mtime更新)
  2. 状态时间 【status time,ctime】(权限属性变更,ctime更新)
  3. 读取时间 【access time,atime】(文件内容被读取是,atime更新)

在默认情况下,ls 显示出来的是文件的 mtime,可以同过命令查看其它时间

  • ls -l --time=atime/ctime dir/file

touch

  • touch [ options ] file
  • -a <仅修改atime,若文件不存在,创建新文件>
  • -c <仅修改ctime,若文件不存在,不会创建新文件,也不报信息>
  • -d <接自定义的时间而不用当前时间,如 -d “7 days ago” file>
  • -m <仅修改mtime,若文件不存在,创建新文件>
  • -t <接自定义的时间,格式为[YYYYMMDDhhmm],如 -t 202008102215 file>

文件默认权限(umask)

umask:指定当前用户在建立文件或目录是的权限默认值

查看umask:

	[用户名@主机名 工作目录]$  umask
	0002		#普通用户umask
	# 四位数的第一位代表特殊权限,后三位代表 u g o 所对应的权限
	
	[用户名@主机名 工作目录]$  umask  -S              #S大写
	u=rwx,g=rwx,o=rw			#002代表的权限
	
	[root@主机名 ~]#  umask
	0022		#管理员umask,022代表u=rwx,g=rx,o=rx

在默认权限的属性上,file 和 directory 是不同的:

  • 若用户建立的是文件,则默认没有 x 权限,即默认 -rw-rw-rw-
  • 若用户建立的是目录,则默认所有权限开放,即默认 drwxrwxrwx

注意:umask的数字指的是默认需要减掉的权限,因此

  • 建立文件时:(-rw-rw-rw-)-(002)=(-rw-rw-r–)
  • 建立目录时:(drwxrwxrwx)-(002)=(drwxrwxr-x)

设置 umask :

	[用户名@主机名 工作目录]$  umask 044
	[用户名@主机名 工作目录]$  umask
	0044		#设置成功

文件特殊权限(SUID/SGID/SBIT)

文件权限除了 rwx 之外,还包括 特殊权限 st ,这两个特殊权限与系统账号及系统的进程管理相关。

Set UID:当 s 这个标志出现在文件拥有者的 x 权限上时,如【-rwsr-xr-x】,则此时被称为SUID特殊权限。

SUID权限的限制和功能:

  • SUID权限仅对二进制程序有效
  • 执行者对该程序需要具备 x 的可执行权限
  • 本权限仅在执行该程序的过程中有效
  • 执行者将具有该程序拥有者(owner)的权限

举例说明:Linux系统中,所有账号的密码都记录在 /etc/shadow 这个文件里,该文件的权限为【---------- 1 root root】,即只有 root 能对该文件进行强制读写。但是有一个程序( /sur/bin/passwd,修改账户密码 )能让普通用户读写 shadow 这个文件,passwd 对普通用户的权限是【-rwsr-xr-x 1 root root】,权限当中在owner的 x 位置上出现了 s 标志,即普通用户具有SUID权限

  • 普通用户对于 /usr/bin/passwd 具有 x 权限
  • passwd 的拥有者是root
  • 普通用户执行 passwd 的过程中,会‘暂时’获得root的权限
  • 于是 /etc/shadow 可以被用户执行的 passwd 程序修改

Set GID:当 s 标志出现在用户组(group)的 x 位置上时,如【-rwxr-sr-x】,则称为SGID特殊权限,SGID的限制和功能同SUID

SGID除了作用于二进制程序外,还能够用在目录中。假定某个目录被设置成SGID权限,若用户对此目录具有r-x权限,则该用户能进入目录;用户在此目录下会‘暂时’成为该目录的用户组,获得w权限

Sticky Bit:当 other 的 x 位置上出现 t 标志时,被称为SBIT特殊权限,只针对目录有效,其作用是:

  • 若用户对此目录具有 w、x 权限,当用户在此目录下建立文件或目录时,仅自己和root有权利删除新建的文件
  • 如 /tmp【drwxrwxrwt】,任何人都可以在 /tmp 目录下建立或修改文件,但仅有自己和root有权利删除子的创建的文件或目录

SUID/SGID/SBIT 权限设置

  • 4 为 SUID
  • 2 为 SGID
  • 1 为SBIT

例:要将一个文件权限改为 【-rwsr-xr-x】,只需在原先的 755 的前面加上 4,即 chmod 4755 filename
加入SUID/SGID权限:chmod 6755 filename
加入SBIT权限:chmod 1755 filename

文件的查找(whereis/locate/find)

whereis (由一些特定的目录中查找文件)

  • whereis [ options ] dir/filename
  • -l <列出 whereis 会去查询的几个主要目录>
  • -m <只查找在说明文件 manual 路径下的文件>
  • -s <只查找 source 源文件>

whereis 主要查询 /bin/sbin 下面的执行文件,和 /usr/share/man 下面的 man page 文件,以及几个特定目录,所以查询速度比较快。

locate / updatedb
locate:依据 /var/lib/mlocate 内的数据库记录,找出用户所输入关键词的文件名
updatedb:根据 /etc/updatedb.conf 的设置去查找系统硬盘内的文件,并更新 var/lib/mlocate 内的数据库文件

  • locate [ options ] keyword
  • -i <忽略大小写>
  • -l <number 仅输出指定行数>
  • -S <输出 locate 所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等>
  • -r <可以接正则表达式的显示方式>

使用 locate 命令查找文件,可以只输入文件的部分名称;locate 寻找数据特别快,因为 locate 寻找的数据是由已建立的数据库 /var/lib/mlocate 里面的数据所查找到的,不必去硬盘中读取数据。
当建立新的文件时,数据库需要使用 updatedb 命令更新之后,才能查找到新文件。

文件系统

磁盘分区完毕后还需要进行格式化,之后操作系统才能使用这个文件系统;
传统磁盘与文件系统应用中,一个分区只能被格式化成为一个文件系统,即一个文件系统就是一个硬盘分区;
但是随着新技术的发展,已经可以将一个分区格式化为多个文件系统(如LVM),也可以将多个分区整合成为一个文件系统(如LVM,RAID),因此,我们称一个可被挂载的数据为一个文件系统而不是一个分区。

文件系统通常会将 文件实际内容文件权限、文件属性 放置在两个不同的区块,权限与属性放置到 inode 中,实际内容放置到 data block(数据区块) 中。另外还有一个 superblock(超级区块) 用来记录整个文件系统的整体信息。

  • 超级区块:记录此文件系统的整体信息,包括 inode 与 data block 的总量、使用量、剩余量,及文件系统的格式等相关信息
  • inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 data block 号码
  • data block:记录文件的实际内容,若文件太大,则会占用多个区块

文件系统与目录树的关系

当我们在linux下的文件系统建立一个目录时,文件系统会分配一个 inode 与至少一块 data block 给该目录。inode 记录该目录的权限与属性,以及分配到的区块号码;data block 记录这个目录下的文件名与该文件名占用的 inode 号码。

当我们建立一个一般文件时,文件系统会分配一个 inode 与 相对于该文件大小相匹配的区块数量 给给文件。

我们想要对某个目录下的子目录或文件进行新增、修改、删除的操作时,需要具备该目录的 w 权限,原因就在于:文件名是记录在目录的 data block 中,要读取某个文件时,必定会经过目录下的 inode 与 data block,然后才能找到待读取文件的 inode 号码,进而读取到该文件 data block 中的实际数据。

挂载点的意义

每个文件系统都有独立的 inode、data block、superblo等信息,这个文件系统要能够链接到目录树才能被用户使用。

将文件系统与目录树结合的操作被称为 挂载
挂载点一定是目录,该目录为进入这个文件系统的入口。

辅助命令

热键
[ctrl] + u / [ctrl] + k

  • 从光标处向前删除命令串 和 向后删除命令串

[ctrl] + a / [ctrl] + e

  • 让光标移动到整行的最前面 和 最后面

Tab

  • 命令补全
  • 文件补齐

Shift + [Page up] [Page down] (翻页)

在线求助

man page (manual)

  • 代号(1)用户在shell环境中可以操作的命令或可执行文件
  • 代号(5)配置文件或某些文件格式
  • 代号(8)系统管理员可用的管理命令

info page (以节点(node)形式输出信息)

  • Space (下翻一页)
  • [Page Down/Up] (下/上翻一页)

关机

su - (转换root身份)

sync (数据同步写入磁盘)

  • 一般账号仅更新自己的数据
  • root更新整个系统的数据

shutdown

  • shutdown [options] [time] [warnings]
  • -k (伪关机,发送警告信息)
  • -r (重启)
  • -h (立即关机)
  • -c (取消)

reboot、halt、poweroff (重启)

通配符 *代表0到无穷多个任意字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值