Linux 文件的权限

本文深入讲解了Linux系统中文件和目录的各种权限设置方法及其实际应用效果,包括读(r)、写(w)、执行(x)权限的基本概念及组合使用,特别强调了不同场景下权限的重要性,并介绍了如何利用隐藏权限增强文件保护。

第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
View Code

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
View Code

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
View Code

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
View Code

第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
View Code

4.2 模拟网站环境试验

模拟环境

mkdir -p /app/blog  /app/blog/upload  

touch    /app/blog/tao.avi /app/blog/dao.mp4  /app/blog/ndd.torrent

useradd  www
View Code

在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

转载于:https://www.cnblogs.com/wenrulaogou/p/9438969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值