Linux(3):Linux 的文件权限与目录配置

把具有相同的账户放入到一个组里面,这个组就是这两个账户的 群组 。在访问资源(操作系统中计算机的资源)时,可以让这个组里面的所有用户都具有访问权限。
每个账号都可以有多个群组的支持。
在我们Liux 系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有那个 root 的相关信息,都是记录在/etc/passwd 这个文件内的。
个人的密码则是记录在/etc/shadow 这个文件下。此外,Linux 所有的组名都纪录在/etc/group 内。

Linux 的每个文件中,可分别给予使用者、群组与其他人三种身份个别的 rwx 权限

Linux 文件权限

ls[list] 的意思,重点在显示文件的文件名与相关属性。
[-al] 则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为了[.]的文件)。
在这里插入图片描述
在这里插入图片描述
第一栏代表这个文件的类型与权限(permission);
在这里插入图片描述

第一个字符代表这个文件是[目录、文件或链接文件等等]:
当为[d]则是目录,例如上表档名为 [.config] 的那一行;
当为[-]则是文件,例如上表档名为[initial-setup-ks.cfg] 那一行;
若是[1]则表示为连结档(link file);0
若是[b]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);0
若是[c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 [rwx] 的三个参数的组合。其中,[r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[-]而已。
第一组为[文件拥有者可具备的权限],以 [initial-setup-ks.cfg] 那个文件为例,该文件的拥有者可以读写,但不可执行:
第二组为[加入此群组之账号的权限];
第三组为[非本人且没有加入本群组之其他账号的权限]。

第二栏表示有多少档名连结到此节点(i-node);
第三栏表示这个文件(或目录)的[拥有者账号];
第四栏表示这个文件的所属群组;
第五栏为这个文件的容量大小,默认单位为 bytes;
第六栏为这个文件的建档日期或者是最近的修改日期;
第七栏为这个文件的档名。

改变文件属性和权限

chgrp : 改变文件所属群组;chgrp [-R] dirname/filename
选项与参数:
-R:进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况

chown :改变文件拥有者;chown [-R] 账号名称 文件或目录
选项与参数:
-R:进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

chmod : 改变文件的权限,SUID,SGID、SBIT 等等的特性;chmod [-R] xyz 文件或目录

选项与参数:
xyz:就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R:进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
复制行为(cp)会复制执行者的属性与权限

cp 来源文件 目标文件

权限对文件
r(read): 可读取此一文件的实际内容,如读取文本文件的文字内容等:
w(write): 可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x(eXecute): 该文件具有可以被系统执行的权限。

权限对目录
r (read contents in directory):表示具有读取目录结构列表的权限,所以当你具有读取ri)一个目录的权限时,表示你可以查询该目录下的文件名数据。
w (modify contents of directory)
这个可写入的权限对目录:
1.建立新的文件与目录;
2.删除已经存在的文件与目录(不论该文件的权限为何)
3.将已存在的文件或目录进行更名;
4.搬移该目录内的文件、目录位置。
x (access directory): 目录的x代表的是用户能否进入该目录成为工作目录的用途。 所谓的工作目录(work directory)就是目前所在的目录。

如果在某目录下不具有x 的权限, 那么你无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的rw 的权限。
要开放目录给任何人浏览时,应该至少也要给予,及x的权限,但 w 权限不可随便给

Linux 文件种类与拓展

文件种类

一、正规文件
一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [-]
依照文件的内容,又大略可以分为:
1.纯文本档(ASCII): 这是 Limux 系统中最多的一种文件类型, 称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。 几乎只要我们可以用来做为设定的文件都属于这种文件类型。 举例来说,可以下达[ cat ~/bashrc ] 就可以看到该文件的内容。 (cat 是将个文件内容读出来的指令)
2.二进制文件(bimary): 系统仅认识且可以执行二进制文件(binary file),Linux 当中的可执行文件(scripts,文字型批处理文件不算)就是这种格式,举例来说,刚刚下达的指令 cat 就是一个binary file.
3.数据格式文件(data): 有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件(data ile)。举例来说,Linux 在使用者登入时,都会将登录的数据记录在 /ar/log/wtmp 那个文件内,该文件是一个 data file,他能够透过 last 这个指令读出来! 但是使用 cat 时,会读出乱码,因为它是属于一种特殊格式的文件。

二、目录
第一个属性为[d],例如 [drwxrwxrwx]

三、连接档(link)
类似 Windows 系统底下的快捷方式。第一个属性为[l](英文L的小写),例如[lwxrwxrwx]

四、设备与装置文件(device)
与系统周边及储存等相关的一些文件,通常都集中在/dev 这个目录之下! 通常又分为两种:
1.区块(block)设备档:就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等可以随机的在硬盘的不同区块读写,这种装置就是成组设备。第一个属性为[b]
2.字符(character)设备文件: 亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特色就是[一次性读取]的,不能够截断输出。 !第一个属性为 [c]

五、资料接口文件(sockets)
既然被称为数据接口文件,想当然尔,这种类型的文件通常被用在网络上的数据承接了。可以启动个程序来监听客户端的要求, 而客户端就可以透过这个 socket 来进行数据的沟通了。第一个属性为 [s],最常在/run 或/tmp 这些个目录中看到这种文件类型了。

六、数据输送文件FITFOpipe)
FIFO 也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO 是 first-in-first-out 的缩写。第一个属性为[p]

