ZYNQ学习之Ubuntu下Linux文件系统与用户权限

基本都是摘抄正点原子的文章:<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf,因初次学习,仅作学习摘录之用,有不懂之处后续会继续更新~

一、Linux 文件系统

1.1 Linux 文件系统简介以及类型

操作系统的基本功能之一就是文件管理,而文件的管理是由文件系统来完成的。Linux支持多种文件系统。

1.1.1、Linux 文件系统简介

文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux 有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U 盘、SD 卡、NAND FLASH、NOR FLASH、网络存储设备等。

不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理 NAND FLASH 的话使用 YAFFS 文件系统,管理硬盘、SD 卡的话就是 ext 文件系统等等

磁盘的分割:

Linux 下常用的磁盘分割工具为:fdisk,fdisk 这个工具后面会详细讲解怎么用,因为我们移植 Linux 的时候需要将SD卡分为两个分区来存储不同的东西

格式化与文件系统:

创建一个新的盘符以后都要做格式化处理,格式化其实就是给这个盘符创建文件系统的过程

Windows 下一般有 FAT、NTFS 和 exFAT这些文件系统。同样的,在 Linux 下、使用 fdisk 创建好分区以后也是要先在创建好的分区上面创建文件系统,也就是格式化。

挂载点:

在 Windows 下有磁盘分区的概念,比如 C,D,E 盘等,在 Linux 下没有这个概念,因此Linux 下找不到像 C、D、E 盘这样的东西。

Linux 下可以给磁盘分割,但是没有 C、D、E 盘那怎么访问这些分区呢?

在 Linux 下创建一个分区并且格式化好以后需要将其“挂载”到一个目录下才能访问这个分区。Windows 的文件系统挂载过程是其内部完成的,用户是看不到的,Linux 使用 mount 命令来挂载磁盘。

挂载磁盘的时候是需要确定挂载点的,也就是这个磁盘要挂载到哪个目录下

1.1.2、Linux 文件系统类型

ext2 文件系统:

ext2 是 Linux 早期的文件系统,但是随着技术的发展 ext2 文件系统已经不推荐使用了,ext2 是一个非日志文件系统,大多数的 Linux 发行版都不支持 ext2 文件系统了。

ext3 文件系统:

ext3 是在 ext2 的基础上发展起来的文件系统,完全兼容 ext2 文件系统,ext3 是一个日志文件系统,ext3 支持大文件,ext3 文件系统的特点有如下:

高可靠性:

使用 ext3 文件系统的话,即使系统非正常关机、发生死机等情况,恢复 ext3文件系统也只需要数十秒。

数据完整性:

ext3 提高了文件系统的完整性,避免意外死机或者关机对文件系统的伤害。

文件系统速度:

ext3 的日志功能对磁盘驱动器读写头进行了优化,文件系统速度相对与ext2 来说没有降低。

数据转换:

从 ext2 转换到 ext3 非常容易,只需要两条指令就可以完成转换。用户不需要花时间去备份、恢复、格式化分区等,用 ext3 文件系统提供的工具 tune2fs 即可轻松的将 ext2文件系统转换为 ext3 日志文件系统。ext3 文件系统不需要经过任何修改,可以直接挂载成ext2 文件系统。

ext4 文件系统:

ext4 相比与 ext3 提供了更佳的性能和可靠性,并且功能更丰富,ext4 向下兼容 ext3 和 ext2,因此可以将 ext2 和 ext3 挂载为 ext4

那么我们安装的 Ubuntu 使用的哪个版本的文件系统呢?

在终端中输入如下命令来查询当前磁盘挂载的是什么文件系统:

df -T –h

3dcc9c0818ee4b00b6471f38f5fd89e3.png

上图中圈起来的就是安装 Ubuntu 的磁盘,在 Linux 下一切皆为文件, “/dev/sda1”就是磁盘的分区,可以看出这个磁盘分区类型是 ext4,它的挂载点是根目录“/”。

1.2 Linux 文件系统结构

Ubuntu 是支持多用户的,Ubuntu 为每个用户创建了一个根目录,比如电脑现在登陆的是“gbxluo”这个用户,因此默认进入的是“gbxluo”这个用户的根目录:

25cd7ab0362d424e86189d15976017cb.png

