2018-02-04 文件权限

1、 文件权限

  • 更改文件的权限
[root@localhost mnt]#touch t1
[root@localhost mnt]#ll
total 12
drwxr-xr-x. 2 root root  4096 Jan  9 06:17 hgfs
-rwxr--r--. 1 root root  1251 Feb  1 11:35 ip.sh
-rw-r--r--. 1 root root  2761 Feb  1 11:27 ks.cfg
-rw-r--r--. 1 root root     0 Feb  4 16:09 t1
[root@localhost mnt]#chmod u=rwx,g=rw,o= t1     ---更改t1文件的权限为所有者rwx,所属组为rw,其他人什么权限都没有
[root@localhost mnt]#ll
total 12
drwxr-xr-x. 2 root root  4096 Jan  9 06:17 hgfs
-rwxr--r--. 1 root root  1251 Feb  1 11:35 ip.sh
-rw-r--r--. 1 root root  2761 Feb  1 11:27 ks.cfg
-rwxrw----. 1 root root     0 Feb  4 16:09 t1
[root@localhost mnt]#chmod 755 t1     ---数字法更改文件的权限
[root@localhost mnt]#ll
total 12
drwxr-xr-x. 2 root root  4096 Jan  9 06:17 hgfs
-rwxr--r--. 1 root root  1251 Feb  1 11:35 ip.sh
-rw-r--r--. 1 root root  2761 Feb  1 11:27 ks.cfg
-rwxr-xr-x. 1 root root     0 Feb  4 16:09 t1
[root@localhost mnt]#chmod o-x t1     ---通过加减号更改文件的权限
[root@localhost mnt]#ll
total 12
drwxr-xr-x. 2 root root  4096 Jan  9 06:17 hgfs
-rwxr--r--. 1 root root  1251 Feb  1 11:35 ip.sh
-rw-r--r--. 1 root root  2761 Feb  1 11:27 ks.cfg
-rwxr-xr--. 1 root root     0 Feb  4 16:09 t1
  • 参考某个文件的属性设置文件的权限
[root@localhost mnt]#ll
total 12
drwxr-xr-x. 2 root root  4096 Jan  9 06:17 hgfs
-rwxr--r--. 1 root root  1251 Feb  1 11:35 ip.sh
-rw-r--r--. 1 root root  2761 Feb  1 11:27 ks.cfg
-rwxr-xr--. 1 root root     0 Feb  4 16:09 t1
[root@localhost mnt]#chmod --reference=/etc/passwd t1
[root@localhost mnt]#ll
total 12
drwxr-xr-x. 2 root root  4096 Jan  9 06:17 hgfs
-rwxr--r--. 1 root root  1251 Feb  1 11:35 ip.sh
-rw-r--r--. 1 root root  2761 Feb  1 11:27 ks.cfg
-rw-r--r--. 1 root root     0 Feb  4 16:09 t1    ---参考/etc/passwd 文件的属性设置t1文件的属性
  • X对目录增加执行权限,对原来没有执行权限的文件不增加执行权限
[root@centos6 app]#ll
total 4
drw-r--r--. 4 root root 4096 Jul 24 19:25 dir
[root@centos6 app]#cd dir/
[root@centos6 dir]#ll
total 8
drw-r--r--. 2 root root 4096 Jul 24 19:25 dir1 ---无执行权限
drw-r--r--. 2 root root 4096 Jul 24 19:25 dir2 ---无执行权限
-rwxr--r--. 1 root root    0 Jul 24 19:25 f1  --- 所有者有执行权限
-rw-r--r--. 1 root root    0 Jul 24 19:25 f2 --- 无执行权限
[root@centos6 dir]#cd ..
[root@centos6 app]#chmod -R a+X dir --对dir这个目录增加X执行权限
[root@centos6 app]#ll
total 4
drwxr-xr-x. 4 root root 4096 Jul 24 19:25 dir
[root@centos6 app]#cd dir
[root@centos6 dir]#ll
total 8
drwxr-xr-x. 2 root root 4096 Jul 24 19:25 dir1
drwxr-xr-x. 2 root root 4096 Jul 24 19:25 dir2
-rwxr-xr-x. 1 root root    0 Jul 24 19:25 f1
-rw-r--r--. 1 root root    0 Jul 24 19:25 f2

总结:对目录增加X权限,则目录内的所有子目录会增加执行权限,目录内的文件不会增加执行权限,除非文件原来就有执行权限。

2、文件的默认权限

对于文件=666-umask 根据结果,偶数不变,奇数加1
对于目录=777-umask

  • 设置默认权限
