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

相关文章
|
2月前
|
存储 Linux
Linux 目录名称
Linux系统目录结构简介:根目录(/)下包含各类功能目录,如/bin存放用户命令,/etc存储配置文件,/home为用户主目录,/var记录日志等可变数据,/usr存放用户工具,/tmp用于临时文件。各目录分工明确,保障系统有序运行。(238字)
246 5
|
5月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
747 0
|
7月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
452 3
|
8月前
|
Linux 定位技术
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
342 24
|
9月前
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
176 19
|
10月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
9月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
539 6
|
9月前
|
Linux
Linux目录删除指南:彻底解决“Is a directory”错误
在 Linux 系统中遇到 `cannot remove 'xxx': Is a directory` 错误,是因为删除目录时未使用正确参数。解决方法包括:1) 使用 `rmdir` 删除空目录或 `rm -r` 删除非空目录;2) 检查并调整目录权限(如通过 `sudo` 提权);3) 处理特殊场景,例如文件属性异常、特殊字符或进程占用;4) 替代方法如 `find -delete` 或文件系统修复。操作前建议备份数据,并启用防误删功能(如 `alias rm='rm -i'`)。掌握 `rm` 和 `rmdir` 的区别是关键。
865 1
|
10月前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
499 6
|
Linux
百度搜索:蓝易云【Linux中如何对文件进行压缩和解压缩?】
这些是在Linux中进行文件压缩和解压缩的常见方法。根据您的需求和具体情况,可能会使用其他压缩工具和选项。您可以通过查阅相应命令的帮助文档来获取更多详细信息。
251 1