点击“计算机”进入系统根目录,如下图:

50ca675559bc407b8645f6f2881e00cf.png

1fc226ebfa774b5b803534f34e2d7ea1.png

参数描述
cd ~进入到用户根目录“~”
cd /进入到系统根目录“/”

根目录“/”中的一些重要的文件夹:

7d0855ab95304fddb67916ac8fa8f2df.png

参数描述
/bin存储一些二进制可执行命令文件,/usr/bin 也存放了一些基于用户的命令文件
/sbin存储了很多系统命令,/usr/sbin 也存储了许多系统命令
/root超级用户 root 的根目录文件
/home普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹
/boot存放 Ubuntu 系统内核和系统启动文件
/mnt通常包括系统引导后被挂载的文件系统的挂载点
/dev存放设备文件,学习 Linux 驱动主要是跟这个文件夹打交道
/etc保存系统管理所需的配置文件和目录
/lib保存系统程序运行所需的库文件,/usr/lib 下存放了一些用于普通用户的库文件
/lost+found一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件
/var存储一些不断变化的文件,比如日志文件
/usr包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件
/media存放 Ubuntu 系统自动挂载的设备文件
/proc虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息
/tmp存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限
/opt可选文件和程序的存放目录
/sys系统设备和文件层次结构,并向用户程序提供详细的内核数据信息

1.3 文件操作命令

1.3.1 创建新文件命令—touch

vi/vim 指令用来创建一个文本文档,touch 不仅可以用来创建文本文档,其它类型的文档也可以创建。

命令格式如下:

touch [参数] [文件名]

使用 touch 创建文件的时候,如果[文件名]的文件不存在,那就直接创建一个以[文件名]
命名的文件,如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期,常用的命
令参数如下:

参数描述
-a只更改存取时间
-c不建立任何文件
-d<日期>使用指定的日期,而并非现在日期
-t<时间>使用指定的时间,而并非现在时间

进入到用户根目录下,直接使用命令“cd ~”即可快速进入用户根目录,进入用户根目
录以后使用 touch 命令创建一个名为 test 的文件,创建过程如下图所示:

fe04110da4b1457a9f1737f21c4cd29d.png

1.3.2 文件夹创建命令—mkdir

既然可以创建文件,那么肯定也可以创建文件夹,创建文件夹使用命令“mkdir”,命令
格式如下:

mkdir [参数] [文件夹名目录名]

主要参数如下:

参数描述
-p
如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录

在用户根目录下创建名为“archive_test”的文件夹,如下图所示:

b4bd6aba4c6243688f808240a94c53d2.png

1.3.3 文件及目录删除命令—rm

既然有创建文件的命令,那肯定有删除文件的命令,要删除一个文件或者文件夹可以使用命令“rm”,此命令可以完成删除一个文件或者多个文件及文件夹,它可以实现递归删除。

对于链接文件,只删除链接,原文件保持不变,所谓的链接文件,其实就是 Windows 下的快
捷方式文件。

此命令格式如下:

rm [参数] [目的文件或文件夹目录名]

命令主要参数如下:

参数描述
-d直接把要删除的目录的硬连接数据删成 0,删除该目录
-f强制删除文件和文件夹(目录)
-i删除文件或者文件夹(目录)之前先询问用户
-r递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉
-v显示删除过程

使用 rm 命令来删除前面使用命令“touch”创建的 test 文件,操作过程如下图所示:

45933d101722492f85f22d40653543da.png

直接使用命令“rm”是无法删除文件夹(目录)的,需要加上参数“-rf”,也就是强制递归删除文件夹(目录),如下图所示:

5a509c3e94b04fffb50eca06816ba53a.png

1.3.4 文件夹(目录)删除命令—rmdir

Linux 提供了直接删除文件夹(目录)的命令—rmdir,它可以不加任何参数的删除掉指定的文件夹(目录),命令格式如下:

rmdir [参数] [文件夹(目录)]

命令主要参数如下:

参数描述
-p删除指定的文件夹(目录)以后,若上层文件夹(目录)为空文件夹(目录)的话就将其一起删除

使用命令“rmdir”删除掉“archive_test”文件夹,如下图所示:

633634b5bab44a91ab1a3eefc411b761.png

1.3.5 文件复制命令—cp