[root@centos6 app]#umask 0042 ---设置umask值为偶数
[root@centos6 app]#touch fb
[root@centos6 app]#ll
total 4
drwxr-xr-x. 4 root root 4096 Jul 24 19:25 dir
-rw-r--r--. 1 root root    0 Jul 24 19:39 fa
-rw--w-r--. 1 root root    0 Jul 24 19:40 fb   ---权限为666-042=624
[root@centos6 app]#umask 0135---umask设置为奇数
[root@centos6 app]#touch fc
[root@centos6 app]#ll
total 4
drwxr-xr-x. 4 root root 4096 Jul 24 19:25 dir
-rw-r--r--. 1 root root    0 Jul 24 19:39 fa
-rw--w-r--. 1 root root    0 Jul 24 19:40 fb
-rw-r---w-. 1 root root    0 Jul 24 19:41 fc ---权限为666-135=531 加1为642
[root@centos6 app]#mkdir dir4
[root@centos6 app]#ll
total 8
drwxr-xr-x. 4 root root 4096 Jul 24 19:25 dir
drw-r---w-. 2 root root 4096 Jul 24 19:42 dir4 ---权限为777-135=642
-rw-r--r--. 1 root root    0 Jul 24 19:39 fa
-rw--w-r--. 1 root root    0 Jul 24 19:40 fb
-rw-r---w-. 1 root root    0 Jul 24 19:41 fc
  • umask直接设定默认权限
[root@centos6 app]#umask u=rw,g=r,o= 
[root@centos6 app]#touch f3
[root@centos6 app]#ll
total 8
drwxr-xr-x. 4 root root 4096 Jul 24 19:25 dir
drw-r---w-. 2 root root 4096 Jul 24 19:42 dir4
-rw-r-----. 1 root root    0 Jul 24 19:56 f3
-rw-r--r--. 1 root root    0 Jul 24 19:39 fa
-rw--w-r--. 1 root root    0 Jul 24 19:40 fb
-rw-r---w-. 1 root root    0 Jul 24 19:41 fc
  • umask输出可使用
[root@centos6 app]#umask -p
umask 0022
[root@centos6 app]#umask -p >> .bashrc或者/etc/bashrc

3、特殊权限

  • suid权限
    只能作用于可执行的二进制程序上,继承该程序所有者的权限
[root@localhost ~]#cd /tmp
[root@localhost tmp]#ll
total 16
-rw-r--r--. 1 root root    7 Feb  2 00:21 abc
-rw-r--r--. 1 root root   22 Feb  2 12:53 t1
-rw-r-----. 1 idc  test   12 Feb  4 21:11 t3
drwx------. 2 root root 4096 Feb  4 21:10 vmware-root
[root@localhost tmp]#su - zheng
[zheng@localhost ~]$id zheng
uid=501(zheng) gid=501(zheng) groups=501(zheng)
[zheng@localhost ~]$cat /tmp/t3    ---对于t3来说,zheng用户属于其他人,对t3文件没有任何权限
cat: /tmp/t3: Permission denied
[zheng@localhost ~]$su -
Password: 
[root@localhost ~]#chmod u+s /bin/cat
[root@localhost ~]#ll /bin/cat     ---对cat这个程序增加一个suid权限
-rwsr-xr-x. 1 root root 48568 May 11  2016 /bin/cat
[root@localhost ~]#su - zheng
[zheng@localhost ~]$cat /tmp/t3    ---继承cat这个程序所有者即root的身份,root对t3文件具有读写权限
hello world
  • sgid权限
    ①作用于可执行的二进制程序上,继承该程序所属组的身份
    ②作用于目录上,目录内新建文件的所属组自动继承目录的所属组
