vs2017 如何做网站,wordpress feed地址,wordpress如何关闭主题,公司建设网站申请信用卡1.文件默认权限#xff1a;umask OK#xff0c;那么现在我们知道如何建立或是改变一个目录或文件的属性了#xff0c;不过#xff0c;你知道当你建立一个新的文件或目录时#xff0c;它的默认权限会是什么吗#xff1f; 呵呵#xff0c;那就与umask这个玩意儿有关了umask OK那么现在我们知道如何建立或是改变一个目录或文件的属性了不过你知道当你建立一个新的文件或目录时它的默认权限会是什么吗 呵呵那就与umask这个玩意儿有关了那么umask是在做什么 基本上umask就是指定目前用户在建立文件或目录时候的权限默认值那么如何得知或设置umask它的指定条件以下面的方式来指定
查看的方式有两种
一种可以直接输入umask就可以看到数字类型的权限设置值一种则是加入 -SSymbolic这个选项就会以符号类型的方式来显示出权限了。
奇怪的是怎么umask 会有四组数字?不是只有三组吗
是没错第一组是特殊权限用的我们先不要理它所以先看后面三组即可。 在默认权限的属性上目录与文件是不一样的从我们知道X权限对于目录是非常重要的。但是一般文件的建立则不应该有执行的权限因为一般文件通常是用于数据的记录当然不需要执行的权限了。
因此默认的情况如下:
若用户建立为文件则默认没有可执行x权限即只有rw 这两个项目也就是最大为666,默认权限如下
-rw-rw-rw-
若用户建立为目录则由于x与是否可以进入此目录有关因此默认为所有权限均开放即777默认权限如下
drwxrwxrwx
要注意的是umask的数字指的是该默认值需要减掉的权限。
因为r、w、x分别是4二进制100、2二进制010、1二进制001所以当要拿掉能写的权限就是输入2二进制010
而如果要拿掉能读的权限也就是4二进制100那么要拿掉读与写的权限也就是6二进制110而要拿掉执行与写入的权限也就是3二进制011。
这样了解吗请问你5二进制101是什么呵呵就是读与执行的权限。
如果以上面的例子来说明的话因为umask为022所以user并没有被拿掉任何权限不过group 与others 的权限被拿掉了2也就是w这个权限)那么当用户:
建立文件时(-rw-rw-rw-) - -----w--w-) -rw-r--r--建立目录时(drwxrwxrwx) - (d----w--w-) drwxr-xr-x
不相信吗我们就来测试看看吧 呵呵看见了吧确定新建文件的权限是没有错的。
1.1.umask 的利用与重要性课题制作 想象一个状况如果你跟你的同学在同一台主机里面工作时因为你们两个正在进行同一个课题,老师也帮你们两个的账号建立好了相同用户组的状态并且将 /home/class/目录做为你们两个人的单题目录。 想象一下有没有可能你所制作的文件你的同学无法编辑果真如此的话那就伤脑筋了。这个问题经常发生。举上面的案例来看你看一下 test1 的权限数值是什么644意思是如辈umask 制定为022那新建的数据只有用户自己具有w的权限同用户组的人只有这个可读的权厚而已并无法修改。这样要怎么共同制作课题您说是吧 所以当我们需要新建文件给同用户组的用户共同编辑时那么 umask 的用户组就不能拿掉2以个w的权限。所以umask 就得是002之类的才可以。这样新建的文件才能够是 -rw-rw-r--限样式那么如何设置umask呢很简单直接在umask后面输入002就好。 所以说这个 umask 对于新建文件与目录的默认权限是很有关系的。 这个概念可以用在任何服务器上面尤其是未来在你搭建文件服务器file server )举例来说SAMBA 服务器或是 FTP 服务差时都是很重要的概念这牵涉到你的用户是否能够将文件进一步利用的问题不要等闲视之。 关于umask 与权限的计算方式中教科书喜欢使用二进制的方式来进行逻辑与和逻辑否的计算不过我还是比较喜欢使用符号方式来计算联想上面比较容易一点。 但是有的书籍或是BBS 上面的朋友喜欢使用文件默认属性 666 与目录默认属性777来与umask 进行相减的计算这是不好的。
如果使用默认属性相加减则文件变成666-003663即-rw-rw--wx这可是完全不对的。
想想看原本文件就已经去除x的默认的属性怎么可能突然间冒出来了所以这个地方要特别小心。 在默认的情况中root的umask会拿掉比较多的属性root 的umask 默认是022这是基于安全的考虑至于一般身份用户通常它们的umask 为002即保留同用户组的写入权力。其实关于默认 umask的设置可以参考/etc/bashrc这个文件的内容不过不建议修改该文件你可以参考第10章bash shell提到的环境参数配置文件~/.bashrc的说明。
2.文件隐藏属性 什么文件还有隐藏属性光是那9个权限就快要疯掉了竟然还有隐藏属性真是要命但是
没办法就是有文件的隐藏属性存在。 不过这些隐藏的属性确实对于系统有很大的帮助的尤其是在系统安全Security上面非常的重要。 不过要先强调的是下面的chattr 命令只能在ext2、ext3、ext4的Linux传统文件系统上面完整生效其他的文件系统可能就无法完整的支持这个命令了例如Xfs 仅支持部分参数而已下面我们就来谈一谈如何设置与检查这些隐藏的属性。
2.1.chattr配置文件隐藏属性
用法
chattr[-][ASacdistu]文件或目录名称
选项与参数
增加某一个特殊参数其他原本存在参数则不动-删除某一个特殊参数其他原本存在参数则不动直接设置参数、且仅有后面接的参数.A当设置了A这个属性时若你在存取此文件或目录时它的存取时间atime将不会被修改可避免I/O较慢的机器过度的读写磁盘。目前建议使用文件系统挂载参数处理这个项目S一般文件是非同步写入磁盘的原理请参考前一章sync的说明)如果加上S这个属性时当你进行任何文件的修改该修改会【同步】写入磁盘中。a当设置a之后这个文件将只能增加数据而不能删除也不能修改数据只有root 才能设置这属性。c这个属性设置之后将会自动的将此文件【压缩】在读取的时候将会自动解压缩但是在存储的时候将会先进行压缩后再存储看来对于大文件似乎蛮有用的。d当dump程序被执行的时候设置d属性将可使该文件或目录不会被dump备份。i这个i可就很厉害了。它可以让一个文件【不能被删除、改名、设置链接也无法写入或新增数据。对于系统安全性有相当大的助益只有root能设置此属性。s当文件设置了s属性时如该文件被删除它将会被完全的从硬盘删除所以如果误删完全无法恢复。u与s相反的当使用u来配置文件时如果该文件被删除了则数据内容其实还存在磁盘中可以使用来恢复该文件。 注意1属性设置常见的是a与i的设置值而且很多设置值必须要是root才能设置.注意2xfs文件系统仅支持Aadis而已。 范例请尝试到/tmp下面建立文件并加入主的参数尝试删除看看. 加了i属性后就不能删除了很震惊啊不信的话我们举个反例 我嘞个豆怎么样明白了吗 我们请将该文件的i属性取消看看 去除了i权限就能把它删除了 这个命令是很重要的尤其是在系统的数据安全上面。由于这些属性是隐藏的性质所以需要以Isattr 才能看到该属性。 其中个人认为最重要的当属i与a这个属性了。i可以让一个文件无法被修改对于需要强烈的系统安全的人来说真是相当的重要里面还有相当多的属性是需要root才能设置的。 此外对于logfile 这样的日志文件就更需要a这个可以增加但是不能修改旧数据与删除的参数。
怎样很棒吧未来提到日志文件的认知时我们再来聊一聊如何设置它。
2.2.Isattr显示文件隐藏属性
用法 lsattr [-adR] 文件或目录
选项与参数:
-a将隐藏文件的属性也显示出来-d如果接的是目录仅列出目录本身的属性而非目录内的文件名-R连同子目录的数据也一并列出来
使用chattr设置后可以利用Isattr 来查看隐藏的属性。 不过这两个命令在使用上必须要特别小心否则会造成很大的困扰。
例如某天你心情好突然将/etc/shadow 这个重要的密码记录文件设置成为具有i的属性那么过了若干天之后你突然要新增用户却一直无法新增别怀疑赶快去将i的属性拿掉。 3.文件特殊权限SUID、SGID、SBIT 我们前面一直提到关于文件的重要权限那就是r、wx这三个读、写、执行的权限。但是眼尖的朋友们一定注意到了一件事那就是怎么我们的/tmp权限怪怪的还有那个/usr/bin/passwd也怪怪的怎么回事先看看 不是应该只有r、w、x吗还有其他的特殊权限s跟t 头又开始头晕了因为S与t这两个权限的意义与系统的账号及系统的进程管理较为相关所以等到学完这些后你才会比较有概念。
下面的说明先看看就好如果看不懂也没有关系先知道 s放在那思称为SUID与SGID以及如何设置即可等系统程序学完后再回来看看。
3.1. Set UID 当s这个标志出现在文件拥有者的x权限上时例如刚刚提到的/usr/bin/passwd这个文件的权限状态【-rwsr-xr-x】此时就被称为SetUID简称为SUID的特殊权限。
那么SUID的权限对于一个文件的特殊功能是什么基本上SUID有这样的限制与功能
SUID 权限仅对二进制程序binary program有效执行者对于该程序需要具有x的可执行权限本权限仅在执行该程序的过程中有效run-time);执行者将具有该程序拥有者owner的权限。
讲这么生硬的东西你可能对于 SUID还是没有概念没关系我们举个例子来说明好了。
我们的Linux系统中所有账号的密码都记录在/etc/shadow这个文件里面这个文件的权限为【--------- 1 root root 】意思是这个文件仅有root可读且仅有root 可以强制写入而已。 既然这个文件仅有root可以修改那么这个bcq_113一般账号用户能否自行修改自己的密码你可以使用你自己的账号输入【passwd】这个命令来看看嘿嘿一般用户当然可以修改自己的密码。 唔有没有冲突明明/etc/shadow就不能让bcq_113这个一般账户去读写的为什么bcq_113 还能够修改这个文件内的密码这就是SUID的功能。
借由上述的功能说明我们可以知道
bcq_113对于/usr/bin/passwd 这个程序来说是具有x的权限表示bcq_113能执行 passwd;passwd 的拥有者是root这个账号bcq_113执行passwd的过程中会【暂时】获得root 的权限/etc/shadow 就可以被bcq_113所执行的passwd所修改。 但如果bcq_113使用cat去读取/etc/shadow时它能够读取吗 因为cat不具有SUID的权限所以bcq_113执行【cat /etc/shadow】时是不能读取/etc/shadow的。 我们用一张示意图来说明如下
另外SUID仅可用在二进制程序上不能够用在shell 脚本上面。
这是因为shell脚本只是将很多的二进制执行文件调用执行而已。所以SUID的权限部分还是要看shell 脚本调用进来的程序的设置而不是shell脚本本身。
当然SUID对于目录也是无效的这点要特别留意。
3.2.Set GID 当S标志在文件拥有者的x项为SUID那s在用户组的x时则称为Set GIDSGID)是这样 没错举例来说你可以用下面的命令来观察到具有SGID权限的文件
[rootstudy ~]#ls -l /usr/bin/locate
-rwx--s--x. 1 root solate 4049 Jun 10 2014 /usr/bin/locate
与SUID不同的是SGID可以针对文件或目录来设置。
如果是对文件来说SGID有如下的功能:
SGID 对二进制程序有用;程序执行者对于该程序来说需具备x的权限执行者在执行的过程中将会获得该程序用户组的支持。
举例来说上面的/usr/bin/locate 这个程序可以去查找/var/ib/mlocate/mlocate.db这个文件的 内容详细说明会在下节讲述mlocate.db的权限如下
[rootstudy ~] ll /usr/bin/locate /var/1ib/mlocate/mlocate.db
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
-rw-r-----. 1 root slocate 2349055 Jun 15 03:44 /var/1ib/mlocate/mlocate.db
与SUID非常的类似若我使用bcq_113 这个账号去执行locate时那bcq_113 将会取得slocate 用户组的支持因此就能够去读取mlocate.db非常有趣吧
除了二进制程序之外事实上SGID 也能够用在目录中这也是非常常见的一种用途。
当一个目录设置了SGID的权限后它将具有如下的功能
用户若对于此目录具有r与x的权限时该用户能够进入此目录用户在此目录下的有效用户组effective group将会变成该目录的用户组用途若用户在此目录下具有 w的权限可以新建文件)则用户所建立的新文件该新文件的用户组与此目录的用户组相同。
SGID对于项目开发来说是非常重要的。因为这涉及用户组权限的问题您可以参考一下本章后 续情境模拟的案例应该就能够对于 SGID 有一些了解的。
3.3.Sticky Bit
这个Sticky BitSBIT目前只针对目录有效对于文件已经没有效果了
SBIT对于目录的作用是:
当用户对于此目录具有w、x权限即具有写入的权限;当用户在该目录下建立文件或目录时仅有自己与root才有权力删除该文件。
换句话说当甲这个用户对于A目录具有用户组或其他人的身份并且拥有该目录w的权限这表示甲用户对该目录内任何人建立的目录或文件均可进行删除、更名、移动等操作。 不过如果将A目录加上了SBIT的权限选项时则甲只能够针对自己建立的文件或目录进行删除、更名、移动等操作而无法删除它人的文件。 举例来说我们的/tmp 本身的权限是【drwxrwxrwt 】在这样的权限内容下任何人都可以在/tmp内新增、修改文件但仅有该文件/目录建立者与root 能够删除自己的目录或文件。这个特性也是挺重要的你可以这样做个简单的测试 1.以root登录系统并且进入/tmp当中2. touch test并且更改 test权限成为777;3.以一般用户登录并进入/tmp;4.尝试删除test这个文件。 由于 SUID、SGID、SBIT 牵涉到程序的概念因此再次强调这部分的内容在您关于程序方面的知识后要再次回来看。 3.4.SUID/SGID/SBIT权限设置
前面介绍过 SUID与SGID的功能那么如何配置文件使成为具有SUID与SGID的权限
这需要数字更改权限的方法了。
现在你应该已经知道数字形式更改权限的方式为【三个数字】的组合那么如果在这三个数字之前再加上一个数字的话最前面的那个数字就代表这几个权限了
4为SUID 2为SGID 1为SBIT 假设要将一个文件权限改为【-rwsr-xr-x】时由于s在用户权限中所以是SUID因此在原先的755之前还要加上4也就是【chmod 4755 filename】来设置。此外还有大S与大T的产生参考下面的范例。 注意下面的范例只是练习而已所以我使用同一个文件来设置你必须了解SUID不是用在目录上而 SBIT 不是用在文件上。 加入具有SUID的权限 加入具有SUID/SGID的权限 加入具有SBIT的功能 具有空的SUID/SGID权限 最后一个例子就要特别小心。怎么会出现大写的S与T不都是小写的吗 因为s与t都是取代x这个的权限但是你有没有发现我们是执行7666。也就是说user、group以及others都没有x这个可执行的标志因为666嘛所以这个S与T代表的就是空的。 怎么说呢SUID是表示该文件在执行的时候具有文件拥有者的权限但是文件的拥有者都无法执行了哪里来的权限给其他人使用当然就是空的。 而除了数字法之外你也可以通过符号法来处理。其中 SUID 为Us而SGID为 gs和SBIT则是ot。来看看如下的范例