(给Linux爱好者加星标,提升Linux技能)

编译:linux中国- Xingyu.Wang,作者:Paul W. Frields

前一篇文章介绍了 Fedora 系统上有关文件权限的一些基础知识。本部分介绍使用权限管理文件访问和共享的其他方法。它建立在前一篇文章中的知识和示例的基础上,所以如果你还没有阅读过那篇文章,请查看它。

符号与八进制

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号模式显示在屏幕上。

每个集合都有 r、w 和 x 条目,表示特定用户(所有者、组成员或其他)是否可以读取、写入或执行该文件。但是还有另一种表达这些权限的方法:八进制模式。

你已经习惯了十进制编号系统,它有十个不同的值(0 到 9)。另一方面,八进制系统有八个不同的值(0 到 7)。在表示权限时,八进制用作速记来显示 r、w 和 x 字段的值。将每个字段视为具有如下值:

  • r = 4

  • w = 2

  • x = 1

现在,你可以使用单个八进制值表达任何组合。例如,读取和写入权限(但没有执行权限)的值为 6。读取和执行权限的值仅为 5。文件的 rwxr-xr-x 符号权限的八进制值为 755。

与符号值类似,你可以使用八进制值使用 chmod 命令设置文件权限。以下两个命令对文件设置相同的权限:

chmod u=rw,g=r,o=r myfile1chmod 644 myfile1

特殊权限位

文件上还有几个特殊权限位。这些被称为 setuid(或 suid)、setgid(或 sgid),以及粘滞位sticky bit(或阻止删除位delete inhibit)。将此视为另一组八进制值:

  • setuid = 4

  • setgid = 2

  • sticky = 1

除非该文件是可执行的,否则 setuid 位是被忽略的。如果是可执行的这种情况,则该文件(可能是应用程序或脚本)的运行就像拥有该文件的用户启动的一样。setuid 的一个很好的例子是 /bin/passwd 实用程序,它允许用户设置或更改密码。此实用程序必须能够写入到不允许普通用户更改的文件中(LCTT 译注:此处是指 /etc/passwd 和 /etc/shadow)。因此它需要精心编写,由 root 用户拥有,并具有 setuid 位,以便它可以更改密码相关文件。

setgid 位对于可执行文件的工作方式类似。该文件将使用拥有它的组的权限运行。但是,setgid 对于目录还有一个额外的用途。如果在具有 setgid 权限的目录中创建文件,则该文件的组所有者将设置为该目录的组所有者。

最后,虽然文件粘滞位没有意义会被忽略,但它对目录很有用。在目录上设置的粘滞位将阻止用户删除其他用户拥有的该目录中的文件。

在八进制模式下使用 chmod 设置这些位的方法是添加一个值前缀,例如 4755,可以将 setuid 添加到可执行文件中。在符号模式下,u 和 g 也可用于设置或删除 setuid 和 setgid,例如 u+s,g+s。粘滞位使用 o+t 设置。(其他的组合,如 o+s 或 u+t,是没有意义的,会被忽略。)

共享与特殊权限

回想一下前一篇文章中关于需要共享文件的财务团队的示例。可以想象,特殊权限位有助于更有效地解决问题。原来的解决方案只是创建了一个整个组可以写入的目录:

drwxrwx---. 2 root finance 4096 Jul  6 15:35 finance

此目录的一个问题是,finance 组成员的用户 dwayne 和 jill 可以删除彼此的文件。这对于共享空间来说不是最佳选择。它在某些情况下可能有用,但在处理财务记录时可能不会!

另一个问题是此目录中的文件可能无法真正共享,因为它们将由 dwayne 和 jill 的默认组拥有 - 很可能用户私有组也命名为 dwayne 和 jill,而不是 finance。

解决此问题的更好方法是在文件夹上设置 setgid 和粘滞位。这将做两件事:使文件夹中创建的文件自动归 finance 组所有,并防止 dwayne 和 jill 删除彼此的文件。下面这些命令中的任何一个都可以工作:

sudo chmod 3770 financesudo chmod u+rwx,g+rwxs,o+t finance

该文件的长列表现在显示了所应用的新特殊权限。粘滞位显示为 T 而不是 t,因为 finance 组之外的用户无法搜索该文件夹。

drwxrws--T. 2 root finance 4096 Jul  6 15:35 finance

推荐阅读

(点击标题可跳转阅读)

假装很忙的三个命令行工具

命令行技巧:分割文件内容

看完本文有收获?请分享给更多人

