LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: see22

[原创]linux文件权限隐藏的细节

[复制链接]
发表于 2005-6-11 11:48:54 | 显示全部楼层
--
--
==umask 设置==
(操作为非根用户)

umask是shell内置命令函数. 用户创建文件或目录是通过这函数来删除(屏蔽)'文件或目录'最终权限位. 如: touch 最终权限位是 666 ,用户所设的 umask 为 022 ,创建文件的权限位为 664 .( 666, 022, 644 为八进制 )

$ umask 022
$ umask
022

$ touch /tmp/test
$ ls -l /tmp/test
-rw-r--r--    1 xxxxx    xxxxx           0  6月 11 09:25 /tmp/test

是不是 644=666-022 , 准确来说 NO ! 来看 umask 是怎操作的 :

先把 666,022 转化为二进制 :
666 ----> 110110110
022 ----> 000010010

然后把umask(022)转化为补码, 跟最终权限位 666 进行 AND 运算 :
(这里补码是交换数据位)

022 补码 ----> 111101101

110110110
AND
111101101
---------
110100100

$ declare -i gg
$ gg=2#110100100 ; echo $gg
420

$ awk -v ggg=420 'BEGIN{printf "%o\n",ggg}'
644
[ touch 创建文件权限位 644 是这来的. ]

那么要创建文件的权限位为 640 . umask是什么值 .

八进制 640 转化为 二进制 110100000
跟 666 (110110110) 进行 AND 运算

110100000
AND
110110110
---------
111101001

111101001 补码 000010110

$ bb=2#001010110 ; echo $bb
22

$ awk -v ggg=22 'BEGIN{printf "%o\n",ggg}'
26

umask值为 026 .

测试 :
$ umask 026
$ touch /tmp/ooo
$ ls -l /tmp/ooo
-rw-r-----    1 xxxxx    xxxxx           0  6月 11 10:19 /tmp/ooo


[ 若把umask设置为默认, umask 026 放到 /etc/profile 里面 . ]

以上所论述如果有错的, 请指正 .

--
--
回复 支持 反对

使用道具 举报

发表于 2005-6-12 13:06:22 | 显示全部楼层
Post by zswlb9999
1)
楼上说的,概念上已经很清楚了。最好能结合一些具体的例子介绍如何设置文件的权限(结合用户的ID,组群的ID的使用方法),实现安全的管理,这是较为相关的事情。

2)在实践中(做为一般家庭用户),一般不要求用ROOT登录,但运行PPP,写光盘等有要ROOT的权限。如何使一般用户有这些权限。
又如,我们安装了OFFICE,CAD如何将这两类的软件指派给不用的用户(组)使用(类似的情况是某类A游戏只能指定给一定的人群用,B游戏只能指定给一定的人群用等)。
3)
掌握好LINUX的安全设置机制是很总要重要的,否则,就没有什么安全可言。


2。 suid位. chmod o+s cdrecord。注意安全

设立game群。chown root:game /usr/local/game/* -R
取消other的权限。
回复 支持 反对

使用道具 举报

发表于 2005-6-13 16:37:19 | 显示全部楼层
在 <==umask 设置==> 一贴中进制转换觉得不够直接的, 请浏览 :
http://www.linuxsir.cn/bbs/showthread.php?t=172026
第 31 贴 <-- 用 bc 进行进制转换以及运算 -->
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表