当前位置: 首页 > article >正文

linux-----文件命令

文件和目录的基本概念

  • 文件类型
    • 普通文件:这是最常见的文件类型,用于存储数据,如文本文件、二进制文件等。文本文件可以用文本编辑器打开并查看内容,二进制文件则包含机器可执行的代码或其他特定格式的数据。
    • 目录文件:也称为文件夹,用于组织和存储文件和其他子目录。目录文件包含了文件和子目录的名称以及它们在磁盘上的位置信息。
    • 设备文件:分为字符设备文件和块设备文件。字符设备文件以字符为单位进行数据传输,如终端设备(/dev/tty);块设备文件以块为单位进行数据传输,通常用于存储设备,如硬盘(/dev/sda)。
    • 链接文件:包括硬链接和软链接。硬链接是文件的一个别名,它直接指向文件的inode(文件索引节点,存储文件的元数据),多个硬链接指向同一个文件,删除其中一个硬链接不影响文件本身和其他硬链接。软链接(也称为符号链接)是一个特殊的文件,它指向另一个文件或目录的路径,类似于Windows中的快捷方式。

在这里插入图片描述

  1. 文件和目录的路径表示
    • 绝对路径:从根目录(/)开始的完整路径,例如/home/user/Documents/file.txt,其中/是根目录,home是根目录下的一个目录,userhome目录下的用户目录,Documents是用户目录下的文件夹,file.txtDocuments文件夹中的文件。
    • 相对路径:相对于当前工作目录的路径。例如,如果当前工作目录是/home/user,要访问Documents/file.txt,可以使用相对路径Documents/file.txt。相对路径中,..表示上级目录,.表示当前目录。
  2. 文件操作命令
    • 查看文件内容
      • cat命令:用于连接文件并打印到标准输出。例如,cat file.txt会将file.txt文件的内容全部显示在屏幕上。如果有多个文件,cat file1.txt file2.txt会依次显示这些文件的内容。
      • less命令:与cat类似,但less可以分页查看文件内容,适合查看大文件。通过上下箭头键、Page Up和Page Down键来浏览文件内容,按q键退出查看。例如,less file.txt
      • headtail命令head命令用于查看文件的开头部分内容,默认显示前10行,如head file.txttail命令用于查看文件的末尾部分内容,默认也显示10行,如tail file.txt。可以通过-n选项指定显示的行数,例如head -n 5 file.txt显示文件的前5行。
    • 创建和编辑文件
      • touch命令:用于创建一个空文件或者更新文件的访问时间和修改时间。例如,touch new_file.txt会创建一个名为new_file.txt的空文件。如果文件已经存在,它会更新文件的时间戳。
      • nanovivim命令:这些是文本编辑器。nano是一个简单易用的文本编辑器,例如,nano file.txt可以打开file.txt文件进行编辑,编辑完成后按Ctrl + X保存并退出。vivim是功能更强大但相对复杂的文本编辑器,有多种操作模式(命令模式和插入模式等)。
    • 复制、移动和删除文件
      • cp命令:用于复制文件或目录。例如,cp file.txt copy_of_file.txt会将file.txt文件复制为copy_of_file.txt。如果要复制目录,需要使用-r选项(递归复制),如cp -r dir1 dir2会将dir1目录及其内容复制到dir2目录。
      • mv命令:用于移动文件或目录,也可以用于重命名文件。例如,mv file.txt new_location/file.txtfile.txt移动到new_location目录下。如果new_location不存在,则相当于重命名文件,如mv old_name.txt new_name.txt
      • rm命令:用于删除文件或目录。例如,rm file.txt会删除file.txt文件。要删除目录,需要使用-r选项(递归删除),如rm -r dir1会删除dir1目录及其所有内容。使用rm命令要谨慎,因为文件一旦删除很难恢复。
  3. 目录操作命令
    • 创建和删除目录
      • mkdir命令:用于创建新的目录。例如,mkdir new_dir会创建一个名为new_dir的目录。可以使用-p选项来创建多级目录,如mkdir -p dir1/dir2/dir3会创建dir1dir2dir3三级目录。
      • rmdir命令:用于删除空目录。例如,rmdir empty_dir会删除名为empty_dir的空目录。如果目录非空,需要使用rm -r命令来删除。
    • 查看目录内容和切换目录
      • ls命令:用于列出目录中的文件和子目录。例如,ls会列出当前目录下的文件和子目录。可以使用-l选项以长格式列出详细信息(包括文件权限、所有者、大小、修改时间等),如ls -l;使用-a选项列出包括隐藏文件(文件名以.开头的文件)在内的所有文件和目录,如ls -a
      • cd命令:用于切换当前工作目录。例如,cd /home/user/Documents会将当前工作目录切换到/home/user/Documents。可以使用cd..回到上级目录,cd(不带参数)会切换到用户的主目录。
    • 目录权限设置
      • chmod命令:用于改变文件或目录的访问权限。权限分为读(r)、写(w)和执行(x)三种,分别对应数字4、2、1。例如,chmod 755 file.txt会将文件file.txt的权限设置为所有者有读、写、执行权限(7 = 4 + 2 + 1),所属组和其他用户有读和执行权限(5 = 4 + 1)。
      • chown命令:用于改变文件或目录的所有者和所属组。例如,chown user:group file.txt会将file.txt文件的所有者设置为user,所属组设置为group
      • chgrp命令:用于改变文件或目录的所属组。例如,chgrp new_group file.txt会将file.txt文件的所属组更改为new_group

