本文共 9596 字,大约阅读时间需要 31 分钟。
开启两个窗口 一个root用户 一个普通用户
root用户用于更改权限,普通用户用于测试创建环境
[root@nfsnobody ~]# mkdir -p /nfsnobody[root@nfsnobody ~]# echo 'hostname' >/nfsnobody/test.sh[root@nfsnobody ~]# cat /nfsnobody/test.shhostname
root下修改权限 让用户只有r权限[root@nfsnobody nfsnobody]# chmod u=r test.sh 更改权限 u=r 只有r权限[root@nfsnobody nfsnobody]# ll 检查total 24-r--r--r-- 1 nfsnobody nfsnobody 9 Aug 6 16:22 test.shnfsnobody用户测试[nfsnobody@nfsnobody nfsnobody]$ ll nfsnobody用户下检查total 24-r--r--r-- 1 nfsnobody nfsnobody 9 Aug 6 16:22 test.sh[nfsnobody@nfsnobody nfsnobody]$ cat test.sh 可以读取hostname[nfsnobody@nfsnobody nfsnobody]$ echo 'nfsnobody' >> test.sh 不能写入-bash: test.sh: Permission denied[nfsnobody@nfsnobody nfsnobody]$ /nfsnobody/test.sh 不能执行-bash: /nfsnobody/test.sh: Permission denied
root下修改权限 让用户只有w权限[root@nfsnobody nfsnobody]# chmod u=w test.sh 超级用户下修改权限[root@nfsnobody nfsnobody]# lltotal 24--w-r--r-- 1 nfsnobody nfsnobody 9 Aug 6 16:22 test.sh 检查 只有w权限nfsnobody用户下[nfsnobody@nfsnobody nfsnobody]$ lltotal 24--w-r--r-- 1 nfsnobody nfsnobody 9 Aug 6 16:22 test.sh[nfsnobody@nfsnobody nfsnobody]$ cat test.sh 无法读取cat: test.sh: Permission denied[nfsnobody@nfsnobody nfsnobody]$ echo 'pwd' >> test.sh 可以写入[nfsnobody@nfsnobody nfsnobody]$ /nfsnobody/test.sh 无法执行-bash: /nfsnobody/test.sh: Permission denied只有w权限的时候 vim强制保存退出会导致源文件内容丢失
root下修改权限 让用户只有x权限[root@nfsnobody nfsnobody]# chmod u=x test.sh root下修改[root@nfsnobody nfsnobody]# lltotal 24---xr--r-- 1 nfsnobody nfsnobody 13 Aug 6 16:34 test.sh 只有x权限nfsnobody用户下测试[nfsnobody@nfsnobody nfsnobody]$ ll 先检查total 24---xr--r-- 1 nfsnobody nfsnobody 13 Aug 6 16:34 test.sh[nfsnobody@nfsnobody nfsnobody]$ cat test.sh 无法查看cat: test.sh: Permission denied [nfsnobody@nfsnobody nfsnobody]$ echo 'pwd' >> test.sh 无法写入-bash: test.sh: Permission denied[nfsnobody@nfsnobody nfsnobody]$ /nfsnobody/test.sh 无法执行 因为想要执行一个文件/脚本 可以执行 必须要有读取的权限 先知道内容才能执行bash: /nfsnobody/test.sh: Permission denied
r 查看/读取 文件的内容
w 修改文件的内容 需要r权限的配合x 执行文件的权限 需要r的权限配合只有w权限的时候 强制保存退出会导致源文件内容丢失创建环境
[root@nfsnobody nfsnobody]# mkdir -p /nfsnobody/test[root@nfsnobody nfsnobody]# cd /nfsnobody/test[root@nfsnobody test]# touch /nfsnobody/test/nfsnobody{01..5}.txt[root@nfsnobody test]# tree.├── nfsnobody01.txt├── nfsnobody02.txt├── nfsnobody03.txt├── nfsnobody04.txt└── nfsnobody05.txt0 directories, 5 files
root用户下修改权限 修改目录r权限
[root@nfsnobody nfsnobody]# chmod u=r test 修改权限[root@nfsnobody nfsnobody]# chown nfsnobody.nfsnobody test 修改所属用户和组[root@nfsnobody nfsnobody]# ll 检查total 28dr--r-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 testnfsnobody用户下测试[nfsnobody@nfsnobody nfsnobody]$ ll 先检查total 28dr--r-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 test[nfsnobody@nfsnobody nfsnobody]$ ls test 可以看到文件名但是报错ls: cannot access test/nfsnobody02.txt: Permission deniedls: cannot access test/nfsnobody05.txt: Permission deniedls: cannot access test/nfsnobody04.txt: Permission deniedls: cannot access test/nfsnobody03.txt: Permission deniedls: cannot access test/nfsnobody01.txt: Permission deniednfsnobody01.txt nfsnobody02.txt nfsnobody03.txt nfsnobody04.txt nfsnobody05.txt[nfsnobody@nfsnobody nfsnobody]$ ls -l test 只能看文件名 文件属性不能看ls: cannot access test/nfsnobody02.txt: Permission deniedls: cannot access test/nfsnobody05.txt: Permission deniedls: cannot access test/nfsnobody04.txt: Permission deniedls: cannot access test/nfsnobody03.txt: Permission deniedls: cannot access test/nfsnobody01.txt: Permission deniedtotal 0-????????? ? ? ? ? ? nfsnobody01.txt-????????? ? ? ? ? ? nfsnobody02.txt-????????? ? ? ? ? ? nfsnobody03.txt-????????? ? ? ? ? ? nfsnobody04.txt-????????? ? ? ? ? ? nfsnobody05.txt
接r权限 在r的基础上加上x
root下再给目录加上x权限[root@nfsnobody nfsnobody]# chmod u+x test 在r的基础上加上x权限[root@nfsnobody nfsnobody]# ll 检查total 28dr-xr-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 testnfsnobody用户下测试[nfsnobody@nfsnobody nfsnobody]$ ll nfsnobody用户下检查total 28dr-xr-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 test[nfsnobody@nfsnobody nfsnobody]$ ls test 查看test目录的内容nfsnobody01.txt nfsnobody02.txt nfsnobody03.txt nfsnobody04.txt nfsnobody05.txt[nfsnobody@nfsnobody nfsnobody]$ ls -l test 可以查看 没有报错total 0-rw-r--r-- 1 root root 0 Aug 7 09:21 nfsnobody01.txt-rw-r--r-- 1 root root 0 Aug 7 09:21 nfsnobody02.txt-rw-r--r-- 1 root root 0 Aug 7 09:21 nfsnobody03.txt-rw-r--r-- 1 root root 0 Aug 7 09:21 nfsnobody04.txt-rw-r--r-- 1 root root 0 Aug 7 09:21 nfsnobody05.txt
root下给目录加上w权限
[root@nfsnobody nfsnobody]# chmod u=w test 加上w权限 只有w权限测试[root@nfsnobody nfsnobody]# ll -ld test 检查 只有w权限d-w-r-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 testnfsnobody用户下测试[nfsnobody@nfsnobody nfsnobody]$ ll -ld test nfsnobody用户下检查d-w-r-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 test[nfsnobody@nfsnobody nfsnobody]$ touch test/linux.txt 创建文件 touch: cannot touch `test/linux.txt': Permission denied 报错 无法创建[nfsnobody@nfsnobody nfsnobody]$ ls test 无法查看ls: cannot open directory test: Permission denied [nfsnobody@nfsnobody nfsnobody]$ rm -f test/nfsnobody01.txt 无法删除rm: cannot remove `test/nfsnobody01.txt': Permission denied
接w权限 在w的基础上加上x
root下给目录加上x权限[root@nfsnobody nfsnobody]# chmod u+x test 给目录在w权限基础上加上x权限[root@nfsnobody nfsnobody]# ll -ld test 检查d-wxr-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:21 testnfsnobody用户下测试[nfsnobody@nfsnobody nfsnobody]$ ll -ld test nfsnobody用户下检查 d-wxr-xr-x 2 nfsnobody nfsnobody 4096 Aug 7 09:57 test[nfsnobody@nfsnobody nfsnobody]$ touch test/linux 创建新文件 成功[nfsnobody@nfsnobody nfsnobody]$ ls test 无法查看ls: cannot open directory test: Permission denied[nfsnobody@nfsnobody nfsnobody]$ rm -f test/linux 可以删除删除一个文件 需要看 文件所在目录的权限 是否有wx 跟文件本身的权限没有关系
目录权限小结:
1. r 显示目录内容 需要x权限配合 2. w 是否能删除目录内容 在目录中创建文件 修改(重命名)3. x 是否能进入到目录 cd (你是否能查看目录中文件的属性)4. 删除一个文件 看文件所在目录的权限 是否有wx权限 目录的rwx权限 r 查看目录内容 ls w 可以删除 创建 重命名 目录中的文件 x 是否能进入到目录 cd先通过文件名找到inode号码
再读取inode中存放的block位置信息最后显示block内容,就是显示文件的内容。如访问/etc下的文件:
先访问/目录读取目录的block,找对应的文件/etc目录的inode读取文件的权限找到block的位置读取文件的内容文件的名字是存放在所在目录的block里面
文件名与inode的对应关系放在目录的block中file---666 -rw-rw-rw 文件
dir ---777 drwxrwxrwx 目录创建一个文件或目录 默认权限[root@nfsnobody nfsnobody]# touch 2.txt 创建文件[root@nfsnobody nfsnobody]# ll 2.txt 默认权限644-rw-r--r-- 1 root root 0 Aug 7 10:55 2.txt[root@nfsnobody nfsnobody]# mkdir 1 创建目录[root@nfsnobody nfsnobody]# ls -dl 1 目录权限默认755drwxr-xr-x 2 root root 4096 Aug 7 10:55 1
默认的最大权限减去 umask
实例 当umask为0022
文件:file- 666-022=644目录:dir- 777-022=755实例 当umask为0032
当umask为奇数时,计算文件的默认权限的时候,要在奇数位加1目录不变file- 666-032=634 +010 =644 最终是为644[root@nfsnobody ~]# umask 035[root@nfsnobody ~]# touch file035[root@nfsnobody ~]# mkdir dir035[root@nfsnobody ~]# ll file035 && ll -d dir035 使用ls 命令查看-rw-r---w- 1 root root 0 Sep 6 10:42 file035drwxr---w- 2 root root 4096 Sep 6 10:42 dir035
file=642 dir=742
[root@nfsnobody ~]# vim /etc/profileif [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002else umask 022fi解释:如果 [ 用户UID>=199 ] 并且 [ 用户的名字 == 用户组名字 ];然后 umask 002那么 umask 022
让网站以www身份运行
让主要的文件归root用户所有对于用户上传的文件处理让用户上传的文件放在属于www用户的文件夹中;限制文件的后缀;上传之后不能查看……网站 blog.nfsnobody.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模拟环境
mkdir -p /app/blog /app/blog/upload touch /app/blog/tao.avi /app/blog/dao.mp4 /app/blog/ndd.torrent useradd www在www用户下测试[www@nfsnobody blog]$ whoami 检查当前用户www[www@nfsnobody 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.avidrwxr-xr-x 2 root root 4096 Aug 7 11:38 upload 试验 上传文件到upload目录[www@nfsnobody blog]$ touch /app/blog/movie.avi 无法写入 报错touch: cannot touch `/app/blog/movie.avi': Permission denied[www@nfsnobody blog]$ chown www.www /app/blog/upload/ 解决方法 给www权限
lsattr 查看隐藏权限
chattr 授予文件或目录隐藏的权限 如 +a -aa (append只能追加)如果设置了这个权限 只能追加 不能删除 不能修改i (immutable无敌) 无法删除 无法修改重要的文件或命令加上隐藏权限主要命令+i重要的配置文件+a/etc/passwd/etc/shadow/etc/group/etc/gshadow测试a权限
只能向文件中追加内容,不能删除
a (append只能追加)如果设置了这个权限 只能追加 不能删除 不能修改[root@nfsnobody /nfsnobody]# chattr +a test.sh 给文件加上a权限[root@nfsnobody /nfsnobody]# lsattr test.sh 检查-----a-------e- test.sh [root@nfsnobody /nfsnobody]# #a append 只能追加 [root@nfsnobody /nfsnobody]# >test.sh 无法清空-bash: test.sh: Operation not permitted[root@nfsnobody /nfsnobody]# echo pwd >>test.sh 可以追加[root@nfsnobody /nfsnobody]# \rm -f test.sh 无法删除rm: cannot remove `test.sh': Operation not permitted
i (immutable无敌) 无法删除 无法修改
不能对文件进行任何操作,root用户也不能操作。[root@nfsnobody ~]# chattr +i nfsnobody.txt[root@nfsnobody ~]# lsattr nfsnobody.txt----i--------e- nfsnobody.txt
转载地址:http://suuki.baihongyu.com/