[root@localhost tmp]#ll
total 16
-rw-r--r--. 1 root root    7 Feb  2 00:21 abc
-rw-r--r--. 1 root root   22 Feb  2 12:53 t1
-rw-r-----. 1 idc  test   12 Feb  4 21:11 t3    ---t3文件属于test组
drwx------. 2 root root 4096 Feb  4 21:45 vmware-root
[root@localhost ~]#chmod g+s /bin/cat     ---加上sgid权限后继承该程序所属组的身份
[root@localhost ~]#ll /bin/cat 
-rwxr-sr-x. 1 root test 48568 May 11  2016 /bin/cat    ---cat程序属于test组
[root@localhost ~]#su - zheng
[zheng@localhost ~]$cat /tmp/t3
hello world
[root@localhost tmp]#ll
total 20
-rw-r--r--. 1 root root     7 Feb  2 00:21 abc
drwxr-xr-x. 2 root zheng 4096 Feb  4 22:09 dir1
-rw-r--r--. 1 root root    22 Feb  2 12:53 t1
-rw-r-----. 1 idc  test    12 Feb  4 21:11 t3
drwx------. 2 root root  4096 Feb  4 22:05 vmware-root
[root@localhost tmp]#chmod g+s dir1/    ---增加sgid权限
[root@localhost tmp]#ll
total 20
-rw-r--r--. 1 root root     7 Feb  2 00:21 abc
drwxr-sr-x. 2 root zheng 4096 Feb  4 22:09 dir1
-rw-r--r--. 1 root root    22 Feb  2 12:53 t1
-rw-r-----. 1 idc  test    12 Feb  4 21:11 t3
drwx------. 2 root root  4096 Feb  4 22:10 vmware-root
[root@localhost tmp]#cd dir1/
[root@localhost dir1]#touch {1,2}
[root@localhost dir1]#ll
total 0
-rw-r--r--. 1 root zheng 0 Feb  4 22:12 1    ---目录内新建文件的所属组自动继承目录的所属组
-rw-r--r--. 1 root zheng 0 Feb  4 22:12 2
  • sticky权限
    作用于目录上,目录内的文件只有目录的所有者和root可以删除其中的文件
[root@localhost tmp]#chmod o+t dir1/    ---设置sticky权限
[root@localhost tmp]#ll
total 20
-rw-r--r--. 1 root  root     7 Feb  2 00:21 abc
drwxr-sr-t. 2 zheng zheng 4096 Feb  4 22:12 dir1
-rw-r--r--. 1 root  root    22 Feb  2 12:53 t1
-rw-r-----. 1 idc   test    12 Feb  4 21:11 t3
drwx------. 2 root  root  4096 Feb  5 00:00 vmware-root
[root@localhost tmp]#cd dir1/
[root@localhost dir1]#ll
total 0
-rw-r--r--. 1 zheng zheng 0 Feb  4 22:12 1
-rw-r--r--. 1 zheng root  0 Feb  4 22:12 2
[root@localhost dir1]#su - zheng
[zheng@localhost ~]$cd /tmp/dir1/
[zheng@localhost dir1]$rm -f 1    ---zheng属于目录的所有者,可以删1文件
[zheng@localhost dir1]$ll
total 0
-rw-r--r--. 1 zheng root 0 Feb  4 22:12 2
[zheng@localhost dir1]$su - idc
Password: 
[idc@localhost ~]$cd /tmp/dir1/
[idc@localhost dir1]$rm -f 2    ---idc不属于目录的所有者,不能删除f3文件
rm: cannot remove `2': Permission denied

4、设置特定属性

  • chattr命令
[root@localhost tmp]#ll
total 20
-rw-r--r--. 1 root  root     7 Feb  2 00:21 abc
drwxr-sr-t. 2 zheng zheng 4096 Feb  5 00:09 dir1
-rw-r--r--. 1 root  root    22 Feb  2 12:53 t1
-rw-r-----. 1 idc   test    12 Feb  4 21:11 t3
drwx------. 2 root  root  4096 Feb  5 20:10 vmware-root
[root@localhost tmp]#chattr +i t1
[root@localhost tmp]#lsattr t1
----i--------e- t1
[root@localhost tmp]#rm -f t1
rm: cannot remove `t1': Operation not permitted
[root@localhost tmp]#mv t1 /mnt
mv: cannot move `t1' to `/mnt/t1': Operation not permitted
[root@localhost tmp]#echo "hello world" > t1
-bash: t1: Permission denied

总结:加上chattr+i后,即使root身份也不能对文件进行删除,修改,重命名,可以避免误操作。

[root@localhost tmp]#chattr +a t1
[root@localhost tmp]#lsattr t1
-----a-------e- t1
[root@localhost tmp]#rm -f t1
rm: cannot remove `t1': Operation not permitted
[root@localhost tmp]#mv t1 /mnt
mv: cannot move `t1' to `/mnt/t1': Operation not permitted
[root@localhost tmp]#echo "hello world" >> t1
[root@localhost tmp]#echo "hello world" > t1
-bash: t1: Operation not permitted
[root@localhost tmp]#cat t1
localhost.localdomain
hello world

总结:加上chattr+a后只能追加内容,删除,重命名和修改内容都不可以。

[root@localhost tmp]#lsattr t1
----ia-------e- t1
[root@localhost tmp]#chattr -a t1
[root@localhost tmp]#lsattr t1
----i--------e- t1
[root@localhost tmp]#chattr -i t1
[root@localhost tmp]#lsattr t1
-------------e- t1

