Linux 权限位详解
1. Linux 权限位
对于权限,有点绕,因为文件的权限和目录的权限是有一些区别的。
在Linux中,有5种权限,分别是,r、w、x、s、t。
- 可读权限:r
- 可写权限:w
- 可执行权限:x
- Setuid:s(Set User ID)
- Setgid:s(Set Group ID)
- 粘滞位:t
下面依次讲解权限位:
1.1 可读权限
对于文件,可读权限:
用字符表示:r
用八进制表示:4
可以对读取文件里的内容
对于目录,可读权限:
- 用字符表示:r
- 用八进制表示:4
- 可以列出目录下的内容
1.2 可写权限
对于文件,可写权限:
用字符表示:w
用八进制表示:2
可以对文件进行更改
对于目录,可写权限:
- 用字符表示:w
- 用八进制表示:2
- 可以在目录下创建文件或目录
1.3 可执行权限
对于文件,可写权限:
用字符表示:x
用八进制表示:1
可以执行该文件(脚本或命令)
对于目录,可写权限:
- 用字符表示:x
- 用八进制表示:1
- 可以cd进入该目录
1.4 Setuid
这是一个特殊的权限位,
对于文件,Setuid:
- 用字符表示:s
- 用八进制表示:4000
Setuid最常用的是配合执行权限x使用,例如,系统中内置命令passwd,它默认是带有s权限位,passwd命令的主要功能是修改用户的密码,而修改密码的流程是:
- 将加密后的哈希值写入到
/etc/passwd文件对应的用户条目中。 - 使用pwconv工具转换到
/etc/shadow文件中。 - 而普通用户是没有权限修改
/etc/passwd和/etc/shadow文件
在普通用户尝试执行passwd,该passwd的所有者是root并且设置了Suid,因此passwd以root身份执行。
当你查看进程时,你会发现,进程不是普通用户,而是passwd工具的所有者(root)
1.5 Setgid
这是一个特殊的权限位,
对于目录,Setgid:
- 用字符表示:s
- 用八进制表示:2000
当一个目录拥有sgid权限时,其他用户在该目录下创建文件或目录后,它会继承目录的id,即创建的文件或目录的属组为父目录的属组。
[root@self data]# mkdir project
[root@self data]# chmod 2777 project/
[root@self data]# ls -lh
total 0
drwxrwsrwx 2 root root 6 Apr 20 23:42 project
[root@self data]# su bob
[bob@self data]$ mkdir project/test_for_bob
[bob@self data]$ ls -lh project/
total 0
drwxrwsr-x 2 bob root 6 Apr 20 23:42 test_for_bob
1.6 粘滞位
这是一个特殊的权限位,
对于目录粘滞位:
- 用字符表示:t
- 用八进制表示:1000
/tmp目录就是使用了粘滞位t,其作用是,在该目录下创建文件或目录后,仅允许其作者(所有者)进行删除操作。其他用户无法删除。
2. Linux 权限表

