第1章 文件的权限
1.1 对于文件rwx权限
开启两个窗口 一个root用户 一个普通用户
root用户用于更改权限,普通用户用于测试
创建环境


[root@oldboyedu50-lnb ~]# mkdir -p /oldboy [root@oldboyedu50-lnb ~]# echo 'hostname' >/oldboy/test.sh [root@oldboyedu50-lnb ~]# cat /oldboy/test.sh hostname
1.1.1 r权限测试
root下修改权限 让用户只有r权限
[root@oldboyedu-50 oldboy]# chmod u=r test.sh 更改权限 u=r 只有r权限 [root@oldboyedu-50 oldboy]# ll 检查 total 24 -r--r--r-- 1 oldboy oldboy 9 Aug 6 16:22 test.sh
oldboy用户测试
[oldboy@oldboyedu-50 oldboy]$ ll oldboy用户下检查 total 24 -r--r--r-- 1 oldboy oldboy 9 Aug 6 16:22 test.sh [oldboy@oldboyedu-50 oldboy]$ cat test.sh 可以读取 hostname [oldboy@oldboyedu-50 oldboy]$ echo 'oldboy' >> test.sh 不能写入 -bash: test.sh: Permission denied [oldboy@oldboyedu-50 oldboy]$ /oldboy/test.sh 不能执行 -bash: /oldboy/test.sh: Permission denied
1.1.2 w权限测试
root下修改权限 让用户只有w权限
[root@oldboyedu-50 oldboy]# chmod u=w test.sh 超级用户下修改权限 [root@oldboyedu-50 oldboy]# ll total 24 --w-r--r-- 1 oldboy oldboy 9 Aug 6 16:22 test.sh 检查 只有w权限
oldboy用户下
[oldboy@oldboyedu-50 oldboy]$ ll total 24 --w-r--r-- 1 oldboy oldboy 9 Aug 6 16:22 test.sh [oldboy@oldboyedu-50 oldboy]$ cat test.sh 无法读取 cat: test.sh: Permission denied [oldboy@oldboyedu-50 oldboy]$ echo 'pwd' >> test.sh 可以写入 [oldboy@oldboyedu-50 oldboy]$ /oldboy/test.sh 无法执行 -bash: /oldboy/test.sh: Permission denied 只有w权限的时候 vim强制保存退出会导致源文件内容丢失
1.1.3 x权限测试
root下修改权限 让用户只有x权限
[root@oldboyedu-50 oldboy]# chmod u=x test.sh root下修改 [root@oldboyedu-50 oldboy]# ll total 24 ---xr--r-- 1 oldboy oldboy 13 Aug 6 16:34 test.sh 只有x权限
oldboy用户下测试
[oldboy@oldboyedu-50 oldboy]$ ll 先检查 total 24 ---xr--r-- 1 oldboy oldboy 13 Aug 6 16:34 test.sh [oldboy@oldboyedu-50 oldboy]$ cat test.sh 无法查看 cat: test.sh: Permission denied [oldboy@oldboyedu-50 oldboy]$ echo 'pwd' >> test.sh 无法写入 -bash: test.sh: Permission denied [oldboy@oldboyedu-50 oldboy]$ /oldboy/test.sh 无法执行 因为想要执行一个文件/脚本 可以执行 必须要有读取的权限 先知道内容才能执行 bash: /oldboy/test.sh: Permission denied
1.1.4 文件权限小结
r 查看/读取 文件的内容
w 修改文件的内容 需要r权限的配合
x 执行文件的权限 需要r的权限配合
只有w权限的时候 强制保存退出会导致源文件内容丢失
1.2 对于目录rwx的权限
创建环境


[root@oldboyedu-50 oldboy]# mkdir -p /oldboy/test [root@oldboyedu-50 oldboy]# cd /oldboy/test [root@oldboyedu-50 test]# touch /oldboy/test/oldboy{01..5}.txt [root@oldboyedu-50 test]# tree . ├── oldboy01.txt ├── oldboy02.txt ├── oldboy03.txt ├── oldboy04.txt └── oldboy05.txt 0 directories, 5 files
1.2.1 r权限测试
root用户下修改权限 修改目录r权限
[root@oldboyedu-50 oldboy]# chmod u=r test 修改权限 [root@oldboyedu-50 oldboy]# chown oldboy.oldboy test 修改所属用户和组 [root@oldboyedu-50 oldboy]# ll 检查 total 28 dr--r-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test
oldboy用户下测试


