day08-linux权限(chmod chown umask chattr)

简介:

上次学习整理了linux的文档的基本操作,今天我们学习linux下的权限:

1、文件或目录的权限chmod:

chmod主要用于修改文件和目录的权限,主要参数:-R(级联修改下级目录)。

1、那我们如何来查看这个目录或文件的权限呢:

[root@localhost ~]# ls -l

总用量 136

drwxr-xr-x  2 root root     64 10月 24 15:28 1     #rwx为所属主:r-x为所属组r-x为其他

-rw-r--r--  1 root root    841 10月 24 17:31 1.txt

drwxr-xr-x  2 root root      6 10月 25 17:36 2

-rw-r--r--  1 root root      0 10月 24 15:28 22

如上所述:第一部分的第二位到第十位分别以三位一组:第十一位(.)是selinux(只有selinux打开时才会添加.)

所属主(user)     #文件的拥有者:创建文件/目录的那个人:

所属组(group)    #文件的所属组:创建文件/目录的那个用户所在的组:

其他(other)      #其他外来人员:

1.2 那我们如何给目录和文件添加权限呢:一般有两种方式(操作的结果都相同)

上图中的rwx的权限用数字表示如下:

r===4        #表示可读的权限:     查看这个文件:则表示对这个文件可以读:

w===2        #表示可写的权限:     可以往文件里写入内容:则表示对这个文件可写:

x===1        #表示可执行的权限:   可以打开这个目录,则表示对这个目录可执行: 

1、chmod  777   filename/dir    通过数字的方式来添加:如下:

1
2
3
4
5
[root@localhost ~] # chmod 777 1.txt     #给文件添加777(可读可写可执行)的权限:
[root@localhost ~] # chmod 777 1         #给目录也添加777权限:
[root@localhost ~] # ls -l
drwxrwxrwx  2 root root     64 10月 24 15:28 1     #此文件对主(组)其他:可读可写可执行:
-rwxrwxrwx  1 root root    841 10月 24 17:31 1.txt

2、chmod  u=rwx,g=rw,o=rx  filename/dir   #u表示主,g表示组,o表示其他:a=所有:

1
2
3
4
5
[root@localhost ~] # chmod u=rwx,g=rw,o=rx 1.txt
[root@localhost ~] # chmod u=rwx,g=rw,o=rx 1
[root@localhost ~] # ls -l
drwxrw-r-x  2 root root     64 10月 24 15:28 1
-rwxrw-r-x  1 root root    841 10月 24 17:31 1.txt

当然:还可以通过+ -  =对分别对权限进行增减:#加号表示增加权限,减号表示减少权限,等号表示等于权限:  chmod   u-r  1

1
2
3
4
5
[root@localhost ~] # chmod u-r,g+w,o-x 1.txt   #分别减去u权限和加上g的权限:
[root@localhost ~] # chmod u-r 1
[root@localhost ~] # ls -l
d-wxrwwr-x  2 root root     64 10月 24 15:28 1
--wxr--r--  1 root root    841 10月 24 17:31 1.txt

1.3 chmod还有一个参数: -R:表示级联选项:会把此目录下所有文件/目录的权限都改变:

chmod  -R  filename/dir

1
2
3
4
[root@localhost ~] # chmod -R 777 1       #权限级联下面文件
[root@localhost ~] # ls -l 1
-rwxrwxrwx 1 root root 0 10月 24 15:28 11       #目录下文件的权限已改变:
-rwxrwxrwx 1 root root 0 10月 25 18:08 1.txt    #目录下目录的权限已改变:

1.4 既然权限可以用数字来表示,那么权限是如何定义的呢:umask值:

[root@localhost ~]# umask     #查看umask的值:

0022  

我们会发现普通文件或目录的权限不一样:这是因为umask值定义的:并且umask值是可以修改的:

1
2
3
[root@localhost yuan] # ls -la
-rw-r--r--  1 root root    0 10月 25 18:53 1.txt       #文件的权限为644.
drwxr-xr-x  2 root root    6 10月 25 18:53  dir         #目录的权限为755.

这是因为文件不需要执行权限:而目录需要:进入一个目录==执行这个目录:

所以文件的权限计算:

666    -          022        644                 #文本不需要执行权限

(rw-rw-rw-)  -  (----w--w-)  =  (rw-r--r--)

目录的权限计算:

777     -       022         755                  #目录需要执行权限

(rwxrwxrwx)  -  (----w--w-)  =  (rwxrw-rw-)

不过以数字相减的方式容易出现错错误:

如:我们把umask值设置成003,那么文件的权限应该是664,则减下来是603,所以此方法不建议使用:

2、更改文件的所有者和所属组:chown

chown主要用于修改文件的所属主和所属组:主要参数: -R

2.1 那我们如何来查看文件/目录的所属主和所属组:

[root@localhost ~]#  ls -l

总用量 136

drw-r--r--  2 root root     90 10月 25 18:08 1

-rw-r--r--  1 root root    841 10月 24 17:31 1.txt

如上所述:第三部分root表示所属主,第四部分表示所属组:

所属主(root)    #文件的创建者及拥有者

所属组(root)    #文件的拥有者所在那个组:

2.2 那我们如何给文件/目录修改所属主和所属组呢:

chown   username:group    filename/dir

