您的位置:首页 > 运维架构 > Linux

Linux权限

2016-03-13 17:38 302 查看
普通权限

用户和组
我们使用linux时,以用户身份登陆,所运行的进程也是以用户的身份运行的。而操作系统以用户身份来标识用户可以使用哪些资源,不能是用哪些资源。为了方便管理用户,可以将用户划分组。

权限:
权限是计算机用来限制资源访问的一种机制。
权限是按照用户来划分的,即U(user)、G(group)、O(other)。
权限一般分为读、写、执行。

-rwxrwxrwx. 1 root root 0 3月 1103:58 test。
标色部分分别对应U、G和O。每个用户都拥有三种权限,根据不同场景可以自行更改。




注意:目录一定要有x权限。
修改权限方式:
R=4,W=2,X=1。
chmod u[g][o][a]+r[w][x]file或 777 file (a=rwo)。
示例:

以u的权限为例,如果要设定为“读写执行”权限,即rwx,权限为7(4+2+1)。
如果要设定为rw-,权限为6(4+2+0)。
可以看出,要设置的权限值直接相加,不设置的权限为0。

默认权限
Umask:
一般文件和目录的权限是666和777,但我们创建文件或目录时会少一些权限。而少的权限就是umask。
创建文件时权限:666-umask;创建目录时权限:777-umask。
为什么设置umask?
我的理解是出于安全,如果没有umask,用户创建完文件后忘记修改权限,导致other拥有写权限,那就遭了;



可以看到root对同组的权限设定很严格,都没有w权限,还是出于安全考虑。

注意:目录一定要有x权限。
umask修改:

umask可以设定umask xxxx(本shell可用),但一般使用默认就好。
特殊权限
除了普通权限,用户还拥有特殊权限





设定权限:
设置suid:
chmod u+x file 或 chmod 4xxx file。
设置sgid:
chmod g+2 file 或 chmod 2xxx file。
设置sticky:
chmod o+t dir 或 chmod 1xxx dir。
示例:
suid




以修改密码为例,先看下密码存放文件shadow,没有任何权限 。按照普通权限的思维,普通用户根本不能写入该文件来修改密码,那修改密码就只能通过root了(root拥有至高无上的权限)。但事实并非如此,普通用户通过运行passwd就能直接修改密码。



我再看下passwd的权限,发现用户的执行权限变为s,这就是suid权限,当我们修改密码时会直接调用root权限
所以拥有suid的文件以文件的所属身份运行而非执行用户。
sgid

对于文件sgid与suid类似,这里就不细说了。
对于组做个示例就很好理解了。
1、用户test1创建目录sgid,并创建文件file1



2、切换同组test2在该目录下创建文件file2



3、该目录添加sgid权限,test2再创建文件file3,查看文件组




总结:
该目录创建的任意新文件的所属组与该目录的所属组相同。
Sticky
还是通过示例说明。
1、test1创建sgid目录,并创建文件file1




2、切换至同组的test2,并删除该文件file1




3、设置目录sticky权限,组权限的o变为T。test2再次尝试删除file1



总结:
对目录有写入权限的用户可以删除其拥有的文件,无法删除其他用户所拥有的文件。

尾巴:
写得比较粗糙,但重要的都提到了。刚开始创建管理用户组时,权限设置确实有点让人头大。还是那句话,多做多试错。
Learn Linux The Hard Way!

本文出自 “Learn Linux The Hard Way” 博客,请务必保留此出处http://qhd1117.blog.51cto.com/11283595/1750579
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: