码迷,mamicode.com
首页 > 其他好文 > 详细

文件的权限

时间:2019-12-04 13:23:10      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:open   目录   默认   网站   ted   opera   echo   body   nobody   

Linux权限

开启两个窗口??一个root用户??一个普通用户?
root用户用于更改权限,普通用户用于测试

对于文件rwx权限

创建环境

[root@nfsnobody ~]# mkdir -p /nfsnobody
[root@nfsnobody ~]# echo  'hostname'  >/nfsnobody/test.sh
[root@nfsnobody ~]# cat /nfsnobody/test.sh
hostname

r权限测试

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.sh
nfsnobody用户测试
[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

w权限测试

root下修改权限  让用户只有w权限

[root@nfsnobody nfsnobody]# chmod u=w test.sh            超级用户下修改权限
[root@nfsnobody nfsnobody]# ll
total 24
--w-r--r--  1 nfsnobody nfsnobody   9 Aug  6 16:22 test.sh     检查 只有w权限
nfsnobody用户下
[nfsnobody@nfsnobody nfsnobody]$ ll
total 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强制保存退出会导致源文件内容丢失

x权限测试

root下修改权限  让用户只有x权限

[root@nfsnobody nfsnobody]# chmod u=x test.sh          root下修改
[root@nfsnobody nfsnobody]# ll
total 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权限的时候?强制保存退出会导致源文件内容丢失?

对于目录rwx的权限

创建环境

[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.txt

0 directories, 5 files

r权限测试

root用户下修改权限?修改目录r权限

[root@nfsnobody nfsnobody]# chmod u=r test                修改权限
[root@nfsnobody nfsnobody]# chown nfsnobody.nfsnobody test      修改所属用户和组
[root@nfsnobody nfsnobody]# ll                            检查
total 28
dr--r-xr-x  2 nfsnobody nfsnobody 4096 Aug  7 09:21 test
nfsnobody用户下测试
[nfsnobody@nfsnobody nfsnobody]$ ll                          先检查
total 28
dr--r-xr-x  2 nfsnobody nfsnobody 4096 Aug  7 09:21 test
[nfsnobody@nfsnobody nfsnobody]$ ls test                     可以看到文件名但是报错
ls: cannot access test/nfsnobody02.txt: Permission denied
ls: cannot access test/nfsnobody05.txt: Permission denied
ls: cannot access test/nfsnobody04.txt: Permission denied
ls: cannot access test/nfsnobody03.txt: Permission denied
ls: cannot access test/nfsnobody01.txt: Permission denied
nfsnobody01.txt  nfsnobody02.txt  nfsnobody03.txt  nfsnobody04.txt  nfsnobody05.txt
[nfsnobody@nfsnobody nfsnobody]$ ls -l test                  只能看文件名 文件属性不能看
ls: cannot access test/nfsnobody02.txt: Permission denied
ls: cannot access test/nfsnobody05.txt: Permission denied
ls: cannot access test/nfsnobody04.txt: Permission denied
ls: cannot access test/nfsnobody03.txt: Permission denied
ls: cannot access test/nfsnobody01.txt: Permission denied
total 0
-????????? ? ? ? ?            ? nfsnobody01.txt
-????????? ? ? ? ?            ? nfsnobody02.txt
-????????? ? ? ? ?            ? nfsnobody03.txt
-????????? ? ? ? ?            ? nfsnobody04.txt
-????????? ? ? ? ?            ? nfsnobody05.txt

r权限?加?x权限

接r权限??在r的基础上加上x
root下再给目录加上x权限

[root@nfsnobody nfsnobody]# chmod u+x test              在r的基础上加上x权限
[root@nfsnobody nfsnobody]# ll                          检查
total 28
dr-xr-xr-x  2 nfsnobody nfsnobody 4096 Aug  7 09:21 test
nfsnobody用户下测试
[nfsnobody@nfsnobody nfsnobody]$ ll                        nfsnobody用户下检查
total 28
dr-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

w权限测试

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 test
nfsnobody用户下测试
[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权限?加?x权限

接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 test
nfsnobody用户下测试
[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中

控制系统默认权限-umask

系统的默认权限

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       目录权限默认755
drwxr-xr-x 2 root root 4096 Aug  7 10:55 1

umask?反掩码计算

默认的最大权限减去?umask

umask为偶数

实例?当umask为0022
文件:
file-??666-022=644
目录:
dir-??777-022=755

umask为奇数

实例?当umask为0032
当umask为奇数时,计算文件的默认权限的时候,要在奇数位加1
目录不变
file-?666-032=634
??????+010???=644??最终是为644

umask=035

[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 file035
drwxr---w- 2 root root 4096 Sep  6 10:42 dir035

file=642??dir=742

修改umask的方法

[root@nfsnobody ~]# 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

网站权限-让网站更安全

控制权限

让网站以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.avi
drwxr-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?-a
a?(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权限

i?(immutable无敌)?无法删除?无法修改
不能对文件进行任何操作,root用户也不能操作。

[root@nfsnobody ~]# chattr +i nfsnobody.txt
[root@nfsnobody ~]# lsattr nfsnobody.txt
----i--------e- nfsnobody.txt

文件的权限

标签:open   目录   默认   网站   ted   opera   echo   body   nobody   

原文地址:https://www.cnblogs.com/wenrulaogou/p/11982125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!