关注「Linux 爱好者」加星标,提升Linux技能

好文章,我在看❤️

设置字段权限_命令行快速提示:权限进阶相关推荐

  1. linux 权限提示信息,命令行快速提示:权限进阶 | Linux 中国

    原标题:命令行快速提示:权限进阶 | Linux 中国 本部分介绍使用权限管理文件访问和共享的其他方法. -- Paul W. Frields 前一篇文章.本部分介绍使用权限管理文件访问和共享的其他方 ...

  2. 命令行快速删除当前行_在命令行中快速有效地工作

    命令行快速删除当前行 There are a lot of command line tips and trics in the internet. Most of them discribe the ...

  3. 终于要把魔爪伸向shell编程了_命令行参数数量预检测——莫韵乐的小脚印笔记

    终于要把魔爪伸向shell编程了_命令行参数数量预检测 有时候我们在时使用shell的时候都需要传入一些参数,但是有时候我们传入的命令行参数数量不正确就很容易发生错误,因此我们需要在需要传入参数的sh ...

  4. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客

    今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/oft ...

  5. python登录微信客户端_命令行下的微信客户端

    _____ _ _ _____ _ _ ___ _____ |_ _| | | / __ \| | | | / _ \_ _| | | | | | | / \/| |_| |/ /_\ \| | | ...

  6. 命令行快速开启应用程序

    命令行快速开启应用程序 #前言,如果想快速看完这篇文章可以只关注粗体的文字 背景: ​ 在工作的时候,每天上班第一件事就是打开昨日的各种应用.一趟下来光是打开各种应用,Redis数据库(windows ...

  7. python程序在命令行执行提示ModuleNotFoundError: No module named ‘XXX‘ 解决方法

    python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法 参考文章: (1)python程序在命令行执行提示ModuleNotFo ...

  8. kafka _命令行操作

    kafka _命令行操作 #启动zk zkServer.start #启动kafka kafka-server-start.sh -daemon /opt/kafka/config/server.pr ...

  9. 命令行错误提示--系统找不到指定的文件

    命令行错误提示--系统找不到指定的文件 解决办法 在一次下载模块时突然发现我的npm命令无法使用,如npm -v 查看版本的命令,错误提示:系统找不到指定的文件. 我刚开始以为是我的node无法使用了 ...

最新文章

  1. 连信的protobuf数据格式
  2. Matlab数据的可视化 -- 极坐标图及其与直角坐标图的转换
  3. jQuery使用toggleClass方法动态添加删除Class样式的方法
  4. 一文读懂 HTTP/1HTTP/2HTTP/3
  5. python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
  6. OSI网络模型(TCP/IP五层模型)
  7. postfix和dovecot架设邮件服务器的一些记录1
  8. slam入门——十四讲笔记(四)
  9. 怎么安装mapinfo破解和符号库
  10. 【Scratch】进阶篇-《Scratch游戏开发》超级躲避球
  11. 用word这么多年,90%的人居然不知道这12个小技巧
  12. Word2013自动生成中英文目录
  13. 计算机辅助翻译 摘要,翻译实践中计算机辅助翻译技术的使用-应用语言学论文-语言学论文.docx...
  14. mysql每组排序后取前2条,并修改数据
  15. 【xla】三、【构图阶段】EncapsulateSubgraphsPass
  16. java 环境变量 locale_locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别
  17. 句子成分划分(口诀符号及方法)
  18. 萌宠过春节成消费新热点 广西宠物寄养一“窝”难求
  19. 2020年外贸软件排名和市场占有率
  20. 计算机专业扬大vs兰州大学,复试奇怪景象:兰州大学初试前五(400+)都被刷!扬州大学唯一上线也被刷!...

热门文章

  1. python怎样填充颜色_python中如何给图形填充颜色
  2. Thinkphp3.2版本Controller和Action的访问方法
  3. 蓝桥杯 单点最短路径问题
  4. 关于MFC自动生成的各个类的指针访问
  5. Wap wml开发中需要注意的地方
  6. linux 线程池编程,Linux-C-9-线程池编程
  7. android数据截取字符串数组,android - 从Android Studio中的字符串数组获取特定字符串 - SO中文参考 - www.soinside.com...
  8. jquery 乱码 传参_jquery ajax传递中文参数乱码问题及解决方法说明
  9. android 源码中的单例,Android源码中的一种单例实现
  10. confirm关闭 layer_基于 vue+layer.js 超青睐的弹窗组件VueLayer