Linux 文件扩展名

基本上,Linux 的文件是没有所谓的[扩展名]的,一个 Linux 文件能不能被执行,与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。

具有[可执行的权限] 以及[具有可执行的程序代码] 是两回事:在 Linux 底下,可以让一个文本文件具有了可执行的权限 (加入 x 权限即可), 但是这个文件明显的无法执行,因为他不具备可执行的程序代码。而如果将上面提到的 cat 这个可以执行的指令,将他的 x 拿掉那么 cat 将无法被执行!

常用的扩展名:

  1. *.sh :脚本或批处理文件 (scripts),因为批处理文件为使用 shell 写成的,所以扩展名就编成 .sh
  2. *Z.*.tar, *.targz,*.zip,*tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip,tar 等等的,由于不同的压缩软件,而取其相关的扩展名。
  3. *.html,*,php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件。 .html 的文件可使用网页浏览器来直接开启,至于 .php 的文件, 则可以透过 client 端的浏览来 server 端浏览,以得到运算后的网页结果呢。

Linux 文件长度限制
在 Linux 底下,使用传统的 Ext2/Ext3/Ext4 文件系统以及近来被 CentOS 7 当作预设文件系统的 xfs而言,针对文件的档名长度限制为:
单一文件或目录的最大容许文件名为 255bytes,以一个 ASCII 英文占用一个 bytes 来说,则大约可达255个字符长度。若是以每个中文字占用 2bytes 来说, 最大档名就是大约在 128 个中文字之间。

Linux 文件名的限制
由于 Linux 在文字接口下的一些指令操作关系,一般来说,在设定 Linux 底下的文件名时,最好可以避免一些特殊字符比较好。例如底下这些

* ? > < ; & ! [ ] | \ ' " `  ( ) { }

Linux 目录配置

Linux 目录配置的依据–FHS

(FHS): Filesystem Hierarchy Standard
FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据。
FHS 依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态:
在这里插入图片描述

可分享的: 可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录;
不可分享的: 自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 仅与自身机器有关。
不变的: 有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等:
可变动的: 经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

事实上,FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
/(root,根目录): 与开机系统有关:
/usr (unix software resource): 与软件安装/执行有关
/var (variable): 与系统运作过程有关。

根目录
FHS 标准建议: 根目录(/)所在分区槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
第一部份: FHS 要求必须要存在的目录
1./bin : 放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般账号所使用。主要有:cat, chmod, chown, date, my, mkdir, cp, bash 等等常用的指令。

2./boot: 主要在放置开机会使用到的文件,包括 Linux 核心文件以及开机选单与开机所需配置文件等等。Linux kernel 常用的档名为: vmlinuz

3./dev:任何装置与接口设备都是以文件的型态存在于这个目录当中。比要重要的文件有/dev/null, /dev/zero, /dev/tty,/dev/loop*,/dev/sd*等等

