美文网首页
CentOS 用户管理

CentOS 用户管理

作者: Leafmure | 来源:发表于2018-11-27 16:40 被阅读0次

    整理来源:《鸟哥的Linux私房菜第四版》的第十三章 “账号管理与 ACL 权限设定”

    用户账号

    Linux 如何辨别使用者身份

    我们登录 Linux时,输入的是我们的账号,其实
    Linux 使用的并不是你的账号,而是账号所对应的UID(UserID),账号只是为了让使用者更好记忆。有关UID与账号的对应信息存储在 /etc/passwd,除了UID外还有一个群组ID:GID(GroupID),GID与账号对应的信息存储在 /etc/group中。当用户登录时,Linux时便会根据账号去 /etc/passwd和/etc/group的信息中找到 UID和GID对应的账号与组名显示出来。

    Linux 登录

    登录Linux时,Liunx 对于用户的账号、密码输入进行了以下几个步骤

    1. 先查询 /etc/passwd 中是否有你输入的账号,如果有的话则将账号对应的 UID 读出来并去 /etc/group 中将GID也读出来,另外对于该账号的家目录与 shell 设定也一并读出。
    2. Linux 会进入 /etc/shadow 里找出对应的应的账号和 UID去核对用户输入的登录密码。
    3. 核对成功的话,就进入shell。

    账号密码信息相关文件

    /etc/passwd

    存储着账号信息,每一行代表一个账号,里面除了用户账号还有许多系统账号(系统运作所需),每一行的行的账号信息格式如下

    // 以 “:” 符号分割
    root : x : 0 : 0 : root : /root : /bin/bash
    
    1. “root”: 这是root的账号名称(即账号)
    2. 这个字段在早期 Unix 是放用户的密码,由于这个文件所有的程序都能读取,所以将密码 改放到 /etc/shadow 中,这里只留个 “x”。
    3. 这是用户的 UID,当 UID 为0时代表这个账号是系统管理员,想让其他账号也拥于 root 权限可将其 UID 设为0。系统账号的UID在1000以下,一般账号的UID在1000以上。
    4. GID(群组id)
    5. 用户信息说明栏,用来描述账号的意义,基本没有重要的用途。
    6. 家目录,当用户登录后就会进入用户账号所对应的家目录地址。
    7. 用于与 Linux 系统沟通的shell。
    
    /etc/shadow

    储存着账号对应的密码等信息,该文件预设权限是 -rw------- 或者 ----------,为了账号安全请注意该文件的权限。

    root : $6$pUfomqmbz6D2LPAv$Q : : 0 : 99999 : 7 : : :
    
    1. 账号名称
    2. 账号对应的密码,加密机制的查询命令:authconfig --test | grep hashing
    3. 最近更改密码的日期,上面为空是因为我没改过密码,如果有改动就会有个数字比如:16559,这数字的得来是以1970年1月1日(Liux 计算日期时间的基准)作为 1 累加的天数,所以16559 就是 2015年5月4号。
    4. 密码不可更改的天数,0 为可以立即更改,30是30天后才能更改密码。
    5. 密码需要重新更改的天数,用户必须在这个天数内重置密码,否则账户密码会过期。比如 30 的话就是30天之内必须重置,这里是99999(默认),呃,这个就比较久了。
    6. 密码需要变更的期限到期前的警示天数,这里是7,意思是在密码需要变更的期限的前7天之内,系统会警示用户去需要去变更密码。
    7. 密码过期后的继续生效的宽限天数,这里没有的话就是密码过期后就立即失效,用户再次登录时需重新设置密码才能使用,如果为7的话,即使密码过期了,在过期7天内还能使用密码,7天后密码失效。
    8. 账号的失效日期,这个日期和第三个字段一样的计算方式,到了期限后,账号失效(即使你密码没过期)。
    9. 预留的功能位置
    
    
    用户信息查询命令
    • id:查询用户的相关 UID/GID 等等的信息
    # id 用户名    // 不加用户名,默认查询当前用户
    
    • finger:查阅很多用户相关的信息
    # finger 用户名    // 不加用户名,默认查询当前用户
    
    Login: 为使用者账号,亦即 /etc/passwd 内的第一字段;
    Name: 为全名,亦即 /etc/passwd 内的第五字段(或称为批注);
    Directory: 就是家目录了;
    Shell: 就是使用的 Shell 文件所在;
    Never logged in.: figner 还会调查用户登入主机的情况喔!
    No mail.: 调查 /var/spool/mail 当中的信箱资料;
    No Plan.: 调查 ~vbird1/.plan 文件,并将该文件取出来说明!
    

    建立自己的计划内容:

    # echo "I will study Linux during this year." > ~/.plan
    
    上面的 No Plan.: 变成了
    Plan:
    I will study Linux during this year.
    
    • chfn:大致有点像 change finger 的意思
    # chfn 用户名    // 不加用户名,默认查询当前用户
    

    选项与参数:

    -f : 后面接完整的大名;
    -o : 您办公室的房间号码; 
    -p : 办公室的电话号码; 
    -h : 家里的电话号码!
    
    • chsh:change shell 的简写
    // 用当前的身份列出系统上所有合法的 shell
    # chsh -l
    
    // 修改Shell
    # chsh -s shell
    

    用户创建

    # useradd 用户名   // 采用默认配置创建用户
    # useradd -D  // 查看 useradd 的默认配置
    
    默认配置:
    GROUP=100  // 预设的群组,在centos 默认的初始群组是与账号名相同的群组
    HOME=/home  // 家目录
    INACTIVE=-1  // 密码失效日期,/etc/shadow 内的第7栏
    EXPIRE=  // 账户失效日期,/etc/shadow 内的第8栏
    SHELL=/bin/bash  // 预设的shell
    SKEL=/etc/skel  // 用户家目录的内容数据参考目录
    CREATE_MAIL_SPOOL=yes  // 是否主动帮用户建立邮件信箱
    
    UID、GID的默认配置文件 /etc/login.defs:
    MAIL_DIR        /var/spool/mail  // 默认邮箱目录
    PASS_MAX_DAYS   99999  // 需变更密码的天数,/etc/shadow 的第5栏
    PASS_MIN_DAYS   0  // 可再次重设密码的天数,/etc/shadow 的第4栏
    PASS_MIN_LEN    5  // 密码的最短字符长度,被 pam 模块取代,失去效用
    PASS_WARN_AGE   7  // 过期前会警告的天数,/etc/shadow 的第6栏
    UID_MIN                  1000  // 使用者最小的 UID,意即小于 1000 的 UID 为系统保留
    UID_MAX                 60000  // 使用者能够用的最大 UID
    SYS_UID_MIN               201  // 保留给用户自行设定的系统账号最小值 UID
    SYS_UID_MAX               999  // 保留给用户自行设定的系统账号最大值 UID
    GID_MIN                  1000  // 使用者自定义组的最小 GID,小于 1000 为系统保留
    GID_MAX                 60000  // 使用者自定义组的最大 GID
    SYS_GID_MIN               201  // 保留给用户自行设定的系统账号最小值 GID
    SYS_GID_MAX               999  // 保留给用户自行设定的系统账号最大值 GID
    CREATE_HOME     yes  // 在不加 -M 及 -m 时,是否主动建立用户家目录
    UMASK           077  // 用户家目录建立的 umask ,因此权限会是 700
    USERGROUPS_ENAB yes  // 使用 userdel 删除时,是否会删除初始群组
    ENCRYPT_METHOD SHA512  // 密码加密的机制使用的是 sha512 这一个机制!
    
    // 也可以指定某项配置创建用户,指令形式如下
    # useradd -u UID -g GID -G 次要群组 用户名
    
    选项与参数:
    -u : 值是UID,是一组数字,用于指定自定义的UID
    -g : 值是群组名,是一组数字,用于指定初始群组
    -G : 值是新建用户要加入的群组
    -M : 无值,不建立家目录(系统账号默认)
    -m : 无值,建立家目录(一般账号默认)
    -c : 值为对账号的说明内容,显示在 /etc/passwd 的第五个字段
    -d : 值为目标目录的绝对路径,用于指定自定义的家目录
    -r : 建立一个系统的账号
    -s : 值指定一个shell,若没有指定,默认为:/bin/bash
    -e : 值为日期,格式“ YYYY-MM-DD ”,账号的失效日期
    -f : 值为天数,密码失效的天数,0为立即失效,-1永不失效。
    
    

    配置用户密码

    所有人均可使用以下命令来改自己的密码,不加用户名,默认修改当前登录用户密码,一般账号需要输入旧密码来更改密码,root 用户不需要。

    passwd
    # passwd 用户名  
    

    passwd 命令选项与参数:

    --stdin : 可以透过来自前一个管线的数据,作为密码输入,对 shell script 有帮助! -l : 是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效。
    -u : 与 -l 相对,是 Unlock 的意思!
    -S : 列出密码相关参数,亦即 shadow 文件内的大部分信息。 
    -n : 后面接天数,/etc/shadow 的第 4 字段,多久不可修改密码天数 
    -x : 后面接天数,/etc/shadow 的第 5 字段,多久内必须要更动密码 
    -w : 后面接天数,/etc/shadow 的第 6 字段,密码过期前的警告天数 
    -i : 后面接日期,/etc/shadow 的第 7 字段,密码失效日期
    

    --stdin的使用:变更用户密码,此方法缺点是这个密码会保留在指令中,可以在 /root/.bash_history 找到这个密码,所以这个动作通常仅用在 shell script 的大量建立使用者账号当中! 要注意的是,这个选项并不存在所有 distributions 版 本中, 请使用 man passwd 确认你的 distribution 是否有支持此选项!

    echo "AbcXXX21" | passwd --stdin 用户名
    

    密码设置要求:

    1. 密码不能与账号相同,密码尽量不要选用字典里面会出现的字词
    2. 密码需要超过 8 个字符
    3. 密码不要使用个人信息,如身份证、手机号码、其他电话号码等
    4. 密码不要使用简单的关系式,如 1+1=2, Iamvbird 等
    5. 密码尽量使用大小写字符、数字、特殊字符($,_,-等)的组合
    chage

    与 passwd 一样的功能命令,能展示更为详细的密码参数。

    # chage 账号
    

    chage 命令选项与参数:

    -l : 列出该账号的详细密码参数;
    -d : 后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD
    -E : 后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD
    -I : 后面接天数,修改 shadow 第七字段(密码失效日期)
    -m : 后面接天数,修改 shadow 第四字段(密码最短保留天数)
    -M : 后面接天数,修改 shadow 第五字段(密码多久需要进行变更) 
    -W : 后面接天数,修改 shadow 第六字段(密码过期前警告日期)
    

    change 有个命令可以使用户第一次登录后必须更改密码

    # chage -d 0 用户
    
    usermod

    修改密码配置的选项数据

    # usermod 用户名
    

    选项参数:

    -c : 后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。
    -d : 后面接账号的家目录,即修改 /etc/passwd 的第六栏;
    -e : 后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!
    -f : 后面接天数,为 shadow 的第七字段。
    -g : 后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段!
    -G : 后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~
    -a : 与 -G 合用,可增加次要群组的支持而非设定喔!
    -l : 后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏!
    -s : 后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
    -u : 后面接 UID 数字啦!即 /etc/passwd 第三栏的资料;
    -L : 暂时将用户的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。
    -U : 将 /etc/shadow 密码栏的 ! 拿掉,解冻啦!
    

    删除用户

    在删除前可通过 “find 用户名” 来查出该用户的所有文件,对于文件是否需要存留,来选择通过何种方式删除用。如果该账号只是暂时不启用的话,那么将 /etc/shadow 里头账号失效日期 (第八字段) 设定为 0 就可以让该账号无法使用,所有跟该账号相关的数据都会留下来,如果不需要该用户的数据就用 userdel。

    # userdel 用户名 // 删除 /etc/passwd 与 /etc/shadow 里的账号
    

    选项参数:

    -r : 连同用户的家目录也一起删除
    

    群组管理

    群组信息相关文件

    /etc/group

    此文件中记录了GID和组名

    root : x : 0 :
    
    1. 组名
    2. 群组密码,这个设定是给“群组管理员”使用的,不过密码并不在这,在 /etc/gshadow 中
    3. GID,群组ID。
    4. 群组下的用户成员,比如想让 user1 和 user2 加入 root群组:root:x:0:user1,user2  (注意:user1与user2之间不能空格)
    
    /etc/gshadow

    此文件存储着群组管理员的账号、密码信息以及群组内的用户成员

    root: : :
    
    1. 群组名
    2. 密码栏
    3. 群组管理员的账号
    4. 加入该群组的用户成员,与 /etc/group 的第四字段相同
    
    初始群组

    用户的GID就是用户的初始群组ID,初始群组是用户账号创建时默认创建的,对于初始群组不会在上面的第四个字段出现。

    # grep 用户名 /etc/group  // 查询用户名的群组信息
    
    有效群组

    一个账号可以加入多个群组,当新建文件和目录时,新文件的所属的群组是当前的有效群组,默认下为当前用户的初始群组。可以通过下面命令查询,当前用户加入的群组

    # groups
    
    // 输出比如:user1 user2
    

    如果当前登录身份是user1那么新建文件的所属群默认就是user1了,如果想让新建的文件是 user2,可以使用 newgrp 命令切换有效群组,但是切换的目标群组必须是当前用户加入了的。

    // user1用户将当前有效群组user1切换至user2,切换后会提供一个新的shell环境以支持有效群组 user2
    #  newgrp user2
    
    // 退出当前有效群组 user2 返回 user1
    # exit
    

    新增群组

    群组的内容都与这两个文件有关: /etc/group 、 /etc/gshadow ,都是上面两个 文件的新增、修改与移除而已。

    创建群组
    # groupadd 群组名
    

    选项与参数:

    -g : 后面接某个特定的 GID ,用来直接给予某个 GID。
    -r : 建立系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。
    
    修改群组的相关参数
    # groupmod 群组名
    

    选项与参数:

    -g :修改既有的 GID 数字
    -n :修改既有的组名
    

    删除群组

    要删除的群组没有被其他用户作为 initial group(初始群组)时才能被删除,如果有的话可以考虑修改 该群组的GID 或者 删除该群组的使用者。

    # groupdel 群组名
    

    群组管理员

    群组管理员可以管理 哪些账号可以加入、移出该群组。

    // 设置群组密码
    # gpasswd 群组名
    
    // 指定用户为 群组管理员
    # gpasswd -A  用户名  群组名
    

    选项与参数:

    :后面接群组名,设置此群组的密码,若没有任何参数时,表示给予当前用户的初始群组 一个密码 (/etc/gshadow)
    -a : 向群组 GROUP 中添加用户 USER
    -d : 从群组 GROUP 中添加或删除用户
    -Q : 要 chroot 进的目录
    -r : remove the GROUP's password
    -R : 向其成员限制访问群组
    -M : 设置群组 GROUP 的成员列表
    -A : 设置群组的管理员列表
    

    ACL 细部权限规划

    ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。

    • 使用者 (user): 可以针对使用者来设定权限;
    • 群组 (group): 针对群组为对象来设定其权限;
    • 默认属性 (mask): 还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;

    通过此命令可查看核心挂载显示的信息中是否已经支持 ACL

    # dmesg | grep -i acl
    
    输出信息:
    [    1.094372] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
    [    3.634092] SGI XFS with ACLs, security attributes, no debug enabled
    

    设定某个目录/文件的权限

    # setfacl [-bkRd] [{-m|-x} acl 参数] 文件名
    

    选项与参数:

    -m : 设定后续的 ACL 参数给文件使用,不可与 -x 合用
    -x : 删除后续的 ACL 参数,不可与 -m 合用
    -b : 移除 所有的 ACL 设定参数
    -k : 移除 预设的 ACL 参数
    -R : 递归设定 ACL ,亦即包括次目录都会被设定起来
    -d : 设定“预设 ACL 参数”的意思!只对目录有效,在该目录新建的数据会引用此默认值
    
    • 针对单一使用者的权限设定
    // 如果使用者账号列表为空,代表设定的是文件拥有者的权限
    # setfacl 选项  u:使用者账号列表:权限 文件名
    
    // eg:setfacl -m u:user1:rx fieldName
    
    • 针对单一群组的权限设定
    // 如果群组列表为空,代表设定的是文件所属群组的权限
    # setfacl 选项  g:群组列表:权限 文件
    
    // eg:setfacl -m g:group1:rx fieldName
    
    • 针对有效权限设定:
    // m:r -> mask::r--
    # setfacl -m m:r fieldName
    

    有效权限的意思是: 使用者或群组所设定的权限必须要存在于 mask 的权限设定范围内才会生效,比如 user:user1:r-x 但是 mask::r-- 因此user1其实只有 r 的权限。

    • 使用默认权限设定目录未来文件的 ACL 权限继承
    // 如果使用者账号列表为空,代表设定的是目录拥有者的权限
    # setfacl -m d:u:使用者列表:权限  目录
    // eg:setfacl -m d:u:user1:rx /field/fieldName
    

    在此目录下创建的文件会继承目录的权限设定

    查看文件的权限内容

    # getfacl 文件名
    
    输出:
    # file: 文件名
    # owner: root  // 说明此文件的拥有者,亦即 ls -l 看到的第三使用者字段
    # group: root  // 此文件的所属群组,亦即 ls -l 看到的第四群组字段
    user::rwx  // =使用者列表栏是空的,代表文件拥有者的权限
    user:user1:r-x  // 针对 user1 的权限设定为 rx ,与拥有者并不同!
    group::r-- // 针对文件群组的权限设定仅有 r
    mask::r-x  // 此文件预设的有效权限
    other::r--  // 其他人拥有的权限
    

    选项与参数:

    -m : 设定后续的 ACL 参数给文件使用,不可与 -x 合用
    -x : 删除后续的 ACL 参数,不可与 -m 合用
    -b : 移除 所有的 ACL 设定参数
    -k : 移除 预设的 ACL 参数
    -R : 递归设定 ACL ,亦即包括次目录都会被设定起来
    -d : 设定“预设 ACL 参数”的意思!只对目录有效,在该目录新建的数据会引用此默认值
    

    使用者身份切换

    su 命令

    # su -用户名
    

    选项与参数:

    : su 后面直接加用户名,若不加代表切换至 root,但是这种方式读取的变量设定方式为 non-login shell 的方式,这种方式 很多原本的变量不会被改变,使用 “su” 切换到 root 比如环境路径不会更换成 root 的。
    - : 单纯使用 - 如“su -”代表使用 login-shell 的变量文件读取方式来登入系统,
    若使用者名称没有加上去,则代表切换为 root 的身份。
    -l : 与 - 类似,但后面需要加欲切换的使用者账号!也是 login-shell 的方式。
    -m : -m 与 -p 是一样的,表示:使用目前的环境设定,而不读取新使用者的配置文件
    -c : 仅进行一次指令,所以 -c 后面可以加上指令喔!
    

    由于在 root 身份下的 shell 是 /sbin/nologin,所以无法切换使用“su -用户名” 去切换账号,我们可以通过 sudo 来使用要切换至的目标用户的权限。

    sudo 命令

    相对 su 命令来说,此命令执行不需要知道切换用户的密码,只需要自己的密码,甚至可以设置无需密码。并非所有用户都能够执行 sudo ,而是仅有添加到 /etc/sudoers 内的用户才能够执行 sudo 这个指令。

    # sudo 用户名
    

    选项与参数:

    -b : 将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响 
    -u : 后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。
    
    eg: sudo -u sshd touch /tmp/mysshd  // 以 sshd 的身份在 /tmp 底下建立一个名为 mysshd 的文件
    

    除了 root 之外的其他账号,若想要使用 sudo 执行属于 root 的权限 指令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该账号能够使用全部或部分的 root 指令

    visudo与 /etc/sudoers

    只有配置在 /etc/sudoers 中的用户才能使用 sudo 命令,该文件初始添加的用户是 root。我们可以使用 vim 去手动修改 /etc/sudoers 文件,但是如果设定错误那会造成无 法使用 sudo 指令的不良后果,所以我们采取使用 visudo 命令设定,visudo 更改后在离开修改页面时系统会检查 /etc/sudoers 的语法。

    • 单一用户设定
    使用者账号     登入者的来源主机名=(可切换的身份)     可下达的指令
    root                ALL=(ALL)                   ALL 
    
    1. 使用者账号:系统的哪个账号可以使用 sudo 这个指令的意思
    2. 登入者的来源主机名:网络主机联机的主机名,这个设定值可以指定客户端计算机(信任的来源的意思)。
    3. 可切换的身份:以切换成什么身份来下达后续的指令,默认 ALL
    4. 可下达的指令: 可用切换后身份下达什么指令,这个指令请务必使用绝对路径撰写
    
    // eg:# visudo
    // 输出:
    // root       ALL=(ALL)       ALL
    // meanmouse  ALL=(ALL)       ALL
    // bear       ALL=(ALL)       ALL
    // 新用户      ALL=(ALL)       ALL
    
    • wheel群组设定(centos 7.0开始开放)
    %群组名  ALL=(ALL)       ALL  // 改群组内的用户都能使用 sudo
    
    • 使用别名设定
    // 设定用户别名
    User_Alias ADMPW = user1,user2
    // 设定指令别名 
    Cmnd_Alias ADMPWCOM = !/usr/bin/passwd,/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd root
    // Host_Alias 设定来源主机别名
    Host_Alias ADMPWHOST = ALL
    
    // 使用别名批量设定
    ADMPW     ADMPWHOST=(ALL)     ADMPWCOM
    
    • 设定执行 sudo 不需要密码
    用户名       ALL=(ALL)       NOPASSWD:ALL
    
    • 限制用户指令操作
    用户名       ALL=(ALL)      !指令务绝对路径  // 加感叹号表示禁止
    
    //eg:user1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    // 如上 user1 能使用任何计算机连接并且只能切换 root 身份,在 root 身份下能使用 passwd 任意字符命令,但是禁止 passwd 和 passwd root 命令。
    
    • sudo 搭配 su 无需知道 root 密码切换至 root
    // 这样设定后,该用户可以通过 sudo su - 命令并输入自己的密码就能切换到 root
    用户名       ALL=(root)       /bin/su -
    

    账户相关的检查工具

    pwck

    这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息, 还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错误时, 会提示使用者修订。

    # pwck
    

    pwconv

    这个指令主要的目的是在“将 /etc/passwd 内的账号与密码,移动到 /etc/shadow 当中!” 早期的 Unix 系统当中并没有 /etc/shadow 呢,所以,用户的登入密码早期是在 /etc/passwd 的第二栏,后来为了 系统安全,才将密码数据移动到 /etc/shadow 内的。

    • 比对 /etc/passwd 及 /etc/shadow ,若 /etc/passwd 内存在的账号并没有对应的/etc/shadow 密码时,则 pwconv 会去 /etc/login.defs 取用相关的密码数据,并建立该账号的 /etc/shadow 数据。
    • 若 /etc/passwd 内存在加密后的密码数据时,则 pwconv 会将该密码栏移动到 /etc/shadow 内,并将原本的 /etc/passwd 内相对应的密码栏变成 x !
    # pwconv
    

    pwunconv

    相对于 pwconv, pwunconv 则是将 /etc/shadow 内的密码栏数据写回 /etc/passwd 当中,并且删除 /etc/shadow 文件。这个指令说实在的,最好不要使用啦! 因为他会将你的 /etc/shadow 删除! 如果你忘记备份,又不会使用 pwconv 的话,很严重呢!

    chpasswd

    chpasswd 可以读入未加密前的密码,并且经过加密后,将加密后的密码写
    入 /etc/shadow 当中。这个指令很常被使用在大量建置账号的情况,由于 passwd 已经默认加入了 --stdin 的选项,因此 chpasswd 命令便很少使用。

    // chpasswd 会去读取 /etc/login.defs 文件内的加密机制加密 密码,然后写入/etc/shadow 当中
    # echo "用户名:密码" | chpasswd
    

    相关文章

      网友评论

          本文标题:CentOS 用户管理

          本文链接:https://www.haomeiwen.com/subject/gjcsqqtx.html