1
2
3
4
5
6
[root@localhost ~] # chown  yuanhh   1       #表示修改目录1的所属主为yuanhh.      
[root@localhost ~] # chown  :yuanhh  1       #表示修改目录1的所属组为yuanhh.
[root@localhost ~] # chown  yuanhh:yuanhh 1.txt    #表示同时修改1.txt的所属主和所属组:
[root@localhost ~] # ls -l
drw-r--r--  2 yuanhh yuanhh     90 10月 25 18:08 1        #查看目录1.
-rw-r--r--  1 yuanhh yuanhh    841 10月 24 17:31 1.txt    #查看文件1.txt.

2.3  此时chown还有一个参数:-R:表示级联选项:会把此目录下所有文件/目录的权限都改变(主要针对目录):

chown  -R  username:group  1    #修改1目录的主和组(同时也会修改其下的目录和文件).

1
2
3
4
[root@localhost ~] # chown -R yuanhh:root 1   #同时修改目录1的所属主和所属组:
[root@localhost ~] # ls -l 1
-rwxrwxrwx 1 yuanhh root 0 10月 24 15:28 11     #其下面的目录也发生变化:
-rwxrwxrwx 1 yuanhh root 0 10月 25 18:08 1.txt    #其下面的文件也发生变化:

3、chgrp: 此命令用于修改文件的所属组(与chown的所属组一样).

chgrp   group    filename/dir      #应用格式

1
2
3
[root@localhost ~] # chgrp yuanhh 2.txt      #修改其所属组为yuanhh:
[root@localhost ~] # ls -l 2.txt
-rw------- 1 root yuanhh 4904 10月 24 17:48 2.txt     #已修改:

3.1 同时,chagr也有级联参数,可直接修改目录下面的文件或目录:

 chgrp  -R   group   1     #修改目录1,用级联的方式:

1
2
3
4
[root@localhost ~] # chgrp -R yuanhh 1      #修改目录1,用级联的方式:
[root@localhost ~] # ls -l 1 
-rwxrwxrwx 1 yuanhh yuanhh 0 10月 24 15:28 11      #
-rwxrwxrwx 1 yuanhh yuanhh 0 10月 25 18:08 1.txt     #

4、隐藏权限lsattr/chattr:  参数如下;

-i  :增加了此选项后,文件或目录不能删除、修改、写入等全部操作(连BOSS的root也不可以)

-a  :增加了此选项后:只能追加,不能删除、修改,并且非root用户不能操作(只增不减)

-s  :增加了该选项后:会将数据同步写入到磁盘:#不常用

-c  :自动解压缩:读取文件时自动解压缩:      #不常用

-A  :增加了后,文件的atime不能修改:         #不常用

-d  :只查看当前目录本身:   #相当于ls的-d选项:

-a  :查看隐藏文件:        #用法:lsattr  -a   

-R  :查看当前目录下的文件或者目录: 

4.1隐藏权限可以保护文件的安全性,一旦设置后,文件连root用户也是不能修改的:

用法1: chattr  +i   filename/dir     #给文件或目录增加i权限:

1
2
3
4
5
6
7
[root@localhost ~] # chattr +i 1.txt        #给1.txt增加i权限:
[root@localhost ~] # rm -fr 1.txt           #无法删除文件:
rm : 无法删除 "1.txt" : 不允许的操作
[root@localhost ~] # echo 1 > 1.txt         #无法追加文件内容:
- bash : 1.txt: 权限不够
[root@localhost ~] # chmod 777 1.txt
chmod : 更改 "1.txt"  的权限: 不允许的操作      #无法修改文件权限:

用法2: chattr  +a   filename/dir    #给文件或目录增加a权限:

1
2
3
4
5
6
7
8
[root@localhost ~] # chattr +a 1.txt         #给1.txt增加a权限    
[root@localhost ~] # rm -fr 1.txt            #无法删除文件:
rm : 无法删除 "1.txt" : 不允许的操作
[root@localhost ~] # chmod 777 1.txt         #无法修改文件权限。
chmod : 更改 "1.txt"  的权限: 不允许的操作
[root@localhost ~] # echo 1111 >> 1.txt      #可以追加文件内容
[root@localhost ~] # tail -n1 1.txt
1111

4.2 那我们如何取消文件权限呢:

chattr  -a   filename/dir         #给文件或目录取消a权限:

chattr  -i   filename/dir         #给文件或目录取消i权限:

同时也支持lsattr  -R(也是级联选项):用法如下:

lsattr  -R  +i  dir     #主要只针对于目录:

查看命令lsattr: 参数:  -d(目录本身)   -a(隐藏文件)   -R(级联下文件或目录)

1
2
3
4
5
[root@localhost ~] # lsattr -d 1        #只查看目录1的权限:
----i----------- 1
[root@localhost ~] # lsattr -R 1        #查看目录下面的文件选项:
----i----------- 1 /2
----i----------- 1 /yuan

隐藏文件:

1
2
3
[root@localhost ~] # lsattr -a /root/         #查看隐藏文件:
----------------  /root/ .bash_logout
----------------  /root/ .bash_profile

今天现学习到这里。










本文转自 芬野 51CTO博客,原文链接:http://blog.51cto.com/yuanhaohao/2052667,如需转载请自行联系原作者
目录
相关文章
|
18天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
35 1
linux特殊权限!!
|
1月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
1月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
8天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
69 6
|
9天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
36 3
|
9天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
26 2
|
16天前
|
缓存 监控 Linux
|
3天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
20 3