在 Windows 下可以通过在文件上点击鼠标右键来进行文件的复制和粘贴,在 Ubuntu界面下也可以通过点击文件右键进行文件的复制和粘贴。

但是本节讲解如何在终端下使用命令来进行文件的复制,Linux 下的复制命令为“cp”,命令描述如下:

cp [参数] [源地址] [目的地址]

主要参数描述如下:

参数描述
-a此参数和同时指定“-dpR”参数相同
-d在复制有符号连接的文件时,保留原始的连接
-f强行复制文件,不管要复制的文件是否已经存在于目标目录
-I覆盖现有文件之前询问用户
-p保留源文件或者目录的属性
-r或-R递归处理,将指定目录下的文件及子目录一并处理

在用户根目录下,使用命令“mkdir”创建两个文件夹:test_dir1 和 test_dir2,过程如下图所示:

63884dc606894620b5cab4f143dd8c12.png

在test_dir1文件夹中创建a.c文件,并备份为b.c文件,接着将test_dir1文件中的内容均复制到test_dir2文件夹中,操作过程如下图所示:

8b31a92ff8ad42e9aa36638c121ce93a.png

这里使用了通配符“*”,“*.c”就表示 test1 下的所有以“.c”结尾的文件。

文件夹复制:

将 test2 文件夹复制到同目录下,新拷贝的文件夹命名为 test3,操作如下图所示:

acf0fbe3d9094ca8981be3fc46cb9eac.png

注意:这里cp拷贝文件夹也使用了参数"-rf",即强制递归复制。

1.3.6 文件移动命令—mv

有时需要将一个文件或者文件夹移动到另外一个地方去,或者给一个文件或者文件夹进行重命名,这个时候我们就可以使用命令“mv”了,此命令格式如下:

mv [参数] [源地址] [目的地址]

主要参数描述如下:

参数描述
-d如果要覆盖文件的话覆盖前先进行备份
-f若目标文件或目录与现在的文件重复,直接覆盖目标文件或目录
-I在覆盖之前询问用户

在上面创建的 test_dir1 文件夹里面创建一个 c.c 文件,然后将 c.c 这个文件重命名为 d.c。操作如下图所示:

3145376ab1ce493eac2c453fd4fae0c8.png

最后将test_dir1文件夹中的 d.c 文件移动到 test2 文件夹里面,如下图所示:

372b61ce49974c1dbc010c81cce062d4.png

1.4 文件压缩和解压缩

Ubuntu 下有图形化以及命令行这两种压缩和解压缩操作。

1.4.1 图形化压缩和解压缩

图形化压缩和解压缩和 Windows 下基本一样,在要压缩或者解压的文件上点击鼠标右键,然后选择要进行的操作。

1.4.1.1 图形化压缩

选中文件或文件夹》右键压缩》

907a2e0850d84ef891a55dcfd2b23556.png

弹出创建归档窗口,选择类型与归档名称》创建,如下图所示:

1a7a68617fc841bb8e002507e94815d1.png

可以选择的压缩格式只有三个:.zip、.tar.xz、.7z,是因为这三个压缩格式与所有系统兼容。

压缩结果如下图:

53cfb3f548334ce99190e7c5b06b877e.png

1.4.1.2 图形化解压缩

选中test.zip文件,右键》提取到此处,如下图:

702594e75fb940f99b3732f40b7b1ce9.png

从上图可知,如果已经有解压后的文件,再解压时会创建新的文件夹。

1.4.2命令行进行文件的压缩和解压缩

命令行下进行压缩和解压缩常用的命令有三个:zip、unzip 和 tar

1.4.2.1 命令 zip

zip 命令看名字就知道是针对.zip 文件的,用于将一个或者多个文件压缩成一个.zip 结尾的文件,命令格式如下:

zip [参数] [压缩文件名.zip] [被压缩的文件]

主要参数函数如下:

参数描述
-b<工作目录>指定暂时存放文件的目录
-d从 zip 文件中删除一个文件
-F尝试修复已经损毁的压缩文件
-g将文件压缩入现有的压缩文件中,不需要新建压缩文件
-h帮助
-j只保存文件的名,不保存目录
-m压缩完成以后删除源文件
-n<字尾符号>不压缩特定扩展名的文件
-q不显示压缩命令执行过程
-r递归压缩,将指定目录下的所有文件和子目录一起压缩
-v显示指令执行过程
-num压缩率,为 1~9 的数值

