Linux文件系统的权限
属主(u)、属组(g)、其它用户(o);
rwx, rwx, rwx
-rwxr-xr-x. 1 root root 44680 Jun 25 2011 paps
lrwxrwxrwx. 1 root root 5 Aug 26 03:42 parec -> pacat
lrwxrwxrwx. 1 root root 5 Aug 26 03:42 parecord -> pacat
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 passwd
-rwxr-xr-x. 1 root root 29136 Oct 15 2014 paste
421 4 1 4 1
7 5 5
权限管理:chmod
所属关系管理: chown, chgrp
文件遮罩码:umask
修改文件权限:chmod
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE..
三类:
u: owner
g: group
o: other
a: all
两种用法:
=mode
=rx, =r, =
ug=rx, go=
[+|-]mode
u+r,
+w
+x
-R: recursive 修改文件夹及其子文件和文件夹
修改文件属主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
-R: recursive
user 只变更文件属主
:group 只变更文件属组
user:group 变更文件的属主和属组
修改文件属组:chgrp
[root@gxd ~]# ll
total 72
-rw-------. 1 root root 1676 Aug 26 03:57 anaconda-ks.cfg
-rw-r--r--. 1 root root 50433 Aug 26 03:57 install.log
-rw-r--r--. 1 root root 10033 Aug 26 03:52 install.log.syslog
-rw-r--r--. 1 root root 0 Aug 28 14:18 test.file
[root@gxd ~]# chgrp centos test.file
[root@gxd ~]# ll
total 72
-rw-------. 1 root root 1676 Aug 26 03:57 anaconda-ks.cfg
-rw-r--r--. 1 root root 50433 Aug 26 03:57 install.log
-rw-r--r--. 1 root root 10033 Aug 26 03:52 install.log.syslog
-rw-r--r--. 1 root centos 0 Aug 28 14:18 test.file
umask:遮罩码
设置用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限"补码",而chmod设置的是文件权限码
目录:777-umask
文件:666-umask
如果某一类用户的权限减得的结果有执行权限,此时会自动让其权限位加1;
umask UMASK
设定:仅对当前shell进程有效;
对所有用户设置umask需修改/etc/profile文件
对当前用户修改umask需修改~/.profile
Linux文件系统上的特殊权限
进程的安全上下文:
前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;
(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;
(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;
(3) 进程拥的访问权限,取决其属主的访问权限:
(a) 进程的属主,同文件属主,则应用文件属主权限;
(b) 进程的属主,属于文件的属组,则应用文件属组权限;
(c) 则应用其它权限;
其实在Linux系统中不公有SUID、SGID,还有Effective UID和Effective GID,即EUID和EGID,当文件设置了SUID和SGID位后,系统将文件属主或属组的UID或GID传送给EUID或EGID来执行。
SUID:
(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;
(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;
权限设定:
chmod u+s FILE...
chmod u-s FILE...
注意:
s: 属主原本拥有x权限;
S: 属主原本无x权限,SUID权限不生效
SGID:
默认情况下,用户创建文件时,其属级为此用户所属的基本组;
一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;
权限设定:
chmod g+s FILE...
chmod g-s FILE...
Sticky:
对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;
权限设定
chmod o+t FILE...
chmod o-t FILE...
SUID, SGID, STICKY
000
001
010
011
100
101
110
111
在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限:
11 10 9 8 7 6 5 4 3 2 1 0
s g t r w x r w x r w x
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位。
所以在修改文件权限时,我们可以用4位数来设置文件权限来实现同时设置SUID、SGID、STICKY权限
chmod 4777 FILE
chmod 3755 DIR
练习:
1、让普通用户能使用/tmp/cat去查看/etc/shadow文件;
chmod u+s /tmp/cat
2、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;
chown :centos /test/data
chmod g+w /test/data
chmod g+s /test/data
chmod o+t /test/data