总结:可以用chattr-a或-i来取消前面的+i或+a操作。

5、ACL访问控制列表

  • 对用户设置ACL权限
[root@localhost tmp]#ll
total 20
-rw-r--r--. 1 root  root     7 Feb  2 00:21 abc    ---zheng用户只是其他人,没有写权限
drwxr-sr-t. 2 zheng zheng 4096 Feb  5 00:09 dir1
-rw-r--r--. 1 root  root    34 Feb  5 20:23 t1
-rw-r-----. 1 idc   test    12 Feb  4 21:11 t3
drwx------. 2 root  root  4096 Feb  5 21:45 vmware-root
You have new mail in /var/spool/mail/root
[root@localhost tmp]#setfacl -m u:zheng:rw abc     ---设置ACL 权限
[root@localhost tmp]#su - zheng
[zheng@localhost ~]$cd /tmp
[zheng@localhost tmp]$echo aaa > abc     ---可以写入了
[zheng@localhost tmp]$cat abc 
aaa
[zheng@localhost tmp]$su - 
Password: 
[root@localhost ~]#cd /tmp
[root@localhost tmp]#getfacl abc     ---查看ACL权限
# file: abc
# owner: root
# group: root
user::rw-
user:zheng:rw-    ---zheng用户有rw权限
group::r--
mask::rw-
other::r--
[root@localhost tmp]#setfacl -x u:zheng abc     ---删除ACL权限
[root@localhost tmp]#getfacl abc 
# file: abc
# owner: root
# group: root
user::rw-
group::r--
mask::r--    ---只删除zheng用户的ACL权限,mask没有删除,删除不彻底
other::r--
[root@localhost tmp]#setfacl -b abc     ---清空ACL 权限,mask也删除
[root@localhost tmp]#getfacl abc 
# file: abc
# owner: root
# group: root
user::rw-
group::r--
other::r--
  • 对组设置ACL权限
[root@localhost tmp]#ll
total 20
-rw-r--r--. 1 root  root     4 Feb  5 21:48 abc
drwxr-sr-t. 2 zheng zheng 4096 Feb  5 00:09 dir1
-rw-r--r--. 1 root  root    34 Feb  5 20:23 t1
-rw-r-----. 1 idc   test    12 Feb  4 21:11 t3
drwx------. 2 root  root  4096 Feb  5 21:55 vmware-root
[root@localhost tmp]#id idc    ---idc属于test组
uid=500(idc) gid=500(idc) groups=500(idc),502(test),503(test1),504(test2),505(test3)
[root@localhost tmp]#setfacl -m g:test:rw abc     ---对test组设置ACL权限为rw
[root@localhost tmp]#getfacl abc 
# file: abc
# owner: root
# group: root
user::rw-
group::r--
group:test:rw-    ---设置成功
mask::rw-
other::r--
[root@localhost tmp]#su idc
[idc@localhost tmp]$echo abcd >> abc     ---可以写内容
[idc@localhost tmp]$cat abc 
aaa
abcd
  • 设置mask权限-限高线
[root@localhost tmp]#ll
total 24
-rw-rw-r--+ 1 root  root     9 Feb  5 21:57 abc    ---所属组的权限为rw
drwxr-sr-t. 2 zheng zheng 4096 Feb  5 00:09 dir1
-rw-r--r--. 1 root  root    34 Feb  5 20:23 t1
-rw-r-----. 1 idc   test    12 Feb  4 21:11 t3
drwx------. 2 root  root  4096 Feb  5 22:53 vmware-root
[root@localhost tmp]#setfacl -m mask::r abc     ---设置mask权限
[root@localhost tmp]#getfacl abc 
# file: abc
# owner: root
# group: root
user::rw-
group::r--
group:test:rw-          #effective:r--
mask::r--
other::r--

[root@localhost tmp]#ll
total 24
-rw-r--r--+ 1 root  root     9 Feb  5 21:57 abc    ---设置mask后所属组的权限为mask的权限
drwxr-sr-t. 2 zheng zheng 4096 Feb  5 00:09 dir1
-rw-r--r--. 1 root  root    34 Feb  5 20:23 t1
-rw-r-----. 1 idc   test    12 Feb  4 21:11 t3
drwx------. 2 root  root  4096 Feb  5 22:53 vmware-root

总结:mask影响的范围是除了所有者和其他人之外的人。
mask是个限高线,在这个范围内的人不允许超过这个线,设置mask后所属组的权限就是mask的权限。
设置完mask后不要在更改ACL 权限,否则mask值会改变。

你可能感兴趣的:(2018-02-04 文件权限)