zoukankan      html  css  js  c++  java
  • Linux 用户和用户组管理

    1. 用户相关命令

    1.1 useradd:添加用户

    语法:

    useradd [选项] 用户名

    选项:

    -c <comment>:备注。备注会保存在 passwd 的备注栏中;
    -d <家目录>:指定用户登陆后进入的目录;
    -D:变更预设值;
    -e<有效期限>:指定帐号的有效期限;
    -f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
    -g<用户组>:指定用户所属的用户组;
    -G<用户组>:指定用户所属的附加用户组;
    -m:自动建立用户的家目录;
    -M:不要自动建立用户的家目录;
    -n:取消建立以用户名称为名的用户组;
    -r:建立系统帐号;
    -s <shell>:指定用户登入后所使用的 shell;
    -u <uid>:指定用户id。

    示例:

    useradd -d /home/ftp -M -g ftp -s /sbin/nologin -u 1100 xiaoming
    passwd xiaoming

    上面例子中设置的用户名是 xiaoming,UID 是 1100,使用 /home/ftp 作为家目录,属于 ftp 这个用户组,登陆后默认的 shell 是 /sbin/nologin(即无法登陆系统)。

    1.2 passwd:修改用户登录密码

    passwd 用于设置用户的认证信息,包括用户密码、密码过期时间等。
    root 用户可以通过 passwd 管理所有用户的密码,一般用户只能使用 passwd 修改自己的密码。
    语法:

    passwd [选项] [用户名]

    选项:

    -d:删除密码,仅有系统管理者才能使用;
    -f:强制执行;
    -k:设置只有在密码过期失效后,方能更新;
    -l:锁住密码;
    -s:列出密码的相关信息,仅有系统管理者才能使用;
    -u:解开已上锁的帐号。

    /etc/passwd 文件中,每一行的格式都类似 lihongfeng:x:1000:50::/home/ftp:/bin/bash,用冒号分隔,分别表示“用户名:密码:UID:GID:描述:家目录:默认的 shell”。

    对于 UID,root 用户的 UID 是 0,普通用户从 500 开始(我的 CentOS 7 从 1000 开始)。

    示例:

    passwd -l xiaoming  // 锁定用户 xiaoming,使其不能改密码
    passwd -d xiaoming  // 删除用户 xiaoming 的密码
    passwd              // 修改自己的密码

    1.3 userdel:删除用户

    若不加选项,默认仅删除用户帐号,而不删除相关文件。

    语法:

    userdel [选项] 用户名

    选项:

    -f:强制删除用户,即使用户当前已登录;
    -r:删除用户的同时,删除与用户相关的所有文件。

    1.4 usermod:编辑用户

    usermod 命令不允许改变已经登录的用户的名称。

    语法:

    usermod [选项] 用户名

    选项:

    -c <comment>:修改用户帐号的备注;
    -d <家目录>:修改用户的家目录;
    -e <有效期限>:修改帐号的有效期限;
    -f <缓冲天数>:修改在密码过期后多少天即关闭该帐号;
    -g <用户组>:修改用户所属的用户组;
    -G <用户组>;修改用户所属的附加用户组;
    -l <用户名>:修改用户的用户名;
    -L:锁定用户密码,使密码无效;
    -s <shell>:修改用户登入后所使用的 shell;
    -u <uid>:修改用户ID-U:解除密码锁定。

    示例:
    将用户 xiaowang 添加到 game 用户组中:

    usermod -g game xiaowang

    将用户 xiaowang 的用户名改为 wang:

    usermod -l game wang xiaowang

    2. 用户组相关命令

    2.1 groupadd:添加用户组

    语法:

    groupadd [选项] 新的用户组名

    选项:

    -g:指定新建工作组的 GID-r:创建系统工作组,系统工作组的 GID 小于 500-K:覆盖配置文件“/ect/login.defs”;
    -o:允许添加 GID 号不唯一的工作组。

    示例:

    groupadd -g 666 gameboy

    2.2 groupdel:删除用户组

    语法:

    groupdel 用户组名

    示例:

    groupdel gameboy

    2.3 groupmod:编辑用户组

    语法:

    groupmod [选项] 用户组名

    选项:

    -g<群组识别码>:设置欲使用的群组识别码;
    -o:重复使用群组识别码;
    -n<新群组名称>:设置欲使用的群组名称。

    2.4 newgrp:如果用户属于多个用户组,切换用户组

    语法:

    newgrp [选项] 用户组名

    选项:

    -U:解除密码锁定。

    3. 用户和用户组的相关文件

    用户信息存放在:

    /etc/passwd
    /etc/shadow

    用户组信息存放在:

    /etc/group
    /etc/gshadow

    3.1 /etc/passwd:存放用户的所有信息

    3.1.1 解释

    /etc/passwd 文件中,每一行的格式都类似 lihongfeng:x:1000:50::/home/ftp:/bin/bash,用冒号分隔,分别表示“用户名:密码:UID:GID:描述:家目录:默认的 shell”。

    真正加密后的用户密码存放到 /etc/shadow 文件中,而在 /etc/passwd 文件的密码字段中只存放一个特殊的字符“x”或“*”。

    UID (User ID)一般与用户名一一对应。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的家目录以及不同的登录 Shell 等。
    通常 UID 的取值范围是 0~65535。0 是 root 的标识号,1~99 由系统保留,作为管理账号,普通用户的标识号从 100 开始。在 Linux 系统中,这个界限是 500。

    可以为用户指定某个 Shell。如果不指定,那么系统使用 sh 为默认的登录 Shell,即这个字段的值为 /bin/sh

    可以指定用户的登录 Shell 为某个特定的程序,从而可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户自动退出系统。有些 Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

    3.1.2 伪用户(psuedo users)

    伪用户在 /etc/passwd 文件中也占有一条记录,但是不能登录,因为它们的登录 Shell 为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

    常见的伪用户如下所示:

    bin:拥有可执行的用户命令文件
    sys:拥有系统文件
    adm:拥有帐户文件
    uucp:UUCP 使用
    lp:lp 或 lpd 子系统使用
    ftp:FTP 使用
    nobody:NFS 使用

    3.1.3 文件内容

    每个用户都在 /etc/passwd 文件中对应一行:

    [root@VM_120_242_centos ftp]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:997:995:User for polkitd:/:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    chrony:x:995:993::/var/lib/chrony:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
    nginx:x:994:992:Nginx web server:/var/lib/nginx:/sbin/nologin
    mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
    lihongfeng:x:1000:50::/home/ftp:/bin/bash
    zhangmengfei:x:1001:1001::/home/zhangmengfei:/bin/bash
    sambaadmin:x:993:991::/home/sambaadmin:/bin/bash
    rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    zhanzhiruo:x:1003:50::/home/ftp:/bin/bash
    qinyanling:x:1004:50::/home/ftp:/bin/bash
    linyushen:x:1005:50::/home/ftp:/sbin/nologin
    winyinliang:x:1006:50::/home/ftp:/sbin/nologin
    hexiaoyong:x:1007:50::/home/ftp:/sbin/nologin
    xuejianglong:x:1008:50::/home/ftp:/sbin/nologin
    wenyinliang:x:1009:50::/home/ftp:/sbin/nologin

    3.2 /etc/group:存放用户组的所有信息

    3.2.1 解释

    /etc/group 文件中,每一行的格式都类似 lihongfeng:x:1000:,用冒号分隔,分别表示“用户组名:密码:组标识号:组内用户列表”。

    一般 Linux 系统的用户组都没有密码,这个字段一般为“x”或“*”。
    “组内用户列表”是属于这个组(包括主组和附加组)的所有用户的列表,逗号(,)分隔。

    Linux 系统中所有用户都属于某个用户组,是管理及控制访问权限的一种手段。

    每个用户都属于一个或多个用户组,一个用户组中可以有一个或多个用户。

    当一个用户同时是多个组中的成员时,在 /etc/passwd 文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

    用户要访问属于附加组的文件时,必须首先使用 newgrp 命令使自己成为所要访问的组中的成员。

    用户组的所有信息都存放在 /etc/group 文件中。此文件的格式也类似于 /etc/passwd 文件,由冒号隔开若干个字段,这些字段有:

    3.2.2 文件内容

    [root@VM_120_242_centos ftp]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    adm:x:4:
    ...
    rpc:x:32:
    rpcuser:x:29:
    nfsnobody:x:65534:
    zhanzhiruo:x:1003:
    qinyanling:x:1004:

    3.3 /etc/shadow:用户密码

    3.3.1 解释

    /etc/shadow 文件中,每一行的格式都类似 lihongfeng:$1$rPdIHadL$j6ShuTax.3z3ucN5zNCNZ.:17648:0:99999:7:::,用冒号分隔,分别表示“用户组名:加密后的密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志”。

    “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样,一般是 1970 年 1 月 1 日。
    “最小时间间隔”指的是两次修改口令之间所需的最小天数。
    “最大时间间隔”指的是口令保持有效的最大天数。
    “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
    “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
    “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

    /etc/shadow 中的记录行与 /etc/passwd 中的一一对应,它由 pwconv 命令根据 /etc/passwd 中的数据自动产生。

    3.3.2 文件内容

    [root@VM_120_242_centos ftp]# cat /etc/shadow
    root:$1$dfncWgpJ$CRV0AzEgxz250fVrEmXfSu1::0:99999:7:::
    bin:*:16659:0:99999:7:::
    daemon:*:16659:0:99999:7:::
    adm:*:16659:0:99999:7:::
    ...
    hexiaoyong:$1$SYyC3AOQ$6kzvHQQc2X0VMyGOwxiC630:17648:0:99999:7:::
    xuejianglong:$1$tMrO2qpF$zAMb1m2yONzIE45VIVMY.M0:17648:0:99999:7:::
    wenyinliang:$1$kiI..khU$QLR/RoEX2aV9Wy/mdZekZfn/:17648:0:99999:7:::

    3.4 /etc/gshadow:用户组的密码

    [root@VM_120_242_centos ftp]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::
    sys:::
    ...
    nfsnobody:!::
    zhanzhiruo:!::
    qinyanling:!::
  • 相关阅读:
    Burp
    SQL注入
    网络安全没有“银弹”
    Centos7
    虚拟机的使用流程
    虚拟机安装流程
    nmap指令
    UDP 服务器和客户端实例,实现2个客户端通过UDP服务器打洞穿透
    c++ win32下窗口的最小化到托盘以及还原
    基于百度OCR的图片文字识别
  • 原文地址:https://www.cnblogs.com/kika/p/10851642.html
Copyright © 2011-2022 走看看