• Linux 特殊文档说明


    /usr/share/man 目录

    当我们使用 man command (command 表示指令)可以获得该指令的用法,详细说明等。
    那么这些详细说明是从哪里来的呢,不可能凭空而来的呀! 其实是通过读取说明文件来达到这个效果的,这些说明文件就存放在 /usr/share/man 目录下
    同理还有 /usr/share/info 目录,该目录下存放的是使用 info 命令时使用的说明文件

    /usr/share/doc

    安装软件时,一般会同时安装一些说明文件到/usr/share/doc目录下,例如安装 mysql ,那么在 /usr/share/doc 目录下会出现 mysql-community-common-5.7.21 目录,存放一些
    mysql的说明,用法等

    账号相关

    /etc/passwd 文件

    账户信息存放在位置,打开/etc/passwd文件

    每一行都代表一个账号,有几行就代表有多少个账号。第一行就是root账号,另外需要注意的是,里面有很多账号上系统运行所需要的系统账号。
    例如bin,deamon等
    由图可以看到,每一行内容由『:』分隔,共7个字段。分别是

    1. 账号名称

    2. 密码。通常是一个*
      早期的 unix 系统密码是存放在这个位置了,但现在的 linux 基本上把密码挪到 /etc/shadow 文件里了,所以这里是一个*号

    3. 账户UID
      这个就是账户标识符了。对于这个标识符的使用范围需要说一下

    UID 范围 | 说明  
    -|-|
    

    0 (系统管理员) | 当 UID 是 0 时,代表这个账号是『系统管理员』! 所以当你要让其他的账号也具有 root 的权限时,将该账号的 UID 改为 0 即可。 这也就是说,一部系统上面的系统管理员不见得只有 root 喔! 不过,强烈不建议有多个账号的UID 是 0 ,有一个 root 就够了
    1~499 (系统账户) | 保留给系统使用的 UID ,其实除了 0 之外,其他的 UID 权限与特性并没有什么不一样。默认 500 以下的数字让给系统作为保留账号只是一个习惯。
    由于系统上面启动的服务希望使用较小的权限去运行,因此不希望使用 root的身份去执行这些服务, 所以我们就得要提供这些运行中程序的拥有者账号才行。这些系统账号通常是不可登入的, 所以他们对应的shell一般都是/sbin/nologin 这个特殊的shell。
    根据系统账号的又来,通常系统账号又大略被区分为两种:
    1~99:由 distributions 自行建立的系统账号;
    100~499:若用户有系统账号需求时,可以使用的账号 UID。
    500~65535 (可登入账户) | 给一般使用者使用的

    1. GID 群组ID
      这个跟/etc/group有关,用户的主群组标识符

    2. 账户信息说明栏
      该账户的一些解释性说明

    3. 账户家目录
      当你用该账户登录时,所进入的目录。例如以 root 账户登录时,进入 /root 目录

    4. 账户所使用的 Shell
      当用户登入系统后就会取得一个 Shell 来与系统内核沟通以进行用户的操作任务。
      那为什么root用户所使用的 shell 是 bash 呢?就是在这个字段指定! 这里比较需要注意的是,
      有一个 shell 可以用来替代成让账号无法取得 shell 环境的登入动作!那就是/sbin/nologin 这个东西

    /etc/shadow 文件

    账户的密码存放位置。打开文件,大概是这样子的

    同样以『:』分隔,共有9个字段

    1. 账户名

    2. 密码
      当然这里是加密过的密码,不是铭文

    3. 最近修改密码的日期
      这个字段记录了『更改密码那一天』的日期,不过,很奇怪呀!在我的例子中怎么会是 14126呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 而累加癿日期,1971 年 1 月 1 日则为 366 啦! 得注意一下这个资料哦!上述的14126 指的就是 2008-09-04那一天啦

    4. 密码不可被改动的天数(相对第 3 个字段)
      这个字段记录了:账户的密码在最近一次被修改后,需要经过多少天才能够再次更改密码,为 0 的话表示随时可以更改密码。这个限制是为了防止某些用户频繁的修改密码,例如这个字段为5,那么在上次修改密码后,5天内是不能再次修改密码的

    5. 密码需要重新变更的天数(相对第 3 个字段)
      这个字段记录了:在上一次修改密码过后,多少天内需要再次更改密码。这就强制要求用户经常变更密码,如果没有按照这个要求在时限内修改密码,那么这个账户的密码就会变为『过期特性』(注意并不是无效),而如果像上面设置的99999的话,那就表示不需要强制更新密码

    6. 密码需要变更期限前的警告天数(相对第 5 字段)
      当账号密码有效期限快要到的时候(第 5 字段),系统会根据这个字段的设定,提前向用户发送警告信息:『再过 n 天,你的密码就要过期了』
      像上面的例子,再密码到期之前的7天内,系统会向用户发送警告

    7. 密码过期后的账号宽限天数
      密码的有效日期为:『密码最新修改日期(第 3 字段)』+『密码需要重新变更天数(第 5 字段)』,过了该日期后,用户依旧没有更新密码,
      那么账号就算过期了(不是失效),但这时账户依然能够登入系统,并取得bash,只不过这时系统会强制要求你更新密码才能继续使用,这就是
      『密码过期特性』
      那么这个字段就表示密码过期几天后,如果用户还没有更新密码,那么账户密码就会『失效』,就再也无法登入了

    8. 账户失效日期
      这个字段跟第 3 个字段一样,是以1970/01/01以来的天数来算的。表示:过了这个日期,账户就『失效』,再也无法使用了了,不管密码有没有失效,都无法再使用这个账户

    9. 保留字段
      这个字段是保留的,看以后有没有需要用到它

    /etc/group 文件

    群组信息存放位置

    服务相关目录与文件

    系统上通常运行着多个服务,那么是怎么提供这些服务的呢?归根结底,肯定是有一个可执行文件(脚本)在跑着的。要启动一个服务,需要做一些前置工作:运行环境的侦测,配置文件的分析,PID文档的放置等等,
    这些工作不可能每次都由用户去手工操作,所以由服务开发者提供一个启动脚本,这个脚本会做运行环境侦测,配置文件分析,PID文档放置等这些工作,要启动服务,执行这个启动脚本就可以了。
    那么这些启动脚本放在哪里呢,这里说一下相关目录。

    /etc/init.d/*

    系统上几乎所有的服务启动脚本都放在这里。这是一个公认的目录,在 centos 下实际上是存放到 /etc/rc.d/init.d/* 下面的,但也提供了连接文档 /etc/init.d/ 指向 /etc/rc.d/init.d/。

    /etc/sysconfig/*

    几乎所有的服务都会将初始化的一些选项设置写入到这个目录下,举例来说,登录档的 syslog 这支服务的初始化设定就写入在 /etc/sysconfig/syslog 这里呢!而网络的设定则写在 /etc/sysconfig/network 这个档案中。
    所以,这个目录内的档案也是挺重要的。

    /etc/xinetd.conf, /etc/xinetd.d/* :super daemon 配置文件

    super daemon 的主要配置文件 (其实是默认值) 为 /etc/xinetd.conf 。不过 super daemon只是一个统一管理的机制,他所管理的其他 daemon 的设定则写在 /etc/xinetd.d/* 里头

    /etc/* :各服务各自的配置文件

    /var/lib/* :各服务产生的数据库

    一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中。举例来说,数据库管理系统 MySQL 的数据库默认就是写入 /var/lib/mysql/ 这个目录下啦!

    /var/run/* :各服务的程序之 PID 记录处

    daemon 通常会将自己的 PID 记录一份到/var/run/ 当中!例如登录文件的 PID 就记录在 /var/run/syslogd.pid 这个档案中。如此一来,/etc/init.d/syslog 就能够简单的管理自己的程序啰。

  • 相关阅读:
    知识点总结(基础篇)
    从FBV到CBV三(权限)
    从FBV到CBV二(认证器)
    kubeDNS workflow(service registration and discovery)
    从FBV到CBV一(开始)
    pycharm的python console报错CE.app/Contents/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py", line 87, in init self.matchers.remove(self.python_matches) ValueError: list.remove(x): x not in list
    删除none 的images报错 image has dependent child images 解决办法
    缓存的应用场景以及要注意的问题
    epoll—IO多路复用
    docker 容器启动后立马退出的解决方法
  • 原文地址:https://www.cnblogs.com/liu-shijun/p/11065808.html
Copyright © 2020-2023  润新知