跳转到内容

Unix/文件指南

来自维基教科书,开放世界开放书籍

/etc/fstab

[编辑 | 编辑源代码]

fstab(用于文件系统)文件通常存在于Unix类 Unix系统上,并且是系统配置的一部分。fstab 文件通常列出所有使用的磁盘和磁盘分区,并指示如何使用它们或以其他方式将它们集成到整个系统的文件系统中。

传统上,fstab 仅被程序读取,而不是写入。但是,更多现代的系统管理工具可以自动构建和编辑 fstab,或充当它的图形编辑器。系统管理员有责任正确创建和维护此文件。

此文件在给定的 Unix 变体上可能具有其他名称;例如,它在Solaris上是/etc/vfstab

示例

以下是红帽Linux系统上 fstab 文件的示例

# device name		mount point		fs-type	options		dump-freq pass-num
LABEL=/                 /                       ext3    defaults        1 1
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0

# my removable media
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0

# my NTFS Windows XP partition
/dev/hda1               /mnt/WinXP              ntfs    ro,defaults     0 0

/dev/hda6               swap                    swap    defaults        0 0

# my files partition shared by windows and linux
/dev/hda7               /mnt/shared             vfat    umask=000       0 0

(kudzu 是红帽Fedora Core特有的选项)

第一列指示设备名称或定位分区或数据源的其他方法。第二列指示数据将附加到文件系统的位置。第三列指示文件系统类型或用于解释文件系统的算法。第四列提供选项,包括文件系统是否应该在启动时挂载。第五列调整分区的归档计划(由 dump 使用)。第六列指示计算机开机时fsck实用程序扫描分区以查找错误的顺序。最后 2 列中的值为零将禁用相应的功能 (http://www.humbug.org.au/talks/fstab/fstab_structure.html)。

要获取有关 fstab 文件的更多信息,您可以阅读有关它的手册页

用于编辑 fstab 的Kfstab图形配置实用程序可用于KDE

另请参阅

/etc/group

[编辑 | 编辑源代码]

/etc/group 存储用户组及其成员的最终列表。

典型的条目是

root::0:root,alice

它有四个部分,从左到右分别是:

  • (root) 组名。
  • () 以散列形式存储的组密码。通常不存储。当存储时,它允许任何知道密码的用户访问该组,因此它降低了安全性。组密码可以被隐藏并存储在单独的文件中。
  • (0) 分配给组的唯一 ID。小于 10 的组 ID 预留供系统使用。一些 unix(如 HP-UX)还保留其他组编号。
  • (root,alice) 该组成员的用户名列表。

/etc/passwd

[编辑 | 编辑源代码]

/etc/passwd 是用户身份验证数据库,它包含用户列表及其关联的内部用户 ID 号。历史上它还包含密码,但由于此文件需要对世界可读(以便所有程序都可以使用它在用户名和用户 ID 之间进行转换),因此将密码保存在此文件中不再被认为是安全的。

此文件中的条目采用以下形式

alice:*:134:20:Alice Monkey:/home/alice/:/bin/bash

它有七个部分,从左到右分别是:

  • (alice) 用户名。
  • (*) 以散列形式存储的密码。在现代系统中,星号表示使用阴影,因此密码可以在 /etc/shadow/ 中找到。
  • (134) 分配给用户的唯一 ID。一些唯一 ID 具有特殊用途。例如,用户 ID 0 用于 root 用户。
  • (20) 用户登录时分配给的组。
  • (Alice Monkey) GCOS 字段,可以用于任何内容或留空。通常用于有关用户的个人信息,例如全名。
  • (/home/alice/) 用户的主目录。
  • (/bin/bash) 用户的默认 shell。

/etc/profile

[编辑 | 编辑源代码]

/etc/profile 包含使用 Bourne shell,“/bin/sh” 登录的用户系统默认设置。当这些用户登录时,Bourne shell 在向用户提供 shell 提示符之前运行此文件中的命令。这些命令中的大多数是变量赋值,它们配置 shell 的行为。

一些与 Bourne 兼容的 shell 也使用此文件,但其他 shell(例如 C shell)不使用。


/etc/shadow

[编辑 | 编辑源代码]

/etc/shadow 包含使用阴影的系统中用户的密码。

alice:43SrweDe3F:621:5:30:10:100:900:

部分是

  • (alice) 用户名。
  • (43SrweDe3F) 以散列形式存储的密码。
  • (621) 上次密码更改的日期。
  • (5) 密码可以更改之前最少的天数。
  • (30) 用户被迫更改密码之前最多可以经过的天数。
  • (10) 建议用户更改密码后最多可以经过的天数。
  • (100) 帐户可以处于非活动状态的最长时间(以天为单位),超过此时间,帐户将被暂停。
  • (900) 帐户到期日期,如果留空,帐户将无限期保留。最常用于临时帐户。

/etc/sysctl.conf

[编辑 | 编辑源代码]

/etc/sysctl.conf 配置正在运行的 Unix 内核的行为。在系统启动期间,脚本会读取此文件并使用“sysctl”来设置文件中显示的参数。更改文件在下次重启之前不会生效。

要合并到列表中的文件

[编辑 | 编辑源代码]
  • /etc/aliases - 包含 sendmail 和其他 MTA(邮件传输代理)使用的别名。更新此文件后,需要运行 newaliases 实用程序才能将更改传递到 sendmail。
  • /etc/bashrc - bash shell 的系统范围默认函数和别名
  • /etc/conf.modules - 可配置模块的别名和选项
  • /etc/crontab - 定期(每小时、每天、每周、每月等)运行不同命令的 shell 脚本。
  • /etc/DIR_COLORS - 用于在使用 ls 命令时存储不同文件类型的颜色。当用户的主目录中没有 .dir_colors 文件时,dircolors 命令会使用此文件。与 eval 命令一起使用(见下文)。
  • /etc/exports - 指定可以使用 NFS 导出文件系统的主机。Man exports 包含有关如何为远程用户设置此文件的说明。
  • /etc/fstab - 包含系统用于挂载目录树上不同分区和设备的信息
  • /etc/HOSTNAME - 存储主机计算机的名称
  • /etc/hosts - 包含主机名和绝对 IP 地址的列表。
  • /etc/hosts.allow - 允许(由 tcpd 守护进程)访问 Internet 服务的主机
  • /etc/hosts.deny - 禁止(由 tcpd 守护进程)访问 Internet 服务的主机
  • /etc/group - 与 /etc/passwd 相似,但用于组
  • /etc/inetd.conf - 配置 inetd 守护进程,告诉它提供哪些 TCP/IP 服务(在启动时加载哪些守护进程)。为 Linux 系统安全做的一个好开头就是关闭这些服务,除非它们是必需的。
  • /etc/inittab - 在启动时运行不同的程序和进程。这通常是负责(除其他事项外)设置默认运行级别、运行 /etc/rc.d 中包含的 rc.sysinit 脚本、设置虚拟登录终端、响应时以有序方式关闭系统[Ctrl][Alt][Del],运行 /etc/rc.d 中的 rc 脚本,以及为图形登录提示运行 xdm(只有当默认运行级别设置为图形登录时)。
  • /etc/issue - 登录前消息。这通常会被 /etc/rc.d/rc.S 脚本(在 Slackware 中)或 /etc/rc.d/rc.local 脚本(在 Mandrake 和 Red Hat 中,以及其他基于 rpm 的发行版中)覆盖。如果需要自定义登录前消息,则应在这些脚本中注释掉(或更改)相关行。
  • /etc/lilo.conf - lilo 引导加载程序的配置文件
  • /etc/motd - 当天消息文件,在登录后立即打印。这通常会被 /etc/rc.d/rc.S(Slackware)或 /etc/rc.d/rc.local(Mandrake/Red Hat)在启动时覆盖。请参阅与 /etc/issue 有关的备注。
  • /etc/mtab - 显示当前挂载的设备和分区及其状态
  • /etc/passwd - 包含注册使用系统的用户的密码和其他信息。出于明显的安全原因,此文件仅可由 root 读取。root 可以直接修改它,但最好使用 passwd 等配置实用程序进行修改。损坏的 /etc/passwd 文件很容易导致 Linux 系统无法使用。
  • /etc/printcap - 显示打印机的设置
  • /etc/profile - 设置 bash shell 的系统范围默认值。在 Slackware 中,正是这个文件为彩色 ls 命令设置了 DIR_COLORS 环境变量。还设置其他系统范围的 环境变量。
  • /etc/resolv.conf - 包含本地机器使用的域名服务器列表
  • /etc/securetty - 包含允许 root 登录的终端列表。出于安全原因,这应该不包括拨号终端。
  • /etc/termcap - ASCII 数据库,定义不同控制台、终端和打印机的功能和特性
  • /etc/X11/XF86Config - X 配置文件。Slackware 中的位置是 /etc/XF86Config。
  • /proc/cpuinfo - cpu 信息
  • /proc/filesystems - 打印当前正在使用的文件系统
  • /proc/interrupts - 打印当前正在使用的中断
  • /proc/ioports - 包含连接到计算机的各种设备使用的 I/O 地址列表
  • /proc/kcore - 命令 ls -l /proc/kcore 将给出计算机上的 RAM 容量。也可以使用 free 命令来获取相同的信息(以及更多信息)。
  • /proc/version - 打印 Linux 版本和其他信息
  • /var/log/messages - 由 syslog 守护进程用于存储内核启动时消息
  • /var/log/lastlog - 由系统用于存储有关上次启动的信息(可以使用 lastlog 阅读)
  • /var/log/wtmp - 包含二进制数据,指示系统中每个用户的登录时间和持续时间(可以使用 last 阅读)
  • /var/log/btmp - 包含二进制数据,指示失败的登录尝试(可以使用 lastb 阅读)
  • /var/run/utmp - 包含二进制数据,指示当前登录的用户(可以使用 who 阅读)
  • /boot/vmlinuz - Linux 内核的典型位置和名称。在 Slackware 发行版中,内核位于 /vmlinuz。
  • /boot/grub/menu.lst - 为 GRUB 引导加载程序的用户提供可用于继续引导过程的可用内核和操作系统的配置设置。

/dev/cdrom

[编辑 | 编辑源代码]

/dev/cdrom 不是一个实际的设备,但在许多系统上,它是一个指向实际 CD 设备的符号链接。例如,一个 Linux 系统有/dev/hdb作为它的软盘驱动器,可能有一个链接/dev/cdrom它重定向到/dev/hdb.

在 Linux 中,/dev/fd0是系统上的第一个软盘驱动器。使用/dev/fd0H1440以高密度模式操作第一个软盘驱动器。通常,在将软盘驱动器格式化为特定密度时会调用它。Slackware 附带的驱动程序允许将 3.5 英寸软盘格式化为高达 1.7 MB 的空间。Red Hat 和 Mandrake 默认情况下不包含这些设备驱动程序文件。

同样,/dev/fd1是第二个软盘驱动器。

在 Linux 中,/dev/hda是第一个 IDE 硬盘。第二个驱动器是/dev/hdb/dev/hdc,取决于硬件配置。某些 IDE 硬件允许最多四个驱动器,包括/dev/hdd.

许多机器有一个硬盘驱动器(hda)和一个 CD-ROM 驱动器(许多机器上的 hdc,但在某些机器上是 hdb)。通常,/dev/cdrom是 CD-ROM 驱动器的符号链接。

分区从 1 开始编号,例如/dev/hda1, /dev/hda2, ...

/dev/null

[编辑 | 编辑源代码]

/dev/null 是一个不执行任何操作的设备,在需要忽略或删除程序输出时使用。当程序希望保存到文件,但你不想保存任何内容时,此文件很有用。此文件也可以用作程序的输入,以表示空文件。

没有与/dev/null设备相关的实际硬件。

示例

删除名为“x”的文件(命令 rm x)有时会导致错误,例如,如果文件不存在

$ rm x
rm: x: No such file or directory

可以通过将错误重定向到文件来隐藏它。通过使用/dev/null作为文件,错误永远不会保存到实际文件。

Bourne shell:
$ rm x > /dev/null 2>&1

在 Bourne shell 中,"2>&1" 将 "rm"(错误出现的地方)的标准错误重定向到标准输出,然后 ">" 将标准输出重定向到/dev/null.

创建名为 "y" 的空文件的一种方法是

$ cat /dev/null > y

"cat" 命令将 "/dev/null" 文件复制到标准输出,shell 运算符 ">" 将此输出重定向到 "y"。"/dev/null" 文件在读取时似乎为空,因此 "y" 文件出现,但也是空的。(注意,在这种情况下,简单地使用 ">" y" 会做同样的事情。)

点文件

[编辑 | 编辑源代码]
Clipboard

要做到


这些程序之间存在一些冗余。例如,emacs 的外观和行为可以通过使用 .emacs 文件进行定制,也可以通过向 .Xdefaults 文件添加适当的修改来进行定制。这些文件的默认版本通常在软件包使用它们的软件包安装时安装在用户的 home 目录中。如果程序在其 home 目录中找不到其配置文件,它通常会回退到安装在软件包所在的子目录之一中的系统范围的默认配置文件。

  • .bash_logout - 在注销时由 bash shell 执行的文件
  • .bash_profile - bash shell 的初始化,仅在登录时运行。Bash 在启动为登录 shell 或使用 -login 选项时,首先查找 .bash_profile 文件。如果找不到 .bash_profile,它会查找 .bash_login。如果找不到,它会查找 .profile。系统范围的函数和别名位于 /etc/bashrc 中,默认环境变量位于 /etc/profile 中。
  • .bashrc - 在 bash shell 启动为非登录 shell 时运行的初始化命令
  • .cshrc - 在启动 C shell 时自动运行的初始化命令(类似于 autoexec.bat)
  • .emacs - emacs 编辑器的配置文件
  • .fvwmrc - fvwm 窗口管理器的配置文件
  • .fvwm2rc - fvwm2 窗口管理器的配置文件
  • .jedrc - jed 文本编辑器的配置文件
  • .lessrc - 通常包含使用 less 命令进行光标移动的键绑定
  • .login - 用户登录时的初始化文件
  • .logout - 用户注销时运行的命令
  • .wm_style - 如果在 startx 中没有指定窗口管理器,则提供默认窗口管理器的选择
  • .Xdefaults - 为单个用户设置 X 资源。可以通过修改此文件来更改许多不同应用程序程序的行为。
  • .xinitrc - 运行 startx 时的初始化文件。可用于激活应用程序,运行给定的窗口管理器,以及修改根窗口的外观。
  • .xsession - xdm 的配置文件

尽管有诸如 Linux 文件系统层次结构标准 (FHS) 组织之类的标准化尝试,但不同的发行版具有不同的目录结构。

  • /bin - 重要的 UNIX 命令,如 ls 等。应包含启动系统或以单用户模式运行系统所需的所有二进制文件
  • /boot - 存储引导过程中使用到的文件,可能还有内核本身
  • /dev - 包含系统上各种设备的设备文件
  • /etc - 由子系统(如网络、NFS 和邮件)使用的文件。包括要挂载的磁盘表、启动时要运行的进程等。
  • /etc/profile.d - 包含登录后由 /etc/profile 运行的脚本。
  • /etc/rc.d - 包含在启动时在不同运行级别运行的许多 shell 脚本。通常还有一个 rc.inet1 脚本用于设置网络(在 Slackwar 中)、一个 rc.modules 脚本用于加载模块化设备驱动程序,以及一个 rc.local 脚本,可以对其进行编辑以运行管理员想要的命令,类似于 DOS 中的 autoexec.bat。
  • /etc/rc.d/init.d - 在基于 rpm 的系统上包含大多数初始化脚本本身。
  • /etc/rc.d/rc*.d - 其中 "**" 是对应于默认运行级别的数字。包含在该运行级别启动和停止的服务文件。在基于 rpm 的系统上,这些文件是到初始化脚本本身的符号链接,这些脚本位于 /etc/rc.d/init.d 中。
  • /etc/skel - 包含几个示例或骨架初始化 shell 的目录。通常包含用于填充新用户 home 目录的子目录和文件。
  • /etc/X11 - X 窗口系统的配置文件
  • /home - 每个用户的 home 目录
  • /lib - 标准共享库文件
  • /lib/modules - 模块化设备驱动程序文件,大多数以 .o 扩展名结尾
  • /mnt - 许多用户可挂载设备(如软盘驱动器、CD-ROM 驱动器等)的典型挂载点。每个设备都挂载在 /mnt 的子目录中。
  • /proc - 提供许多系统统计信息的虚拟文件系统
  • /root - root 的 home 目录
  • /sbin - 用于系统管理、配置和监控的二进制文件的位置
  • /tmp - 专为程序和用户存储临时文件而设计的目录。
  • /usr - 包含许多子目录的目录,其中包含程序、库、文档等。
  • /usr/bin - 包含大多数用户命令。不应包含启动系统所需的二进制文件,这些文件位于 /bin 中。/bin 目录通常位于与 / 相同的磁盘分区上,该分区在引导过程中以只读模式挂载。其他文件系统只在启动过程的后期阶段挂载,因此将启动所需的二进制文件放在这里不是一个好主意。
  • /usr/bin/X11 - 通常是到 /usr/X11R6/bin 的符号链接,其中包含与 X 窗口系统相关的可执行二进制文件
  • /usr/doc - 各种文档的位置,以及 Slackware 下程序文档文件的的主要位置
  • /usr/include - C 程序中使用的包含文件的标准位置,如 stdio.h
  • /usr/info - GNU 信息系统文件的首要位置
  • /usr/lib - 标准库文件,如 libc.a。在编译程序时由链接器搜索。
  • /usr/lib/X11 - X 窗口系统发行版
  • /usr/local/bin - 另一个寻找常见可执行文件的地方
  • /usr/man - 手册页文件的位置
  • /usr/sbin - 超级用户用于系统管理的其他命令
  • /usr/share - 包含许多已安装程序的配置文件、设置和辅助文件的子目录
  • /usr/share/doc - Mandrake 和 Red Hat 下程序文档文件的位置
  • /usr/src - 用于构建系统的源程序的位置。各种类型的程序的源代码通常解压到此目录中。
  • /usr/src/linux - 通常是到子目录的符号链接,子目录的名称对应于正在运行的 Linux 内核的精确版本。包含内核源代码。
  • /var - 管理文件,如日志文件,由各种实用程序使用
  • /var/log/packages - 包含文件,每个文件都包含有关 Slackware 中已安装的软件包的详细信息。相同的文件也可以在 /var/adm/packages 中找到,因为 adm 子目录是到 log 的符号链接。每个软件包文件都包含简短说明以及所有已安装文件的列表。
  • /var/log/scripts - Slackware 中的软件包安装脚本存储在此处。您可以检查这些脚本,以查看单个软件包中包含哪些特殊功能。
  • /var/spool - 用于存储正在打印的文件、尚未提取的邮件等的临时存储区。

外部链接:修改后的目录结构

华夏公益教科书