Slackware Loongarch64 中文手册
  • 翻译说明
    • 贡献力量
  • 前言
    • 目标读者
    • 为什么会有一版新的 Slackware 手册?
    • 本书中使用的约定
    • 致谢
  • Slackware 介绍
    • 为何使用 Slackware?
    • 与其他 Linux 发行版的差异
    • 许可
  • 安装
    • 从安装介质启动
    • 分区
    • 安装程序
      • Help
      • Keymap
      • Addswap
      • Target
      • Source
      • Select
      • Install
      • Configure
  • 引导
    • mkinitrd
    • 引导器
      • LILO
      • GRUB2
    • 多重引导
      • 引导多个分区
      • 引导多个硬盘
  • 基本 Shell 命令
    • 系统文档
    • 处理文件和目录
      • 列出文件和目录内容
      • 在文件系统中移动
      • 文件和目录的创建与删除
    • 归档和压缩
      • zip、unzip
      • gzip
      • bzip2
      • XZ、LZMA
      • tar
    • 阅读文档
      • more
      • less
    • 链接
  • Bourne Again Shell
    • 什么是 Shell?
    • 环境变量
    • 通配符
    • TAB 键补全
    • 输入、输出重定向
    • 任务管理
    • 终端
    • 制定
  • 进程控制
    • ps
    • kill 和 killall
    • top
    • 计划任务
  • X 视窗系统
    • X 是什么?
    • 配置 X 服务器
    • 选择窗口管理器
    • 设置图形界面登陆
  • 打印
    • 选择打印程序
    • 获取驱动
    • 在 CUPS 中设置打印机
    • 从命令行打印
      • 打印格式化数据
  • 用户和组
    • 用户和组是什么?
    • 管理用户和组
    • 管理用户和组的其他工具
    • 手动管理用户和组
  • 文件系统权限
    • 权限概述
    • chmod、chown 和 chgrp
    • SUID、SGID 和粘滞位
  • 使用文件系统
    • 文件系统的层次
    • 本地文件系统类型
      • ext2
      • ext3
      • ext4
      • reiserfs
      • XFS
      • JFS
      • iso9660
      • vfat
      • swap
    • 使用 mount 指令
    • 网络文件系统
      • NFS
      • SMB
  • vi
    • vi 是什么?
    • vi 的不同模式
    • 打开、保存和退出
    • 移动光标
    • 编辑文本
    • vi 小纪
  • Emacs
    • Emacs 是什么?
    • 起步
    • 移动光标
    • 获得帮助
    • 调用函数
    • Emacs 小纪
  • 网络
    • netconfig
    • 手动配置
    • 使用 rc.inet1.conf 自动配置网络
  • 无线网络
    • iwconfig
    • 有线等(无)效保密
    • Wifi 登陆保护
      • 再看 rc.inet1.conf
    • wicd
  • 基本网络工具
    • 网络诊断工具
      • ping
      • traceroute
      • telnet
      • ssh
      • tcpdump
      • nmap
      • host
      • dig
      • finger
    • 网页浏览器
      • lynx
      • links
      • wget
    • 邮件客户端
      • pine
      • mutt
      • mailx
    • FTP 客户端
      • ftp
      • ncftp
      • lftp
    • rsync
  • 包管理
    • pkgtool
    • 软件包的安装、移除和升级
    • 软件包的压缩格式
      • slackpkg
      • rpm2tgz
  • 追踪系统更新
    • 稳定分支
    • 订阅安全更新邮件列表
    • 升级 Slackware 版本
  • Linux 内核
    • 内核是做什么的?
    • 设置内核模块
    • 编译以及为什么要编译内核
由 GitBook 提供支持
在本页
在GitHub上编辑
  1. 文件系统权限

SUID、SGID 和粘滞位

权限还有一部分尚未涉及,它们就是三种特殊权限,分别是 SUID,SGID 和粘滞位。只要一个文件有这三种的其中之一,它就会有一定的特殊之处。SUID 和 SGID 影响程序运行的方式,粘滞位限制该文件的删除。这些权限也能像读写执行一样用 chmod 设定,但稍有不同。

SUID 和 SGID 分别表示“Set User ID”和“Set Group ID”。当程序文件设置了二者之一的权限时,程序运行起来后将拥有它所有者或所属组的权限,无论执行程序的是谁。让我们来看看一个 SUID 的例子—— passwd 和它管理的文件:

darkstar:~# ls -l /usr/bin/passwd \
  /etc/passwd \
  /etc/shadow
-rw-r--r-- 1 root root    1106 2008-06-03 22:23 /etc/passwd
-rw-r----- 1 root shadow   627 2008-06-03 22:22 /etc/shadow
-rws--x--x 1 root root   34844 2008-03-24 16:11 /usr/bin/passwd*

注意 passwd 的权限,它没有 x 权限而是一个 s 权限。这代表着,passwd 是一个 SUID 程序,当运行它的时候,它将拥有其所有者 root 的权限,无论执行者是谁。只要你看看它管理的文件你就知道为什么要这么做了:/etc/passwd 和 /etc/shadow 都是除了 root 外不可写入的。而用户需要修改各自的信息,因此 passwd 必须以 root 身份运行来修改这些文件。

那么粘滞位又是什么意思呢?它限制某个文件的移动和删除,并且只能设置在目录上。非 root 用户无法移动或删除设置了粘滞位的目录下的文件,除非该用户是目标文件的所有者。基本上所有人只要有了写权限都能移动或删除文件,粘滞位限制除了其所有者(当然还有 root)进行这些操作。让我们看看一个“粘滞”目录的例子:

darkstar:~# ls -ld /tmp
drwxrwxrwt 1 root root   34844 2008-03-24 16:11 /tmp

作为整个系统的临时文件存放地,/tmp 自然要对所有人开放读写执行权限。由于每个人都有可能在某个时间段在此存放了文件,那么为什么要禁止其他用户删除就很好理解了。你能在全局权限部分的 x 位置看见它,不过不是 x 而是 t 。

权限类型
八进制表示
字母表示

SUID

4

s

SGID

2

s

粘滞

1

t

表 10.5;SUID,SGID 和粘滞权限

使用八进制设置的时候,必须在最前方加一位来表示。比如,/tmp 对应的就是 1777,/usr/bin/passwd 的权限就是 4711 。基本上这一位都不怎么用,chmod 自动填充 0 。

darkstar:~# chmod 1777 /tmp
darkstar:~# chmod 4711 /usr/bin/passwd

字母表示稍有不同。假设这两个文件权限都是 0000(没有任何权限),我们应该这样设置:

darkstar:~# chmod ug+rwx,o+rwt /tmp
darkstar:~# chmod u+rws,go+x /usr/bin/passwd
上一页chmod、chown 和 chgrp下一页使用文件系统

最后更新于1年前