专栏首页python33、Linux文件权限和目录权限

3、Linux文件权限和目录权限

本篇主要讲述:

文件和目录的基本权限;

设置基本权限(chmod,chown,chgrp);

附加权限;

1、基本权限

(1)访问方式(权限)

读取:允许查看内容-read  r

写入:允许修改内容-write   w

可执行:允许运行和切换-execute  x

(2)使用者与群组

权限适用对象(归属)

所有者:拥有此文件/目录的用户-user    u

所属组:拥有此文件/目录的组-group       g

其他用户:除所有者、所属组以外的用户-other  o

(3)使用 ls -ld 命令

ls -ld 文件或目录  #查看文件或者目录自身的属性

第一栏代表这个文件的类型与权限;

其中第一个字符

以  - 开头:文本文件

以  d 开头:目录

以  l 开头:快捷方式

接下来的字符中,以三个为一组

第一组为“文件拥有者可具备的权限”

第二组为“加入此群组之帐号的权限”

第三组为“非本人且没有加入本群组之其他帐号的权限”

第二栏表示有多少文件名链接到此节点(i-node)

第三栏表示这个文件(或目录) 的“拥有者帐号”

第四栏表示这个文件的所属群组

第五栏为这个文件的容量大小,默认单位为Bytes

第六栏为这个文件的创建日期或者是最近的修改日期

第七栏为这个文件的文件名

2、设置基本权限

2.1 使用 chmod 命令

chmod  [-R]   归属关系+-=权限类别    文档...

更改权限的方法:

第一种:以数字的形式

r:4 w:2 x:1

[root@server0 ~]# mkdir /nsd01

[root@server0 ~]# ls -ld /nsd01/

drwxr-xr-x. 2 root root 6 11月 24 20:16 /nsd01/

[root@server0 ~]# chmod 777 /nsd01/

[root@server0 ~]# ls -ld /nsd01/

drwxrwxrwx. 2 root root 6 11月 24 20:16 /nsd01/

第二种:符号类型

user=u ; group=g; other=o ; all=a

[root@server0 ~]# chmod u=rwx,g=rw,o=--- /nsd01/

[root@server0 ~]# ls -ld /nsd01/

drwxrw----. 2 root root 6 11月 24 20:16 /nsd01

[root@server0 ~]# mkdir /nsd01

[root@server0 ~]# chmod g+w /nsd01

[root@server0 ~]# chmod u-w /nsd01

[root@server0 ~]# chmod o=rwx /nsd01

[root@server0 ~]# chmod u=rwx,g=rx,o=--- /nsd01

临时切换用户身份:

[root@server0 ~]# su - zhangsan

(不能将 - 去掉,代表所处的环境也切到另一个用户上去了)

目录的 r 权限:能够 ls 浏览此目录内容

目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作

目录的 x 权限:能够 cd 切换到此目录

总结:在Linux中新建目录默认的权限rwxr-xr-x

           在Linux中新建文件默认的权限rw-r--r--

为什么新建目录或者文件是这样的权限?

umask 命令了解一下

案例:以root用户新建/nsddir/目录,在此目录下新建readme.txt文件,并进一步完成下列操作

1)使用户zhangsan能够在此目录下创建子目录  切换用户  su - zhangsan

chmod o+w  /nsddir/

2)使用户zhangsan不能够在此目录下创建子目录

chmod o-w  /nsddir/

3)使用户zhangsan能够修改readme.txt文件

chmod o+w  /nsddir/readme.txt

4)调整此目录的权限,使所有用户都不能进入此目录

chmod u-x,g-x,o-x  /nsddir/

5)为此目录及其下所有文档设置权限 rwxr-x---

chmod -R  u=rwx,g=rx,o=---  /nsddir/

2.2 使用 chown 命令

设置文档归属

– chown [-R] 属主 文档...

– chown [-R] :属组 文档...

– chown [-R] 属主:属组 文档...

[root@server0 /]# mkdir /nsd03

[root@server0 /]# ls -ld /nsd03

[root@server0 /]# groupadd test

[root@server0 /]# chown zhangsan:test /nsd03

[root@server0 /]# ls -ld /nsd03

[root@server0 /]# chown student  /nsd03

[root@server0 /]# ls -ld /nsd03

[root@server0 /]# chown :root /nsd03

