Linux文件及权限

2023-05-16

                               Linux文件及权限

1. 查看文件权限

(1).ls -l 命令 (ll命令)

显示详细信息

例:  

[root@localhost Desktop]# ll

total 178752

-rwxr-xr-x.  1 root   root        2092 Nov 20 13:05 1

drwx------.  4 root   root        4096 Jan 29  2016 1.22xiancheng2

drwx------.  5 root   root          54 Nov 24  2011 16计算机组成原理实验讲稿

-rw-r--r--.   1 root   root           0 Dec 21 22:14 1.c

注释:

上述“ls -l”的结果一共有 9 ,分为 7 个部分.下面从左向右对这 7 部分信息进行解释,

我们以 file1 文件为例:

(1)"-rw-r—r—.":文件权限信息,10 个字符(不要忽略最后一个字符.)

第一列的信息,它主要描述了文件的权限信息,可以看到一共有 11个字符

   第一个字母表示文件类型

普通文件

l    link链接文件,指向另一个文件,类似快捷方式

d   direct 目录文件

b   block块文件 硬盘 二进制文件

c   字符设备文件

s    socket套接字文件

p    命名管道文件

 共有3rwx

u所属用户  g所属组  o不同组的其他用户

r4) 读    w 2)写  x1)可执行

rwx =4+2+1= 7

(2)"1":文件的连接数(在软链接和硬链接中会进行讲解)

(3)"root":文件所属用户。

(4)"root":文件所属的组。

(5)"54":文件容量(默认单位为 bytes)

(6)"Nov 20 13:05":这个文件的创建日期或者是最近一次的修改日期。

(7)"f1.c":文件名称。

2..权限及修改权限命令

  在修改文件权限方面 linux 为我们提供了以下 3 个命令:

 chown  改变文件的拥有者

 chgrp   改变文件所属的组

 chmod  改变文件的权限,SUIDSGID

1)。修改文件的拥有者

     例:chown haha file

   file的所属改用户为haha

          chown  root.haha file

   " . "前表示文件所属用户,后表示文件所属组,也可以用代替

 2)。修改文件所属组

      例: chgrp haha file

  (3)。改变文件权限

格式:chmod  u=rwxg=rw,o=r  file  设定

chmod +x file     加入

chmod g-r file     除去

chmod 666 file

 

3.三种特殊权限的管理:SUIDSGIDSBIT

 SUID(Set UID)

s 这个标志出现在文件拥有者 x 权限上时,此时就被称为 Set UID,简称为 SUID 的特殊权限。 那么 SUID 的权限对于一个文件有这样的限制和功能:

(1)SUID 权限仅对二进制程序(binary program)有效;

(2)执行者对于该程序需要具有 x 的可执行权限;

(3)本权限仅在执行该程序在的过程中有效 (run-time);

(4)执行者将具有该程序拥有者 (owner) 的权限。

,注意:非常关键的是,SUID 所针对的只能是二进制文件,而不是可执行文件,例如 shell

脚本就不可以被赋予 SUID 的权限。

  SGID

SGID 可以针对文件或者目录进行设定。

(1) 如果 SGID 针对的是文件的话有以下限定:

SGID 对二进制程序有用;程序执行者对于该程序来说,需具备 x 的权限;

执行者在执行的过程中将会获得该程序群组的支持

(2)如果 SGID 使用在目录上,它将具有以下的功能:

用户对于此目录具有 r x 的权限时,该用户能够进入此目录。

用户在此目弽下癿有效群组(effective group)将会变成该目弽癿群组;

若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件的

所属组与此目录的组群相同。

 Sticky Bit

这个权限只针对目录有效,对于文件是没有效果的,简称为 SBITSBIT 对于目录的作用是:

(1) 当用户对于此目录具有 r x 的权限时,该用户能够进入此目录。

(2) 当用户在该目录下建立文件时,只有自己和 root 能够进行删除,其他用户不能够

进行删除。

SUIDSGID SBIT 权限的设定:

(1) 使用符号进行设定:

SUID ====>chmod u+s 二进制文件

SGID ====>chmod g+s 目录或者二进制文件

SBIT ====>chmod  o+t 目录

(2) 使用数字进行设定:

4 SUID

2 SGID

1 SBIT

可以使用 chmod 进行赋值,以前我们文件权限的修改是三位数字(例如:777),如果要添加上 SUID 的权限,则为四位数字:4777,添加 SGID SBIT 的方法类似。

 

4.设置文件与目录的默认权限

linux 操作系统中文件的预设权限由 umask 值决定,文件和目录的默认权限是有所区别的:

(1).文件的 x 权限默认情况下是被取消的,也就是说文件默认的满权限是 666。主要考虑