4./etc:系统主要的配置文件几乎都放置在这个目录内。这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有 root 有权力修改。FHS建议不要放置可执行文件(binary)在这个目录中 。比较重要的文件有: /etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue 等等。
另外 FHS 还规范几个重要的目录最好要存在 /etc/ 目录下:
a./etc/opt(必要): 这个目录在放置第三方协力软件 /opt 的相关配置文件
b./etc/X11/(建议): 与 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这 X Server的配置文件。
c./etc/sgml/(建议): 与 SGML 格式有关的各项配置文件;
d./etc/xml/(建议): 与 XML 格式有关的各项配置文件。

5./lib:放置的是在开机时会用到的函式库, 以及在/bin 或/sbin 底下的指令会呼叫的函式库。
某些指令必须要有这些函式库才能够顺利完成程序的执行之意。 另外 FSH 还要求 /lib/modules/必须要存在: 这个目录主要放置可抽换式的核心相关模块(驱动程序)。

6./media:放置的是可移除的装置。 包括软盘、光盘DVD 等等装置都暂时挂载于此。常见的档名有: /media/floppy, /media/cdrom 等等

7./mnt:暂时挂载某些设备。

8./opt:给第三方协力软件放置的目录。以前的 Linux 系统中,习惯放置在/usr/local 目录下。

9./run:早期的 FHS 规定系统开机后所产生的各项信息应该要放置到 var/run 目录下,新版的 FHS 则规范到 /run 底下。 由于 /run 可以使用内存来仿真,因此效能上会好很多。

10./sbin:开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统执行文件(system binary), 则放置到/usr/local/sbin/当中了。常见的指令包括: fdisk, fsckifconfig, mkfs 等等。

11./srv:srv 可以视为 [service] 的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。 常见的服务例如 www,FTP 等等。举例来说,www 服务器需要的网页资料就可以放置在/srv/www/里面。不过,系统的服务数据如果尚未要提供给因特网任何人浏览的话,预设还是建议放置到 /var/lib 底下即可。

第二部份: FHS 建议可以存在的目录
\home:这是系统默认的用户家目录(home directory)。在你新增一个一般使用者账号时,默认的用户家目录都会规范到这里来。比较重要的是,家目录有两种代号:
~:代表目前这个用户的家目录
~feng: 则代表 feng 的家目录!
/lib<qual>:用来存放与 /lib 不同的格式的二进制函式库,例如支持 64 位的 /lib64 函式库等。
/root :系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,送目录就能够拥有 root 的家目录,所以会希望 root 的家目录与根目录放置在同一个分区槽中。

