Linux基础篇之权限的设定
如何查看及读取权限信息
linux当中的安全机制:3a机制
account(账号):用户名称及用户名称的一些管理
useradd usermod userdel groupadd groupmod groupdel
authorization(认证):
passwd chage
authorzed(授权)
文件属性的查看:
文件属性内容
-rw-r--r--. 1 root root 0 Jan 3 10:17 test
最前面的第一位-代表文件的类型(-为普通文件,l为软连接,d为目录,s为套接字socket,b为block块设备,c为字符设备),二位到第十位rw-rw-r–代表权限, 1代表文件的硬连接个数,第一个root代表文件的所有者,第二个root代表文件所有组,0代表文件大小, Jan 3 10:17 test代表作后一次被修改的时间,test代表文件名称。
1 root root 0 Jan 3 10:17 test代表文件的元数据。
关于套接字socket:程序对外开放的接口。
关于块设备:用来存储系统的资源和文件
文件的类型:
类型 | 代表 |
---|---|
- | 空文件,或者文本 |
d | 目录 |
l | 软连接 |
s | socket套接字 |
b | block块设备 |
c | 字符设备 |
文件的权限
rw-r–r--分为三部分
rw- | r-- | r–
第一部分rw-为文件拥有者的权限,文件拥有者能对文件做什么操作 ----- u (user)
第二部分r–为文件所有组的权限,文件所有组能对文件做什么操作 -------g(group)
第三部分r–为其他人的权限,其他人对文件作什么操作 --------o(other)
r(readable) | 查看权限 , 是否可以显示文件的数据。对于目录来说表示是否可以用ls列出目录中的文件。 |
w(writeable) | 可写权限,是否可以更改文件的内容。对于目录来说表示是否可以对目录里的文件进行删除或者新建。 |
x(excutable) | 执行权权限,是否可以通过文件的名称来调用文件里的命令或程序。对于目录来说表示是否可以进入目录 |
- | 权限关闭 |
目录属性内容
drwxr-xr-x. 2 root root 6 Jan 3 10:16 testdir
d为目录类型,rwxr-xr-x为权限,2表示文件中子目录个数,root 为文件所有者,所属用户组为root,6代表目录中子目录或者子文件元数据大小(并不是文件或者子目录大小!),Jan 3 10:16代表目录最后一次被修改的时间(文件属性变),testdir为目录名称。
文件的拥有者及拥有组
Linux 是个多用户多任务的系统 , 常常会有多人同时使用同一主机来进行工作 , 为了考虑每个人的隐私权以及每个人喜好的工作环境 , 对用户进行分类。
rw- | r-- | r--
前边说过,前三位为用户的权限,中间三位为组权限,最后三位为其他人权限。
其中的优先级用户高于组高于其他人。
更改文件拥有者及拥有组的方法
文件拥有者及拥有组只有超级用户root可以修改
更改方式如下
chown 用户名 文件
chgrp 组名称 文件
chown –R 用户名 目录
chgrp –R 组名称 目录
chown 用户名 : 组名称 文件 | 目录
在 /mnt下新建文件file file1 file2file3及目录test,在test目录下新建文件testfile1 testfile2 testfile3
并用watch -n 1 监控递归查看属性(ls -lR /mnt)。
在图中我们可以清楚看到第一个文件file的所属人为root,可以使用chown改变文件所属人:
可以用chogrp改变文件所属组:
或者可以同时将文件的所有人和所有组进行更改:
在同时更改文件的所有人和所有组时如上图chown haha:xng /mnt/file2中的‘:’也可用.替代。
如果用上述办法去修改目录test的所有人会出现下面情况:
我们可以看到,使用chown直接西应该目录名称,虽然目录的名称确实被修改了,但是test目录下的内容所有人都没有改变。对于这种情况,我们修改时一定要去递归修改:
可以看到,递归修改过后test目录下的内容跟随目录进行了修改。在修改目录所有人时 用chown -R 来进行递归修改目录所有人,同样的道理:修改目录的所有组也要递归修改(chgrp -R /mnt/test)。如果同时修改目录的所有人和所有组可用递归修改+前面所说的方法:
此试验要主义的是:chown 和 chgrp必须使用超级用户身份才能执行。
文件权限设定方式
文件权限设定方式 | 使用方法 |
---|---|
字符方式设定文件权限 | chmod [参数]… 权限模式[,权限模式]… 目标. |
数字方式设定文件权限 | chmod [参数]… 权限值… 目标… |
依照模板复制文件权限 | chmod [参数]… --reference=模板 |
字符方式设定权限
chmod <u|g|o|a><+|-|=><r|w|x-> 目标
所以说在同时修改权限时,相同为时可以合并的,不同位需要用‘,’隔开。
在同时去掉file所有人,所有组,其他人的写的权力时,会发现只有所有人的权限上去掉了写的权力,而所有组和其他人的写的权力没有被去掉。
注意,只有在同时去掉所有人,所有组,其他人的写的权限时才会出现这样的问题! r和x正常!
这个时候就要用chmod a-w /mnt/file1
来执行:
所以以后在使用时,尽量去使用a+w,a-w这种形式,避免自己忘记直接使用 -w,-r这种形式的 -w的特殊点而导致出错!
但是使用字符的方式修改权限最大的缺点就是要我们输入很多字符,所以我们以可以使用下来说的使用数字的方式修改权限。
数字的方式管理权限
权限可以用一个八进制数字来表示
权限 | 二进制 | 八进制 |
---|---|---|
— | 000 | 0 |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
权限管理方法:chmod 数字 TAG
如图:file的权限为777代表 rwxrwxrwx的二进制为111 111 111对应的八进制为7 7 7所以777代表的是oug+rwx。
权限复制
复制权限方式 chmod --reference=属性源文件 TAG
系统预留权限阀值
资源存在意义在于共享,权限开放越大,共享效果越明显,但是安全性越差。
对于系统安全而言,开放权利越小,系统越安全。
在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性。
使用umask命令可以查看系统的权限预留阈值:
可以看到系统的权限预留阈值为0022,第一个0代表是特殊权限值,022为预留值,前面说过,满权限rwx为777,所以目录建立的权限值为777-022=755,文件的权限值为755-111=644
为了实验现象明显,我们用watch -n 1对/mnt中的目录的属性递归监控,并且新建文件及目录查看权限:
我们可以看到,目录的权限值为755,文件的权限值为644。
我们可以使用umask+目标修改值 来临时修改系统权限预留阈值。
可以看到,新建的filetest1的权限值为600。(满权限777-系统预留阈值077-111=600)
新建的目录权限值为700。(满权限777-系统预留阈值077=700)。
值得注意的是,这种用umask修改权限的方式为临时设定,类似于vim的临时配置。要想永久修改系统预留的权限阈值,我们可以编辑如下两个配置文件。
shall的配置文件:/etc/bashrc
可以看到,当我们的uid大于199并且用户名称和组名称一致,用的系统预留阈值为002,如果以上田间不成立,那么系统预留阈值为022。上面为普通用户umask,下边为超级用户umask。将系统预留权限022改为077保存退出。
用户环境配置文件:/etc/profile
同样的方法找到文件中的umask
将022修改为077后iu保存退出。这个时候我们就完成了系统预留权限阈值的永久修改。
这个时候查看umask还会看到系统的预留阈值为022,这个时候我们重新打开shall或者使用source命令来重加载一下:source /etc/bashrc
和source /etc/profile
修改系统预留权限阈值后我们重新建立文件查看其权限:
我们可以看到,新建的文件权限值为600。
新建立的目录的权限为700。
特殊权限
SUI:
只针对于二进制可执行文件 , 使用拥有SUID权限的文件发其中记录的程序时以 SUID 文件拥有者的身份去执行。
SGID:
针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行。
针对目录 : 目录新建文件的所属组与该目录的所有组保持一致。
STICKY:
对于文件:表示文件即使没有被程序调用也会被加载到交换空间中。
对于目录:表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件。
设定方法:
SUID
• chmod u+s TAG
• chmod 4原文件属性 TAG
SGID
• chmod g+s TAG
• chmod 2原文件属性 TAG
STICKY
• chmod o+t TAG
• chmod 1原文件属性 TAG
首先用超级用户新建目录/mnt/pub,将这个目录的所有权限打开,用ls -ld对此目录下的文件进行监控,ls -l对其进行显示。
切换身份到普通用户身份,在刚才建立的满权限的目录下建立文件:
再切换为另外一个普通用户身份,新建文件。
我们可以看到,student用户的文件的所有者和所有组为student,xngfile的拥有着和拥有组为xng,studentfile和xngfile分别为两个不同用户的文件,但是因为其所在目录为满权限的,所以student的文件studentfile可以被用户xng删除,同理xngfile也能被student用户删除。这显然很不合理。这个时候我们可以用stickyid实现用户只能删除自己的文件,不能删除奇他人的文件。
用超级用户对/mnt/pub加上stick权限。
这个时候student用户就不能删除xng用户的文件,student用户只能删除自己的文件。
这时,我们使用watch -n 1 ‘ps ax -o user,group,comm | grepcat‘
来显示系统中进cat命令进程中用户,组和进程的名字,并用watch进行监控。
我们可以看到cat命令是超级用户及超级用户组的
当我们用student用户使用cat命令时,显示的是cat属于student用户。所以是谁去执行这个命令的动作,产生的进程就应该是谁的,与文件的所有人无关。
我们给cat命令加上suid,可以看到在cat用户权限的x变成s。
重新用普通用户身份执行cat命令,此时我们看到在student用户执行cat残生的进程是超级用户root的,也就是student使用了root的身份执行了cat命令。
同样,我们给cat命令加上sgid,我们可以看到,权限的组权限的x变成了s。
我们看到,加上sgid后用普通用户执行cat命令,cat的所有组也变成了root。(此时系统中无论是哪个用户执行cat命令都是以超级用户的身份去执行)
针对目录:
在/mnt中新建一个目录,将其所有人,所有变成普通用户,并给目录满权限
我们可以看到,student用户在此目录下新建的文件其所有人和所有组均为student。
对/mnt/haha加上特殊权限sgid,我们可以看到,/mnt/haha的组的权限x变成了s。
再使用student用户在/mnt/haha建立文件file,我们可以看到,此时新建立的文件的所属组已经自动跟随目录的所有组。
特殊权限的设定:
字符设定:
chmod u+s /mnt/haha
chmod g+s /mnt/haha
chmod o+t /mnt/haha
数字设定:
chmod 2755 /mnt/haha
chmod 4755 /mnt/haha
chmod 1755/mnt/haha
也是二进制八位数字来表示。
ACL权限列表
传统的权限仅有三种身份 (owner,group,othe)搭配三种权限 (r,w,x), 并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求 , 此时就得要使用 ACL( 文件访问控制列表 ,Access Control List) 这个机制。
因此目前 ACL 几乎已经默认加入在所有常见的 Linux 文件系统的挂载参数中(ext2/ext3/ext4/xfs 等等 ), 但 rhel6.0以及之前的版本默认不支持 acl 的功能
setfacl -m | 设定权限 |
setfacl -x | 删除指定用户 |
setfacl | -b |
使用setfacl -m u:student:rw /mnt/haha
给/mnt/哈哈设定读写权
我们看到,/mnt/haha 其他人年权限后的‘.’变成‘+’这代表facl权限列表开启。
使用getfacl查看权限列表:
特定用户student 可以读写。其中mask::rwx为可以赋予给studnt用户最大的权力值。
权限列表能限制特定的用户对于特定的文件有指定的特殊的权力。
Linux基础篇之权限的设定相关推荐
- Linux随笔-鸟哥Linux基础篇学习总结(全)
Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...
- Linux基础篇--shell脚本编程基础
Linux基础篇–shell脚本编程基础 本章内容概要 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 7.1 编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为 ...
- Linux基础篇大集合
目录 一.基础篇 (一)基本常识 1.linux的三种网络连接方式 2.虚拟机的克隆 3.虚拟机的快照 4.虚拟机的迁移和删除 (二)目录结构 (三)基本实操 1.远程连接Linux操作系统 2.vi ...
- linux 基础 文件系统 用户权限
描述Linux系统的启动过程?1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sysi ...
- Linux基础之文件权限详解
Linux中对于权限的制定虽然没有Windows的那么精细,但是如果你了解并掌握Linux中文件的权限知识,也可以像Windows那样对权限做到精确配置. Linux中的文件权限是什么? 如何查看Li ...
- Linux基础篇_01_计算机概论
学习资料:<鸟哥的Linux私房菜(基础篇)> 部分:Linux的规划与安装 时间:20130225 学习笔记: 计算机定义:接受使用者输入指令与数据, 经由中央处理器的数学与逻辑单元运算 ...
- linux权限源码分析,Linux基础之文件权限详解
Linux中对于权限的制定虽然没有Windows的那么精细,但是如果你了解并掌握Linux中文件的权限知识,也可以像Windows那样对权限做到精确配置. Linux中的文件权限是什么? 如何查看Li ...
- 鸟哥Linux计算退伍时间,发现《鸟哥的Linux基础篇》中有个脚本还能再完善点。...
我是个Linux入门"水手",身上只有一本<鸟哥的linux私房菜基础篇>,把这本书当成我的进入 Linux领域的"葵花宝典".鸟哥写的这本书讲的真 ...
- 运维面试题-Linux基础篇
非技术类 你对现在运维工程师的理解以及对其工作的认识 答:运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高.最快.最稳定.最安全的服务.运维工程师的一个小小的失误,很有可能会对公司及客户 ...
最新文章
- spring boot日志框架体系剖析(默认采用logback作为日志框架)
- [填坑手册]小程序目录结构和组件化使用心得
- java 对线程进行事务控制_Java 多线程事务回滚 ——多线程插入数据库时事务控制...
- 怎么看Windows11系统是激活的 Windows11检查激活状态方法
- Silverlight 2 搜索照片
- mysql 5.5 升级_Windows下MySQL5.5升级MySQL5.7
- 组织架构递归_映射架构和递归管理数据–第1部分
- Blog主场转至51CTO.com
- 2016考试计算机知识基础题库,2016年计算机二级公共基础知识基础练习题演练(6)...
- 在centos上安装mysql
- 【图像加密】基于matlab DNA混沌系统图像加密【含Matlab源码 1190期】
- IE浏览器为什么打不开java_IE浏览器拒绝访问的原因及其解决方法。
- 天津麒麟收购中标软件,国产操作系统新旗舰扬帆起航!
- Skyscrapers (hard version)
- Unity表情聊天(NGUI图文混排)
- 出谋划策 小型网吧组网方案精心推荐(转)
- React的非受控组件和受控组件
- 星巴克招人!要技术大拿。
- 有人(甚至国家)兜底就安全了吗?瑞士央行风暴小议。
- vs java_VSCode搭建Java开发运行环境
热门文章
- 解决使用Edge(必应)浏览器搜索之后显示untitled的问题
- 微信域名防封技术,微信域名总是被封如何解决
- sas 统计学 anova
- 生僻字_tte_linux_ttf_提取字体_打印生僻字_uni
- UE4使用委托实现Actor之间的通信
- JavaMail实现发送邮件程序
- 构建一体化数字营销平台,助力医药企业实现销售转化能级大幅跃迁 | 案例研究
- [创业路程] 从Idea到付诸实践,你必须要知道的…创业草堂系列
- android 熄屏后仍然可以点击,Android - 在不触发睡眠/锁定屏幕的情况下关闭显示屏 - 使用触摸屏打开...
- 苹果被曝重大系统漏洞:新款MacBook、iPhone 12统统波及,root权限秒被获取