[oldboy@oldboyedu-50 oldboy]$ ll 先检查 total 28 dr--r-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test [oldboy@oldboyedu-50 oldboy]$ ls test 可以看到文件名但是报错 ls: cannot access test/oldboy02.txt: Permission denied ls: cannot access test/oldboy05.txt: Permission denied ls: cannot access test/oldboy04.txt: Permission denied ls: cannot access test/oldboy03.txt: Permission denied ls: cannot access test/oldboy01.txt: Permission denied oldboy01.txt oldboy02.txt oldboy03.txt oldboy04.txt oldboy05.txt [oldboy@oldboyedu-50 oldboy]$ ls -l test 只能看文件名 文件属性不能看 ls: cannot access test/oldboy02.txt: Permission denied ls: cannot access test/oldboy05.txt: Permission denied ls: cannot access test/oldboy04.txt: Permission denied ls: cannot access test/oldboy03.txt: Permission denied ls: cannot access test/oldboy01.txt: Permission denied total 0 -????????? ? ? ? ? ? oldboy01.txt -????????? ? ? ? ? ? oldboy02.txt -????????? ? ? ? ? ? oldboy03.txt -????????? ? ? ? ? ? oldboy04.txt -????????? ? ? ? ? ? oldboy05.txt
1.2.2 r权限 加 x权限
接r权限 在r的基础上加上x
root下再给目录加上x权限
[root@oldboyedu-50 oldboy]# chmod u+x test 在r的基础上加上x权限 [root@oldboyedu-50 oldboy]# ll 检查 total 28 dr-xr-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test
oldboy用户下测试
[oldboy@oldboyedu-50 oldboy]$ ll oldboy用户下检查 total 28 dr-xr-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test [oldboy@oldboyedu-50 oldboy]$ ls test 查看test目录的内容 oldboy01.txt oldboy02.txt oldboy03.txt oldboy04.txt oldboy05.txt [oldboy@oldboyedu-50 oldboy]$ ls -l test 可以查看 没有报错 total 0 -rw-r--r-- 1 root root 0 Aug 7 09:21 oldboy01.txt -rw-r--r-- 1 root root 0 Aug 7 09:21 oldboy02.txt -rw-r--r-- 1 root root 0 Aug 7 09:21 oldboy03.txt -rw-r--r-- 1 root root 0 Aug 7 09:21 oldboy04.txt -rw-r--r-- 1 root root 0 Aug 7 09:21 oldboy05.txt
1.2.3 w权限测试
root下给目录加上w权限
[root@oldboyedu-50 oldboy]# chmod u=w test 加上w权限 只有w权限测试 [root@oldboyedu-50 oldboy]# ll -ld test 检查 只有w权限 d-w-r-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test
oldboy用户下测试
[oldboy@oldboyedu-50 oldboy]$ ll -ld test oldboy用户下检查 d-w-r-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test [oldboy@oldboyedu-50 oldboy]$ touch test/linux.txt 创建文件 touch: cannot touch `test/linux.txt': Permission denied 报错 无法创建 [oldboy@oldboyedu-50 oldboy]$ ls test 无法查看 ls: cannot open directory test: Permission denied [oldboy@oldboyedu-50 oldboy]$ rm -f test/oldboy01.txt 无法删除 rm: cannot remove `test/oldboy01.txt': Permission denied
1.2.4 w权限 加 x权限
接w权限 在w的基础上加上x
root下给目录加上x权限
[root@oldboyedu-50 oldboy]# chmod u+x test 给目录在w权限基础上加上x权限 [root@oldboyedu-50 oldboy]# ll -ld test 检查 d-wxr-xr-x 2 oldboy oldboy 4096 Aug 7 09:21 test
oldboy用户下测试
[oldboy@oldboyedu-50 oldboy]$ ll -ld test oldboy用户下检查 d-wxr-xr-x 2 oldboy oldboy 4096 Aug 7 09:57 test [oldboy@oldboyedu-50 oldboy]$ touch test/linux 创建新文件 成功 [oldboy@oldboyedu-50 oldboy]$ ls test 无法查看 ls: cannot open directory test: Permission denied [oldboy@oldboyedu-50 oldboy]$ rm -f test/linux 可以删除 删除一个文件 需要看 文件所在目录的权限 是否有wx 跟文件本身的权限没有关系
1.2.5 目录权限小结
目录权限小结:
1. r 显示目录内容 需要x权限配合
2. w 是否能删除目录内容 在目录中创建文件 修改(重命名)
3. x 是否能进入到目录 cd (你是否能查看目录中文件的属性)
4. 删除一个文件 看文件所在目录的权限 是否有wx权限
目录的rwx权限
r 查看目录内容 ls
w 可以删除 创建 重命名 目录中的文件
x 是否能进入到目录 cd
第2章 文件访问过程与权限
2.1 相对路径访问
先通过文件名找到inode号码
再读取inode中存放的block位置信息
最后显示block内容,就是显示文件的内容。
2.2 绝对路径访问
如访问/etc下的文件:
先访问/目录
读取目录的block,找对应的文件
/etc目录的inode
读取文件的权限
找到block的位置
读取文件的内容
2.3 关系
文件的名字是存放在所在目录的block里面
文件名与inode的对应关系放在目录的block中
第3章 控制系统默认权限-umask
3.1 系统的默认权限
file---666 -rw-rw-rw 文件
dir ---777 drwxrwxrwx 目录
创建一个文件或目录 默认权限
[root@oldboyedu-50 oldboy]# touch 2.txt 创建文件 [root@oldboyedu-50 oldboy]# ll 2.txt 默认权限644 -rw-r--r-- 1 root root 0 Aug 7 10:55 2.txt [root@oldboyedu-50 oldboy]# mkdir 1 创建目录 [root@oldboyedu-50 oldboy]# ls -dl 1 目录权限默认755 drwxr-xr-x 2 root root 4096 Aug 7 10:55 1
3.2 umask 反掩码计算
默认的最大权限减去 umask
3.2.1 umask为偶数
实例 当umask为0022
文件:
file- 666-022=644
目录:
dir- 777-022=755
3.2.2 umask为奇数
实例 当umask为0032
当umask为奇数时,计算文件的默认权限的时候,要在奇数位加1
目录不变
file- 666-032=634
+010 =644 最终是为644
3.2.3 umask=035
[root@znix ~]# umask 035 [root@znix ~]# touch file035 [root@znix ~]# mkdir dir035 [root@znix ~]# ll file035 && ll -d dir035 使用ls 命令查看 -rw-r---w- 1 root root 0 Sep 6 10:42 file035 drwxr---w- 2 root root 4096 Sep 6 10:42 dir035 file=642 dir=742
3.3 修改umask的方法


[root@znix ~]# vim /etc/profile if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi 解释: 如果 [ 用户UID>=199 ] 并且 [ 用户的名字 == 用户组名字 ];然后 umask 002 那么 umask 022
第4章 网站权限-让网站更安全
4.1 控制权限
让网站以www身份运行
让主要的文件归root用户所有
对于用户上传的文件处理
让用户上传的文件放在属于www用户的文件夹中;
限制文件的后缀;
上传之后不能查看……


网站 blog.oldboyedu.com /app/blog 1.网站通过www用户运行(虚拟用户) 2.控制目录/app/blog 权限 file 644 root root dir 755 root root 3.网站上传目录upload file 644 www www dir 755 www www
4.2 模拟网站环境试验
模拟环境


mkdir -p /app/blog /app/blog/upload touch /app/blog/tao.avi /app/blog/dao.mp4 /app/blog/ndd.torrent useradd www
在www用户下测试
[www@oldboyedu-50 blog]$ whoami 检查当前用户 www [www@oldboyedu-50 blog]$ ll 查看 可以查看 total 4 -rw-r--r-- 1 root root 0 Aug 7 11:38 dao.mp4 -rw-r--r-- 1 root root 0 Aug 7 11:38 ndd.torrent -rw-r--r-- 1 root root 0 Aug 7 11:38 tao.avi drwxr-xr-x 2 root root 4096 Aug 7 11:38 upload 试验 上传文件到upload目录 [www@oldboyedu-50 blog]$ touch /app/blog/movie.avi 无法写入 报错 touch: cannot touch `/app/blog/movie.avi': Permission denied [www@oldboyedu-50 blog]$ chown www.www /app/blog/upload/ 解决方法 给www权限
第5章 隐藏权限
5.1 隐藏权限的作用
lsattr 查看隐藏权限
chattr 授予文件或目录隐藏的权限 如 +a -a
a (append只能追加)如果设置了这个权限 只能追加 不能删除 不能修改
i (immutable无敌) 无法删除 无法修改
重要的文件或命令加上隐藏权限
主要命令+i
重要的配置文件+a
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
5.2 测试a权限
只能向文件中追加内容,不能删除
a (append只能追加)如果设置了这个权限 只能追加 不能删除 不能修改
[root@oldboyedu50-lnb /oldboy]# chattr +a test.sh 给文件加上a权限 [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
5.3 测试i权限
i (immutable无敌) 无法删除 无法修改
不能对文件进行任何操作,root用户也不能操作。
[root@znix ~]# chattr +i clsn.txt [root@znix ~]# lsattr clsn.txt ----i--------e- clsn.txt