Linux文件和目录权限高级用法| 学习笔记

简介: 快速学习Linux文件和目录权限高级用法

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux文件和目录权限高级用法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7613


Linux文件和目录权限高级用法


目录:

一、不是所有系统都能设置读写执行权限

二、修改文件权限方法之参考一个文件的权限去修改另一个权限

三、数字法授权(八进制)

四、修改文件的属主和属组

五、修改文件权限

六、权限设置示例

七、新建文件和 目录 的默认权限

八、umask的真正含义

九、umask的其他用法

十、练习


一、不是所有系统都能设置读写执行权限

[root@centos7~]#cd/run/media/root/DA50-BA50/

[root@centos7DA50-BA50]#ls

backup-reset_f1_system volume Information

[root@centos7DA50-BA50]#ll f1

-rw-r--r--. 1 root root 0  Mar 29 01:33  f1

[root@centos7DA50-BA50]#chmod a=rwx  f1

[root@centos7DA50-BA50]#ll  f1

rw-r--r--. 1 root root 0 Mar 29 01:33 f1

[root@centos7 DA50-BA50]#chown wang   f1

chown: changing ownership of 'f1': operation not permitted

[root@centos7DA50-BA50]#df   -T

Fat格式的文件系统不支持读写执行以及所有者所属组特性的,只是为了兼容了Linux进行显示。

不是任何系统都支持的。数据是放在文件上的,而文件是由文件系统管理的,而文件系统有一些是互相混用的,当然传统的Linux是支持这些文件的修改的。

 

二、修改文件权限方法之参考一个文件的权限去修改另一个权限

例如现在把f1的权限做一下修改,把f2的权限和f1设置一样(参考f1设置f2)

total 0

-rw-r--r--. 1 root root 0 Apr4 18:45

-rw-r--r--. 1 root root 0 Apr418:43 f2

[root@centos7 data]#chmod -rf1

