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. 文件系统权限

chmod、chown 和 chgrp

现在我们知道了什么是权限,那么如何更改权限呢?更进一步地说,如何赋予用户和组以权限呢?本小节将对此做出解答。

我们要探讨的第一个工具就是 chown(1) 。使用 chown,我们就能(猜也能猜到)更改文件或目录的所有权。从前 chown 只能更改所有者,现在也能更改所属组了。

darkstar:~# ls -l /tmp/foo
total 0
-rw-r--r-- 1 alan users 0 2008-06-06 22:29 a
-rw-r--r-- 1 alan users 0 2008-06-06 22:29 b
darkstar:~# chown root /tmp/foo/a
darkstar:~# ls -l /tmp/foo
total 0
-rw-r--r-- 1 root users 0 2008-06-06 22:29 a
-rw-r--r-- 1 alan users 0 2008-06-06 22:29 b

你可在用户名后面同时指定所属组,二者用冒号隔开:

darkstar:~# chown root:root /tmp/foo/b
darkstar:~#  ls -l /tmp/foo
total 0
-rw-r--r-- 1 root users 0 2008-06-06 22:29 a
-rw-r--r-- 1 root root  0 2008-06-06 22:29 b

chown 也可用来递归地修改某目录下所有文件和子目录的权限。这条命令将把 /tmp/foo 目录下的所有内容的所有权改为 root:root 。

darkstar:~# chown -R root:root /tmp/foo/b

如果只有冒号和组名,没有用户名的话,将不会修改文件的所有者。

darkstar:~# chown :wheel /tmp/foo/a
darkstar:~# ls -l /tmp/foo
ls -l /tmp/foo
total 0
-rw-r--r-- 1 root wheel 0 2008-06-06 22:29 a
-rw-r--r-- 1 root root  0 2008-06-06 22:29 b

chown 还有个不那么常用的兄弟,chgrp(1) 。这个命令与 chown 相似,但只能改变文件所属组。既然两种事情 chown 都能做,那为什么还要提到 chgrp 呢?答案很简单,因为某些系统还用着老版的 chown,它不能更改所属组。如果碰到这种情况,你知道怎么做了吧。

为什么我们要把权限修改的介绍放在后面?主要原因是,chmod(1)(用来修改权限的工具)的语法和 chown 的几乎相同,但 chmod 除了要给出用户和组之外,还必须给出一组用八进制数或字母形式表示的权限,而这两种表示法都不是一看就会的。我们先从比较简单的八进制数表示法开始说起。

在八进制数表示下,2 的某一(0 到 2)次幂都代表了某个权限,把它们加起来就得到这一组权限的八进制表示。如果听起来很复杂的话,希望下面这个这个表格能帮到你。

权限
表示

读

4

写

2

执行

1

表 10.2:八进制表示下的权限

把它们加起来就能得到一个 0 到 7 之间的数,这个数代表了一组权限。举个例子,可读可写不可执行的八进制表示就是 6 。 3 表示不可读可写可执行。设定时,三组权限都必须指定,不可能只指定某一组权限。

darkstar:~# ls -l /tmp/foo/a
-rw-r--r-- 1 root root  0 2008-06-06 22:29 a
darkstar:~# chmod 750 /tmp/foo/a
darkstar:~# ls -l /tmp/foo/a
-rwxr-x--- 1 root root  0 2008-06-06 22:29 a

chmod 也可以用字母表示,后面带上 + 或 - 表示的权限,这个比较好记,但是八进制表示更方便。

权限
字母表示

读

r

写

w

执行

x

表 10.3:字母表示下的权限

影响的对象
字母表示

用户、所有者

u

所属组

g

其他、全局

o

表 10.4:字母表示下的用户和组

要在 chmod 里使用字母表示法,首先指明权限应用的对象(u 针对用户,g 针对组,o 表示其他),同时还要指明权限值(+ 表示有这项权限,- 表示没有)。可同时设置多组,用逗号隔开。

darkstar:/tmp/foo# ls -l
total 0
-rw-r--r-- 1 alan users 0 2008-06-06 23:37 a
-rw-r--r-- 1 alan users 0 2008-06-06 23:37 b
-rw-r--r-- 1 alan users 0 2008-06-06 23:37 c
-rw-r--r-- 1 alan users 0 2008-06-06 23:37 d
darkstar:/tmp/foo# chmod u+x a
darkstar:/tmp/foo# chmod g+w b
darkstar:/tmp/foo# chmod u+x,g+x,o-r c
darkstar:/tmp/foo# chmod u+rx-w,g+r,o-r d
darkstar:/tmp/foo# ls -l
-rwxr--r-- 1 alan users 0 2008-06-06 23:37 a*
-rw-rw-r-- 1 alan users 0 2008-06-06 23:37 b
-rwxr-x--- 1 alan users 0 2008-06-06 23:37 c*
-r-xr----- 1 alan users 0 2008-06-06 23:37 d*

你喜欢哪种取决于你。每种都有各自的优点,所以真正的 Slackware 用户会选择把它们统统掌握。

上一页权限概述下一页SUID、SGID 和粘滞位

最后更新于1年前