以下两个原因:

1)一般情况下文件只起记录的作用,所以能够进行读写即可。

2)取消 x 权限也是出于安全的考虑。毕竟直创建的文件就可以执行脚本是非常危险的隐患。

(2).目录的满权限是包含 x ,也就是 777

(3).文件和目录的初始权限就是由其满权限减去 umask 值决定的。在文件/etc/profile 文件中我们对 umask 值进行了设置:

  只有当用户的 id 大于 199,并且用户名称和其组名称相等的时候,它的 umask 值为002,使用 666 777 分别减去 002 会得到结果

 

5.软链接与硬链接

1)。hard Link(硬链接,或者称作实体链接)

在了解硬链接之前我们需要清楚以下几个知识:

1) 每个文件都会占用一个 inode ,文件内容由 inode 的记录来指向;

2) 想要读取该文件的内容,必须通过目录所记录的文件名来找到正确的 inode 号进行读取。

接下来我们举例建立一个文件的硬链接:

我们设置了/mnt/crontab /etc/crontab 的硬链接文件,通过列出详细信息可以发现二者的inode 号是相同的,而且链接数目变为了 2。通过 1 2 的目录的 inode 号找到指定的块(block),在这两个块中有不同的文档名,但是这两个文档名都可以指定 real 这个 inode 号去找到最终读取的数据。

使用硬链接时,磁盘空间和 inode 数量都不会发生变化。硬链接只是在所指定的目录的block 多写入一个关联数据,既不会增加 inode 数也不会耗用 block 数。

硬链  接的使用有以下限制:

1) 不能跨越文件系统;

2) 不能对目录进行硬链接;

解释:

跨越文件系统会造成链接上的错乱,而如果使用 hard link 链接到目录时, 链接的数据需要连同被链接目录底下的所有数据都要建立链接,举例来说,如果你要将/etc 使用硬链接建立一个 /etc_hd 的目录时,那在 /etc_hd 底下的所有文件同时都与/etc 底下的文件要建立 hard link ,而不仅是两个目录名之间建立硬链接而已。

例:

 [root@localhost mnt]# ll -l /etc/crontab

-rw-r--r--. 1 root root 451 Dec 28  2013 /etc/crontab

[root@localhost mnt]# ln /etc/crontab ./crontab

[root@localhost mnt]# ll -i /etc/crontab

135288839 -rw-r--r--. 2 root root 451 Dec 28  2013 /etc/crontab

[root@localhost mnt]# ll -i ./crontab

135288839 -rw-r--r--. 2 root root 451 Dec 28  2013 ./crontab

[root@localhost mnt]#

 

2)。 soft Link(软链接,又称作符号链接)

通过软链接建立的文件是一个独立的文件,它相当于是一个指针。这个文件会让数据

的读取指向它 link 的文件。因为只是一种指向动作,如果软链接的源文件被修改,它进行读

取也会发生改变,如果源文件被删除,则链接文件无法进行读取了。

例:

[root@localhost c]# ln -s fork.c ./fork.c.bak

[root@localhost c]# ll -i fork.c

3190163 -rw-r--r--. 1 root root 393 Dec 10 14:55 fork.c

[root@localhost c]# ll -i fork.c.bak

137866169 lrwxrwxrwx. 1 root root 6 Jan  8 16:00 fork.c.bak -> fork.c

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux文件及权限 的相关文章