3. ls -l 输出详解
例如:lrwxrwxrwx. 1 root root 7 Oct 3 02:33 bin -> usr/bin
第一个字符的含义:
-:常规文件b:块特殊文件c:字符特殊文件C:高性能(”连续数据“)文件d:目录D:门(Solaris 2.5及以上版本)l:符号链接M:离线(”前已“)文件(Cray DMF)n:网络专用文件(HP-UX)p:FIFO(命名管道)P:断开(Solaros 10及以上)s:套接字?:其他文件
第二个字符的含义:
r:属主的读权限
第三个字符的含义:
w:属主的写权限
第四个字符的含义:
x:属主的执行权限S:设置了SUID,没有执行权限s:设置了SUID,具有执行权限
第五个字符的含义:
r:属组的读权限
第六个字符的含义:
w:属主的写权限
第七个字符的含义:
x:属组执行权限S:设置了SGID,没有执行权限s:设置了SGID,具有执行权限
第八个字符的含义:
r:其他人的读权限
第九个字符的含义:
w:其他人的写权限
第十个字符的含义:
x:其他人的执行权限T:设置了粘滞位,没有执行权限t:设置了粘滞位,具有执行权限
第十一个字符的含义:
.:没有任何其他替代访问方法的SELinux安全上下文(没有设置ACL)+:具有任何其他组合访问方法的SELinux安全上下文(设置了ACL)
第十二个字符的含义:该文件的硬链接数量
第十三个字符的含义:该文件的属主
第十四个字符的含义:该文件的属组
第十五个字符的含义:该文件的大小
第十六到第十八个字符的含义:最后一次修改的时间
第十九个字符的含义:文件或目录的名称
第二十个字符的含义:链接符号
第二十一个字符的含义:链接文件的源文件
4. umask 掩码
umask是一个内置命令。其作用是指定创建的文件或目录的默认权限。
使用方法:umask [-S|-p] [mode]
-S:打印出字符权限位-p:打印八进制数权限位(默认)
使用不加任何参数的umask会打印出八进制的权限:默认0022。
- 第一个数字表示:特殊权限位的八进制数
- 第二个数字表示:属主的八进制数的反掩码
- 第三个数字表示:属组的八进制数的反掩码
- 第四个数字表示:其他人的八进制数的反掩码
例如:手动更改,可使用八进制,也可以使用字符表示
[root@localhost data]# umask
0022
[root@localhost data]# mkdir test_dir
[root@localhost data]# touch test_txt
[root@localhost data]# ls -lh
total 0
drwxr-xr-x 2 root root 6 Apr 21 01:34 test_dir
-rw-r--r-- 1 root root 0 Apr 21 01:34 test_txt
[root@localhost data]# rm -rf *
[root@localhost data]# umask 0777
[root@localhost data]# mkdir test_dir
[root@localhost data]# touch test_txt
[root@localhost data]# ls -lh
total 0
d--------- 2 root root 6 Apr 21 01:37 test_dir
---------- 1 root root 0 Apr 21 01:37 test_txt
注意:尽管你的umask设置为0000,后续创建文件的权限依然是666。出于安全着想,执行权限必须手动添加。所以你会看到,目录权限为777,而文件权限为666
Linux 权限位详解的更多相关文章
- Linux chmod命令详解
Linux chmod命令详解 chmod----改变一个或多个文件的存取模式(mode) chmod [options] mode files 只能文件属主或特权用户才能使用该功能来改变文件 ...
- Linux find命令详解
转自Linux find命令详解 一.find 命令格式 1.find命令的一般形式为: find pathname -options [-print -exec -ok ...] 2.find命令的 ...
- Linux串口编程详解(转)
串口本身,标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备.虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接 ...
- Linux常用命令详解—基于CentOS7
## Linux 目录- /:根目录,一般只存放目录,不存放文件- /bin -> /usr/bin:可执行二进制文件的目录,也是常用命令目录,如常用的命令 ls.cat.mv 等- /boot ...
- Linux常用命令详解下
Linux常用命令详解 目录 一.Linux常用命令 1.1.查看及切换目录(pwd.cd.ls.du) 1.2.创建目录和文件(mkdir.touch.ln) 1.3.复制.删除.移动目录和文件(c ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...
- Linux netstat命令详解
Linux netstat命令详解 一 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...
- Linux crontab 命令详解
在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行.红帽企业 Linux 预配置了对重要系统任务的运行,以便使系统能够时时被更新.譬如,被 locat ...
随机推荐
- ili 一例业务系统框架
ili即ilinei的简称,像名字一样,是ILINEI团队的内部项目简化而来.2017年金鸡报晓,我们为同行送来了一个简单.快速.轻量级的PHP开源系统,它的任务当然也是唯一的任务,就是提高WEB开发 ...
- 初入TensorFlow————配置TensorFlow
能看到这说明你对python已经有一定的了解了,因此很多基础直接跳过. 一.TensorFlow环境配置: TensorFlow的环境配置在网上很多的教程都是用anaconda的方式,但是很容易出现冲 ...
- vue脚手架的使用
npm install -g @vue/cli --全局环境安装vue/cli vue create <project-name> 在创建项目时你会被提示选取一个 preset.你可 ...
- 转 jquery获取两个标签之间文本
https://blog.csdn.net/u010403387/article/details/44197629?utm_source=blogxgwz8 如以下代码所示,id为tidy的<a ...
- 深入浅出Git教程【转载】转载
深入浅出Git教程(转载) 目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1 ...
- 原生AJAX(包括Fetch)
一.INTRO AJAX即“Asynchronous Javascript And XML” 一.Ajax的原生初级 1.1 Ajax对象创建:var xhr= new XMLHttpRequest( ...
- nodejs多版本管理
nvm安装步骤: Windows版本安装 https://github.com/coreybutler/nvm-windows/releases 下载最新的setup文件 ,解压缩,安装到C:\Dev ...
- RabbitMQ “Hello world!”
本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“. 首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列.它实现 ...
- scrapy爬虫之模拟ajax post请求获取数据
实质:分析真实请求地址,根据规则构造新地址从而获得数据. 分析发现数据是通过异步ajax方式→post 获得的 于是通过分析response ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 发现每次翻页 网 ...
- 不适合使用hadoop来解决的问题
1.Hadoop能解决的问题必须是可以mapreduce的.一是问题可以拆分,二是子问题必须独立.比如斐波那契数列就不适合. 2.数据结构不满足key-value形式的.比如结构化的数据查询. 3.不 ...