宜宾网站制作,做外汇最好的财经网站,西地那非片有依赖性吗,seo软件定制系列文章目录
【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍 【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍 【跟小嘉学 Linux 系统架构与开发】三、如何查看帮助文档 【跟小嘉学 Linux 系统架构与开发】四、文件和目录的权…系列文章目录
【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍 【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍 【跟小嘉学 Linux 系统架构与开发】三、如何查看帮助文档 【跟小嘉学 Linux 系统架构与开发】四、文件和目录的权限 文章目录 系列文章目录[TOC](文章目录) 前言一、使用者(owner)、用户组(group)、其他(others)二、文件权限的概念2.1、文件属性2.2、如何修改文件的属性和权限2.2.1、修改文件所属用户组(chgrp)2.2.2、修改文件的所有者(chown)2.2.3、修改文件的权限(chmod)2.2.3.1、使用数字来修改权限2.2.3.2、使用符号来修改文件权限 2.2.4、权限的意义2.2.4.1、权限对文件的意义2.2.4.2、权限对目录的意义 三、文件类型3.1、正规文件(regular file)3.1.1、纯文本文档(ASCII)3.1.2、二进制文件(binary)3.1.3、数据格式文件(data) 3.2、目录(directory)3.3、 连接文件(link)3.4、设备与装置文件(device)3.5、 数据接口文件sockets3.6、数据传输文件FIFOpipe 四、文件的扩展名五、Linux 文件的限制5.1、Linux文件名限制5.1.1、文件名长度限制5.1.2、Linux文件名的限制 5.2、文件大小限制5.2.1、FAT32 文件系统5.2.2、ex3/ext45.2.3、xfs5.2.4、exFAT 六、目录配置6.1、Filesytem Hierarchy Standard(FHS)6.2、第一部分FHS要求必须要存在的目录6.3、第二部分FHS 建议可以存在的目录6.4、放置的内容6.5、/usr 目录存放的内容6.5.1、第一部分FHS 要求必须要存在的目录6.5.1、第二部分FHS 建议可以存在的目录 6.6、/var 目录存放的内容6.6.1、第一部分FHS 要求必须要存在的目录 6.7、目录树(directory tree)6.8、绝对路径和相对路径 七、Linux Standard Base(LSB)7.1、LSB 简介7.2、如何查看7.2.1、uname7.2.2、lsb_release7.2.3、查看文件
前言
Linux的文件或者目录的使用者分为三类owner、group、others、且三种使用者各有read、write、execute等权限。
参考资料
《鸟哥的Linux私房菜繁体版》《鸟哥的Linux私房菜简体版》Filesystem Hierarchy Standar 一、使用者(owner)、用户组(group)、其他(others)
所谓的使用者就是文件的拥有者所谓的用户组就是用户所在的组所谓的其他除了所有者以及用户组所在的用户的用户都是其他用户
所有和用户相关的信息都存放 /etc/passwd、/etc/shadow、/etc/group 文件之中。 详细的用户和用户组我们会在用户管理章节详细介绍。
二、文件权限的概念
我们讲解文件的权限就是以后大家能够在遇到 Permission deny 的时候能够知道事权限设置不正确导致的问题。
2.1、文件属性
raojiamin192 ruoyi_radius % vagrant ssh
[vagrant10 ~]$ su -
Password:
[root10 ~]#
[root10 ~]# ls -al
total 36
dr-xr-x---. 2 root root 137 Dec 4 2020 .
dr-xr-xr-x. 18 root root 255 Apr 2 17:12 ..
-rw-------. 1 root root 5207 Dec 4 2020 anaconda-ks.cfg
-rw-r--r--. 1 root root 18 May 11 2019 .bash_logout
-rw-r--r--. 1 root root 176 May 11 2019 .bash_profile
-rw-r--r--. 1 root root 176 May 11 2019 .bashrc
-rw-r--r--. 1 root root 100 May 11 2019 .cshrc
-rw-------. 1 root root 5006 Dec 4 2020 original-ks.cfg
-rw-r--r--. 1 root root 129 May 11 2019 .tcshrc我们可以看到 ls -al 这个命令以列表形式写出当前目录下的所有文件(包括隐藏文件)的信息。
第一行total 36 是公共文件大小之和默认单位是k第一列-rw-r--r--. 代表了文件的类型与权限属性(permission)第一个字符表示的文件的类型 d表示目录-表示普通文件l 表示连接文件b表示可存储的设备c表示字符设备例如键盘、鼠标等 接下来三个字符一组都是rwx等组合其中 r 代表可读(read)、w 代表可写 wite、x 代表可执行 execute- 代表没有权限第一组代表文件所有者拥有的权限第二组代表那个文件的所属群组第三组代表其他用户的权限 第二列链接数(links)表示有多少文件连接到此节点(i-node)关于i-node我们在讲解内核原理和文件系统的时候会具体在详细讲解第三列表示文件或目录的所有者用户第四列表示文件或目录的所属用户组第五列表示文件的容量大小第六列表示文件的创建时间或更新时间格式为月、日、时间如果时间较久了那么就会仅仅显示年份而已如果想要显示完整的时间可以使用 ls -l --fulltime命令第七列表示是文件的名称文件如果以.开头则是Linux系统的隐藏文件
2.2、如何修改文件的属性和权限
2.2.1、修改文件所属用户组(chgrp)
使用 chgrp(change group ownership的缩写) 命令可以用来修改文件的所有组
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --referenceRFILE FILE...用法1修改用户组用法2参考 RFILE 来修改用户组
2.2.2、修改文件的所有者(chown)
其用法和chgrp 差不多
chown可以修改文件的所有者
2.2.3、修改文件的权限(chmod)
使用 chmod 可以 修改用户的权限我们可以用 o(other)、g(group)、u(user)来表示用户信息用read(r、4)、write(w、2)、execute(x、1)来表示权限。
2.2.3.1、使用数字来修改权限
chmod 644 .bashrc2.2.3.2、使用符号来修改文件权限
chmod urwx,gorx .bashrc
chmod aw .bashrc
chmod a-x .bashrc表示设置- 表示减去 表示加上
2.2.4、权限的意义
2.2.4.1、权限对文件的意义
rread表示可以读取文件的内容信息wwrite表示可以编辑、新增文件或修改文件的内容但不包括删除文件xexecute表示文件可以被系统执行
2.2.4.2、权限对目录的意义
r(read contents in directory)表示拥有可以读取目录的结构权限例如 ls 命令w(modify contents in directory)表示有如下权限 创建新的文件或目录的权限删除已经存在的文件或目录将已存在的文件和目录进行重命名移动目录内的文件、目录位置 x(access directory)表示使用者是否拥有进入该目录的作为工作目录work directory的权限例如 cd(change directory) 命令
三、文件类型
3.1、正规文件(regular file)
3.1.1、纯文本文档(ASCII)
3.1.2、二进制文件(binary)
例如我们 c、cpp 或 rust 编译出来的可执行程序默认都是 a.out文件。
3.1.3、数据格式文件(data)
3.2、目录(directory)
3.3、 连接文件(link)
相当于超链接
3.4、设备与装置文件(device)
- 区块设备文件(block)例如硬盘、软盘等
- 字符设备文件(character)例如鼠标、键盘、 3.5、 数据接口文件sockets
3.6、数据传输文件FIFOpipe
四、文件的扩展名
Linux 文件是否能够被执行看是否有可执行的权限不像 Windows 系统对文件有扩展名的区分例如.exe、.com、.bat等等。
但是我们通常也会借助扩展名来了解文件是什么东西例如
*.sh: shell 脚本文件*Z, *.tar, *.tar.gz, *.zip, *.tgz、zip等 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的由于不同的压缩软件而取其相关的扩展名啰*.php、*.c、*.cpp、*.py、*.css、*.js、*.rs、*.html、*.java等编程语言编写的文件等
五、Linux 文件的限制
5.1、Linux文件名限制
5.1.1、文件名长度限制
ext2、3 如果你使用的是 ex2、3xt3文件系统那么文件或目录的最大容许文件名为255个字符包含完整路径名称及目录(/)之完整名为4096个字符
5.1.2、Linux文件名的限制
最好不要使用下面这些字符因为这些字符都是有特殊含义的
* ? ; ! [ ] | \ ( ) { }5.2、文件大小限制
5.2.1、FAT32 文件系统
单个文件大小限制为 4GB
5.2.2、ex3/ext4
在ext3 中单个文件大小为16GB 在ext4 中单个文件大小限制为16TB如果启用啦 largefile4 可以提升到256 TB
5.2.3、xfs
理论上没有限制实际上受到资源限制
5.2.4、exFAT
最大文件大小为16EB但是linux支持可能受限
六、目录配置
我们可以发现不同的Linux发行版的目录的设置、软件的位置、目录的内容都大差不差呢因为他们都遵守一套标准的依据。
6.1、Filesytem Hierarchy Standard(FHS)
由于利用 LInux 来开发产品和发行版的社区的公司和个人实在太多了如果每个人都按照自己的想法来防止目录和文件会造成很多困扰。
FHS一句文件系统的使用的频率、是否允许随意变动将目录分为了如下几种类型
可分享的(shareable)不可分享的不可变的(static)/usr/etc不可变的(static)/opt/boot不可变的(variable)/var/mail/var/run不可变的(variable)/var/spool/news/var/lock
可分享的可以分享给其他系统挂载使用的目录不可分享的不必刻意分享给其他主机不变的不会经常变动例如函数库、文件说明、系统管理员所管理的主机服务配置等可变的经常改变的资料例如登录信息、新闻等‘
6.2、第一部分FHS要求必须要存在的目录
/bin系统有很多放置可执行文件的目录/bin 放置的是担任维护模式下还能够被操作的命令在 /bin 目录下的命令可以被 root 和普通用户所使用例如cat、chmod、chown、date、mv、mkdir、cp、bash等/boot目录主要放置开机会使用的文件包括 Linux 内核文件、开关机菜单等配置Linux 内核常见的文件名为 vmlinuz如果使用 grub2 这种开机管理程序则还会存在/boot/grub2目录/dev在Linux系统上任何设备都是以文件的形式存在的这个目录之中的例如/dev/null, /dev/zero, /dev/tty, /dev/loop*, /dev/sd*等等/etc系统的主要配置文件都在这个目录例如用户账号和密码服务的配置文件一般情况下这个目录的文件属性都是使用者可以查看但是只有root才有权力修改FHS建议不要放置可执行程序在这个目录之中。/lib系统的函数库非常/lib 放置的则是开机会用的函数库以及/bin或/sbin底下的命令会调用的函数库。另外 FHS 还要求底下的目录必须存在 /lib/modules/media这个目录下放置的是可以移除的设备例如光盘、DVD等设备暂时挂载在这例如 /media/floppy、/media/cdrom等等/mnt这个目录用途和 /media类似这个目录用来暂时挂载使用/opt这个目录是第三方软件安装的目录例如KDE等不过以前的 Linux 喜欢放置在 /usr/local目录下/sbinLinux 很多命令是用来设置系统环境的只有 root 命令才可以来设置其他用户只能查询放在/sbin 目录下都是为开机过程所需要的包括开机、修复、还原系统所需要的命令。自行安装的软件所所产生的系统可执行程序会安装到 /usr/sbin 之中/srvsrv 可以看作 service 的缩写一些网络服务启动之后这些服务所需要的资料等目录例如某些http服务不过现在apache服务等www目录一般在 /var/www/html/tmp这个目录一般使用者或正在执行的程序暂时存放的非地方任何人都可以存取这个额目录不可以放置资料。
6.3、第二部分FHS 建议可以存在的目录
/home: 这是系统预设的用户主目录(home directory)一般情况下新增账号的时候都会在这个目录下创建 ~: 代表当前用户的主目录~dmtsai代表 dmtsai 的主目录 /libqual用来存放 /lib 不同格式的二进制函数库例如 64位的函数库 /lib64/root系统管理员的主目录因为担任模式下挂载跟目录时就能够拥有root的主目录
6.4、放置的内容
下面目录不是 FHS 所定义的标准不过这些目录也是需要了解一下的。
/lostfound这里放置的是 ext2/ext3/ext4 文件系统才会产生的目录该目录目的是文件系统发生错误时讲一些丢失的片段放置到该目录下如果使用 xfs 文件系统就不会存在该目录了/proc这个目录是虚拟文件系统(virtual filesystem)这里的文件是系统核心、进程信息、设备状态、网络状态等等不会占用任何硬盘空间例如/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/ioports、/proc/net/* - /sys该目录与 /proc非常类似也是虚拟文件系统最主要记录与系统硬件信息相关的内容包括已经载入的内核模块、硬件配置等
在 Centos 7.x 已经将 /sbin、/bin、lib 统统移动到了 /usr
6.5、/usr 目录存放的内容
/usr 目录是 Unix Software Resource 的缩写是Unix软件资源的目录就像 windows的 Program files 目录类似
6.5.1、第一部分FHS 要求必须要存在的目录
/usr/bin普通用户所能够使用的指令都存在在目前 Centos7 已经将素有使用者的命令都放置在这个目录下而使用连接文件方式链接到 /bin 目录/usr/lib基本上与 /lib 目录功能相同/lib就是链接到此目录的/usr/lcoal系统管理员在本机自行安装下载的软件建议安装到这个目录该目录也会有bin、etc、include、lib等目录/usr/sbin非系统正常运行所需要的系统的命令最常见的就是服务器命令不过基本上与 /sbin也差不多/usr/share放置共享文件例如 man、doc、zoneinfo等等
6.5.1、第二部分FHS 建议可以存在的目录
/usr/games游戏相关的目录/usr/include c/cpp 的头文件/usr/libexec某些不被普通使用者惯用的软件或脚本大部分是X window 下的操作命令/usr/libqual与 /libqual 功能相似/usr/src/一般源代码都放在该目录Linux 核心代码一般建议放置 /usr/src/linux 目录下
6.6、/var 目录存放的内容
/var 目录包括 缓存、登录日志、软件产生的日志程序锁文件、运行文件等等都存在该目录
6.6.1、第一部分FHS 要求必须要存在的目录
/var/cache: 应用程序运行过程中产生的缓存/var/lib程序本身运行过程中需要用到的文件例如 mysql 的文件放置在 /var/lib/mysql/var/lock: 一些文件或设备只能被一个程序所使用就需要上锁就会生成文件咋i这个目录之中/var/log: 这里放置的登录日志/var/log/messages、/var/log/wtmp/var/mail: 这里放置个人邮件的目录也被放置到 /var/spool/mail这两个目录互为链接有时候/var/run/ 某些程序会将他们的 PID 放置在该目录下至于PID 位们会在后面章节详细讲解到这个目录连接到 /run 目录/var/spool:这个目录放置等待其他程序使用的资料通常使用后就会被删除
不同发行版的差异
Centos 的网络配置文件 /etc/sysconfig/network-scripts/目录SuSE 的网络配置文件 /etc/sysconfig/network 目录
目前 Centos 7 的情况
/bin -- /usr/bin/sbin -- /usr/sbin/lib -- /usr/lib/lib64 -- /usr/lib64/var/lock -- /run/lock/var/run -- /run
6.7、目录树(directory tree)
目录树的特征
目录树的开始为 根目录(/ root)每一个目录不止能使用本地分区的文件系统也可以使用网络的文件系统也就是说可以利用 Network File System(NFS)服务挂载目录每个文件在此目录树的文件名都是独一无二的
6.8、绝对路径和相对路径
文件的路径分为了 绝对路径(absolute)和相对路径(relative)。
绝对路径(absolute)使用 / 开始的文件名或目录名。例如 /root相对路径(relative)相对路径相对当前路径。例如 ./home 或者 ../../home
两个特殊的目录
.代表当前目录也可以使用 ./来表示..代表上一级目录也可以使用 ../来表示
七、Linux Standard Base(LSB)
7.1、LSB 简介
Linux Standard Base(LSB) 目前是 FSG(Free Standards Group) 的最为活跃的工作组使命就是开发一系列的标准来增强 Linux 发行版的兼容性使得各个软件都可以很好地在兼容LSB标准的系统上运行
LSB 以 POSIX 和 SUS 标准为基础并对其他领域中的源代码进行了扩充
LSB 制定了应用程序与运行环境之间的二进制接口
Single UNIX SpecificationSUSSystem V Interface DefinitionSVIDcompilers for the Intel Itanium processorC ABISystem V Application Binary InterfaceABI
LSB目前支持7种体系结构IA32、IA64、X86_64、PPC32、PPC64、S390、S390x
7.2、如何查看
我们可以使用 uname 命令 或者 lsb_release 命令来查看
7.2.1、uname
[root10 ~]# uname -a. # 查看所有信息
Linux 10.0.2.15 4.18.0-240.1.1.el8_3.x86_64 #1 SMP Thu Nov 19 17:20:08 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root10 ~]# uname -r # 查看内核版本
4.18.0-240.1.1.el8_3.x86_64
[root10 ~]# uname -m # 查看当前系统的体系结构
x86_64。
[root10 ~]# 7.2.2、lsb_release
[root10 ~]# yum install redhat-lsb -y
[root10 ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 8.5.2111
Release: 8.5.2111
Codename: n/a7.2.3、查看文件
[root10 ~]# cat /etc/redhat-release
CentOS Linux release 8.5.2111