[root@server0 /]# ls -ld /nsd03

2.3使用chgrp命令

change group

chgrp [-R] 组名 文件名/目录名

组名信息存放在/etc/group下

2.4附加权限(特殊权限)

Set GID

在该父目录上操作,属组+s,新建的子目录都会继承父目录的属组

• 附加在属组的 x 位上

– 属组的权限标识会变为 s

– 适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组(继承)

对于属组而言:

如何判断原来的权限是否有x:

大写S 表示原来属组的权限没有x

小写s表示原来的属组的权限有x

具有继承作用:

[root@server0 ~]# mkdir /nsd06

[root@server0 ~]# ls -ld /nsd06

drwxr-xr-x. 2 root root 6 11月 24 11:51 /nsd06    #nsd06刚开始的权限和属组

[root@server0 ~]# chown :test /nsd06

[root@server0 ~]# ls -ld /nsd06

drwxr-xr-x. 2 root test 6 11月 24 11:51 /nsd06    #更改属组之后的权限

[root@server0 ~]# mkdir /nsd06/abc01              #新建子目录abc01

[root@server0 ~]# ls -ld /nsd06/abc01/

drwxr-xr-x. 2 root root 6 11月 24 11:53 /nsd06/abc01/  #属组和父目录没有关系

[root@server0 ~]# chmod g+s /nsd06              #属组权限+s

[root@server0 ~]# ls -ld /nsd06

drwxr-sr-x. 3 root test 18 11月 24 11:53 /nsd06

[root@server0 ~]# mkdir /nsd06/abc02            #新建子目录abc02

[root@server0 ~]# ls -ld /nsd06/abc02

drwxr-sr-x. 2 root test 6 11月 24 11:54 /nsd06/abc02   #继承了父目录nsd06的所有者,属组

Set Uid(并没有继承)

[root@server0 ~]# ls -ld /nsd/              #nsd目录的权限

drwxr-sr-x. 2 harry adminuser 20 11月 25 09:58 /nsd/

[root@server0 ~]# chmod u+s /nsd/   #对所有者加s,是否能够继承?

[root@server0 ~]# ls -ld /nsd/

drwsr-sr-x. 2 harry adminuser 35 11月 25 10:09 /nsd/

[root@server0 ~]# touch /nsd/nsd2.txt     #在目录下新建子文件

[root@server0 ~]# ls -ld /nsd/nsd2.txt      #查看新文件的权限

-rw-r--r--. 1 root adminuser 0 11月 25 10:10 /nsd/nsd2.txt

对Set uid一般情况下不使用s权限,这样会造成 对系统的安全存在风险

 – 属主的权限标识会变为 s

 – 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限拥有root的权限

Sticky bit

附加在其他人的x位上

其他人的权限标识会变为t

适用于开放w权限的目录,可以阻止用户滥用w写入权限(禁止操作别人的文档)

3、ACL策略权限

使用场景:当用户属组具有写(或者其他)的权限,其他人什么权限也没有,

来了一个想要查看文件的用户,但不能使该用户具有写。

意义:能够对个别用户,个别组设置独立的权限

acl策略的作用

• 文档归属的局限性

– 任何人只属于三种角色:属主、属组、其他人

– 无法实现更精细的控制

acl访问策略

– 能够对个别用户、个别组设置独立的权限

– 大多数挂载的EXT3/4、XFS文件系统默认已支持

[root@server0 /]# mkdir /nsd10       #新建目录

[root@server0 /]# chmod o=--- /nsd10 #使该目录对其他人没有任何权限

[root@server0 /]# su - zhangsan            #验证

[zhangsan@server0 ~]$ cd /nsd10

-bash: cd: /nsd10: Permission denied   #不能进入

[zhangsan@server0 ~]$ exit                 #回到root

logout

[root@server0 /]# setfacl -m u:zhangsan:rx /nsd10  #设置ACL,使能够具有读和执行权限

[root@server0 /]# su - zhangsan            #验证

[zhangsan@server0 ~]$ cd /nsd10        #可以进入

[zhangsan@server0 nsd10]$ pwd

[zhangsan@server0 nsd10]$ exit          #回到root

logout

• 使用 getfacl、setfacl 命令

– getfacl       文档...                              #查看acl策略

– setfacl  -m  u:用户名:权限类别 文档...