使用命令“zip”对 test文件夹进行压缩为test.zip文件,操作如下图所示:

f7c17afec7304f429837bd10e4c1ead1.png

1.4.2.2 命令 unzip

unzip 命令用于对.zip 格式的压缩包进行解压,命令格式如下:

unzip [参数] [压缩文件名.zip]

主要参数如下:

参数描述
-l显示压缩文件内所包含的文件
-t检查压缩文件是否损坏,但不解压
-v显示命令显示的执行过程
-Z只显示压缩文件的注解
-C压缩文件中的文件名称区分大小写
-j不处理压缩文件中的原有目录路径
-L将压缩文件中的全部文件名改为小写
-n解压缩时不要覆盖原有文件
-P<密码>解压密码
-q静默执行,不显示任何信息
-x<文件列表>指定不要处理.zip 中的哪些文件
-d<目录> 把压缩文件解到指定目录下

对上面压缩的 test.zip 文件使用 unzip 命令进行解压缩,操作如下图所示:

1c63011fc9f042ff901fef0b2e806adb.png

1.4.2.3 命令 tar

我们前面讲的 zip 和 unzip 这两个是命令只适用于.zip 格式的压缩和解压,其它压缩格式
就用不了了,比如 Linux 下最常用的.bz2 和.gz 这两种压缩格式。其它格式的压缩和解压使用
命令 tar,tar 将压缩和解压缩集合在一起,使用不同的参数即可,命令格式如下:

tar [参数] [压缩文件名] [被压缩文件名]

常用参数如下:

参数描述
-c创建新的压缩文件
-C<目的目录>切换到指定的目录
-f<备份文件>指定压缩文件
-j用 tar 生成压缩文件,然后用 bzip2 进行压缩
-k解开备份文件时,不覆盖已有的文件
-m还原文件时,不变更文件的更改时间
-r新增文件到已存在的备份文件的结尾部分
-t列出备份文件内容
-v显示指令执行过程
-w遭遇问题时先询问用户
-x从备份文件中释放文件,也就是解压缩文件
-z用 tar 生成压缩文件,用 gzip 压缩
-Z用 tar 生成压缩文件,用 compress 压缩
tar命令压缩

使用如下tar命令将 test文件夹压缩为.bz2 和.gz 这两个格式:

tar -vcjf test.tar.bz2 test1
tar -vczf test.tar.gz test1

在上面两行命令中,-vcjf 表示创建 bz2 格式的压缩文件,-vczf 表示创建.gz 格式的压缩文件。

4dd781e278f54da5842f209a2279feff.png

a2c68bd785d54e70854b3fbef8320775.png

tar命令解压缩

使用如下所示两行命令完成.bz2 和.gz 格式文件的解压缩:

tar -vxjf test1.tar.bz2
tar -vxzf test2.tar.gz

上述两行命令中,-vxjf 用来完成.bz2 格式压缩文件的解压,-vxzf 用来完成.gz 格式压缩文件的解压。

e7aa9ad54b5c44799c984d2eedfbe960.png

要求:要熟练掌握使用 tar 命令来完成.bz2 和.gz 格式的文件压缩和解压缩。

1.5 文件查询和搜索

find 命令用于在目录中搜索文件,grep 命令用于查找包含指定关键字的文件。

1.5.1 命令 find

find 命令用于在目录结构中查找文件,其命令格式如下:

find [路径] [参数] [关键字]

路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一
部分,主要参数如下:

参数描述
-name<filename>按照文件名称查找,查找与 filename 匹配的文件,可使用通配符
-depth从指定目录下的最深层的子目录开始查找
-gid<群组识别码>查找符合指定的群组识别码的文件或目录
-group<群组名称>查找符合指定的群组名称的文件或目录
-size<文件大小>查找符合指定文件大小的文件
-type<文件类型>查找符合指定文件类型的文件
-user<拥有者名称>查找符合指定的拥有者名称的文件或目录

find 命令的参数有很多,常用的就这些,关于其它的参数可以自行上网查找。

来看一下如何使用 find 命令进行文件搜索,搜索目录/etc 中以“vim”开头的文件为例,操作如下图所示:

