Day 22 Linux的文件权限

第1章 Linux 权限   permission  denied

QQ图片20180807101447.png

1.1 对于文件rwx含义

模拟环境

 [root@oldboyedu50-lnb ~]# mkdir -p /oldboy

[root@oldboyedu50-lnb ~]# echo  'hostname'  >/oldboy/test.sh

[root@oldboyedu50-lnb ~]# cat /oldboy/test.sh

hostname

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh

-rw-r--r--. 1 root root 9 Aug  6 12:32 test.sh

 

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh

hostname

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh 

-bash: test.sh: Permission denied

[oldboy@oldboyedu50-lnb /oldboy]$ /oldboy/test.sh

-bash: /oldboy/test.sh: Permission denied

 

[root@oldboyedu50-lnb /oldboy]# chown oldboy.oldboy test.sh

[root@oldboyedu50-lnb /oldboy]# ll test.sh

-rw-r--r--. 1 oldboy oldboy 9 Aug  6 12:32 test.sh

 

1.1.1 #root用户下面修改权限   测试r权限 

#oldboy用户只有r 权限

[root@oldboyedu50-lnb /oldboy]# chmod u=r test.sh

[root@oldboyedu50-lnb /oldboy]# ll test.sh

-r--r--r--. 1 oldboy oldboy 9 Aug  6 12:32 test.sh

 

#oldboy用户下面测试

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh

-r--r--r--. 1 oldboy oldboy 9 Aug  6 12:32 test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh

hostname

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd'>>test.sh

-bash: test.sh: Permission denied

[oldboy@oldboyedu50-lnb /oldboy]$ /oldboy/test.sh

-bash: /oldboy/test.sh: Permission denied

 

1.2 #root用户下面修改权限   测试w权限 

#oldboy用户只有w 权限

[root@oldboyedu50-lnb /oldboy]# chmod u=w test.sh

[root@oldboyedu50-lnb /oldboy]# ll test.sh

--w-r--r--. 1 oldboy oldboy 9 Aug  6 12:32 test.sh

 

#oldboy用户下面测试

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh

--w-r--r--. 1 oldboy oldboy 9 Aug  6 12:32 test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh

cat: test.sh: Permission denied

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh

cat: test.sh: Permission denied

[oldboy@oldboyedu50-lnb /oldboy]$

[oldboy@oldboyedu50-lnb /oldboy]$ /oldboy/test.sh

-bash: /oldboy/test.sh: Permission denied

 

 

1.3 #root用户下面修改权限   测试x权限 

#oldboy用户             只有x 权限

[root@oldboyedu50-lnb /oldboy]# chmod u=x test.sh

[root@oldboyedu50-lnb /oldboy]# ll test.sh

---xr--r--. 1 oldboy oldboy 13 Aug  6 12:56 test.sh

 

#oldboy用户下面测试

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh

---xr--r--. 1 oldboy oldboy 13 Aug  6 12:56 test.sh

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh

cat: test.sh: Permission denied

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh

-bash: test.sh: Permission denied

[oldboy@oldboyedu50-lnb /oldboy]$ /oldboy/test.sh

bash: /oldboy/test.sh: Permission denied

 

1.4 文件的rwx权限小结:

1.4.1 r读取文件内容

1.4.2 w修改文件内容 需要r权限配合   只有w权限的时候 强制保存退出会导致源文件内容丢失

1.4.3 x权限表示是否能执行脚本 需要r权限配合

2.1对于目录rwx含义

创建环境

mkdir -p /oldboy/test

touch /oldboy/test/oldboy{01..5}.txt

chown oldboy.oldboy /oldboy/test/

 

[root@oldboyedu50-lnb /oldboy]# ll /oldboy/test -d

drwxr-xr-x. 2 oldboy oldboy 4096 Aug  6 13:02 /oldboy/test

[root@oldboyedu50-lnb /oldboy]# ll /oldboy/test

