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.mzph.cn/news/146233.shtml

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

相关文章

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 4》(8)

《Linux操作系统原理分析之Linux 进程管理 4》&#xff08;8&#xff09; 4 Linux 进程管理4.4 Linux 进程的创建和撤销4.4.1 Linux 进程的族亲关系4.4.2 Linux 进程的创建4.4.3 Linux 进程创建的过程4.4.4 Linux 进程的执行4.4.5 Linux 进程的终止和撤销 4 Linux 进程管理 4.…

Redis - 订阅发布替换 Etcd 解决方案

为了减轻项目的中间件臃肿&#xff0c;由于我们项目本身就应用了 Redis&#xff0c;正好 Redis 的也具备订阅发布监听的特性&#xff0c;正好应对 Etcd 的功能&#xff0c;所以本次给大家讲解如何使用 Redis 消息订阅发布来替代 Etcd 的解决方案。接下来&#xff0c;我们先看 R…

vue2项目修改编译巨慢

前言&#xff1a;我们的一个vue项目在给新同事后他说编译贼慢&#xff0c;一个小修改项5分钟才能自动编译成功&#xff0c;我把项目放到新电脑上也巨慢&#xff0c;升级了nodejs好使了一些&#xff0c;但还是慢&#xff0c;最后引入webpack后巨快&#xff0c; 在项目的package…

redis实战篇(2)

优惠卷秒杀 通过本章节&#xff0c;我们可以学会Redis的计数器功能&#xff0c; 结合Lua完成高性能的redis操作&#xff0c;同时学会Redis分布式锁的原理&#xff0c;包括Redis的三种消息队列 3、优惠卷秒杀 3.1 -全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢…

linux课程第一课------命令的简单的介绍

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

内网离线安装elasticsearch、kibana

一、软件获取 elastic kibana 二、elastic安装 解压安装即可提前可改下配置文件&#xff0c;不然可能会出现内存分配错误 三、运行elastic 需要调试看信息的话&#xff0c;可在cmd窗口运行bat&#xff0c;就会打印输出信息了。 生产kibana token bin\elasticsearch-create…

交换机如何配置BGP协议

环境&#xff1a; 华为交换机 华三交换机 问题描述&#xff1a; 交换机如何配置BGP协议 解决方案&#xff1a; 华三交换机上配置案例 1.配置BGP协议&#xff0c;可以按照以下步骤进行&#xff1a; 登录交换机&#xff1a;使用SSH、Telnet或控制台等方式登录到华三交换…

简单理解路由重分发(用两路由器来理解)

相关命令&#xff1a; default-information originate //*重分发默认路由 redistribute rip subnets //*重分发rip redistribute ospf 1 metric 3 //*重分发ospf&#xff08;其中&#xff1a;1是ospf进程id 3是跳数&#xff09; redistribute sta…

main.js 中的 render函数

按照之前的单组件文件中的写法&#xff0c;我们的写法应该是这样的 import App from ./App.vuenew Vue({el: #app,templete: <App></App>,components: {App}, }) 1、定义el根节点。2、注册App组件。3、渲染 templete 模板 但是在脚手架工程中&#xff0c;他是这…

Java 之拼图小游戏

声明 此项目为java基础的阶段项目,此项目涉及了基础语法,面向对象等知识,具体像语法基础如判断,循环,数组,字符串,集合等…; 面向对象如封装,继承,多态,抽象类,接口,内部类等等…都有涉及。此项目涉及的内容比较多,作为初学者可以很好的将前面的知识串起来。此项目拿来练手以及…

飞书开发学习笔记(七)-添加机器人及发送webhook消息

飞书开发学习笔记(七)-添加机器人及发送webhook消息 一.添加飞书机器人 1.1 添加飞书机器人过程 在群的右上角点击折叠按键…选择 设置 群机器人中选择 添加机器人 选择自定义机器人&#xff0c;通过webhook发送消息 弹出的信息中有webhook地址&#xff0c;选择复制。 安…

电子学会C/C++编程等级考试2021年09月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字判断 输入一个字符,如何输入的字符是数字,输出yes,否则输出no 输入 一个字符 输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入 样例1输入 5样例1输出 yes样例2输入 A 样例2输出 …

MySQL中全文索引和普通索引的区别

MySQL中的全文索引&#xff08;Full-Text Index&#xff09;和普通索引&#xff08;比如B-Tree索引&#xff09;是为了提高查询效率而设计的&#xff0c;但它们适用于不同的场景和查询类型。 普通索引&#xff08;如B-Tree索引&#xff09; 适用场景&#xff1a;普通索引适用于…

暖阳脚本_ 定制企业软件开发的4个趋势:AI、RPA、云应用、边缘计算

根据 Statista 的统计数据显示&#xff0c;企业级软件市场在全球范围内占据了领先地位&#xff0c;预测到2028年&#xff0c;市场规模将接近3760亿美元。企业应用软件市场的稳健增长&#xff0c;甚至在经济不景气的时候也能持续&#xff0c;这充分表明软件解决方案对于提升企业…

Git新建分支

修改代码之Git策略思考&#xff1a; 有三种办法&#xff1a; 需要在主分支上新建一个分支&#xff0c;不合并新建版本。其实也是先新建一个分支&#xff0c;然后合并到主分支&#xff0c;再删除分支。直接新建远程仓库。 考虑&#xff0c;3&#xff09;最浪费&#xff0c;其…

直接插入排序

一.介绍. 其基本思想为数据元素被已经放入一个已经排好的有序数组中&#xff0c;现插入一个元素进入该数组&#xff0c;按顺序&#xff08;即大小关系&#xff09;放进适当位置&#xff0c;并且其后面的元素都向后移动移位。 如图&#xff1a; 对于上述问题&#xff1a; 代码…

【Spring】使用三方包进行数据源对象(数据库)管理

在这里使用alibaba的druid来连接数据库&#xff0c;然后再Spring Config下配置数据库 目录 第一步&#xff1a;在pom.xml中导入坐标第二步&#xff1a;在bean中配置连接注 第一步&#xff1a;在pom.xml中导入坐标 在dependencies下写&#xff1a; <dependency><grou…

汇编-间接寻址(处理数组)

直接寻址很少用于数组处理&#xff0c;因为用常数偏移量来寻址多个数组元素时&#xff0c;直接寻址并不实用。取而代之的是使用寄存器作为指针(称为间接寻址(indirect addressing) ) 并控制该寄存器的值。如果一个操作数使用的是间接寻址&#xff0c; 就称之为间接操作数(indie…

GB28181学习(十六)——基于jrtplib实现tcp被动和主动收流

前言 GB/T28181-2022实时流的传输方式介绍&#xff1a;https://blog.csdn.net/www_dong/article/details/134255185 tcp passive收流 流程图 注意&#xff1a; m字段指定传输方式为TCP/RTP/AVP&#xff1b;sdp信息中增加"asetup:passive"&#xff1b;SIP服务器启…

AWS实战(一)-创建S3 存储桶

1&#xff09;登录AWS账号&#xff0c;选择服务—>存储—>S3。 2&#xff09;查看存储桶列表 3&#xff09;点击"创建存储桶"创建bucket。 4&#xff09;设置跨域 点击编辑&#xff0c;修改跨域设置即可。