美文网首页Linux探索之旅LinuxLinux学习之路
鸟哥linux私房菜_笔记_Linux的文件权限与目录配置

鸟哥linux私房菜_笔记_Linux的文件权限与目录配置

作者: 利伊奥克儿 | 来源:发表于2018-03-03 10:17 被阅读54次

    5.1 使用者与群组

    1. 文件拥有者:

    2. 群组概念:

    3. 其他人的概念:

    Linux 使用者身份与群组记录的文件

    默认的情况下,所有的系统上的帐号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。

    至于个人的密码则是记录在/etc/shadow这个文件下。

    Linux所有的群组名称都纪录在/etc/group内!

    这三个文件可以说是Linux系统里面帐号、密码、群组信息的集中地!

    5.2 Linux 文件权限概念

    1、文件属性

    第一栏代表这个文件的类型与权限(permission):

    第一个字符代表这个文件是“目录、文件或链接文件等等”:

    当为[ d ]则是目录,例如上表文件名为“.config”的那一行;

    当为[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;

    若是[ l ]则表示为链接文件(link file);

    若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);

    若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。

    接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

    第一组为“文件拥有者可具备的权限”,以“initial-setup-ks.cfg”那个文件为例, 该文件的拥有者可以读写,但不可执行;

    第二组为“加入此群组之帐号的权限”;

    第三组为“非本人且没有加入本群组之其他帐号的权限”。

    ---------------------------------------------------------------------------------------------------------

    第二栏表示有多少文件名链接到此节点(i-node):

    每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会链接到一个i-node。

    这个属性记录的,就是有多少不同的文件名链接到相同的一个i-node号码去就是了。

    -----------------------------------------------------------------------------------------------------------

    第三栏表示这个文件(或目录)的“拥有者帐号”

    第四栏表示这个文件的所属群组

    第五栏为这个文件的容量大小,默认单位为Bytes;

    第六栏为这个文件的创建日期或者是最近的修改日期:

    这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。

    如果想要显示完整的时间格式,可以利用ls的选项,亦即:“ls -l --full-time”就能够显示出完整的时间格式了!包括年、月、日、时间。

    -----------------------------------------------------------------------------------------------------------------------

    第七栏为这个文件的文件名

    这个字段就是文件名了。比较特殊的是:如果文件名之前多一个“ . ”,则代表这个文件为“隐藏文件”,例如上表中的.config那一行,该文件就是隐藏文件。 你可以使用“ls”及“ls -a”这两个指令去感受一下什么是隐藏文件。

    2、如何改变文件属性与权限

    chgrp :改变文件所属群组

    chown :改变文件拥有者

    chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

    改变所属群组, chgrp

    改变一个文件的群组:

    直接以chgrp来改变即可,不过,请记得,要被改变的群组名称必须要在/etc/group文件内存在才行,否则就会显示错误!

    改变文件拥有者, chown

    要注意的是, 使用者必须是已经存在系统中的帐号,也就是在/etc/passwd 这个文件中有纪录的使用者名称才能改变。

    chown的用途还满多的,他还可以顺便直接修改群组的名称呢!此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上 -R 的选项即可!语法与范例:

    chown也可以使用“chown user.group file”,亦即在拥有者与群组间加上小数点“ . ”也行! 不过很多朋友设置帐号时,喜欢在帐号当中加入小数点(例如vbird.tsai这样的帐号格式),这就会造成系统的误判了! 所以比较建议使用冒号“:”来隔开拥有者与群组!此外,chown也能单纯的修改所属群组! 例如“chown .sshd initial-setup-ks.cfg”就是修改群组~看到了吗?就是那个小数点的用途!

    ******************************************************************************************************************************

    改变权限, chmod

    数字类型改变文件权限:

    文件权限的改变使用的是chmod这个指令,但是,权限的设置方法有两种, 分别可以使用数字或者是符号来进行权限的变更。

    ----------------------------------------------------------------------------------------------------------------------------

    符号类型改变文件权限:

    九个权限分别是

    (1)user (2)group (3)others三种身份 !

    我们就可以借由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x

    “设置”一个文件的权限成为“-rwxr-xr-x”时,基本上就是:

    user (u):具有可读、可写、可执行的权限;

    group 与 others (g/o):具有可读与执行的权限。 所以就是:

    那么假如是“ -rwxr-xr-- ”这样的权限呢?可以使用“ chmod u=rwx,g=rx,o=r filename ”来设置。此外,如果我不知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均可写入的权限, 那么我就可以使用:

    而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

    ************************************************************************************************************************************

    3、目录与文件之权限意义:

    权限对文件的重要性:

    文件是实际含有数据的地方,包括一般文本文件、数据库内容档、二进制可可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:

    r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;

    w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);

    x (eXecute):该文件具有可以被系统执行的权限。

    那个可读(r)代表读取文件内容是还好了解,那么可执行(x)呢?这里你就必须要小心啦!因为在Windows下面一个文件是否具有执行的能力是借由“ 扩展名 ”来判断的, 例如:.exe,.bat, .com 等等,但是在Linux下面,我们的文件是否能被执行,则是借由是否具有“x”这个权限来决定的!跟文件名是没有绝对的关系的!

    至于最后一个w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限!对于文件的rwx来说, 主要都是针对“文件的内容”而言,与文件文件名的存在与否没有关系喔!因为文件记录的是实际的数据!

    权限对目录的重要性:

    目录主要的内容在记录文件名清单,文件名与目录有强烈的关连啦! 所以如果是针对目录时,那个 r, w, x 对目录是什么意义呢?

    r (read contents in directory):

    表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!

    --------------------------------------------------------------------------------------------

    w (modify contents of directory):

    这个可写入的权限对目录来说,表示你具有异动该目录结构清单的权限,也就是下面这些权限:

    创建新的文件与目录;

    删除已经存在的文件与目录(不论该文件的权限为何!)

    将已存在的文件或目录进行更名;

    搬移该目录内的文件、目录位置。

    总之,目录的w权限就与该目录下面的文件名异动有关!

    -----------------------------------------------------------------------------------------------

    x (access directory):

    目录的x代表的是使用者能否进入该目录成为工作目录的用途!

    所谓的工作目录(work directory)就是你目前所在的目录!

    举例来说,当你登陆Linux时, 你所在的主文件夹就是你当下的工作目录。而变换目录的指令是“cd”(change

    directory)!

    先用root的身份创建所需要的文件与目录环境

    一般用户的读写权限为:

    目录是744的权限设置,一般用户应该能有 r 的权限, 但这样的权限使用者能做啥事呢?

    如果该目录属于用户本身,会有什么状况?

    x 在目录当中是与“能否进入该目录”有关,至于那个 w 则具有相当重要的权限,因为他可以让使用者删除、更新、新建文件或目录, 是

    个很重要的参数

    使用者操作功能与权限:

    假设两个文件名,分别是下面这样:

    /dir1/file1

    /dir2

    假设你现在在系统使用 dmtsai 这个帐号,那么这个帐号针对 /dir1, /dir1/file1, /dir2 这三个文件名来说,分别需要“哪些最小的权限”才能达成各项任务?

    *******************************************************************************************

    4、linux文件种类与扩展名

    文件种类:

    正规文件

    纯文本文件(ASCII)

    二进制档(binary)

    数据格式文件(data):有些程序在运行的过程当中会读取某些特定格式的文件,Linux在使用者登陆时,都会将登录的数据记录在

    /var/log/wtmp那个文件内,该文件是一个data file,他能够通过last这个指令读出来! 但是使用cat时,会读出乱码~因为他是属于

    一种特殊 格式的文件

    目录(directory):第一个属性为 [ d ]

    链接文件(link):第一个属性为 [ l ]

    设备与设备文件(device):

    区块(block)设备文件:查一下/dev/sda看看, 会发现第一个属性为[ b ]

    字符(character)设备文件:第一个属性为 [ c ]

    数据接口文件(sockets):第一个属性为[ s ],最常在/run或/tmp这些个目录中看到这种文件类型.

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

    ---------------------------------------------------------------------------------------------------------------------------------

    Linux文件扩展名:

    x代表这个文件具有可执行的能力, 但是能不能执行成功,当然就得要看该文件的内容.

    通常我们还是会以适当的扩展名来表示该文件是什么种类的

    *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用shell写成的,所以扩展名就编成 .sh

    Z, .tar, .tar.gz, .zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar等等的,由于不同的压缩软件,而取其相关的扩展名

    .html, .php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件啰!

    5.3 Linux 目录配置

    1、Linux目录配置的依据--FHS

    FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录的定义:

    / (root, 根目录):与开机系统有关;

    /usr (unix software resource):与软件安装/执行有关;

    /var (variable):与系统运行过程有关。

    usr是Unix Software Resource的缩写, 也就是“Unix操作系统软件资源”所放置的目录

    2、目录树 (directory tree)

    主要的特性有:

    目录树的启始点为根目录 (/, root);

    每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。

    每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

    CentOS在根目录下面会有什么样子的数据?

    3、绝对路径与相对路径

    根据文件名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 这两种文件名/路径的写法依据是这样的:

    绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;

    相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法

    4、CentOS 的观察

    Linux distribution 的差异性, 除了 FHS 之外,还有个 Linux StandardBase (LSB) 的标准是可以依循。

    重点回顾:

    要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给;

    能否读取到某个文件内容,跟该文件所在的目录权限也有关系 (目录至少需要有 x 的权限)

    请问下面的目录与主要放置什么数据: /etc/, /boot, /usr/bin, /bin, /usr/sbin, /sbin, /dev,

    /var/log, /run

    /etc/:几乎系统的所有设置文件均在此,尤其 passwd,shadow

    /boot:开机配置文件,也是默认摆放核心 vmlinuz 的地方

    /usr/bin, /bin:一般可执行文件摆放的地方

    /usr/sbin, /sbin:系统管理员常用指令集

    /dev:摆放所有系统设备文件的目录

    /var/log:摆放系统登录文件的地方

    /run:CentOS 7 以后才有,将经常变动的项目(每次开机都不同,如程序的PID)移动到内存暂存,所以 /run 并不占实际磁盘容量

    相关文章

      网友评论

        本文标题:鸟哥linux私房菜_笔记_Linux的文件权限与目录配置

        本文链接:https://www.haomeiwen.com/subject/viktfftx.html