e09f48d54d96418888520f4a80723771.png

从上图可知,在目录/etc 下,包含以“vim*”开头的文件有:

/etc/alternatives/vimdiff
/etc/alternatives/vim
/etc/vim
/etc/vim/vimrc
/etc/vim/vimrc.tiny

1.5.2 命令 grep

grep 命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字,grep 命令就会把包含指定关键字的这一行标记出来。

grep 命令格式如下:

grep [参数] 关键字 文件列表

grep 命令一次只能查一个关键字,主要参数如下:

参数描述
-b在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号
-c计算符合关键字的列数
-d<进行动作>当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 指令将回报信息并停止搜索
-i忽略字符大小写
-v反转查找,只显示不匹配的行
-r在指定目录中递归查找

比如在用户根目录/桌面文件夹下递归查找包含字符“60分万岁”的文件,操作如下图所示:

88174db1b360485d95fcb31bde8c9846.png

1.6 文件类型

在用户根目录下使用命令“ls -l”来查看用户根目录下所有文件的详细信息,如下图所示:

0a5d54c34168471db9c299806cfcde1d.png

在上图中,每个文件的详细信息占一行,每行最前面都是一个符号就标记了当前文件类型,比如 C_program的第一个字符是“d”,examples.desktop文件第一个字符是“-”。

这些字符表示的文件类型如下:

参数描述
-普通文件,一些应用程序创建的,比如文档、图片、音乐等等
d目录文件
c字符设备文件,Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等
b块设备文件,存储设备驱动,比如硬盘,U 盘等
l符号连接文件,相当于 Windwos 下的快捷方式
s套接字文件
p管道文件,主要指 FIFO 文件

注意:学习 Linux 驱动开发的时候基本是在和字符设备文件和块设备文件打交道。

二、Linux 用户权限管理

2.1 Ubuntu 用户系统

Ubuntu 是一个多用户系统,可以给不同的使用者创建不同的用户账号,每个用户使用各自的账号登陆,使用用户账号的目的一是方便系统管理员管理,控制不同用户对系统的访问权限,另一方面是为用户提供安全性保护。

在安装 Ubuntu 系统的时候被要求创建一个账户,当创建好账号以后,系统会在目录/home下以该用户名创建一个文件夹,所有与该用户有关的文件都会被存储在这个文件文件夹中。同样的,创建其它用户账号的时候也会在目录/home下生成一个文件夹来存储该用户的文件,下图就是我的电脑上“gbxluo”这个账户的文件夹。

edc2a7a9bb564fcda6a1bd2712900f90.png

Ubuntu 下用户类型分为以下 3 类:

  1. root 用户,系统管理员,拥有最高权限
  2. 初次创建的用户,此用户可以完成比普通用户更多的功能
  3. 普通用户,安装完操作系统以后被创建的用户

root 用户权限大于装系统时创建的用户的权限;

装系统时创建的用户的权限大于普通用户的权限。

以上三种用户,每个用户都有一个 ID 号,称为 UID,操作系统通过 UID 来识别是哪个用户,用户相关信息可以在文件/etc/passwd 中查看到,

cat /etc/passwd

如下图所示:

c8457ecb0b7f482b9ae8d34a063ec286.png

从配置文件 passwd 中可以看到,每个用户名后面都有两个数字,比如用户“gbxluo”后面“1000:1000”,第一个数字是用户的 ID,另一个是用户的 GID,也就是用户组 ID。

Ubuntu 里面每个用户都属于一个用户组里面,用户组就是一组有相同属性的用户集合。

2.2 权限管理

Ubuntu 下的权限就是用户对于系统资源的使用限制情况,root 用户拥有最大的权限,可以为所欲为,装系统的时候创建的用户拥有 root 用户的部分权限,其它普通用户的权限最低。对于做嵌入式开发的人一般不关注用户的权限问题,因为嵌入式基本是单用户,做嵌入式开发重点关注的是文件的权限问题。

用户的权限与文件的权限,两个概念。

对于一个文件通常有三种权限:读(r)、写(w)和执行(x),使用命令“ls -l”可以查看某个目录下所有文件的权限信息,如下图所示:

375cf889487d414d8a2921dc4da6742d.png

