linux_权限管理
linux一切皆文件,所以此处所说的权限为文件权限:
权限类别:
r,w,x,-
文件系统的三组权限,每组权限由三个权限组成,分别是属主权限,属组权限,other权限
文件:
r: 可读,可以使用类似cat等命令查看文件内容;
w: 可写,可以编辑或删除此文件;
x: 可执行,eXacutable,可以命令提示符下当做命令提交给内核运行;
目录:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录中创建文件;
x: 可以使用cd切换进此目录,也可以使用ls -l 查看内部文件的详细信息;
mode:
r = 100 -> 4
w = 010 -> 2
x = 001 -> 1
三类用户:
u: 属主 owner
g: 属组 group
o: 其他用户 other
chown: 改变文件属主(只有管理员可以使用此命令)
chown username filename,…
-R:--修改目录及其内部文件的属主,递归
--reference=/path/to/somefile file,… (将文件属主属组设置为参考对象一致)
可以使用chown 同时更改文件的属主和属组:
chown ownername:groupname filename,…
chgrp: 改变文件属组
chgrp groupname file,…
-R:
--reference=/tmp/test filename,…
chmod: 修改文件的权限
chmod mode filename,…
-R
--reference=/tmp/test
修改某类或某些类用户权限:
u,g,o,a
chmod <u|g|o|a> = mode filename,…
+
-
umask:
/etc/bashrc
用户创建的文件及目录的默认权限:
文件: = 666-umask
目录: = 777-umask
umask 023
文件:666-023 = 643 => 644 文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限+1
目录:777-023 = 754
特殊权限:
SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是执行用户
给文件添加SUID权限: chmod u+s file_name
chmod u-s file_name
如果文件本来具有x权限,则执行权限位显示为"s";否则显示为"S"
SGID: 运行某程序时,相应的进程的属组是程序文件自身的属组,而不是执行用户的属组
添加SGID权限:chmod g+s file_name
chmod g-s file_name
SGID的一个应用场景:
一个目录下,所有用户都能访问编辑任意用户创建的文件:
1.给所有需要访问的用户添加共同的附加组
2.修改该目录的属组为用户的共同附加组
3.给该目录增加SGID权限; chmod g+s dir_name
注意:此种方式下,所有用户都能对任意用户的文件进行所有操作,包括删除
Sticky: 在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件
chmod o+t dir_name
chmod 0-t dir_name
001 : Sticky -->t -->1
010 : SGID -->s -->2
100 : SUID -->s -->4
chmod 5755 /tmp/test/ ==> chmod u=rwxs,g=rx,o=rxt /tmp/test
umask : 0022