Linux的文件权限与目录配置
Posted 放飞梦想C
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的文件权限与目录配置相关的知识,希望对你有一定的参考价值。
Linux文件权限的概念
第一个字符代表这个文件是『目录、文件或链接文件等等』:
- 当为[ d ]则是目录;
- 当为[ - ]则是文件;
- 若是[ l ]则表示为连结档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
??接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
- 第一组为『文件拥有者可具备的权限』;
- 第二组为『加入此群组之账号的权限』;
- 第三组为『非本人且没有加入本群组之其他账号的权限』。
修改文件属性与权限
- chgrp :改变文件所属群组
# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
- chown :改变文件拥有者
# chown [-R] 账号名称 文件或目录
# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
- chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性
# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
- 符号类型改变文件权
目录与文件的权限意义
文件的种类与拓展名
文件种类
- 正规文件(regular file ):就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [ - ],例如[-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:
- 纯文本档(ASCII):这是 Linux 系统中最多的一种文件类型啰, 称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。 几乎只要我们可以用来做为设定的文件都属于这一种文件类型。 举例来说,你可以下达『 cat ~/.bashrc 』就可以看到该文件的内容。 (cat 是将一个文件内容读出来的指令)
- 二进制文件(binary): 我们的系统其实仅认识且可以执行二进制文件(binary file), Linux 当中的可执行文件(scripts, 文字型批处理文件不算)就是这种格式~ 举例来说,下达的指令 cat 就是一个binary file。
- 数据格式文件(data): 有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,我们的 Linux 在使用者登入时,都会将登录的数据记录在 /var/log/wtmp 那个文件内,该文件是一个 data file,他能够透过 last 这个指令读出来! 但是使用 cat 时,会读出乱码~因为他是属于一种特殊格式的文件。
- 目录(directory):就是目录啰~第一个属性为 [ d ],例如 [drwxrwxrwx]。
- 连结档(link):就是类似 Windows 系统底下的快捷方式啦! 第一个属性为 [ l ](英文 L 的小写),例如 [lrwxrwxrwx] ;
- 设备与装置文件(device):与系统周边及储存等相关的一些文件, 通常都集中在/dev 这个目录之下!通常又分为两种:
- 区块(block) 设备档 :就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等! 你可以随机的在硬盘的不同区块读写,这种装置就是成组设备!你可以自行查一下/dev/sda 看看, 会发现第一个属性为[ b ]!
- 字符(character) 设备文件:亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特色就是『一次性读取』的,不能够截断输出。 举例来说,你不可能让鼠标『跳到』另一个画面,而是『连续性滑动』到另一个地方!第一个属性为 [ c ]。
- 资料接口文件(sockets):既然被称为数据接口文件, 想当然尔,这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个 socket 来进行数据的沟通了。第一个属性为 [ s ],最常在/run 或/tmp 这些个目录中看到这种文件类型了。
- 数据输送文件(FIFO, pipe):FIFO 也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO是 first-in-first-out 的缩写。第一个属性为[p] 。
Linux文件扩展名
- *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用 shell 写成的,所以扩展名就编成 .sh ;
- *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的扩展名!
- *.html, *.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件! .html 的文件可使用网页浏览器来直接开启,至于 .php 的文件, 则可以透过 client 端的浏览器来 server 端浏览,以得到运算后的网页结果!
Linux文件长度限制
- 单一文件或目录的最大容许文件名为 255bytes,以一个 ASCII 英文占用一个 bytes 来说,则大约可达 255个字符长度。若是以每个中文字占用 2bytes 来说, 最大档名就是大约在 128 个中文字!
Linux文件名的限制
* ? > < ; & ! [ ] | ‘ " ` ( ) { } //避免这些特殊符号命名,
* 另外,文件名的开头为小数点『.』时, 代表这个文件为『隐藏档』!
* 同时,由于指令下达当中,常常会使用到 -option 之类的选项, 所以你最好也避免将文件档名的开头以 - 或 + 来命名!
Linux 目录配置的依据--Filesystem Hierarchy Standard (FHS)标准
- 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
- 不可分享的:自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
- 不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
- 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
??事实上,FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
- / (root, 根目录):与开机系统有关;
- /usr (unix software resource):与软件安装/执行有关;
- /var (variable):与系统运作过程有关。
??根目录也与开机/还原/系统修复等动作有关。根目录(/)所在分区槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
??在 Linux 当中非常重要的目录
??usr 是 Unix Software Resource 的缩写, 也就是『Unix 操作系统软件资源』所放置的目录,而不是用户的数据。
??如果/usr 是安装时会占用较大硬盘容量的目录,那么/var 就是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file) 以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 mysql 数据库的文件等等。常见的次目录有:
目录树(directory tree)
- 目录树的启始点为根目录 (/, root);
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 /就属于相对路径的写法
- . :代表当前的目录,也可以使用 ./ 来表示;
- . . :代表上一层目录,也可以 ../ 来代表。
重点回顾
- Linux 的每个文件中,可分别给予使用者、群组与其他人三种身份个别的 rwx 权限;
- 群组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个群组的支持;
- 利用 ls -l 显示的文件属性中,第一个字段是文件的权限,共有十个位,第一个位是文件类型, 接下来三个为一组共三组,为使用者、群组、其他人的权限,权限有 r,w,x 三种;
- 如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』;
- 若需要 root 的权限时,可以使用 su - 这个指令来切换身份。处理完毕则使用 exit 离开 su 的指令环境。
- 更改文件的群组支持可用 chgrp,修改文件的拥有者可用 chown,修改文件的权限可用 chmod
- chmod 修改权限的方法有两种,分别是符号法与数字法,数字法中 r,w,x 分数为 4,2,1;
- 对文件来讲,权限的效能为:
- r:可读取此一文件的实际内容,如读取文本文件的文字内容等;
- w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x:该文件具有可以被系统执行的权限。
- 对目录来说,权限的效能为:
- r (read contents in directory)
- w (modify contents of directory)
- x (access directory)
- 要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给;
- 能否读取到某个文件内容,跟该文件所在的目录权限也有关系 (目录至少需要有 x 的权限)。
- Linux 档名的限制为:单一文件或目录的最大容许文件名为 255 个英文字符或 128 个汉字字符;
- 根据 FHS 的官方文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下
- FHS 订定出来的四种目录特色为:shareable, unshareable, static, variable 等四类;
- FHS 所定义的三层主目录为:/, /var, /usr 三层而已;
- 绝对路径文件名为从根目录 / 开始写起,否则都是相对路径的文件名。
以上是关于Linux的文件权限与目录配置的主要内容,如果未能解决你的问题,请参考以下文章