以上图中文件 test.txt 为例讲解,文件 test.txt 文件信息如下:

-rw-rw-r-- 1 gbxluo gbxluo 376 3 月 23 14:16 test.txt

其中“-rw-rw-r--”表示文件权限与用户和用户组之间的关系,第一位表示文件类型,"-"表示普通文件(一些应用程序创建的,比如文档、图片、音乐等等)。

剩下的 9 位以 3 位为一组,分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限

后面的“gbxluo gbxluo ”分别代表文件拥有者(用户)和该用户所在的用户组。

因此文件 test.txt 的权限情况如下:

①、文件 test.txt 的拥有者是用户 zuozhongkai,其对文件 tesst.txt 的权限是“rw-”,也就是对该文件拥有读和写两种权限。

②、用户 gbxluo 所在的用户组也叫做 gbxluo (系统默认的),其组内用户对于文件 test.txt 的权限是“rw-”,也是拥有读和写这两种权限。

③、其它用户对于文件 test.txt 的权限是“r--”,也就是只读权限。

对于文件,可读权限表示可以打开查看文件内容,可写权限表示可以对文件进行修改, 可执行权限就是可以运行此文件(如果是软件的话)

对于文件夹,拥有可读权限才可以使用命令 ls 查看文件夹中的内容,拥有可执行权限才能进入到文件夹内部。

文件的权限有三种:读(r)、写(w)和执行(x),除了用r、w和x表示以外,可以使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限,如下表所示:

字母二进制八进制
r1004
w0102
x0011

将三种权限 r、w 和x 进行不同的组合,即可得到不同的二进制数和八进制数,3 位权限可以组出 8 种不同的权限组合,如下表所示:

权限二进制数字八进制数字
---0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx1117

表中权限所对应的八进制数字就是每个权限对应的位相加,比如权限 rwx 就是 4+2+1=7。前面的文件 test.txt 其权限为“rw-rw-r--”,因此其十进制表示就是:664。 另外也开始使用 a、u、g 和 o 表示文件的归属关系,用=、+和-表示文件权限的变化,如下表所示:

字母意义
r可读权限
w可写权限
x可执行权限
a所有用户
u归属用户
g归属组
o其他用户
=具备权限
+添加某权限
-去除某权限

对于文件 test.txt,我们想要修改其归属用户(gbxluo)对其拥有可执行权限,那么就可以使用:u+x。如果希望设置归属用户及其所在的用户组都对其拥有可执行权限就可以使用:gu+x。

2.3 权限管理命令

也可以使用 Shell 来操作文件的权限管理,主要用到“chmod”和“chown”这两个命令。

2.3.1 权限修改命令 chmod

命令“chmod”用于修改文件或者文件夹的权限,权限可以使用前面讲的数字表示也可 以使用字母表示,命令格式如下:

chmod [参数] [文件名/目录名]

主要参数如下:

参数描述
-c效果类似“-v”参数,但仅回显更改的部分
-f不显示错误信息
-R递归处理,指定目录下的所有文件及其子文件目录一起处理
-v显示指令的执行过程

修改文件的权限

先学习如何使用命令“chmod”修改一个文件的权限,在用户根目录下创建一个文件 test,然后查看其默认权限,操作如下图所示:

be1f231cff0f4fde850bab4fadbabb6d.png

在上图中我们创建了一个文件:test,这个文件的默认权限为“rw-rw-r--”,我们将其权限改为“rwxrw-rw”,对应数字就是 766,操作如下:

23f8d30ad85a4a5f87c68af306a67e6b.png

在上图中,我们修改文件 test 的权限为 766,修改完成以后的 test 文件权限为“rwxrwxr-w”,设置的一样,说明权限修改成功。

上面是通过数字来修改权限的,接下来使用字母来修改权限,操作如下图所示:

724c8ba8d02c4d56a707307ceee0fd2a.png

修改文件夹的权限

新建一个 test 文件夹,在文件夹 test 里面创建 a.c、b.c 和 c.c 三个文件,如下图所示:

bd12b576e1be416f9098a553a16bcadd.png

在上图中 test 文件夹下的文件 a.c、b.c 和 c.c 的权限均为“rw-rw-r--”,将 test 文件夹下的所有文件权限都改为“rwxrwxrwx”,也就是数字 777,操作如下图所示:

