day 22 Linux权限

第1章 文件的rwx权限

1.1 创建环境:

1.1.1 root用户下:

[root@oldboyedu50-lnb ~]# mkdir -p /oldboy                      创建目录/oldboy

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

[root@oldboyedu50-lnb ~]# cat /oldboy/test.sh                     查看文件test.sh

hostname

1.1.2 oldboy用户下:

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh            在普通用户下显示test.sh的内容列表(*1

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

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh            显示test.sh的内容      (*2

hostname

[oldboy@oldboyedu50-lnb /oldboy]$ echo 'pwd' >>test.sh    将pwd写入到test.sh    (*3)

-bash: test.sh: Permission denied

ls参数 - l : 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

 

cat经常用来显示文件的内容

 

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。

 

[root@oldboyedu50-lnb /oldboy]# chown oldboy.oldboy test.sh   修改test.sh的属主和属组为oldboy

[root@oldboyedu50-lnb /oldboy]# ll test.sh                    查看test.sh的内容

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

chown命令改变某个文件或目录的所有者和所属的组

对于文件rwx含义

r=读取属性  //值=4
w=写入属性  //值=2
x=执行属性  //值=1

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

1.2.1 #oldboy用户只有r 权限

[root@oldboyedu50-lnb /oldboy]# chmod u=r test.sh    修改test.sh 中user的权限为r(可读)     

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

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

 

chmod命令用来变更文件或目录的权限

1.2.2 #oldboy用户下面测试

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh    在普通用户下显示test.sh的内容列表

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

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh    显示test.sh的内容

hostname

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

-bash: test.sh: Permission denied

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

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

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

1.3.1 #oldboy用户只有w 权限

[root@oldboyedu50-lnb /oldboy]# chmod u=w test.sh     修改test.sh 中user的权限为w(可写)    

[root@oldboyedu50-lnb /oldboy]# ll test.sh             在root用户下显示test.sh的内容列表

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

1.3.2 #oldboy用户下面测试

[oldboy@oldboyedu50-lnb /oldboy]$ ll test.sh        在普通用户下显示test.sh的内容列表

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

[oldboy@oldboyedu50-lnb /oldboy]$ cat test.sh       显示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         显示test.sh的内容       

cat: test.sh: Permission denied

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

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

文件的小结:

 

1.r读取文件内容

2.w修改文件内容  需要r权限配合

  只有w权限的时候 强制保存退出会导致源文件内容丢失

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

1.4.1 #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

1.4.2 #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.5 文件的rwx权限小结:

1.r读取文件内容

2.w修改文件内容           需要r权限配合

  只有w权限的时候 强制保存退出会导致源文件内容丢失

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

第2章 对于目录rwx含义

2.1 创建环境

mkdir -p /oldboy/test                            创建目录/oldboy/test

touch /oldboy/test/oldboy{01..5}.txt             在目录下创建5个文件      (*3

chown oldboy.oldboy /oldboy/test/                将目录/oldboy/test的属主和属组改为oldboy   (*4

 

touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

chown命令改变某个文件或目录的所有者和所属的组

[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 -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;

2.2 目录的rwx权限小结

r  查看目录内容    ls

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

x  是否能进入到目录 cd

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

2.3.1 #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

2.3.2 #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.4 目录权限小结:

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

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

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

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

2.5 初步排错

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

#oldboy

1.

[oldboy@oldboyedu50-lnb /]$ ls /root/                       查看目录  必须使用r x配合使用

ls: cannot open directory /root/: Permission denied

2.

[oldboy@oldboyedu50-lnb /]$ touch /etc/passwd.txt         创建文件 在当前目录权限使用w  必须配合x

touch: cannot touch `/etc/passwd.txt': Permission denied

3.

[oldboy@oldboyedu50-lnb /]$ \rm -f /etc/sysconfig/network   当前目录中要有wx权限才能删除

rm: cannot remove `/etc/sysconfig/network': Permission denied

4.

[oldboy@oldboyedu50-lnb /]$ echo '#oldboy'  >>/etc/hosts     写入w 必须配合r

-bash: /etc/hosts: Permission denied

5.

[oldboy@oldboyedu50-lnb /]$ cat /etc/shadow                  没有r权限

cat: /etc/shadow: Permission denied

cat: /etc/shadow: Permission denied

第3章 文件访问过程与权限

cat oldboy.txt

           inode      block            

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

目录      目录属性  文件名           

cat  /oldboy/lidao/test.sh

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

3.1 控制系统默认权限 umask

umask    umask用来设置限制新建文件权限的掩码

022

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

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

3.1.1  文件默认的权限 

     6 6 6

-          0 2 2

  =  6 4 4

3.1.2 目录默认的权限

     7 7 7

-          0 2 2

  =  7 5 5

3.1.3 特殊情况:

   umask  032

  

文件

     6 6 6

  -  0 3 2

     6 3 4

  +  0 1 0

  =  6 4 4

实例3-1 umask 035 系统文件默认权限是? 目录权限是?

  文件                              目录

    6  6  6                          7  7  7

 -  0  3  5                        -  0  3  5

 =  6  3  1                        =  7  4  2

 +  0  1  1                           

 =  6  4  2                           

 

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

 网站 blog.oldboyedu.com 

/app/blog 

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

4.2  控制目录/app/blog 权限

  file  644   root root 

  dir   755   root root 

4.3  网站上传目录upload

  file  644   www  www

  dir   755   www  www

4.4 模拟环境

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

4.4.1 #什么原因及怎么解决

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

4.4.2 网站整体结构

[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]# >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

chattr命令用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

a:让文件或目录仅供附加用途;

b:不更新文件或目录的最后存取时间;

c:将文件或目录压缩后存放;

d:将文件或目录排除在倾倒操作之外;

i:不得任意更动文件或目录;

s:保密性删除文件或目录;

S:即时更新文件或目录;

u:预防意外删除。

总结:

1.文件 目录 rwx 含义

2.权限相关错误:

permission denied

原因及解决

3.系统默认的权限 umask 计算

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

5.网站集群架构 数据库 存储

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


猜你喜欢

转载自blog.51cto.com/13859679/2155853