如何在Linux中进行文件和目录的权限管理?

  1. 理解文件和目录权限的基本概念

    • 权限的表示方式
      • Linux中的文件和目录权限分为三种:读(r)、写(w)和执行(x)。对于文件来说,读权限允许用户查看文件内容;写权限允许用户修改文件内容;执行权限允许用户将文件作为程序来运行。对于目录来说,读权限允许用户查看目录中的文件和子目录列表;写权限允许用户在目录中创建、删除或重命名文件和子目录;执行权限允许用户进入目录。
      • 权限通常用10个字符表示,例如-rw - r - - r - -。第一个字符表示文件类型(-表示普通文件,d表示目录,l表示链接等),后面9个字符每3个一组,分别表示文件所有者、所属组和其他用户的权限。每组的三个字符顺序为读、写、执行权限。如果没有某种权限,则用-表示。
    • 权限的数字表示法
      • 可以用数字来表示权限,读权限对应数字4,写权限对应数字2,执行权限对应数字1。例如,权限rw -对应的数字是4 + 2 = 6,r - x对应的数字是4 + 1 = 5。将所有者、所属组和其他用户的权限数字组合起来,就可以用一个三位数来表示文件或目录的权限。例如,755表示所有者有读、写、执行权限(7 = 4 + 2 + 1),所属组和其他用户有读和执行权限(5 = 4 + 1)。
  2. 使用chmod命令修改权限

    • 符号模式(Symbolic Mode)
      • 基本语法chmod [ugoa][+-=][rwx] [文件或目录名]。其中,u代表所有者(user),g代表所属组(group),o代表其他用户(others),a代表所有用户(all);+表示添加权限,-表示去除权限,=表示设置权限为指定的值;rwx分别代表读、写、执行权限。
      • 示例1:给文件file.txt的所有者添加执行权限,可以使用chmod u + x file.txt
      • 示例2:去除文件file.txt所属组的写权限,使用chmod g - w file.txt
      • 示例3:将文件file.txt的其他用户权限设置为只读,使用chmod o = r file.txt
    • 绝对模式(Absolute Mode)
      • 基本语法chmod [权限数字] [文件或目录名]
      • 示例1:将文件file.txt的权限设置为rw - r - - r - -,可以使用chmod 644 file.txt
      • 示例2:将目录mydir的权限设置为rwxr - xr - x,使用chmod 755 mydir
  3. 使用chown命令改变所有者和所属组

    • 基本语法chown [所有者][:所属组] [文件或目录名]。如果只改变所有者,所属组可以省略;如果要同时改变所有者和所属组,用:分隔两者。
    • 示例1:将文件file.txt的所有者改为newuser,使用chown newuser file.txt
    • 示例2:将文件file.txt的所有者改为newuser,所属组改为newgroup,使用chown newuser:newgroup file.txt
  4. 使用chgrp命令改变所属组

    • 基本语法chgrp [所属组] [文件或目录名]
    • 示例1:将文件file.txt的所属组改为newgroup,使用chgrp newgroup file.txt
  5. 特殊权限(SUID、SGID和Sticky Bit)

    • SUID(Set User ID)
      • 概念:当一个可执行文件设置了SUID权限后,用户在执行这个文件时,将以文件所有者的身份来运行。这在一些需要特殊权限的程序中很有用,例如passwd命令。它的权限表示为s(小写),在所有者的执行权限位(x)位置。如果原本没有执行权限,则显示为S(大写)。
      • 设置方法:使用chmod u + s [可执行文件名]来设置SUID权限。例如,chmod u + s myprogram
    • SGID(Set Group ID)
      • 概念:对于文件,设置SGID后,用户在执行文件时,将以文件所属组的身份运行。对于目录,在目录中创建的文件将自动继承目录的所属组。它的权限表示为s(小写),在所属组的执行权限位(x)位置。如果原本没有执行权限,则显示为S(大写)。
      • 设置方法:对于文件,使用chmod g + s [可执行文件名];对于目录,使用chmod g + s [目录名]。例如,chmod g + s myprogram(设置文件的SGID),chmod g + s mydir(设置目录的SGID)。
    • Sticky Bit
      • 概念:主要用于目录,当一个目录设置了Sticky Bit权限后,只有文件的所有者、目录的所有者或者root用户才能删除目录中的文件。它的权限表示为t(小写),在其他用户的执行权限位(x)位置。如果原本没有执行权限,则显示为T(大写)。
      • 设置方法:使用chmod o + t [目录名]来设置Sticky Bit权限。例如,chmod o + t mysharedir
  6. chmod命令示例

    • 符号模式示例
      • 添加权限
        • 假设我们有一个文件test.txt,其初始权限为rw - r - - r - -(所有者有读写权限,所属组和其他用户只有读权限)。现在我们要给所属组添加写权限。
        • 命令为:chmod g + w test.txt
        • 执行后,文件权限变为rw - rw - r - -
      • 去除权限
        • 对于上述文件test.txt,如果要去除其他用户的读权限。
        • 命令为:chmod o - r test.txt
        • 执行后,文件权限变为rw - rw - - - -
      • 设置权限
        • 假设有一个文件new_file.txt,初始权限为rw - r - - r - -,我们想将所有者的权限设置为只有读权限,所属组有读和执行权限,其他用户有读和执行权限。
        • 命令为:chmod u = r,g = rx,o = rx new_file.txt
        • 执行后,文件权限变为r - - r - x r - x
    • 绝对模式示例
      • 设置文件权限
        • 有一个可执行文件my_program,我们想设置其权限为所有者有读、写、执行权限,所属组有读和执行权限,其他用户有读和执行权限。
        • 对应的权限数字为755,命令为:chmod 755 my_program
        • 这样,文件my_program就具有了相应的权限,便于用户执行和共享。
      • 设置目录权限
        • 对于一个新创建的目录my_dir,我们希望设置权限为所有者有全部权限,所属组和其他用户有读和执行权限,以方便团队成员共享访问目录内容。
        • 对应的权限数字为755,命令为:chmod 755 my_dir
        • 现在,团队成员可以根据权限访问my_dir目录及其内部文件。
  7. chown命令示例

    • 改变所有者
      • 假设我们有一个文件shared_file.txt,当前所有者是user1,我们要将所有者改为user2
      • 命令为:chown user2 shared_file.txt
      • 执行后,文件shared_file.txt的所有者变为user2,所属组不变。
    • 同时改变所有者和所属组
      • 对于上述文件shared_file.txt,如果我们还想将所属组从当前组(假设为group1)改为group2
      • 命令为:chown user2:group2 shared_file.txt
      • 这样,文件shared_file.txt的所有者变为user2,所属组变为group2
  8. chgrp命令示例

    • 假设有一个文件project_file.txt,所属组为team1,我们想将其所属组改为team2
    • 命令为:chgrp team2 project_file.txt
    • 执行后,文件project_file.txt的所属组变为team2,所有者不变。
  9. 特殊权限示例

    • SUID示例
      • 假设有一个自定义的用户命令文件custom_command,我们希望普通用户在执行这个文件时,能够以文件所有者(假设是admin)的权限来运行,以访问一些受限的资源。
      • 首先,确保文件custom_command是可执行的,然后使用命令:chmod u + s custom_command
      • 现在,当普通用户执行custom_command时,会以admin的权限运行。
    • SGID示例(文件)
      • 假设有一个可执行文件shared_program,我们希望用户在执行这个文件时,以文件所属组(假设是shared_group)的权限运行,方便组内成员共享资源。
      • 命令为:chmod g + s shared_program
      • 这样,当用户执行shared_program时,会以shared_group的权限运行。
    • SGID示例(目录)
      • 有一个共享目录shared_folder,我们希望在这个目录中创建的文件自动继承目录的所属组(假设是collab_group),方便团队协作。
      • 命令为:chmod g + s shared_folder
      • 之后,在shared_folder目录中创建的文件所属组都会是collab_group
    • Sticky Bit示例
      • 对于一个共享的临时文件目录temp_dir,我们希望只有文件的所有者、目录的所有者或者root用户才能删除目录中的文件,防止其他用户误删。
      • 命令为:chmod o + t temp_dir
      • 这样,在temp_dir目录中,文件的删除操作受到限制,增强了文件的安全性。
  10. chmod命令示例

    • 符号模式示例
      • 添加权限
        • 假设我们有一个文件test.txt,其初始权限为rw - r - - r - -(所有者有读写权限,所属组和其他用户只有读权限)。现在我们要给所属组添加写权限。
        • 命令为:chmod g + w test.txt
        • 执行后,文件权限变为rw - rw - r - -
      • 去除权限
        • 对于上述文件test.txt,如果要去除其他用户的读权限。
        • 命令为:chmod o - r test.txt
        • 执行后,文件权限变为rw - rw - - - -
      • 设置权限
        • 假设有一个文件new_file.txt,初始权限为rw - r - - r - -,我们想将所有者的权限设置为只有读权限,所属组有读和执行权限,其他用户有读和执行权限。
        • 命令为:chmod u = r,g = rx,o = rx new_file.txt
        • 执行后,文件权限变为r - - r - x r - x
    • 绝对模式示例
      • 设置文件权限
        • 有一个可执行文件my_program,我们想设置其权限为所有者有读、写、执行权限,所属组有读和执行权限,其他用户有读和执行权限。
        • 对应的权限数字为755,命令为:chmod 755 my_program
        • 这样,文件my_program就具有了相应的权限,便于用户执行和共享。
      • 设置目录权限
        • 对于一个新创建的目录my_dir,我们希望设置权限为所有者有全部权限,所属组和其他用户有读和执行权限,以方便团队成员共享访问目录内容。
        • 对应的权限数字为755,命令为:chmod 755 my_dir
        • 现在,团队成员可以根据权限访问my_dir目录及其内部文件。
  11. chown命令示例

    • 改变所有者
      • 假设我们有一个文件shared_file.txt,当前所有者是user1,我们要将所有者改为user2
      • 命令为:chown user2 shared_file.txt
      • 执行后,文件shared_file.txt的所有者变为user2,所属组不变。
    • 同时改变所有者和所属组
      • 对于上述文件shared_file.txt,如果我们还想将所属组从当前组(假设为group1)改为group2
      • 命令为:chown user2:group2 shared_file.txt
      • 这样,文件shared_file.txt的所有者变为user2,所属组变为group2
  12. chgrp命令示例

    • 假设有一个文件project_file.txt,所属组为team1,我们想将其所属组改为team2
    • 命令为:chgrp team2 project_file.txt
    • 执行后,文件project_file.txt的所属组变为team2,所有者不变。
  13. 特殊权限示例

    • SUID示例
      • 假设有一个自定义的用户命令文件custom_command,我们希望普通用户在执行这个文件时,能够以文件所有者(假设是admin)的权限来运行,以访问一些受限的资源。
      • 首先,确保文件custom_command是可执行的,然后使用命令:chmod u + s custom_command
      • 现在,当普通用户执行custom_command时,会以admin的权限运行。
    • SGID示例(文件)
      • 假设有一个可执行文件shared_program,我们希望用户在执行这个文件时,以文件所属组(假设是shared_group)的权限运行,方便组内成员共享资源。
      • 命令为:chmod g + s shared_program
      • 这样,当用户执行shared_program时,会以shared_group的权限运行。
    • SGID示例(目录)
      • 有一个共享目录shared_folder,我们希望在这个目录中创建的文件自动继承目录的所属组(假设是collab_group),方便团队协作。
      • 命令为:chmod g + s shared_folder
      • 之后,在shared_folder目录中创建的文件所属组都会是collab_group
    • Sticky Bit示例
      • 对于一个共享的临时文件目录temp_dir,我们希望只有文件的所有者、目录的所有者或者root用户才能删除目录中的文件,防止其他用户误删。
      • 命令为:chmod o + t temp_dir
      • 这样,在temp_dir目录中,文件的删除操作受到限制,增强了文件的安全性。
        在这里插入图片描述