[root@centoscataroot'o Apr418:43 f1

[root@centos7 data]#chmod --help

[root@centos7 data]#touch f3

[root@centos7 data]#ll

Total 0

--w-------. 1 root root 0 Apr4 18:43 f1

-rw-r--r--. 1 root root o Apr 4 18:43 f2

-rw-r--r--. i root root o Apr 4 18:44  f3

[root@centos7 data]#chmod --reference=f1 f2 f3

[root@centos7 dataj#11

total 0

--w-------.1root root 0 Apr 418:43 f1

--w-------. 1 root root 0 Apr4 18:43 f2

--w-------.1root root 0 Apr418:44  f3

 

三、数字法授权(八进制)

有权限就转换成二进制1,没有权限就写成0。

Rwx:111

Rw-:110

R--:110

转换成二进制后,三个一组三个一组转换成八进制,r:1,w:2,x:1

实践:[root@centos7 data] #chmod 764 f1

[rootacentos7 data ] #11   f1

-rwxrw-r--.1 root root Apr 4 18:43 f1

八种情况:

---  000   0

--x  001   1

-w-  010   2

-wx  011   3

R--   100   4

R-x   101   5

Rw-   110   6

Rwx   111   7

对于文件来讲,常用的权限是6rw,4r,0,1x

只要有执行权限,数字加起来必定是奇数。

对于文件夹来讲常用的组合7rwx,5r-x,0

数字法授权特性:

rwxrw-r-- .1 root root 0 Apr 4 18:43 f1

[root@centos7 data] #mkdir di r1

[root@centos7 datal #touch dir1/f{2,3,4}

[root@centos7 data] #mkdir dir1/dir2/

[root@centos7 data]#tree dir1

bash: tree: command not found ...

[root@centos7 data] #df

1 directory, 3 files

[root@centos7 data]#11

total 0

drwxr-xr-x.3 root root 48 Apr4 18:54 dirL

-rwxrw-r--.1 root root 0 Apr 4 18:43f1

--w--------. 1 root root 0 Apr 4 18:43 f2

--w---------. 1root root 0 Apr 4 18:44 f3

[root@centos7 data]#111 dir1/

bash: 1 11 : command not found...

[ root@centos7 data]#

 

Dir1下的文件没有执行权限,现在希望dir1下面的dir2建立一个文件,对所有文件都加上执行权限。

[root@centos7 data] #touch dir1/dir2/f5

[root@centos 7 data]#11 dir1/dir2/f5

-rw-r--r--,1 root root 0 Apr  4  18:55 dir1/dir2/f5

[root@centos7 data] #chmod -R a+x dir1

[root@centos7 data]#11 dir1/dir2/f5

-rwxr-xr-x. 1 root root 0 Apr  4 18:55 dir1/dir2/f5

[root@centos7 data]#11  dir1/

Total 0

 

对于目录的执行权限可以cd进去,可以访问文件内容。文件带有执行权限是比较危险的,一旦注入病毒,可能会造成文件被感染。

[root@centos7 data] #mkdir dir2/dir3 ,

mkdir: cannot create directory dir2/dir3': No such file or directory

[root@centos7 data ] #mkdir dir2/dir3 -p

[root@centos7 data] #touch dir2/ f6

[root@centos7 data]#touch dir2/dir3/f7

[root@centos7 data] #chmod -R -X dir2

[root@centos7 data]#11 -d dir2

drw-r--r--.3 root root 28 Apr  4 18:58 dir2

[root@centos7 data]#1t -d dir2/dir3

drw-r--r--.2 root_ root 16 Apr 4 18:58 dir2/dir3

[root@centos7 data]#11 -d dir2/dir3/f7

-rw-r--r--. 1 root root 0 Apr 4 18:58 dir2/dir3/f7

[root@centos7 data] #chmod -R +X dir2(X对目录加执行权限)

[root@centos7 data]#1T dir2/dir3/f7

rw-r--r--. 1 root root 0 Apr 4 18:58 dir2/dir3/f7

[root@centos7 data] #chmod U+x dir2/dir3/f7

[root@centos7 data]#11 dir2/dir3/f7 '

rwxr--r--. 1 root root 0 Apr 4 18:58 dir2/dir3/f7

total 0

-rwxr--r--,1 root root 0 Apr 4 18:58 f7

-rw-r--r--,1 root root 0 Apr 4 19:01 f8

[ root@centos7 data] #chmod -R +X dir2

区别就是它对文件也加执行权限例如,前提是文件本身有执行权限了。

针对目录加执行权限,如果有执行权限的文件可以加执行权限。

◆文件属性操作

➢chown设置文件的所有者

➢chgrp设置文件的属组信息

如果出现一些破坏性命令,会无法恢复,

例如:

-R,敲命令时一定要慎重。基于安全考虑,尽量做好充足的测试。

 

四、修改文件的属主和属组

1.修改文件的属主:chown

chown [OPTION]... [OWNER][:[GROUP]] FILE..

用法:

OWNER

OWNER:GROUP

:GROUP

命令中的冒号可用.替换

-R:递归

chown [OPTION]... --reference=RFILE FILE...

2.修改文件的属组:chgrp

chgrp [OPTION].. GROUP FILE..

chgrp [OPTION].. --reference=RFILE FILE...

-R递归

3.文件的权限主要针对三类对象进行定义

owner:属主, u

group:属组, g .

other:其他,o

4.每个文件针对每类访问者都定义了三种权限

r: Readable

w: Writable

x: eXcutable

5.文件

r:可使用文件查看类工具获取其内容

w:可修改其内容

x:可以把此文件提请内核启动为一个进程

6.目录:

r:可以使用Is查看此目录中文件列表

w:可在此目录中创建文件,也可删除此目录中的文件

x:可以使用Is -l查看此目录中文件列表,可以cd进入此目录

X:只给目录x权限,不给文件x权限

 

五、修改文件权限

◆chmod [OPINN.. OCTAL-MODE FILE..

-R:递归修改权限

◆chmod [OPTION].. MODE[,MODE1... FILE...

MODE :

修改一类用户的所有权限:

u= g= 0= ug= a= u=,g=

修改一-类用户某位或某些位权限

U+U-g+g-0+0-a+a-+-

◆chmod [OPTION... --reference=RFILE FLE..

参考RFILE文件的权限,将FILE的修改为同RFILE

 

六、权限设置示例

◆chgrp sales testfile

◆chown root:admins testfile(同时修改所有者和所属组)

◆chmod u+wx,g-r,o=rx file

◆chmod -R g+ rwX /testdir

◆chmod 600 file

◆chown mage testfile

每个命令都应该尽可能的一目了然,慎重执行。

 

七、新建文件和目录的默认权限

◆umask值可以用来保留在创建文件权限

◆新建FILE权限: 666- umask

如果所得结果某位存在执行(奇数)权限,则将其权限+ 1

◆新建DIR权限: 777-umask

非特权用户umask是002

◆root的umask是022

◆umask:查看

◆umask #:设定

umask 002

◆umask -S模式方式显示

umask -p输出可被调用

◆全局设置: /etc/bashrc 用户设置: ~/.bashrc

新建一个文件或者文件夹

[root@centos7 data]#rm -rf

[root@centos7 data] #touch f1

[root@centos7 data] #mkdir dir1

[root@centos7 data]#1 1

total 0

drwxr-xr-x.2 root root 6 Apr

4 19:19 dirl1 root root 0 4 19:19 f1

[r oot@centos7 datal #touch

[r oot@centos7 data]#] 1

total 0

drwxr-xr-x.2 root root 6 Apr4 19:19 dirl

-rw-r--r--. 1 root root 0  Apr 4 19:19 f1

root root 0 Apn 4   19:19 f2

[root@centos7 data] #type umask

umask is a she11 bui ltin

[ root@centos7 data] #type chmod

Chmod is hashed (/usr /bin/ chmod)

[root@centos7 data] #umask +default=file666dir/777

初步认为umask与默认权限对位相加。如果umask发生变化就会影响默认权限。

chmod is hashed (/usr /bin/ chmod)

[root@centos7 data] #umask022+defau1t644 |755=fi 1e66Acdir777

[root@centos7 dataj #umask  0022

[root@centos7 data] #umask  026

[root@centos7 data ] #umask  0026

[r oot@centos7 data] #touhc f3

bash: touhc: command not found. . .

Simi lar command is:' touch'

[root@centos7 data]#> f3

[r oot@centos7 data]#1l f3

rw-r---1 root root 0 Apr 4 19:24 f3

[r oot@centos7 data] #mkdir dir2

[r oot@centos7 data]#11 -d dir2

drwxr-x--X.2 root root 6 Apr  4 19:24 dir2

 

为什么文件用666文件夹用777,如果文件也用777,就有可能设一个umask000,777是有执行权限的,系统考虑到安全因素,所以默认不希望新建的文件具有执行权限,所以文件用了666来计算。666不具有执行权限,文件夹的执行权限就不意味着危险了。

 

八、umask的真正含义

Mask:掩码

Umask本质含义(功能):取消对应的权限

最大权限666,对应把125权限取消,先把666和123转换成对应的二进制,666对应的二进制为110 110 110 。125对应的二进制为001 010 101。0表示不取消,1表示取消。最终权限为110100010,最后的读写权限为642。

微调计算公式:umask022+default644|755=file666|dir777

观察一下结果,默认权限里面如果带奇数,就加1,如果是偶数,则不变。对文件来说需要这种公式,但是目录并不需要。

公式总结:

1.对于目录:default权限=777-umask

2.对于文件:default权限=666-umask:对结果观察,如果有奇数+1,偶数不变。

例子:如果umask 251,那么新建的文件夹的权限是什么?文件的权限是什么?

[root@centos7 data]#umask 251

[root@centos7 dataj #dir:777-251=526   file:666-251-415 ,426

bash: dir:777-251-526: command not found. . .

[root@centos7 data ] #umask

0251

[root@centos7 data] #touch f8

[r oot@centos7 data]#11 f8

-r---W-rW-. 1 root root 0 Apr   4 19:37 f8

[root@centos7 data] #mkdir dir8

[root@centos7 data]#11 -d dir8

dr-x-w-rW-.2 root root 6 Apr   4 19:38 dir8

如果存得住必须写文件。

为什么默认情况下作为root和普通用户来讲的umask已经不一样了?

[root@centos7 ~] #umask   0022

[ root@centos7 ~] #su-wang

Last login: wed Apr 4 19:40:00 CST 2018 on pts/0

[wang@centos7 ~ 1 Sumask  0002

显而易见,umask值0022的权限带来的结果就是新建文件的权限越小,之所以这样设置是考虑到了安全因素。

这些值是在哪里进行设置的呢?

[root@centos7 ~]#cat /ect/bashrc

 

九、umask的其他用法

Umask-p:以补位的方式查看文件的权限,显示的是补位的十进制。

Umask-s:以rwx形式显示新建文件或目录缺省权限。

[root@centos7 ~] #umask -S

u=rwx, g=rx, O=X

[root@centos7 ~] #umask 026

r oot@centos7

#umask  u=rwx, g=r o=

[ root@centos7 ~ ] #umask

0037

 

十、练习

1.复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限

useradd: user" tomcat already exists

[ root@centos6 ~] #groupadd apps

[ root@centos6  ~]#gr oupmems -a tomcat -g apps

[root@Centos6  ~] #Cp /etc/fstab /var/tmp/

Cp: overwrite  /var /tmp/ fstab ? y

[root@Centos6 ~]#cd !$cd /var /tmp/

[root@Centos6 tmp]# 1s

fstab kdecache -root

[root@Centos6 tmp]#11

tota1 8

-rw-rw----.1 tomcat app 899 Apr 4 07 :38 fstab

drwx------ .6 rootroot 4096 Mar 27 18:54 kdecache -root

[root@Centos6 tmp ] #chown  660 fstab

[root@Centos6 tmp]#11

total 8

-rw-rw----. 1  660 app  899 Apr 4 07 :38 fstab

drwx ------ 6   root root 4096 Mar 27 18:54 k decache -root

[root@Centos6 tmp ] #chmod 660 fstab

[root@Centos6 tmp ] #chown tomcat:apps fstab

[root@Centos6 tmp ]#11

Total  8

-rw- rw----.1 tomcat apps 899 Apr 4 07:38 fstab

drwx ------.6 rootroot 4096 Mar 27 18:54 k decache -root

2.误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性

[root@centos6 ~] #useradd git

[ root@centos6 ~]#rm -rf /home/git

[root@centos6 ~]#mkdir /home/git ; cp -a /etc/ske1/.[^.]* /home/git

[root@centos6 ~]#11 -d /home/git

drwxr-xr-x.4root root 4096 Apr4 12:04 /home/git

[root@centos6 ~]#11 -a/home/git

total 28

[root@centos6 -]#chown -R git . git /home/git/

[root@centos6 ~]#11 -d /home/git/

drwxr-xr-x. 4 git  git 4096 Apr 4 12:04 /home /git

[root@centos6 ]#11 /home/git/ -a

total 28

[root@centos6 ]#11 /home

total 12

drwxr-xr-x.4 git git 4096 Apr 4 12:04 git

drWx-4 mage mage 4096 Apr 4 09:46 mage

Drwx 24 wang wang 4096 Mar 28 09: 32 wang

[root@centos6 ~] #chmod 700 /home/git

[root@centos6 ~]#11

total 108

mkdir /home/git : cp-a /etc/skel/. [^.]* /home/git

204  11-d /home/git

205  11 -a /home/git

206  chown -R git.git /home/git/

207  11 -d /home/git/

208  11 /home/git/ -a

209  11 /home

210 chmod 700 /home/git

相关文章
|
9天前
|
存储 Linux
Linux 目录名称
Linux系统目录结构简介:根目录(/)下包含各类功能目录,如/bin存放用户命令,/etc存储配置文件,/home为用户主目录,/var记录日志等可变数据,/usr存放用户工具,/tmp用于临时文件。各目录分工明确,保障系统有序运行。(238字)
108 5
|
3月前
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
509 13
|
4月前
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
154 16
|
4月前
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
73 4
|
5月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
683 12
|
5月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
310 3
|
4月前
|
Linux
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
Linux 数据安全/隐私保护
linux(二十三)用户权限管理chmod修改文件及目录权限
linux(二十三)用户权限管理chmod修改文件及目录权限
279 0
|
Linux Go
在Linux中,文件和目录的权限有何作用以及如何修改?
在Linux中,文件和目录的权限有何作用以及如何修改?
|
Linux 数据安全/隐私保护 iOS开发
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro