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.隐藏属性(文件系统权限)