Linux 文 件 和 目 录 管 理 创 达 IT 实 战 技 能 培 训 机 构 目 录 Linux 目 录 结 构... 1 根 目 录 结 构... 1 相 对 路 径 和 绝 对 路 径... 2 Linux 环 境 变 量... 2 环 境 变 量 的 分 类... 2 设 置 一 个 新 的 环 境 变 量... 3 查 看 环 境 变 量... 3 常 见 的 环 境 变 量... 4 Linux 文 件 与 目 录 管 理... 4 文 件 所 有 者 群 组 和 其 他 人 的 概 念... 4 文 件 所 有 者 (user)... 4 群 组 (group)... 4 其 他 人 (other)... 5 Linux 文 件 属 性... 5 Linux 文 件 后 缀... 5 Linux 链 接 文 件... 5 更 改 文 件 的 权 限... 6 修 改 文 件 所 属 群 组 chgrp... 7 修 改 文 件 所 有 者 chown... 7 更 改 用 户 对 文 件 或 目 录 的 权 限 chmod... 8 umask... 9 修 改 文 件 的 特 殊 权 限... 10 chatter... 10 lsatter... 11 Linux 下 的 搜 索 工 具... 12 which... 12 find... 12
Linux 目 录 结 构 与 Windows 将 硬 盘 看 做 C 盘 D 盘 几 个 独 立 的 分 区 不 同,Linux 将 整 个 文 件 系 统 看 做 一 棵 树, 这 棵 树 的 树 根 叫 做 根 目 录, 用 / 表 示 各 个 分 区 通 过 挂 载 (mount) 到 文 件 夹 的 形 式 访 问 如 之 前 所 说,/dev/sda1 挂 载 到 /,/dev/sda2 挂 载 到 /boot,/dev/sda3 挂 载 到 swap 根 目 录 结 构 /bin 这 一 目 录 中 存 放 了 供 所 有 用 户 使 用 的 完 成 基 本 维 护 任 务 的 命 令 其 中 bin 是 binary 的 缩 写, 表 示 二 进 制 文 件, 通 常 为 可 执 行 文 件 一 些 常 用 的 系 统 命 令, 如 cp ls 等 保 存 在 该 目 录 中 /boot 这 里 存 放 的 是 启 动 Linux 时 使 用 的 一 些 核 心 文 件 如 操 作 系 统 内 核 引 导 程 序 Grub 等 /dev 在 此 目 录 中 包 含 所 有 的 系 统 设 备 文 件 从 此 目 录 可 以 访 问 各 种 系 统 设 备 如 CD-ROM, 磁 盘 驱 动 器, 调 制 解 调 器 和 内 存 等 在 该 目 录 中 还 包 含 有 各 种 实 用 功 能, 如 用 于 创 建 设 备 文 件 的 MAKEDEV /etc 该 目 录 中 包 含 系 统 和 应 用 软 件 的 配 置 文 件 /etc/passwd 该 目 录 中 包 含 了 系 统 中 的 用 户 描 述 信 息, 每 行 记 录 一 个 用 户 的 信 息 /home 存 储 普 通 用 户 的 个 人 文 件 每 个 用 户 的 主 目 录 均 在 /home 下 以 自 己 的 用 户 名 命 名 /lib 这 个 目 录 里 存 放 着 系 统 最 基 本 的 共 享 链 接 库 和 内 核 模 块 共 享 链 接 库 在 功 能 上 类 似 于 Windows 里 的.dll 文 件 /lib64 64 位 系 统 有 这 个 文 件 夹,64 位 程 序 的 库 /lost+found 这 并 不 是 Linux 目 录 结 构 的 组 成 部 分, 而 是 ext3 文 件 系 统 用 于 保 存 丢 失 文 件 的 地 方 不 恰 当 的 关 机 操 作 和 磁 盘 错 误 均 会 导 致 文 件 丢 失, 这 意 味 着 这 些 被 标 注 为 在 使 用, 但 却 并 未 列 于 磁 盘 上 的 数 据 结 构 上 正 常 情 况 下, 引 导 进 程 会 运 行 fsck 程 序, 该 程 序 能 发 现 这 些 文 件 除 了 / 分 区 上 的 这 个 目 录 外, 在 每 个 分 区 上 均 有 一 个 lost+found 目 录 /media 可 移 动 设 备 的 挂 载 点, 当 前 的 操 作 系 统 通 常 会 把 U 盘 等 设 备 自 动 挂 载 到 该 文 件 夹 下 /mnt 临 时 用 于 挂 载 文 件 系 统 的 地 方 一 般 情 况 下 这 个 目 录 是 空 的, 而 在 我 们 将 要 挂 载 分 区 时 在 这 个 目 录 下 建 立 目 录, 再 将 我 们 将 要 访 问 的 设 备 挂 载 在 这 个 目 录 上, 这 样 我 们 就 可 访 问 文 件 了 ( 注 意 在 GNOME 中, 只 有 挂 载 到 /media 的 文 件 夹 才 会 显 示 在 计 算 机 中, 挂 载 到 /mnt 不 会 做 为 特 殊 设 备 显 示 ) /opt 多 数 第 三 方 软 件 默 认 安 装 到 此 位 置, 如 Adobe Reader google-earth 等 并 不 是 每 个 系 统 都
会 创 建 这 个 目 录 /proc 它 是 存 在 于 内 存 中 的 虚 拟 文 件 系 统 里 面 保 存 了 内 核 和 进 程 的 状 态 信 息 多 为 文 本 文 件, 可 以 直 接 查 看 如 /proc/cpuinfo 保 存 了 有 关 CPU 的 信 息 /root 这 是 根 用 户 的 主 目 录 与 保 留 给 个 人 用 户 的 /home 下 的 目 录 很 相 似, 该 目 录 中 还 包 含 仅 与 根 用 户 有 关 的 条 目 /sbin 供 超 级 用 户 使 用 的 可 执 行 文 件, 里 面 多 是 系 统 管 理 命 令, 如 fsck, reboot, shutdown, ifconfig 等 /tmp 该 目 录 用 以 保 存 临 时 文 件 该 目 录 具 有 Sticky 特 殊 权 限, 所 有 用 户 都 可 以 在 这 个 目 录 中 创 建 编 辑 文 件 但 只 有 文 件 拥 有 者 才 能 删 除 文 件 为 了 加 快 临 时 文 件 的 访 问 速 度, 有 的 实 现 把 /tmp 放 在 内 存 中 /usr 是 一 个 庞 大 的 文 件 夹, 其 下 的 目 录 结 构 与 根 目 录 相 似, 但 根 目 录 中 的 文 件 多 是 系 统 级 的 文 件, 而 /usr 中 是 用 户 级 的 文 件 /var 动 态 的 程 序 数 据,/var 中 包 括 了 一 些 数 据 文 件, 如 系 统 日 志 等 相 对 路 径 和 绝 对 路 径 Linux 的 绝 对 路 径 是 指 从 根 目 录 说 起 的 如 :cd /etc/sysconfig/network-scripts/ifcfg-eth0, 而 相 对 路 径 是 从 当 前 目 录 (./) 说 起 的, 如 :cd dirname, 切 换 到 当 前 目 录 下 的 dirname 目 录, 这 时 dirname 目 录 已 经 存 在 于 /root/ 目 录 中 Linux 中 有 4 中 相 对 路 径 的 表 示 方 法 : 当 前 目 录. 父 目 录.. 某 个 用 户 的 根 目 录 ~user 自 己 的 根 目 录 ~ 可 以 用 cd 或 者 cd ~ 命 令 直 接 切 换 到 自 己 的 根 目 录 Linux 环 境 变 量 环 境 变 量 的 分 类 Linux 的 系 统 变 量 分 为 两 种 : 环 境 变 量 和 本 地 变 量 环 境 变 量 : 又 称 为 全 局 变 量 永 久 性 的 存 在 于 配 置 文 件 中, 登 陆 系 统 的 时 候 就 已 经 有 了 相 应 的 系 统 定 义 的 环 境 变 量 本 地 变 量 : 当 前 shell 中 的 变 量, 是 临 时 的, 可 使 用 export 命 令 声 明, 变 量 在 关 闭 shell 时 失 效
Linux 系 统 中 环 境 变 量 的 配 置 文 件 /etc/profile 系 统 全 局 的 环 境 变 量 配 置 文 件, 只 有 root 用 户 可 以 修 改, 修 改 完 后, 需 执 行 # source /etc/profile 命 令, 全 局 生 效 ~/.bash_profile 普 通 用 户 自 己 家 目 录 下 的 环 境 变 量 配 置 文 件, 是 一 个 隐 藏 文 件, 修 改 完 后, 需 执 行 # source ~/.bash_profile, 只 对 该 用 户 生 效 以. 开 头 的 文 件 为 隐 藏 文 件,ls 的 -a 参 数 可 以 显 示 当 前 目 录 下 的 隐 藏 文 件 source 命 令 用 于 执 行 刚 修 改 的 初 始 化 文 件, 使 之 立 即 生 效, 而 不 必 注 销 并 重 新 登 录 设 置 一 个 新 的 环 境 变 量 # export COMMAND="ls al" # echo $COMMAND ls al 设 置 变 量 的 时 候, 如 果 遇 到 空 格, 需 要 用 引 号 ( 双 引 号 或 者 单 引 号 ) 引 住 # export COMMAND=`ls -l` # echo $COMMAND total 28 drwx------ 3 clamav clamav 4096 Jun 21 2014 clamav drwxr-xr-x 7 mysql mysql 4096 Aug 1 2014 extmail drwxr-xr-x 11 mysql mysql 4096 Jun 20 2014 extman drwx------ 3 nagios nagios 4096 Mar 12 11:09 nagios ` ` 被 称 为 倒 引 号, 在 倒 引 号 中 的 字 符 会 被 视 为 一 条 命 令, 输 出 变 量 的 时 候 会 被 执 行 更 多 的 变 量 知 识 会 在 shell 编 程 中 详 细 学 习 alias 环 境 变 量 alias( 别 名 ) 允 许 使 用 更 加 简 短 的 名 称 来 重 新 定 义 Linux 命 令, 从 而 简 化 命 令 行 的 输 入, 提 高 工 作 效 率 语 法 :alias 新 的 命 令 =' 原 命 令 - 选 项 / 参 数 ' 例 如 :alias l= ls -al 重 新 定 义 了 ls 命 令, 只 需 输 入 l 就 能 以 长 格 式 显 示 当 前 目 录 内 容 如 果 想 永 久 生 效, 执 行 如 下 操 作 # echo alias l= ls -al >> ~/.bashrc # source ~/.bashrc ~/.bashrc 文 件 里 可 以 存 放 用 户 自 定 义 的 alias 别 名 查 看 环 境 变 量 使 用 env 或 者 printenv 命 令 可 以 查 看 所 有 环 境 变 量 使 用 echo 命 令 显 示 特 定 的 环 境 变 量, 如 : # echo $COMMAND ls -al
常 见 的 环 境 变 量 PATH 决 定 了 shell 将 到 哪 些 目 录 中 寻 找 命 令, 如 下 是 我 的 服 务 器 中 使 用 的 PATH: # echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin: /root/bin:/usr/local/mysql/bin:/usr/local/jdk/bin:/usr/local/jre/bin:/root/bin which 命 令 用 来 查 看 某 个 命 令 所 在 哪 个 目 录, 如 : # which mkdir /bin/mkdir # which mysql /usr/local/mysql/bin/mysql HOME 当 前 用 户 主 目 录 UID 当 前 用 户 的 ID PWD 当 前 工 作 目 录 的 绝 对 路 径 名, 该 变 量 的 取 值 随 cd 命 令 的 使 用 而 变 化 HISTSIZE 历 史 命 令 数, 可 用 命 令 #history -c 清 除 历 史 命 令 LOGNAME 当 前 用 户 的 登 录 名 HOSTNAME 指 主 机 的 名 称 SHELL 前 用 户 Shell 类 型 MAIL 当 前 用 户 的 邮 件 存 放 目 录 PS1 shell 命 令 行 基 本 提 示 符, 对 于 root 用 户 是 #, 对 于 普 通 用 户 是 $ PS2 二 级 提 示 符, 默 认 是 >, 输 入 cp filename1 \, 回 车, 此 时 就 出 现 二 级 提 示 符 \ 是 换 行 的 意 思 Linux 文 件 与 目 录 管 理 文 件 所 有 者 群 组 和 其 他 人 的 概 念 Linux 支 持 多 人 多 任 务 环 境, 也 就 是 说 N 多 人 可 以 在 一 台 计 算 机 上 工 作, 而 互 相 不 受 影 响 当 然, 要 确 保 互 相 不 受 影 响 以 及 数 据 的 安 全 性, 要 求 Linux 必 须 有 严 格 的 权 限 管 理 机 制 才 行 Linux 中 文 件 和 目 录 的 存 放 的 身 份 分 为 三 个 类 别, 分 别 是 :user/group/other, 并 且 这 三 种 身 份 都 有 read/write/execute 权 限 文 件 所 有 者 (user) 张 三 登 陆 Linux 系 统, 在 家 目 录 中 创 建 和 修 改 文 件, 那 么 家 目 录 中 的 文 件 所 有 者 就 是 张 三 李 四 登 陆 系 统 后 也 有 自 己 的 家 目 录, 他 们 无 法 查 看 到 张 三 家 目 录 中 的 数 据 群 组 (group) 群 组 用 于 给 一 个 团 队 来 赋 予 某 个 文 件 的 权 限, 管 理 员 只 需 将 账 号 加 入 这 个 团 队 中, 加 入 的 账
号 就 已 经 有 了 某 个 文 件 的 权 限 其 他 人 (other) 张 三 既 不 是 文 件 的 所 有 者, 也 不 在 群 组 里 面, 这 时 候 该 文 件 对 于 张 三 来 说 有 other 这 个 身 份 通 常 网 站 程 序 文 件 的 权 限 中,other 中 的 权 限 为 read( 读 ) 和 execute( 执 行 ), 这 样 可 以 确 保 网 名 可 以 浏 览 到 网 站 内 容 Linux 文 件 属 性 Linux 文 件 后 缀 在 linux 系 统 中, 文 件 的 后 缀 名 并 没 有 实 际 意 义, 也 就 是 说, 你 加 或 者 不 加, 这 个 文 件 都 可 以 正 常 使 用 但 是 为 了 容 易 区 分, 我 们 习 惯 给 文 件 加 一 个 后 缀 名, 这 样 当 用 户 看 到 这 个 文 件 名 时 就 会 很 快 想 到 它 到 底 是 一 个 什 么 文 件 例 如 : adduser.sh : 代 表 一 个 shell script packages.tar.gz: 代 表 这 是 一 个 压 缩 包 config.cnf : 代 表 一 个 配 置 文 件 apache.log : 代 表 这 是 一 个 日 志 文 件 另 外, 在 linux 系 统 中, 文 件 名 最 长 可 以 到 达 256 个 字 符 Linux 链 接 文 件 我 们 之 前 学 过, 可 以 用 ls 命 令 + -al 参 数, 如 :ls -al 以 长 格 式 来 查 看 文 件 的 详 细 信 息 # ls -al total 28 drwx------ 3 mysql mysql 4096 Jul 12 18:57. drwxr-xr-x. 6 root root 4096 May 25 17:15.. -rw------- 1 mysql mysql 8 May 8 16:27.bash_history -rw-r--r-- 1 mysql mysql 18 Oct 16 2014.bash_logout -rw-r--r-- 1 mysql mysql 176 Oct 16 2014.bash_profile -rw-r--r-- 1 mysql mysql 124 Oct 16 2014.bashrc -rw-r--r-- 1 root root 0 Jul 12 18:57 chuangdait
drwxr-xr-x 2 root root 4096 Jul 12 18:57 i-it [1] [2] [3] [4] [5] [6] [7] [ 权 限 ] [ 链 接 ] [ 所 有 者 ] [ 群 组 ] [ 文 件 大 小 ] [ 最 后 一 次 修 改 日 期 ] [ 文 件 名 ] 下 面 我 们 举 个 例 子 依 次 介 绍, 如 下 : -rw-r--r-- 1 root root 0 Jul 12 18:57 chuangdait -rw-r--r-- 第 一 列 由 10 个 字 符 组 成 : 第 一 个 字 符 代 表 这 个 文 件 的 类 型, 常 见 的 文 件 类 型 有 : 文 件 : - chuangdait 的 类 型 是 一 个 文 件, 上 图 中,i-it 的 类 型 是 目 录 目 录 : d 链 接 文 件 : l 存 储 设 备 文 件 : b 套 接 字 文 件 (socket), 用 于 进 程 间 通 信 :s 接 下 来 的 字 符 中, 以 三 个 为 一 组, 且 都 是 rwx 这 三 个 属 性 的 组 合, 其 中 r 代 表 可 读 (read), w 代 表 可 写 (write), x 代 表 可 执 行 (execute) 如 果 显 示 -, 那 么 说 明 没 有 这 个 权 限 第 一 组 ( 绿 色 ) 为 文 件 所 有 者 的 权 限, 可 以 看 出 chuangdait 这 个 文 件 对 于 文 件 所 有 者 来 说, 有 可 读 和 可 写 的 权 限, 但 没 有 执 行 的 权 限 第 二 组 ( 蓝 色 ), 代 表 群 组 的 权 限, 可 以 看 出, 这 个 群 组 只 有 读 的 权 限 第 三 组 ( 紫 色 ), 代 表 其 他 人 的 权 限, 也 是 只 有 读 的 权 限 第 二 列 1 代 表 链 接 占 用 的 节 点 (inode), 为 目 录 时, 通 常 与 该 目 录 下 有 多 少 子 目 录 有 关 系 关 于 inode:inode 是 linux 文 件 系 统 的 索 引 节 点, 用 来 存 放 文 件 的 基 本 信 息, 包 括 : 时 间 文 件 名 所 有 者 和 群 组 等 可 以 用 df i 开 查 看 各 分 区 的 inode 数 量 第 三 列 代 表 这 个 文 件 的 所 有 者 是 谁, 我 们 看 到 所 有 者 是 root 第 四 列 代 表 这 个 文 件 的 所 属 群 组, 我 们 看 到 也 是 root, 说 明 root 既 是 一 个 账 号 也 是 一 个 群 组 第 五 列 表 示 该 文 件 的 大 小 第 六 列 代 表 该 文 件 最 后 一 次 修 改 的 时 间 第 七 列 表 示 该 文 件 的 文 件 名 更 改 文 件 的 权 限 出 于 企 业 信 息 安 全 的 考 虑, 企 业 通 常 会 给 用 户 设 置 不 同 的 目 录 访 问 权 限, 这 时 候 管 理 员 就 需 要 根 据 实 际 需 要 来 修 改 文 件 的 属 性 和 权 限, 来 满 足 企 业 需 求 修 改 的 方 法 通 常 有 以 下 三 种, 分 别 是 : chgrp : 修 改 文 件 所 属 群 组 chown: 修 改 文 件 所 有 者 chmod: 修 改 文 件 的 权 限,SUID,SGID,SBIT 等 等
修 改 文 件 所 属 群 组 chgrp 语 法 :chgrp [ 组 名 ] [ 文 件 名 ] # groupadd it # touch chuandait # ls -l chuangdait -rw-r--r-- 1 root root 0 Jul 12 19:25 chuangdait # chgrp it chuangdait # ls -l chuangdait -rw-r--r-- 1 root it 0 Jul 12 19:25 chuangdait groupadd 命 令 是 用 来 添 加 一 个 用 户 群 组, 后 面 我 们 会 详 细 介 绍 除 了 可 以 修 改 文 件 的 所 属 群 组, 还 可 以 修 改 目 录 的 所 属 群 组, 如 下 : # mkdir i-it # ls -ld i-it drwxr-xr-x 2 root root 4096 Jul 12 20:36 i-it # chgrp it i-it # ls -ld i-it drwxr-xr-x 2 root it 4096 Jul 12 20:36 i-it mkdir 命 令 是 用 来 创 建 目 录 的,ls -d 参 数 是 用 来 显 示 上 级 目 录 的,-ld 结 合 使 用 是 为 了 长 格 式 显 示 上 级 目 录 修 改 目 录 所 属 组 的 时 候, 默 认 只 能 修 改 目 录 本 身, 如 果 目 录 下 面 还 有 子 目 录 或 者 文 件, 那 么 它 们 将 不 会 被 修 改, 如 果 想 级 联 修 改 子 目 录 和 子 文 件 的 权 限, 可 以 加 上 -R 选 项, 如 下 : # mkdir i-it/teacher i-it/student # ls -l i-it/ total 8 drwxr-xr-x 2 root root 4096 Jul 12 20:43 student drwxr-xr-x 2 root root 4096 Jul 12 20:43 teacher # chgrp -R it i-it # ls -l i-it/ total 8 drwxr-xr-x 2 root it 4096 Jul 12 20:43 student drwxr-xr-x 2 root it 4096 Jul 12 20:43 teacher 修 改 文 件 所 有 者 chown 语 法 :chown [ -R ] 用 户 名 文 件 名 / 目 录 名 或 者 chown [ -R ] 用 户 名 : 组 名 文 件 名 / 目 录 名 -R 选 项 用 于 为 目 录 修 改 权 限 的 时 候, 将 目 录 下 的 所 有 文 件 和 目 录 全 部 修 改 # ls -l -rw-r--r-- 1 root it 0 Jul 12 19:25 chuangdait
drwxr-xr-x 4 root it 4096 Jul 12 20:43 i-it # useradd tian # chown tian:root chuangdait # ls -l chuandait -rw-r--r-- 1 tian root 0 Jul 12 19:25 chuangdait # chown -R tian:root i-it # ls -l i-it/ drwxr-xr-x 2 tian root 4096 Jul 12 20:43 student drwxr-xr-x 2 tian root 4096 Jul 12 20:43 teacher useradd 命 令 用 来 添 加 linux 系 统 账 号, 后 续 我 们 会 详 细 介 绍 其 实 chown 命 令 可 以 代 替 chgrp 命 令, 它 同 时 拥 有 修 改 文 件 / 目 录 所 有 者 和 所 属 群 组 的 功 能, 所 以 我 通 常 会 使 用 chown,chgrp 用 的 少 一 些 更 改 用 户 对 文 件 或 目 录 的 权 限 chmod linux 中 用 rwx 代 表 文 件 或 目 录 的 读 写 执 行 权 限, 分 别 是 : r 代 表 读, w 代 表 写, x 代 表 可 执 行, - 代 表 没 有 权 限 然 而, 还 有 另 外 一 种 方 法 来 描 述 rwx 权 限, 那 就 是 用 数 字, r 代 表 4, w 代 表 2, x 代 表 1, - 代 表 0 所 以, 在 文 件 或 目 录 的 权 限 中, 如 果 一 个 文 件 的 所 有 者 权 限 为 rwx, 那 么 就 可 以 用 7 来 代 表 文 件 的 所 有 者 权 限,4+2+1=7, 相 反, 如 果 任 何 权 限 都 没 有, 那 就 是 - - - =0+0+0=0 语 法 :chmod [ -R ] 数 字 权 限 文 件 名,-R 参 数 作 用 跟 chown 中 的 -R 一 样, 级 联 更 改 # ls -l total 4 -rw-r--r-- 1 tian root 0 Jul 12 19:25 chuangdait drwxr-xr-x 4 tian root 4096 Jul 12 20:43 i-it # chmod 777 chuangdait # ls -l chuangdait -rwxrwxrwx 1 tian root 0 Jul 12 19:25 chuangdait chuandait 文 件 的 权 限 更 改 为 777 之 后, 不 仅 账 号 tian 和 root 组 中 的 账 号 对 它 有 所 有 权 限, 连 其 他 人 对 它 也 有 所 有 权 限 ( 读 写 执 行 ), 这 样 做 是 不 安 全 的 # chmod -R 700 i-it # ls -l i-it/ total 8 drwx------ 2 tian root 4096 Jul 12 20:43 student drwx------ 2 tian root 4096 Jul 12 20:43 teacher student 和 teacher 目 录 的 权 限 更 改 为 700 之 后, 只 有 tian 这 个 账 号 对 它 们 读 写 执 行 权 限,root 组 和 其 他 人 都 没 有 任 何 权 限 当 然,chmod 也 支 持 使 用 原 生 的 rwx 属 性 来 设 置 权 限, 之 前 我 们 介 绍 过, 文 件 的 身 份 分 为 : 所 有 者 (user) 所 属 群 组 (group) 其 他 人 (other)
所 以 我 们 可 以 使 用 u,g,o 来 代 表 这 三 个 身 份, 另 外,a 代 表 all, 指 的 是 全 部 身 份, 如 下 : # ls -l i-it drwx------ 2 tian root 4096 Jul 12 20:43 student drwx------ 2 tian root 4096 Jul 12 20:43 teacher # chmod -R u=rw,og=r i-it # ls -l i-it/ drw-r--r-- 2 tian root 4096 Jul 12 20:43 student drw-r--r-- 2 tian root 4096 Jul 12 20:43 teacher # chmod -R u=x,og= i-it # ls -l i-it d--x------ 2 tian root 4096 Jul 12 20:43 student d--x------ 2 tian root 4096 Jul 12 20:43 teacher og= 空 格, 空 格 代 表 没 有 任 何 权 限 umask 如 果 你 想 知 道 创 建 好 一 个 文 件 或 目 录 之 后, 它 的 默 认 属 性 是 什 么, 可 以 了 解 一 下 umask umask 是 用 来 指 定 建 立 文 件 和 目 录 之 后 的 默 认 权 限 可 以 使 用 如 下 命 令 查 看 当 前 umask 值 : # umask 0022 怎 么 是 4 组 啊, 不 应 该 是 3 组 吗? 其 实 与 一 般 权 限 有 关 的 是 后 面 的 3 组, 也 就 是 022, 第 一 组 是 特 殊 权 限 用 的, 后 面 再 介 绍 # umask -S u=rwx,g=rx,o=rx 加 上 [-S] 选 项 可 以 得 到 以 符 号 类 型 显 示 权 限 的 信 息 在 默 认 情 况 下, 目 录 与 文 件 的 默 认 权 限 是 不 一 样 的 我 们 知 道 X 权 限 对 于 目 录 是 非 常 重 要 的, 如 果 一 个 目 录 没 有 X 权 限, 其 他 人 将 无 法 切 换 到 该 目 录, 这 对 于 网 站 而 言 是 不 切 合 实 际 的 但 是 普 通 文 件 的 建 立 则 不 应 该 有 执 行 的 权 限, 因 为 一 般 文 件 通 常 是 用 于 数 据 的 记 录 因 此, 默 认 的 权 限 如 下 : 创 建 文 件 没 有 x 权 限, 也 就 是 rw-rw-rw-, 最 大 666 创 建 目 录 由 于 x 权 限 决 定 了 是 否 可 以 进 入 此 目 录, 所 以 默 认 为 所 有 权 限 开 放, 即 777 但 是, 要 注 意 的 是, 文 件 和 目 录 最 终 创 建 后 的 权 限 是 以 上 的 值 减 去 umask 的 值 r w x 分 别 代 表 4 2 1, 大 家 都 还 记 得 吧 那 么 我 们 可 以 得 出 : 创 建 文 件 时 :(-rw-rw-rw-) - (-----w--w-) = -rw-r--r-- 创 建 目 录 时 :(drwxrwxrwx) - (d----w--w-) = drwxr-xr-x 如 果 修 改 umask 的 默 认 值 呢? umask 后 面 接 三 个 数 字 即 可 设 定 umask 的 值, 重 启 后 恢 复 默 认 # umask 002
0002 若 要 长 期 修 改 umask 的 值, 可 以 把 它 写 进 /etc/profile 或 ~/.bash_profile 环 境 变 量 配 置 文 件 中 修 改 文 件 的 特 殊 权 限 chatter 语 法 :chatter [+ - =] [A S a c i] [ 文 件 或 目 录 名 ] + - = : 分 别 为 增 加 删 除 和 设 定 权 限 A : 增 加 该 属 性 后, 文 件 或 目 录 的 atime 将 不 可 被 修 改 S : 增 加 该 属 性 后, 会 将 数 据 同 步 写 入 磁 盘 中 a : 增 加 该 属 性 后, 只 能 追 加 不 能 删 除, 非 root 用 户 不 能 设 定 该 属 性 c : 自 动 压 缩 该 文 件, 读 取 时 会 自 动 解 压 i : 增 加 后, 使 文 件 不 能 被 删 除 重 命 名 设 定 链 接 写 入 数 据 ( 常 用 ) # mkdir pub # chattr +i pub # touch pub/file1 touch: cannot touch `pub/file1': Permission denied # chattr -i pub # touch pub/file1 # chattr +i pub # rm -f pub/file1 rm: cannot remove `pub/file1': Permission denied 为 pub 目 录 增 加 i 权 限 之 后, 即 使 是 root 用 户 也 无 法 在 pub 里 创 建 或 删 除 file1 文 件 # chattr -i pub # touch pub/file2 # ls pub/ file1 file2 # chattr +a pub # rm -f pub/file1 rm: cannot remove `pub/file1': Operation not permitted # rm -f pub/file2 rm: cannot remove `pub/file2': Operation not permitted # touch pub/file3 # ls pub file1 file2 file3 为 pub 目 录 增 加 a 权 限 后, 只 可 以 在 里 面 追 加 文 件, 而 不 能 删 除 文 件 文 件 同 样 可 以 适 用 这 个 权 限, 如 下 :
# chattr +a pub/file1 # echo "hello world" > pub/file1 > 代 表 删 除 file1 里 的 内 容, 然 后 再 添 加 hello world, 所 以 不 允 许 -bash: pub/file1: Operation not permitted # echo "hello world" >> pub/file1 > 代 表 追 加, 是 被 允 许 的 # cat pub/file1 hello world # chattr +i pub/file2 # echo "hello world" >> pub/file2 i 选 项, 无 论 是 追 加 替 换 还 是 删 除 都 是 不 允 许 的 -bash: pub/file2: Permission denied # echo "hello world" > pub/file2 -bash: pub/file2: Permission denied # rm -f pub/file2 rm: cannot remove `pub/file2': Operation not permitted # rm -f pub/file1 rm: cannot remove `pub/file1': Operation not permitted lsatter 该 命 令 用 来 读 取 文 件 或 者 目 录 的 特 殊 权 限 语 法 :lsattr [-ar] [ 文 件 / 目 录 名 ] -a : 类 似 于 ls 的 -a 选 项, 连 同 隐 藏 文 件 一 起 列 出 -R : 连 同 子 目 录 的 文 件 权 限 一 同 列 出 # lsattr pub ----i-------- pub/file2 -----a------- pub/file1 ------------- pub/file3 # lsattr -ar pub ----i-------- pub/file2 -----a------- pub/file1 ------------- pub/.. ------------- pub/file3 -----a------- pub/.
Linux 下 的 搜 索 工 具 which 用 途 : 用 来 查 找 可 执 行 文 件 的 绝 对 路 径 在 前 面 已 经 用 到 该 命 令, 需 要 注 意 的 是,which 只 能 用 来 查 找 PATH 环 境 变 量 中 出 现 的 路 径 下 的 可 执 行 文 件 有 时 候 我 们 不 知 道 某 个 命 令 的 绝 对 路 径,which 一 下 很 容 易 就 知 道 了 find 用 途 : 可 以 搜 索 整 个 系 统 中 一 切 你 想 搜 索 的 文 件 或 目 录 ( 非 常 重 要 ) 语 法 : find [ 路 径 ] [ 参 数 ] -atime(access time) +n/-n : 指 最 后 一 次 读 取 或 执 行 时 间 大 于 / 小 于 n 天 的 文 件 -ctime(change time) +n/-n : 指 最 后 一 次 写 入 更 改 inode 属 性 ( 如 更 改 文 件 所 有 者 权 限 或 链 接 ) 时 间 大 于 / 小 于 n 天 的 文 件 -mtime +n/-n(modify time) : 指 最 后 一 次 写 入 文 件 时 间 大 于 / 小 于 n 天 的 文 件 搜 索 当 前 目 录 下, 最 近 一 天 之 内 文 件 内 容 有 变 化 的 文 件 和 目 录 # find. -mtime -1../pub./pub/file2./pub/file1./pub/file3 搜 索 当 前 目 录 下, 最 近 十 天 之 内 文 件 有 被 读 取 或 执 行 过 的 文 件 # find. -atime -10../.ssh./pub./pub/file2./pub/file1./pub/file3./public 搜 索 当 前 目 录 下, 一 年 之 前, 有 被 读 取 或 执 行 过 的 文 件 # find. -atime +365./.bash_profile./.bash_history./fail2ban-0.8.4.tar.bz2
./.ssh/authorized_keys./.ssh/known_hosts./.ssh/config./.bash_logout./.bashrc./lzo-1.08.tar.gz stat 命 令 可 用 来 列 出 文 件 的 atime ctime 和 mtime # stat pub/file1 File: `pub/file1' Size: 12 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 2324387 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/root ) Gid: ( 0/root ) Access: 2015-07-14 15:43:12.000000000 +0800 Modify: 2015-07-14 15:43:03.000000000 +0800 Change: 2015-07-14 15:43:03.000000000 +0800 -name filename 直 接 根 据 文 件 或 目 录 的 名 字 来 查 找 文 件 # find. -name file2./pub/file2 -type filetype 通 过 文 件 类 型 查 找 文 件 类 型 在 前 面 已 经 介 绍 过, 包 含 :f b c d l s 等 # find /home/tianzy/ -type d /home/tianzy/ /home/tianzy/.ssh /home/tianzy/pub # find /home/tianzy/ -type f /home/tianzy/.bash_profile /home/tianzy/.bash_history /home/tianzy/office 2007-visio.zip /home/tianzy/fail2ban-0.8.4.tar.bz2 /home/tianzy/.ssh/authorized_keys /home/tianzy/.ssh/known_hosts /home/tianzy/.ssh/config /home/tianzy/.bash_logout /home/tianzy/.bashrc /home/tianzy/lzo-1.08.tar.gz /home/tianzy/pub/file2 /home/tianzy/pub/file1 /home/tianzy/pub/file3 /home/tianzy/public