e2bd946eb46f41e2bd3cbbb8ce19a421.png

2.3.2 文件归属者修改命令 chown

命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:

chown [参数] [用户名.<组名>] [文件名/目录]

其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:

参数描述
-c效果同-v 类似,但仅回显更改的部分
-f不显示错误信息
-h只对符号连接的文件做修改,不改动其它任何相关的文件
-R递归处理,将指定的目录下的所有文件和子目录一起处理
-v显示处理过程

在用户根目录下创建一个 test 文件,查看其文件夹所属用户和用户组,如下图所示:

5de5ba399b0947feb505e511eca2f812.png

从上图中可以看出,文件 test 的归属用户为 gbxluo,所属的用户组为 gbxluo,将文件 test 归属用户改为 root 用户,所属的用户组也改为 root,操作如下图所示:

e611214cbcf14b6ab14a7106cbaefce7.png

命令 chown 同样也可以递归处理来修改文件夹的归属用户和用户组,用法和命令 chown一样:

833dfb9f69f54689a545dfeb2eb0f883.png

 参考链接:

ZYNQ领航者V2开发板 — 正点原子资料下载中心 1.0.0 文档

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

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

相关文章

JavaScript练手小技巧:仿米哈游官网人物跟随鼠标位移效果

最近&#xff0c;有同学找到我&#xff0c;说&#xff1a;老师&#xff0c;我想模仿米哈游官网。 我说&#xff1a;可以&#xff0c;很不错的。 她说&#xff1a;有些效果有点难&#xff0c;能不能帮我看下。 于是&#xff0c;我就简单大概粗糙的讲解了下大致的原理&#xf…

2024 ccfcsp认证打卡 2022 06 01 归一化处理

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 输入数字的个数int[] a new int[1010]; // 创建一个数组来存储输入的数字double sum 0; // 用于计算所有输入数字的总…

Android开发 OCR:通过Tesseract实现图片文字识别

下面是整个详解步骤过程 效果图一、OCR的含义二、什么是Tesseract三、前提准备1、添加依赖2、数据文件下载路径 四、实际代码案例Demo如下&#xff1a;Main.xmlMain.java 效果图 流程&#xff1a;获取assets中的图片显示到页面&#xff0c;提取照片内的文字 一、OCR的含义 o…

综合实验1

