Linux - 文件权限(未完)

文件权限说明

文件权限有四种:可读、可写、可执行、无
文件权限作用对象有三种:拥有者、用户组用户、其他用户

  • 拥有者:文件拥有者,默认情况下,谁创建的文件拥有者就是谁,例如使用dev用户创建的文件则拥有者为dev
  • 用户组用户:用户组用于多人协作,每个用户都会属于一个用户组,当权限作用在用户组上时对用户组内的所有用户均生效。
  • 其他用户:非拥有者、非用户组内用户视为其他用户。

文件权限的阅读

通过ls -al命令查看当前目录下的所有文件和目录,并列出详细信息,如图:
在这里插入图片描述

  • 第一栏:文件权限属性
  • 第二栏:链接数(快捷方式数)
  • 第三栏:拥有者用户名
  • 第四栏:用户组名称
  • 第五栏:文件大小
  • 第六栏:最后修改日期或创建时间
  • 第七栏:文件名称

文件权限解读如下:
例如:-rwxr--r--@,将整串权限属性字符串拆分成
[-] [rwx] [r--] [r--] [@]

  1. 第一处为文件类型
    -:表示文件
    d:表示目录
    c:字符设备,如键盘、鼠标等
    b:块设备,如硬盘、光驱等
    l:链接文件
    s:套接字文件
  2. 第二处为拥有者权限
    其中r表示可读,w表示可写,x表示可执行。以上拥有者权限则为可读可写可执行。
  3. 第三处为用户组权限
    其中r表示可读,-表示无。以上用户组用户权限则为可读。
  4. 第四处则为其他用户权限
    其中r表示可读,-表示无。以上其他用户权限则为可读。
  5. 第五处?请指点!!!

以上需要注意的是,读、写、执行三个权限始终按照这样的顺序排列,如果没有对应的权限则使用-来代替。


文件权限的修改

  • 修改文件权限
    一、字符修改
    字符修改的基本思路是告诉系统程序 增加、删除、修改 什么权限。这里的“谁”就是权限作用对象,所以首先需要知道文件权限作用对象如何表达:拥有者为u(即user),用户组用户为g(即group),其他用户为o(即other),全部则为a(即all)。然后增加、删除、修改可以通过 “+” , “-” , “=”来表示,权限则通过"rwx"来表示。系统借助chmod程序来完成文件权限的修改。那么修改文件权限则可以通过chmod <作用对象><+ | - | =><权限> <文件名称>来完成,如:
    A. 修改1.txt拥有者权限为可读可写可执行:chmod u+rwx 1.txt
    B. 取消1.txt拥有者可写权限:chmod u-w 1.txt
    C. 设置1.txt拥有者权限为可读:chmod u=r 1.txt
    D. 设置1.txt用户组权限为可读可执行:chmod g=rx 1.txt
    E. 取消1.txt用户组可写权限:chmod g-w 1.txt
    F. 设置1.txt其他用户权限为不可读不可写不可执行:chmod o=-
    优势:可以看出,通过字符修改只需要关注我们需要为什么对象改变什么权限,而不需要关注它原本具备什么权限,更不需要关心别的权限作用对象具备什么权限。(个人观点)
    二、数字修改
    数字修改的基本思路是通过一个数字来表达三个权限,建立在如何让三个数字混合后得到的数字是唯一的数学问题上,很庆幸这个问题不是太难。文件权限对应的数字分别为:可读4,可写2,可执行1。为什么不是3,2,1?因为如果给定一个权限数3,没法确定是[可读3]还是[可写2+可执行1]权限。那么修改文件权限则可以通过chmod <拥有者权限数><用户组权限数><其他用户权限数> <文件名称>来完成,如:
    A. 修改1.txt拥有者、用户组用户、其他用户权限为可读可写可执行:chmod 777 1.txt,7=4+2+1表示可读可写可执行。
    B. 修改1.txt拥有者权限为可读可写可执行、用户组用户权限为可读、其他用户权限为可读可执行:chmod 745 1.txt
    C. 修改1.txt拥有者权限为可读可写、用户组权限为可写、其它用户没有权限:chmod 620 1.txt
    探究chmod 7 1.txt chmod 77 1.txt,权限数不够三位的表达:作用对象从后到前,例如第一句命令表示拥有者和用户组用户均无权限,其他用户拥有可读可写可执行权限。第二句命令表示拥有者无权限,用户组用户和其他用户拥有可读可写可执行权限。
    优势:命令更简洁,如果我们需要同时设置各个对象权限,使用起来比较方便,但没有字符修改那么灵活(个人观点)

  • 修改文件所属用户组
    chgrp <组名> <文件名>
    例:chgrp test01 1.txt
    注意:如果组名不存在,将会出现chgrp: invalid group: 'test01',此时可以通过groupadd test01添加用户组,不需要的时候再通过groupdel test01删除用户组。
    思考:如果设置1.txt的用户组为test01后删除test01。那么1.txt的用户组会变成什么?
    经过实践,创建用户组时会给用户组产生一个数字标识,当组被删除后,文件用户组部分会变成这个数字标识。如果新建了用户组得到同样的标识,那么文件用户组部分会变成新建的用户组名称。

  • 修改拥有者

(未完待续)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值