T-03-Linux-文件权限与目录管理

Linux最优秀的地方之一就在于他的多人多任务环境。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要了。 Linux一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限。

1. Linux的文件权限与目录配置

1.1. 文件的3个身份(owner/group/others

在我们Linux系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的组名都纪录在/etc/group内!这三个文件可以说是Linux系统里面账号、密码、群组信息的集中地,所以不要随便删除这三个文件。

owner/group/others

1.2. Linux文件权限概念

1.2.1. 文件属性

文件属性示意图

1.2.2. 修改文件属性

  • chgrp:修改文件所属用户组;
  • chown: 修改文件拥有者;
  • chmod:修改文件的权限,SUID、SGID、SBIT等的特性。
chgrp

chown

chmod

1.2.3 目录与文件权限

首先强调一个概念,那就是:任何设备在Linux底下都是文件, 不仅如此,连数据沟通的接口也有专属的文件在负责。

与Windows系统不一样的是,在Linux系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,其最大的用途是在为了保证数据安全性

在Windows底下一个文件是否具有执行的能力是藉由"扩展名 "来判断的, 例如:.exe, .bat, .com 等等,但是在Linux上,一个文件能不能被执行,与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。我们的文件是否能被执行,则是藉由是否具有x这个权限来决定。

目录与文件权限

默认权限

若使用者建立为『 文件 』则预设『没有可执行 ( x )权限』,亦即只有 rw 这两个项目,也就是最大为 666 分,预设权限如下: -rw-rw-rw-
若用户建立为『目录』,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即777 分,预设权限如下: drwxrwxrwx

umask查看文件默认权限
隐藏权限

隐藏权限的设置主要是为了增强系统安全 (Security) 性,Linux底下的chattr指令只能在Ext2/Ext3/Ext4的 Linux 传统文件系统上面完整生效, 其他的文件系统可能就无法完整的支持这个指令,例如 xfs 仅支持部份参数而已。

chattr配置文件隐藏属性
特殊权限
  • SUID(Set UID)仅可用在二进制程序上,不能用在shell脚本上面
当 s 这个标志出现在文件拥有者的 x 权限上时,
例如 /usr/bin/passwd 这个文件的权限状态:『-rwsr-xr-x』,
此时就被称为 Set UID,简称为 SUID 的特殊权限。
  • SUID权限仅对二进制程序需有效;
  • 执行者对于该程序需要具有x的可执行权限;
  • 本权限尽在执行该程序的过程中有效(run-time);
  • 执行者将具有该程序拥有者(owner)的权限。
  • SGID(Set GID)可用在文件或目录上面 (多用于项目开发)
当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID

对文件

  • SGID对二进制程序有用;
  • 程序执行者对于该程序来说,需具备x的权限;
  • 执行者在执行的过程中将会获得该程序用户组的支持。

对目录

  • 用户若对于此目录具有r和x的权限时,该用户能够进入此目录;
  • 用户在此目录下的有效用户组将会变成该目录的用户组;
  • 用途:若用户在此目录下具有w的权限,则用户所建立的新文件的用户组与此目录的用户组相同。
  • SBIT(Sticky Bit)只针对目录有效
当t标志在其他人(others)的x项为Sticky Bit(SBIT)
  • 当用户对于此目录具有w、x权限,即具有写入的权限;
  • 当用户对于在该目录下建立文件或目录时,仅有自己与root才有权力删除该文件。
  • SUID/SGID/SBIT权限设定

数字型态更改权限的方式为『三个数字』的组合, 如果在这三个数字之前再加上一个数字,最前面的那个数字就代表这几个权限

  • 4 为 SUID;
  • 2 为 SGID;
  • 1 为 SBIT。
特殊权限设置

1.3. Linux目录配置

1.3.1. Linux目录配置依据——FHS

市面上利用Linux来开发产品或distributions的社群/公司与个人不可胜数,但每套Linux distributions他们的配置文件、执行文件、每个目录内放置的文件其实都差不多,这是FHS标准的功劳。FHS标准的目的是让使用者可以了解到已安装软件通常放置于哪个目录下

FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 将目录定义成为4种交互作用的形态:
4种目录形态

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

- / (root,根目录) # 与启动系统有关(越小越好);
- /usr (unix sofeware resource)# 与软件安装/执行有关;
- /var (variable)# 与系统运行过程有关。

/ (root,根目录)

/ 目录应该存在的文件内容

/usr (unix sofeware resource)

/var 目录应该存在的文件内容

/var (variable)

/var 目录应该存在的文件内容

1.3.2. 目录树

在Linux底下,所有的文件与目录都是由根目录开始的!那是所有目录与文件的源头,然后再一个一个的分支下来,有点像是树枝状。因此,我们也称这种目录配置方式为:目录树(directory tree)。他主要的特性有:

  • 目录树的起始点为根目录(/, root);
  • 每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统。例如可以使用NFS服务器挂载某特定目录等;
  • 每一个文件在此目录树中的文件名(包含完整资源)都是独一无二的。
目录树架构示意图

2. Linux文件与目录管理

2.1. 目录的相关操作

首先来看几个特殊的目录:
几个特殊的目录

再来看几个常见的处理目录的命令:

- cd # 切换目录;
- pwd # 显示当前目录;
- mkdir # 建立一个新目录;
- redir # 删除一个空目录。

cd(change directory,切换目录)

cd命令

pwd(显示目前所在的目录)

pwd命令

mkdir(建立新目录)

mkdir命令

rmdir(删除“空”的目录)

rmdir命令

2.2. 文件与目录管理

2.2.1. 文件与目录的查看:ls

ls 的有很多,包括查阅文件所在 i-node 号码的 ls -i 选项,以及用来进行文件排序的 -S 选项,还有用来查阅不同时间的动作的 --time=atime 等选项。而这些选项的存在都是因为 Linux 文件系统记录了很多有用的信息的缘故。Linux 的文件系统中,这些与权限、属性有关的数据放在都放在 i-node 里面

ls命令

2.2.2. 复制、删除与移动:cp、rm、mv

cp(复制文件或目录)

cp命令

rm(删除文件或目录)

rm命令

mv(移动文件与目录,或重命名)

mv命令

2.3. 文件内容查看

- cat # 由第一行开始显示文件内容;
- tac # 从最后一行开始显示(cat的倒着写);
- nl # 显示的时候,同时输出行号;
- more # 一页一页地显示文件内容;
- less # 一页一页地显示文件内容,可以往前翻页;
- head # 只看前面几行;
- tail # 只看后面几行;
- od # 以二进制的方式读取文件内容。

cat(concatenate)

cat命令

nl(添加行号打印)

nl命令

head (取出前面几行)

head命令

tail(取出后面几行)

tail命令

od(非纯文本文件)

od命令

touch(修改文件事件或创建新文件)

在默认的情况下,ls 显示出来的是该文件的mtime,也就是这个文件的内容上次被更动的时间。我们复制一个文件时,会复制文件的内容和属性,但却没有办法复制 ctime 这个属性。 ctime 可以记录这个文件最近的状态 (status) 被改变的时间。我们平时看的文件属性中,比较重要的还是属于那个 mtime。

- mtime(修改时间)
当该文件的【内容数据】变更时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性或权限。
- ctime(状态时间)
当该文件的【状态(sataus)】改变时,就会更新这个时间,举例来说,权限或属性被更改了,就会更新这个时间。
- atime(读取时间)
当【该文件的内容被读取】时,就会更新这个读取时间,举例来说,使用cat命令读取/etc/man_db.conf,就会更新这个时间。
touch命令

2.4. 文件查找

2.4.1. 脚本文件查找

  • which(查找【执行文件】)


    which命令

2.4.2.文件查找

find # 查找整个硬盘
whereis # 只找系统中某些特定目录下面的文件
locate/updatedb # 利用数据库来查找
  • find


    find命令
  • whereis


    whereis命令
  • locate/updatedb

  • updatedb:根据 /etc/updatedb.conf的设置去查找系统硬盘内的文件,并更新 /var/lib/mlocate内的数据库文件;
  • locate:依据 /var/lib/mlocate内的数据库记录,找出用户所输入关键词的文件名。
locate命令

二么士

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容