五分钟看完 Linux 重点知识,建议收藏!

2024-09-02 10:08

本文主要是介绍五分钟看完 Linux 重点知识,建议收藏!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“朱小厮的博客”,选择“设为星标”

后台回复”1024“获取公众号专属1024GB资料

来源:rrd.me/f3v9F

写在前面

我们都知道Linux是一个支持多用户、多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机。

同时,为了保护每个人的隐私和工作环境,针对某一个文档(文件、目录),Linux系统定义了三种身份,分别是拥有者(owner)、群组(group)、其他人(others),每一种身份又对应三种权限,分别是可读(readable)、可写(writable)、可执行(excutable),通过这样的设计就可以保证每个使用者所拥有数据的隐密性。

文档属性

使用命令ls -al --full-time,或者此命令的简写ll可以查看文件或者目录的所有属性。如下:

从上面可以看到,每一行都有7列,分别是:

第一列

共10位,第1位表示文档类型,d表示目录,-表示文件,l表示链接文件,d表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。

后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x---的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可写,其他人没有任何权限。

第二列

表示链接数,表示有多少个文件链接到inode号码。

第三列

表示拥有者

第四列

表示所属群组

第五列

表示文档容量大小,单位字节

第六列

表示文档最后修改时间,注意不是文档的创建时间哦

第七列

表示文档名称。以点(.)开头的是隐藏文档

变更拥有者(owner)

位置

cat /etc/passwd

注意:必须是该位置下已存在的帐号。也就是在/etc/passwd中有记录的拥有者才能改变。

语法

chown [-R] [帐号名称] [文件或目录]
chown [-R] [帐号名称]:[群组名称] [文件或目录]

备注:此命令也可以顺便变更文档群组,但还是建议使用chgrp命令来变更文档群组。

选项

-R 递归变更,即连同次目录下的所有文件(夹)都要变更。

用法

chown daemon test 变更文件夹test账号为daemon。

chown daemon:root test 变更文件夹test群组为root。

chown root.users test 变更文件夹账号为root,群组为users

chown .root test 单独变更群组为root

备注:虽然也可以在拥有者与群组间加小数点(.),但为了避免有的同学命名中带点,故还是建议使用冒号“:”来隔开拥有者与群组,避免误判。

变更群组(group)

位置

etc/group

备注:从这里可以查看到所有群组

语法

chgrp [-options] [群组名] [文档路径]

备注:关于options,可以通过man chgrp、info chgrp、chgrp --help等命令查询详细用法。

用法

chgrp -R users test 改变test文件夹及其所有子文件(夹)的群组为users。

注意:群组名称不在位置内,将会报错invalid group。

变更权限

Linux文档的基本权限就三个,分别是read/write/execute,加上身份owner/group/others也一共也只有九个。权限变更的方式有2种,分别是符号法和数字法。

符号法

分别使用u,g,o来代表三种身份,a表示全部身份;分别使用r、w、x表示三种权限;分别使用+、-、=表示操作行为

语法

chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文档路径 

设置权限(=)

变更目录test的权限为任何人都可读、写、执行。

chmod u=rwx,g=rwx,o=rwx test 
--或
chmod ugo=rwx test 
--或
chmod a=rwx test

去掉权限(-)

去掉目录test执行权限

chmod u-x,g-x,o-x test 
--或
chmod ugo-x test 
--或
chmod a-x test

备注:执行权限(x),对目录而已就是其他用户能否cd test成为工作目录。

添加权限(+)

增加目录test执行权限

chmod u+x,g+x,o+x test 
--或
chmod ugo+x test 
--或
chmod a+x test

备注:很熟悉吧,如果我们编写完一个shell文件test.sh后,通过chmod a+x test.sh就添加了文件执行权限。

数字法

顾名思义,就是使用数字来代表权限,r,w,x分别为4,2,1。三种权限累加就可以得出一种身份的权限。

设置目录test的权限为任何人都可读、写、执行。

chmod 777 test 

设置目录test的权限为任何人都可读、写。

chmod 666 test 

赋予一个shell文件test.sh可执行权限,拥有者可读、写、执行,群组账号和其他人可读、执行。

chmod 755 test 

备注:有没有发现数字法更简单啊!!!

文件和目录权限差异

文档权限对于文件和目录有巨大的差异

文件

针对的是该文件内容

  • readable 可读取该文件的实际内容

  • writable 可以编辑、新增或者是修改该文件的内容

  • executable 有可以被系统执行的权限

备注:具有w权限不并不代表可以删除文件,删除文件是目录权限控制的范围。

那是因为目录的相关权限及属性是记录到目录的inode,而目录下的所有文件的名称和对应的索引文件(inode)号码又是记录到目录所属的block中,所以当我们读取某个文件时,必须先读到目录的inode,然后再读取目录的block信息,拿到待读取文件的索引信息。

即具体存储在哪个block上,最后才能读到文件内容(这块内容,需要先理解Linux的文件系统,比如Ext2/Ext3/Ext4,后面我们会详细介绍)。先记住文件权限仅仅对文件内容有效。

示例说明

使用root身份读取目录test001下的文件test001-1

查看目录物理全路径:pwd

列出有关的目录和文件:ll -di / /root /root/test001 /root/test001/test001-1

通过man ls 查看-i,全称inode,即 print the index number of each file

  • 目录/的inode:通过挂载点的信息找到inode号码为2的block。

  • 目录/的block:通过上一步骤找到的block,找到root/目录的inode号码为131073。

  • 目录root/的inode:读取编号为131073的inode找到目录的block。

  • 目录root/的block:通过上一步骤找到的block,找到root/test001/目录的inode号码为527524。

  • 目录root/test001/的inode:读取编号为527524的inode找到目录的block。

  • 目录root/test001/的block:通过上一步骤找到的block,找到文件test001-1目录的inode号码为527526。

  • 文件test001-1的inode:读取编号为527526的inode找到文件的block。

  • 文件test001-1的block:通过上一步骤找到的block,读取文件内容。

由于使用的是root身份,具有读取任何文档的权限。如果,使用一般账号,上面每一个步骤的读取,还会匹配权限。

目录

针对的是该目录下的文件对象

  • readable 具有读取目录结构清单的权限,即可以通过ls命令,查询该目录清单。

  • writable 具有变动该目录结构清单的权限,即可以创建、迁移、删除、更名该目录下的文件。

  • executable 具备进入该目录的权限,即可以通过cd命令,成为工作目录。

备注:从上面可以得出,开放目录给任何人浏览时,至少需要赋予r或x权限。读取目录文件内容,至少需要目录权限x和文件权限r。

总结

Linux的每个文档可以分别针对三种身份赋予rwx权限;chgrp命令变更文件群组,chmod命令变更文件权限,chown变更文件拥有者;那么以后记得使用文档权限来保护数据的安全性哦。

想知道更多?描下面的二维码关注我

【精彩推荐】

  • 这次终于不再为iptables范迷糊

  • 为什么RedisCluster会设计成16384个槽呢?

  • 阿里巴巴工程师:Java编程技巧

朕已阅 

这篇关于五分钟看完 Linux 重点知识,建议收藏!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129669

相关文章

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

Linux部署jar包过程

《Linux部署jar包过程》文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法... 目录linux部署jar包1.统一jdk版本2.打包插件依赖3.修改密码4.执行jar包总结Linux部署jar包部署

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s