linux's docs

6.1.0: 用户-配置文件


用户相关配置文件

配置文件:/etc/passwd
作用:储存用户基本信息
文档结构:

由":" 分隔成7个字段"username":"x":"uid":"gid":"备注":"家目录":"shell类型"

  1. username,用户名称
    命名规则
    大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。
  2. x,密码空位键
    为了安全,已经转移到/etc/shadow,此处仅为占位符
  3. uid,用户ID
    可用ID,0-4294967294=2^32-2;
    root的uid=0;1-499系统保留;普通账户是从500开始;
    普通用户的uid可以改成0,此时系统就将其识别成root用户。
  4. gid,主组id
    组配置文件/etc/group。
  5. 备注
    该字段没有实际意义,通常用于记录用户的一些属性,例如姓名、电话等
    可用"chfn username"更改
  6. 用户家目录
  7. shell类型
    /bin/bash
    /bin/false
    /sbin/nologin(禁止该用户登录)。

配置文件:/etc/shadow
作用:储存用户密码相关信息
文档结构:

使用":"分隔成9个字段,"用户名:密码(密文):此密码设置日期:密码不可更改的天数:
密码需要重置的天数:密码到期提前提醒天数:帐号失效后宽限天数:帐号失效日期:保留位"
默认权限:----------(除了root用户,其他所有普通用户包括root组成员都没有任何权限)

  1. 用户名
    是与/etc/passwd文件中的登录名相一致的用户账号。
  2. 密码
    已加密显示密文,不可逆,但可被破解;
    !!表示密码为空
  3. 当前密码的设置日期
    此日期用设置当前密码的日期和1970年1月1日的差值来表示
    (例如上次更改密码的日期为2012年1月1日,则这个值就是 '365 x (2012-1970) + 10 + 1= 15341')
    # 至於想要知道某個日期的累積日數, 可使用如下的程式計算:  
    echo $(($(date --date="2008/09/04" +%s)/86400+1))
    14126
    # 上述指令中,2008/09/04 為你想要計算的日期,86400 為每一天的秒數, %s 為 1970/01/01 以來的累積總秒數。 由於 bash 僅支援整數,因此最終需要加上 1 補齊 1970/01/01 當天。  
    # 来自 <http://linux.vbird.org/linux_basic/0410accountmanager.php#shadow_file>
    
  4. 密码不可被更改的天数(与第三段日期比较)
    值为0时,意为不限制,随时可更改。
    如果设置为20,则20天内用户不可更改密码。
  5. 密码需要重置的天数(与第三段日期比较)
    默认值是99999,远远超出电脑寿命,基本可以认为永不过期。
  6. 密码到期前提前提醒天数(与第五段日期比较)
    例:设置为7既为密码到期日提前7天提醒用户修改密码,"您的密码还有n天就要过期,请及时修改密码"。
  7. 帐号失效后宽限天数
    到期后过多少天锁定帐号
  8. 帐号失效日期
    计算方式同第三段;
    应该可以用到收费服务上。
  9. 保留位

Contents