http://www.kler.cn/a/446991.html

相关文章:

  • MobaXterm 连接不上VMware 的Ubuntu 虚拟机
  • 防火墙技术与网络安全
  • web实验三
  • VMware安装Ubuntu 16.04以及安装好后初步使用配置!
  • Mybatis-plus-Join--分页查询
  • 数据结构:B树与B+树
  • Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)
  • AdminJS - 集成 MySQL 的现代化管理面板开发指南
  • CSS3 实现火焰-小火苗效果
  • linux中大内核锁、互斥锁、信号量、完成变量、自旋锁区别
  • 【AIGC-ChatGPT进阶提示词-《动图生成》】怪物工厂:融合想象力与创造力的奇幻世界
  • vscode 使用说明
  • 四川托普信息技术职业学院教案1
  • 智能挂号系统设计典范:SSM 结合 Vue 在医院的应用实现
  • Windows下安装Rabbit MQ
  • 【线性代数】理解矩阵乘法的意义(点乘)
  • 安装Mac软件遇到问题常见报错
  • 机器学习-逻辑回归和softmax回归
  • go语言zero框架中启动脚本.sh的编写与配置
  • go语言 爬虫 钉钉群机器人
  • 玩游戏没有flash插件的解决方案(No Flash)
  • 【RAII | 设计模式】C++智能指针,内存管理与设计模式
  • 音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
  • python学习笔记—9—复习
  • 详细介绍如何使用rapidjson读取json文件
  • 《向量数据库指南》——RAG破局,大模型新纪元!