随机推荐

  • 2022年中国研究生数学建模竞赛B题-方形件组批优化问题

    一 背景介绍 智能制造被 中国制造2025 列为主攻方向 而个性化定制 更短的产品及系统生命周期 互联互通的服务模式等成为目前企业在智能制造转型中的主要竞争点 以离散行业中的产品为例 xff0c 如电子器件 汽车 航空航天零部件等 xff0
  • 无线网络知识、WiFi原理

    无线网络 B站链接 一 电磁波的传输 电磁波传播方式 地波 xff08 低于2MHZ xff09 天波 2MHZ 30MHZ 直线波 30MHZ以上 电磁波的发射与接收装置 天线 作用 xff1a 将电磁波辐射到空间中或收集电磁波 辐射模式
  • yolov5输出检测到的目标坐标信息

    找到detect py文件 span class token keyword for span span class token operator span xyxy span class token punctuation span co
  • TCP之 select模型

    前记 xff1a select模型主要用于解决tcp通信中 xff0c 每次处理一个独立的客户都要单独的开线程 xff0c 这样会导致客户连接数很大时 xff0c 线程数也会很多 而使用select就会将线程缩减至2个 xff0c 一个主线
  • ROS入门:GPS坐标转换&Rviz显示轨迹

    GPS信息是无法直接绘制轨迹的 xff0c 因为其x xff0c y为经纬度 xff0c z为高度 xff0c 单位不一样 xff0c 本程序实现了以下功能 xff1a 1 将GPS轨迹 xff0c 从经纬度WGS 84坐标转换到真实世界x
  • ubuntu实用技巧

    ubuntu 截图 xff03 保存到图片文件夹 Print Screen 截取整个桌面 Alt 43 Print Screen 截取选中的窗口 Shift 43 Print Screen 自由选区 xff03 复制到剪贴板 Ctrl 43
  • 在ThinkPad X280加装M.2硬盘上安装 Ubuntu 18.04.3 填坑记录

    填坑背景 用了一段时间的X280后 xff0c 突然想在M 2接口上加装一个 NVMe 2242 的SSD xff0c 发现 Lenovo 的BIOS设置的非常奇特 能够检测到这个硬盘 xff0c 但是启动项里就是不能识别 xff01 或许
  • sip注册示例

    这里给出一个sip注册的示例 xff0c 其中平台注册的密码为12345678 xff0c 供相关开发参考 REGISTER sip 34020000002000000001 64 192 168 88 119 SIP 2 0 Via SI
  • spring security验证流程

    工作需要 xff0c 又弄起了权限的管理 虽然很早以前都了解过基于容器的权限实现方式 xff0c 但是一直都觉得那东西太简陋了 后来使用liferay时发现它的权限系统的确做得很优秀 xff0c 感觉这也可能是它做得最出色的地方吧 但是当时
  • On make and cmake

    你或许听过好几种 Make 工具 xff0c 例如 GNU Make xff0c QT 的 qmake xff0c 微软的MS nmake xff0c BSD Make xff08 pmake xff09 xff0c Makepp xff0
  • 制作html css 步骤进度条(完整代码)

    这个动画步骤进度条的css制作的非常简单 那里有两个按钮可以控制步骤 xff0c 它们将逐步进行 我在这个多步骤进度条 css 中使用了 4 个步骤 如果你愿意 xff0c 你可以使用更多 我使用了一些 javascript 来创建这一步进
  • 搜狗语料库word2vec获取词向量

    一 中文语料库 本文采用的是搜狗实验室的搜狗新闻语料库 xff0c 数据链接 http www sogou com labs resource cs php 首先对搜狗语料库的样例文件进行分析 搜狗语料库由搜狗实验室提供 xff0c 我们使
  • c++堆排序原理和实现

    堆排序 xff0c C 43 43 实现 堆是一种特殊的树形数据结构 xff0c 即完全二叉树 堆分为大根堆和小根堆 xff0c 大根堆为根节点的值大于两个子节点的值 xff1b 小根堆为根节点的值小于两个子节点的值 xff0c 同时根节点
  • TCP流量控制和拥塞控制

    先来了解2个TCP的概念 xff1a MSS xff1a Maximum Segment Size xff0c TCP一次传输发送的最大数据段长度 RTT xff1a Round Trip Time xff0c 往返时延 xff0c 表示从
  • c++static关键字的作用

    c 43 43 static关键字的作用 c c 43 43 共有 1 xff09 xff1a 修饰全局变量时 xff0c 表明一个全局变量只对定义在同一文件中的函数可见 2 xff09 xff1a 修饰局部变量时 xff0c 表明该变量的
  • git合并解决

    远程分支被修改了 xff0c 本地分支落后修改 xff0c 合并 方法一 xff1a 在你自己的分支上 xff0c 如果有本地修改先 git stash git pull git merge origin master 如果本地分支是mas
  • TCP Keepalive

    TCP Keepalive的起源 TCP协议中有长连接和短连接之分 短连接环境下 xff0c 数据交互完毕后 xff0c 主动释放连接 xff1b 长连接的环境下 xff0c 进行一次数据交互后 xff0c 很长一段时间内无数据交互时 xf
  • 【转载】深入浅出讲解FOC算法与SVPWM技术——自制FOC驱动器

    原文链接 xff1a https zhuanlan zhihu com p 147659820 参考文献 xff1a https zhuanlan zhihu com p 364247816 https www zhihu com ques
  • Linux 基本用户和组命令

    Linux 基本用户和组命令 1有关用户的命令 1 新增用户 Useradd 43 用户名 2 查看用户是否存在 id 43 用户名 3 删除用户 sudo userdel 用户名 只会删除用户本身 sudo userdel r 43 用户
  • Linux文件及权限

    Linux文件及权限 1 xff0e 查看文件权限 1 ls l 命令 ll 命令 显示详细信息 例 xff1a root 64 localhost Desktop ll total 178752 rwxr xr x 1 root root