– setfacl  -m  g:组名:权限类别 文档...

– setfacl  -b   文档...                             #清除所有的ACL策略

– setfacl  -x   文档...                             #清除指定的ACL策略

[root@server0 /]# getfacl  /nsd10           #查看ACL策略的命令

[root@server0 /]# setfacl  -m  u:natasha:rwx  /nsd10

[root@server0 /]# setfacl  -m  u:lisi:rwx  /nsd10

[root@server0 /]# setfacl  -m  u:kenji:rx  /nsd10

[root@server0 /]# getfacl  /nsd10

[root@server0 /]# setfacl  -x  u:kenji  /nsd10

[root@server0 /]# getfacl  /nsd10

[root@server0 /]# setfacl  -b  /nsd10

[root@server0 /]# getfacl  /nsd10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 远程办公经验为0,如何将日常工作平滑过度到线上?

    我是一名创业者,我的公司(深圳市友浩达科技有限公司)在2018年8月8日开始运营,现在还属于微型公司。这个春节假期,我一直十分关注疫情动向,也非常关心其对公司带来的影响。

    TVP官方团队
    TAPD 敏捷项目管理腾讯乐享企业邮箱企业编程算法
  • 数据中台,概念炒作还是另有奇效? | TVP思享

    作者简介:史凯,花名凯哥,腾讯云最具价值专家TVP,ThoughtWorks数据智能业务总经理。投身于企业数字化转型工作近20年。2000年初,在IBM 研发企业级中间件,接着加入埃森哲,为大型企业提供信息化架构规划,设计,ERP,云平台,数据仓库构建等技术咨询实施服务,随后在EMC负责企业应用转型业务,为企业提供云迁移,应用现代化服务。现在专注于企业智能化转型领域,是数据驱动的数字化转型的行业布道者,数据中台的推广者,精益数据创新体系的创始人,2019年荣获全球Data IQ 100人的数据赋能者称号,创业邦卓越生态聚合赋能官TOP 5。2019年度数字化转型专家奖。打造了行业第一个数据创新的数字化转型卡牌和工作坊。创建了精益数据创新方法论体系构建数据驱动的智能企业,并在多个企业验证成功,正在向国内外推广。

    TVP官方团队
    大数据数据分析企业
  • 扩展 Kubernetes 之 CRI

    使用 cri-containerd 的调用流程更为简洁, 省去了上面的调用流程的 1,2 两步

    王磊-AI基础
    Kubernetes
  • 扩展 Kubernetes 之 Kubectl Plugin

    kubectl 功能非常强大, 常见的命令使用方式可以参考 kubectl --help,或者这篇文章

    王磊-AI基础
    Kubernetes
  • 多种登录方式定量性能测试方案

    最近接到到一个测试任务,某服务提供了两种登录方式:1、账号密码登录;2、手机号+验证码登录。要对这两种登录按照一定的比例进行压测。

    八音弦
    测试服务 WeTest
  • 线程安全类在性能测试中应用

    首先验证接口参数签名是否正确,然后加锁去判断订单信息和状态,处理用户增添VIP时间事务,成功之后释放锁。锁是针对用户和订单的分布式锁,使用方案是用的redis。

    八音弦
    安全编程算法
  • 使用CDN(jsdelivr) 优化博客访问速度

    PS: 此篇文章适用于 使用 Github pages 或者 coding pages 的朋友,其他博客也类似.

    IFONLY@CUIT
    CDNGitGitHub开源
  • 扩展 Kubernetes 之 CNI

    Network Configuration 是 CNI 输入参数中最重要当部分, 可以存储在磁盘上

    王磊-AI基础
    Kubernetes
  • 聚焦【技术应变力】云加社区沙龙online重磅上线!

    云加社区结合特殊时期热点,挑选备受关注的音视频流量暴增、线下业务快速转线上、紧急上线防疫IoT应用等话题,邀请众多业界专家,为大家提供连续十一天的干货分享。从视野、预判、应对等多角度,帮助大家全面提升「技术应变力」!

    腾小云
  • 京东购物小程序购物车性能优化实践

    它是小程序开发工具内置的一个可视化监控工具,能够在 OS 级别上实时记录系统资源的使用情况。

    WecTeam
    渲染JavaScripthttps网络安全缓存

扫码关注云+社区

领取腾讯云代金券