total 4

-rw-r--r--. 1 root root 8 Jul 16 19:24 del.sh

-rw-r--r--  1 root root 0 Aug  6 13:02 oldboy01.txt

-rw-r--r--  1 root root 0 Aug  6 13:02 oldboy02.txt

-rw-r--r--  1 root root 0 Aug  6 13:02 oldboy03.txt

-rw-r--r--  1 root root 0 Aug  6 13:02 oldboy04.txt

-rw-r--r--  1 root root 0 Aug  6 13:02 oldboy05.txt

 

查看目录内容    ls

可以删除 创建 重命名  目录中的文件

是否能进入到目录 cd

 

2.2#root用户下面修改权限   测试r权限 

#oldboy用户             只有r 权限

[root@oldboyedu50-lnb /oldboy]# chmod u=r test

[root@oldboyedu50-lnb /oldboy]# ll -d test

dr--r-xr-x. 2 oldboy oldboy 4096 Aug  6 13:02 test

 

 

#oldboy用户下面测试

[oldboy@oldboyedu50-lnb /oldboy]$ ls test

ls: cannot access test/oldboy05.txt: Permission denied

ls: cannot access test/oldboy04.txt: Permission denied

ls: cannot access test/oldboy01.txt: Permission denied

ls: cannot access test/del.sh: Permission denied

ls: cannot access test/oldboy02.txt: Permission denied

ls: cannot access test/oldboy03.txt: Permission denied

del.sh  oldboy01.txt  oldboy02.txt  oldboy03.txt  oldboy04.txt  oldboy05.txt

[oldboy@oldboyedu50-lnb /oldboy]$ ls -l test

ls: cannot access test/oldboy05.txt: Permission denied

ls: cannot access test/oldboy04.txt: Permission denied

ls: cannot access test/oldboy01.txt: Permission denied

ls: cannot access test/del.sh: Permission denied

ls: cannot access test/oldboy02.txt: Permission denied

ls: cannot access test/oldboy03.txt: Permission denied

total 0

-????????? ? ? ? ?            ? del.sh

-????????? ? ? ? ?            ? oldboy01.txt

-????????? ? ? ? ?            ? oldboy02.txt

-????????? ? ? ? ?            ? oldboy03.txt

-????????? ? ? ? ?            ? oldboy04.txt

-????????? ? ? ? ?            ? oldboy05.txt

 

2.3w 代表是否能删除目录内容 在目录中创建文件 重命名 需要与x配合

[root@oldboy50-lnb /oldboy]#chmod u=w test

[root@oldboy50-lnb /oldboy]#ll -d test

d-w-r-xr-x 2 oldboy oldboy 4096 Aug  2 12:57 test

[oldboy@oldboy50-lnb /oldboy]$cd test

-bash: cd: test: Permission denied

[oldboy@oldboy50-lnb /oldboy]$ls test

ls: cannot open directory test: Permission denied

[oldboy@oldboy50-lnb /oldboy]$touch 1.txt test

touch: cannot touch `1.txt': Permission denied

2.4x权限是否能进入目录 cd (你是否能查看目录中文件的属性)

[root@oldboy50-lnb /oldboy]#chmod u=x test

[root@oldboy50-lnb /oldboy]#ll -d test

d--xr-xr-x 2 oldboy oldboy 4096 Aug  2 14:22 test

[oldboy@oldboy50-lnb /oldboy]$ls test

ls: cannot open directory test: Permission denied

[oldboy@oldboy50-lnb /oldboy]$cd test

[oldboy@oldboy50-lnb /oldboy/test]$touch 1.txt test

touch: cannot touch `1.txt': Permission denied

touch: cannot touch `test': Permission denied

2.5目录权限小结:

2.5.1 r 显示目录内容          需要x权限配合

2.5.2 w 是否能删除目录内容    在目录中创建文件   修改(重命名)

2.5.3 x 是否能进入到目录 cd  (你是否能查看目录中文件的属性)

2.5.4  删除一个文件          看文件所在目录的权限 是否有wx权限 

2.6说说下面错误的报错原因:

1.

[oldboy@oldboyedu50-lnb /]$ ls /root/

ls: cannot open directory /root/: Permission denied  没有r和x权限

2.

[oldboy@oldboyedu50-lnb /]$ touch /etc/passwd.txt

touch: cannot touch `/etc/passwd.txt': Permission denied    没有w权限,x和w配合

3.

[oldboy@oldboyedu50-lnb /]$ \rm -f /etc/sysconfig/network

rm: cannot remove `/etc/sysconfig/network': Permission denied  没有w权限wx配合

4.

[oldboy@oldboyedu50-lnb /]$ echo '#oldboy'  >>/etc/hosts

-bash: /etc/hosts: Permission denied   没有w权限rw配合

5.

[oldboy@oldboyedu50-lnb /]$ cat /etc/shadow

cat: /etc/shadow: Permission denied       没有r权限

2.7文件访问过程与权限

 gygu.png

cat oldboy.txt

           inode     block

文件       文件属性  数据(文件内容)

目录       目录属性  文件名

 

cat  /oldboy/lidao/test.sh

权限可能与文件所在的目录及上级目录 目录有关

控制系统默认权限 umask

文件一般可以给的最大权限:666

文件默认的权限    特殊情况 umask 为单数 032文件  遇到奇数减完加一 目录没有此规则

   666                         666     

  -022                         -032

  =644                         634

                              +010

                              =644

目录一般可以给的最大权限:777

目录默认的权限

   777

  -022

  =755

umask是 035 系统文件默认权限是? 目录权限是?

 

  文件 

  666

 -035

 =631

 +011

  642

 

  目录

  777

  035

  742

 

  要求创建的文件默认权限是000,目录的权限是111   umask ?

umask==666

 

2.8如何通过控制权限的方法 保护网站安全

 网站 blog.oldboyedu.com 

/app/blog 

QQ图片20180807120932.png

 

2.8.1 网站通过www用户运行(虚拟用户)

2.8.2控制目录/app/blog 权限

  file  644   root root 

  dir   755   root root 

2.8.3网站上传目录upload

  file  644   www  www

  dir   755   www  www

 

2.9例题

模拟环境

mkdir -p /app/blog  /app/blog/upload  

touch    /app/blog/tao.avi /app/blog/dao.mp4  /app/blog/ndd.torrent

 

useradd  www

[www@oldboyedu50-lnb /app/blog]$ touch upload/499G.torrent

touch: cannot touch `upload/499G.torrent': Permission denied

#什么原因及怎么解决

 

[root@oldboyedu50-lnb /oldboy]# chown www.www /app/blog/upload/

 

2.10网站整体结构

QQ图片20180807120946.jpg

[root@oldboyedu50-lnb /oldboy]# chattr +a test.sh

[root@oldboyedu50-lnb /oldboy]# lsattr  test.sh

-----a-------e- test.sh

[root@oldboyedu50-lnb /oldboy]# #a  append  只能追加不能删除无法修改

[root@oldboyedu50-lnb /oldboy]# #i    无法删除无法修改只能看

[root@oldboyedu50-lnb /oldboy]# >test.sh

-bash: test.sh: Operation not permitted

[root@oldboyedu50-lnb /oldboy]# echo pwd >>test.sh

[root@oldboyedu50-lnb /oldboy]# \rm -f test.sh

rm: cannot remove `test.sh': Operation not permitted

 

2.10总结:

2.10.1文件 目录 rwx 含义

2.10.2权限相关错误:

2.10.3permission denied

2.10.4原因及解决

2.10.5系统默认的权限 umask 计算

2.10.6如何通过控制权限的方法 让网站安全

2.10.7网站集群架构 数据库 存储

2.10.8隐藏属性(文件系统权限)