<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]linxu下umask 000 为什么执行下来不是 777而是666呢??]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Mon, 08 Jun 2020 07:18:48 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	#! /bin/sh<br/>&nbsp;&nbsp;<br/>umask 000<br/><br/>touch abcde.txt<br/>mkdir abcde<br/><br/>-rw-rw-rw-&nbsp;&nbsp;1 root&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Feb 18 16:38 abcde.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#666 文件<br/>drwxrwxrwx&nbsp;&nbsp;2 root&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;4096 Feb 18 16:38 abcde&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #文件夹777<br/><br/><br/><br/>umask 0022 #没有了w权限<br/>-rw-r--r--&nbsp;&nbsp;1 root&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Feb 18 16:40 abcde.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#644文件<br/>drwxr-xr-x&nbsp;&nbsp;2 root&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;4096 Feb 18 16:40 abcde&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#文件夹755<br/><br/>umask 命令会从新创建的文件权限中减去一个掩码，以确定文件的实际权限。这个掩码默认值为 022，即将文件默认权限的写权限屏蔽掉，使其不能写入。因此，当 umask 设置为 022 时，新创建的文件的权限就会变成 644，新创建的目录权限则会变成 755。<br/>执行脚本后，根据 umask 的设置：<br/><br/>abcde.txt 文件的权限为 -rw-rw-rw-，即666，因为umask没有屏蔽任何权限，所以新建文件的权限完全由 umask 以外的部分决定，umask 之前的权限就是实际权限。<br/>abcde 目录的权限为 drwxrwxrwx，即777，同理，因为umask没有屏蔽任何权限，所以新建目录的权限完全由 umask 以外的部分决定，umask 之前的权限就是实际权限。<br/>接着，如果你执行 umask 0022 将umask设置为 0022，则权限掩码会屏蔽掉文件的写权限，目录的写权限不受影响，具体计算方式为：<br/><br/>文件的实际权限为：原权限 (666) - 掩码 (022) = 新权限 (644)，即 -rw-r--r--。<br/>目录的实际权限为：原权限 (777) - 掩码 (022) = 新权限 (755)，即 drwxr-xr-x。<br/><br/><br/><br/><br/><br/><br/><br/>八进制 → 十进制<br/>　　方法：八进制数从低位到高位（即从右往左）计算，第0位的权值是8的0次方，第1位的权值是8的1次方，第2位的权值是8的2次方，依次递增下去，把最后的结果相加的值就是十进制的值了。<br/><br/>　　八进制就是逢8进1，八进制数采用 0～7这八数来表达一个数。<br/><br/>　　例：将八进制的(53)O转换为十进制的步骤如下：<br/><br/>1. 第0位 3 x 8^0 = 3；<br/>2. 第1位 5 x 8^1 = 40；<br/>3. 读数，把结果值相加，3+40=43，即(53)O=(43)D。<br/>权限二进制值和八进制值的表格如下：https://blog.csdn.net/hnhygkx/article/details/104280304<br/><br/><br/>umask 的作用是从文件的默认权限中减去一些权限，所以 umask 为什么数值就会影响最终的文件权限。777 权限表示所有用户都具有读、写、执行权限，因此它的二进制表示为 111 111 111，也就是说所有的权限位都被设置了。<br/><br/>umask 的作用是从默认权限中减去相应的权限。如果我们希望最终的权限是 777，那么 umask 就应该设置为 000。因为 000 与 777 相与后，仍然保持了 777 的权限，即：<br/><br/>```<br/>777 (111 111 111)<br/>&amp;<br/>000 (000 000 000)<br/>=<br/>777 (111 111 111)<br/>```<br/><br/>因此，在这种情况下，umask 设置为 000。<br/><br/>在 Unix 系统中，umask 影响文件和目录的默认权限，但它们的默认权限是不同的。默认情况下：<br/><br/>对于新创建的文件，默认权限为 666。<br/>对于新创建的目录，默认权限为 777。<br/>umask 的作用是从这些默认权限中减去一些权限位。假设 umask 设置为 000，则文件的默认权限为 666，目录的默认权限为 777。<br/>============================================================<br/><br/>root如果没有umask（umask 000）则文件权限为666，目录权限为777，但是默认有的如下：<br/>root的缺省zhiunmask是022，一般用户是002。<br/>所以，root用户umask<br/>0022<br/><br/>一般目录是：755，原因是777-022=755.<br/>文件，默认是644,666-022=644。<br/><br/><br/>=============umask 000 为什么执行下来不是 777而是666呢??==================<br/><br/>umask 000<br/>umask<br/>0000<br/>touch index2.php<br/>touch index3.php<br/>-rw-rw-rw- 1 root root&nbsp;&nbsp;&nbsp;&nbsp; 0 Jun&nbsp;&nbsp;8 15:08 index2.php<br/>-rw-rw-rw- 1 root root&nbsp;&nbsp;&nbsp;&nbsp; 0 Jun&nbsp;&nbsp;8 15:08 index3.php<br/><br/>原因：因为这是个普通文件，普通文件是不能在创建时具有执行权限的，所以要去掉x 权限位（7-1），所以权限是6（可读写，7-1-0），0就是umask。<br/>ll -d bdc<br/>drwxrwxrwx 2 root root 4096 Jun&nbsp;&nbsp;8 15:23 bdc&nbsp;&nbsp;#目录就是777了。<br/><br/>解释：unmask制定bai了新文件创建时的权限，unmask是个8进制的数du字。root的缺省zhiunmask是022，一般用户是002。如dao果用户的umask为000，则创建的文件权限为666，目录权限为777，运行umask命令可以查看用户自己的umask值。<br/><br/>当我们登录系统之后创建一个文件总是有一个默认权限的，那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限，它与chmod的效果刚好相反，umask设置的是权限&quot;补码&quot;，而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。具体取决于Linux发行版，比如Fedora19下要更改自己的umask值，在$[HOME]/.profile或$[HOME]/.bash_profile下的增加umask的值覆盖不了/etc/profile中的配置值的，必须在$[HOME]/.bashrc下增加umask值才可以永久定义自己的umask值。
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]linxu下umask 000 为什么执行下来不是 777而是666呢??]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>