一、配置IP地址 [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [AR1-GigabitEthernet0/0/0]int se4/0/0 [AR1-Serial4/0/0]ip add 15.1.1.1 24 [AR1-Serial4/0/0] [AR2]int g0/0/0 [AR2-GigabitEthernet0/0/0]ip add 192.168.2.254 24 [AR2-Giga…

Android 12.0 mtp模式下连接pc后显示的文件夹禁止删除copy重命名功能实现

1.前言 在12.0的系统rom定制化开发中,usb连接pc端的时候有好几种模式,在做otg连接pc端的时候,改成mtp模式的时候,在pc端可以看到产品设备 的显示的文件夹的内容,对于产品设备里面的文件在pc端禁止做删除重命名拷贝等操作功能的实现 2.mtp模式下连接pc后显示的文件夹禁止删…

Docker 容器编排利器 Docker Compose

文章目录 一、Docker Compose 简介二、Docker Compose 安装2.1 Mac、Windows 平台默认支持2.2 Linux 安装(通过包管理)2.2.1 安装2.2.2 测试2.2.3 卸载 2.3 使用PIP 安装与卸载2.3.1 PIP安装2.3.2 PIP 卸载 三、基本使用3.1 术语3.2 部署Flask 应用 四、Compose 常用命令4.1 命…

机器学习——LightGBM算法

机器学习——LightGBM算法 摘要&#xff1a; LightGBM是一种高效的梯度提升框架&#xff0c;它在处理大规模数据时表现出色&#xff0c;并且具有较快的训练速度和较低的内存消耗。本文将介绍LightGBM算法的原理、特点以及与传统GBDT算法的区别&#xff0c;并使用Python对其进行…

什么样的人适合学习网络安全?怎么学?_

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a;什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 会产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级学科&#xff0c;…

用html写一个贪吃蛇游戏

<!DOCTYPE html> <html> <head><title>贪吃蛇</title><meta charset"UTF-8"><meta name"keywords" content"贪吃蛇"><meta name"Description" content"这是一个初学者用来学习的小…

Linux(CentOS7)安装 MongoDB

目录 下载 上传 解压 创建mongodb.conf 创建数据文件夹和日志文件夹 启动服务 创建软链接 安装客户端 下载 上传 安装 下载 官方地址&#xff1a; Download MongoDB Community Server | MongoDBhttps://www.mongodb.com/try/download/community 上传 将下载好的 …

基于java+springboot+vue实现的电商个性化推荐系统(文末源码+Lw+ppt)23-389

摘 要 伴随着我国社会的发展&#xff0c;人民生活质量日益提高。于是对电商个性化推荐进行规范而严格是十分有必要的&#xff0c;所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套电商个性化推荐系统&#xff0c;帮…

C++对C的扩充(三)

5 带缺省参数的函数 一般情况下,实参个数应与形参个数相同。C允许实参个数与形参个数不同。办法是在形参表列中对一个或几个形参指定缺省值(或称默认值)。例如某一函数的首部可用如下形式: void fun(int a, int b,int c100) 在调用此函数时如写成fun(2,4,6),则形参a,b,c的值…

kubernetes(K8S)学习(五):K8S进阶(Lifecycle......偏理论)

K8S进阶&#xff08;Lifecycle......偏理论&#xff09; 一、Pod进阶学习之路1.1 Lifecycle1.2 重启策略1.3 静态Pod1.4 健康检查1.5 ConfigMap1.6 Secret1.7 指定Pod所运行的Node 二、Controller进阶学习之路2.1 Job & CronJob2.2 StatefulSet2.3 DaemonSet2.4 Horizontal…

Adobe Illustrator 2023 for Mac/Win:创意无限,设计无界

在数字艺术与设计领域&#xff0c;Adobe Illustrator 2023无疑是一颗璀璨的明星。这款专为Mac和Windows用户打造的矢量图形设计软件&#xff0c;以其强大的功能和卓越的性能&#xff0c;赢得了全球设计师的广泛赞誉。 Adobe Illustrator 2023在继承前代版本优点的基础上&#…

鸿蒙 UIAbility和Compent 生命周期

一、UIAbility的生命周期 在UIAbility的使用过程中&#xff0c;会有多种生命周期状态&#xff0c;掌握UIAbility的生命周期&#xff0c;对于应用的开发非常重要。 1、UIAbility的生命周期 UIAbility的生命周期主要分为以下4个&#xff1a; Create---Foreground---Background---…

多模态大模型:解析未来智能汽车的新引擎

多模态大模型&#xff1a;解析未来智能汽车的新引擎 1. 多模态大模型简介2. 多模态大模型在智能汽车中的应用2.1 感知与认知2.2 智能驾驶辅助2.3 智能交互 随着人工智能技术的不断进步&#xff0c;智能汽车已经从概念变成了现实&#xff0c;成为了当今科技领域的焦点之一。而在…

大模型预测,下一个token何必是文字?

太快了太快了… 大模型的生成技能&#xff0c;已经到了普通人看不懂的境界&#xff01; 它可以根据用户过去5年的体检报告&#xff0c;生成未来第1年、第2年、第3年的体检报告。 你看&#xff0c;这个生成的过程&#xff0c;是不是像极了ChatGPT&#xff0c;根据历史单词预测…

顺序栈、链式栈、顺序队列、链式队列的ADT及其实现

顺序栈ADT及其实现 链式栈ADT及其实现 顺序队列的ADT及其实现 在数组中队首队尾的分配方案 第三中方案&#xff0c;即达到入队出队操作的时间代价是O&#xff08;1&#xff09; 同时可充分利用空间&#xff0c;不会出现空间似乎用完了的假象 时间性能和空间性能发挥到最大 链…

快速上手Spring Cloud 九:服务间通信与消息队列

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

短视频矩阵系统---开发源头交付

短视频矩阵系统---开发源头交付 短视频矩阵系统的核心开发步骤包括以下几个方面&#xff1a; 1. 系统设计&#xff1a;根据需求分析&#xff0c;设计出相应的系统架构&#xff0c;包括数据库设计、系统功能模块设计等。 2. 开发基础功能&#xff1a;基础功能包括短视频的上传、…