几个在 Linux 当中也是非常重要的目录:
1./lost+found:这个目录是使用标准的 ext2/ext3/ext4 文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时, 将一些遗失的片段放置到这个目录下。如果使用的是 xfs 文件系统的话,就不会存在这个目录了。
2./proc:这个目录本身是一个[虚拟文件系统(virtualfilesystem)]。他放置的数据都是在内存当中, 例如系统核心、行程信息(process)、周边装置的状态及网络状态等等。因为这个目录下的数据都是在内存当中,所以本身不占任何硬盘空间。比较重要的文件例如: /proc/cpuinfo,/proc/dma,/proc/interrupts./proc/ioports,/proc/net/* 等等。
3./sys :这个目录其实跟/proc 非常类似,也是一个虚拟的文件系统,主要也是记录核心与系统硬件信息较相关的信息。 包括目前已加载的核心模块与核心侦测到的硬件装置信息等等。这个目录同样不占硬盘容量

依据FHS 的基本定义,/usr 里面放置的数据属于可分享的与不可变动的(shareable,static), usr 是 Unix Software Resource 的缩写, 也就是 Unix 操作系统软件资源所放置的目录,而不是用户的数据。应该将数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。

/var:如果/usr 是安装时会占用较大硬盘容量的目录,那么/var 就是在系统运作后才渐渐占用硬盘容量的目录。 因为/var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运作所产生的文件,包括程序文件(lock file,run file),或者例如 MySOL 数据库的文件等等。

目录树

在 Linux 底下,所有的文件与目录都是由根目录开始的!那是所有目录与文件的源头~ 然后再一个一个的分支下来。因此,也称这种目录配置方式为:目录树(directorytree)

1.目录树的启始点为根目录 (/,root);
2.每一个目录不止能使用本地端的 patition 的文件系统,也可以使用网络上的 filesystem 。举例来说,以利用 Network File System(NFS) 服务器挂载某特定目录等。
3.每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

绝对路径与相对路径

绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/feng/.bashrc
相对路径:相对于目前路径的文件名写法。 例如 ./home/feng../../home/feng/ 等等。反正开头不是 / 就属于相对路径的写法。

cd ./

. :代表当前的目录,也可以使用 ./ 来表示;
..:代表上一层目录,也可以 ../ 来代表。

《鸟哥的Linux私房菜-基础篇》学习笔记

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

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

相关文章

Opencv!!在树莓派上安装Opencv!

一、更新树莓派系统 sudo apt-get update sudo apt-get upgrade二、安装python-opencv sudo apt-get install libopencv-dev sudo apt-get install python3-opencv三、查看是否安装成功 按以下命令顺序执行&#xff1a; python import cv2 cv2.__version__如果出现版本号&a…

遥感领域最热门的研究主题介绍

遥感是有效地直接从地球收集数据的最重要技术之一。由于生态信息科学的进步&#xff0c;遥感技术在日常生活的多个研究方面变得非常有价值&#xff0c;其中包括大气物理学、生态学、土壤和水污染、土壤科学、地质学、火山爆发和地球演化。以下是遥感领域的主要趋势研究主题&…

flink中配置Rockdb的重要配置项

背景 由于我们在flink中使用了状态比较大&#xff0c;无法完全把状态数据存放到tm的堆内存中&#xff0c;所以我们选择了把状态存放到rockdb上&#xff0c;也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项 使用rockdb状态后端…

分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测

分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测 目录 分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1…

pycharm pro v2023.2.4(Python编辑开发)

PyCharm2023是一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门为Python编程语言设计。以下是PyCharm2023的一些主要功能和特点&#xff1a; 代码编辑器&#xff1a;PyCharm2023提供了一个功能强大的代码编辑器&#xff0c;支持语法高亮、自动补全、代码调试、版…

JSplacement丨随机生成置换贴图

界面很简单&#xff0c;虽然是英文&#xff0c;但基本也能看懂&#xff0c;参数调一调&#xff0c;随机生成不重复的8K高清图片。 这种图片可能对普通人感觉很奇怪&#xff0c;有什么用呢&#xff1f;会C4D建模渲染的同学应该会明白&#xff0c;特别是建一些科技类的场景背景&a…

为什么Go是后端开发的未来

近年来&#xff0c;Go 编程语言的流行度迅速增加。Go 最初由 Google 开发&#xff0c;迅速成为后端开发中最受欢迎的语言之一&#xff0c;特别是在分布式系统和微服务的开发中。本文将讨论为什么 Go 是后端开发的未来。 Go 简介 Go&#xff0c;又称为 Golang&#xff0c;是由…

IC设计企业,如何安全、可控、高效的传输设计文档和研发数据?

近年来&#xff0c;半导体的应用领域不断拓展&#xff0c;在全球经济和社会发展中的重要性与日俱增&#xff0c;半导体芯片是数字经济的核心&#xff0c;承载着现代产业发展&#xff0c;具有举足轻重的价值。从半导体行业的角度&#xff0c;IC设计是关键的一环&#xff0c;我国…

【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(上)

目录 1 Abstract 2 Related Work 2.1 单一智能体视觉SLAM&#xff08;Single-agent Visual SLAM&#xff09; 2.2 协同视觉SLAM&#xff08;Collaborative Visual SLAM&#xff09; 2.3 神经隐式表示&#xff08;Neural Implicit Representation&#xff09; 3 Method 3.…

pipeline agent分布式构建

开启 agent rootjenkins:~/learning-jenkins-cicd/07-jenkins-agents# docker-compose -f docker-compose-inbound-agent.yml up -d Jenkins配置添加 pipeline { agent { label docker-jnlp-agent }parameters {booleanParam(name:pushImage, defaultValue: true, descript…

Redis对象的数据结构及其原理汇总

本文首发于公众号&#xff1a;Hunter后端 原文链接&#xff1a;Redis对象的数据结构及其底层实现原理汇总 当我们被问到 Redis 中有什么数据结构&#xff0c;或者说数据类型&#xff0c;我们可能会说有字符串、列表、哈希、集合、有序集合。 其实这几种数据类型在 Redis 中都由…

kafka个人笔记

大部分内容源于https://segmentfault.com/a/1190000038173886, 本人手敲一边加强印象方便复习 消息系统的作用 解耦 冗余 扩展性 灵活性&#xff08;峰值处理 可恢复 顺序保证 缓冲 异步 解耦&#xff1a;扩展两边处理过程&#xff0c;只需要让他们遵守约束即可冗余&#xf…

Java 等后端应用如何获取客户端真实IP —— 筑梦之路

需求说明 现有一套Java开发的应用&#xff0c;需要能获取到用户访问的真实IP地址&#xff0c;以此来过滤到一些不安全的因素。而实际部署的场景中Java服务提供给用户访问需要经过多次代理&#xff0c;默认情况下是无法获取到客户端真实IP地址的&#xff0c;因此要实现该需求&a…

JavaWeb[总结]

文章目录 一、Tomcat1. BS 与 CS 开发介绍1.1 BS 开发1.2 CS 开发 2. 浏览器访问 web 服务过程详解(面试题)2.1 回到前面的 JavaWeb 开发技术栈图2.2 浏览器访问 web 服务器文件的 UML时序图(过程) &#xff01; 二、动态 WEB 开发核心-Servlet1. 为什么会出现 Servlet2. 什么是…

FPGA电平标准的介绍

对FPGA的管脚进行约束的时候&#xff0c;常常看到这样的电平标准&#xff0c;例如LVCOM18&#xff0c;LVCOS25&#xff0c;LVDS&#xff0c;LVDS25等等&#xff0c;其实这些都是一系列的电平标准。 针对数字电路而言&#xff0c;数字电路表示电平的只有1和0两个状态&#xff0c…

云汇优想:抖音矩阵系统有哪些类型?

抖音作为中国最热门的短视频分享平台之一&#xff0c;不断推陈出新&#xff0c;在内容管理和展示方面也进行了创新。其中&#xff0c;抖音矩阵系统是一项重要的功能&#xff0c;它提供了多种类型的矩阵&#xff0c;帮助用户更好地管理和展示自己的内容。那么&#xff0c;抖音矩…

叮!您收到了一封来自达坦科技的Hackthon邀请函

DatenLord Hackathon 2023正式启动&#xff01;达坦科技基于其跨云分布式文件系统DatenLord项目&#xff0c;结合AI大模型时代背景&#xff0c;搭建了擂台&#xff0c;在此正式向您发出邀约&#xff01; 本次大赛赛题深刻有趣&#xff0c;奖品丰厚多样&#xff0c;借此机会您不…

AVL树的底层实现

文章目录 什么是AVL树&#xff1f;平衡因子Node节点插入新节点插入较高左子树的左侧新节点插入较高左子树的右侧新节点插入较高右子树的左侧新节点插入较高右子树的右侧 验证是否为平衡树二叉树的高度AVL的性能 什么是AVL树&#xff1f; AVL树又称平衡二叉搜索树&#xff0c;相…

VSCode 运行java程序中文乱码

现象描述 java文件中包含中文&#xff0c;运行java程序后&#xff0c;乱码报错。 解决方法 原本运行指令为 cd "d:\programProjects\Java_proj\" ; if ($?) { javac Solution.java } ; if ($?) { java Solution } 需要添加 编码格式 -encoding utf8 cd &quo…

AI中文版怎么用,版本分享,GPT官网入口

网页版上线啦&#xff0c;在线助力大学生、上班族的高效生活&#xff01; GPT4.0是OpenAI最新推出的聊天模型&#xff0c;它的语言理解和生成能力比以前的版本更强大。对于忙碌的上班族来说&#xff0c;GPT4.0能帮助你高效处理工作中的大部分写作任务&#xff0c;比如撰写报告…