14-Linux-用户和组

14-Linux-用户和组_第1张图片



概念


    当我们使用Linux时, 需要以一个用户的身份登入
    一个进程也需要以一个用户的身份运行
    用户限定 使用者及进程 可以使用的资源
    组 用来 方便组织及管理 用户

    其他


        每个用户 对应一个 UserID, OS识别的是 用户ID, 而非用户名
        每个用户 属于一个主组gid, 一个或多个 附属组groups
        每个组 对应一个GroupID
        每个进程 以一个用户身份运行, 并受该用户可访问资源的限制
        每个可登陆用户 拥有一个指定shell (命令行)

用户


    用户ID


        范围: 32位(二进制), 0 ~ 60000, (老式系统不能超过60000, 所以....)

    类型


        root 用户: ID 为 0, 超级管理员
        系统 用户: ID 为 1 ~ 499, 通常为 某个服务进程 创建的用户, 没有shell
        普通 用户: ID 为 500 ~ 60000

    其他


        系统中的文件都有一个 所属用户及所属组
        id命令 可显示当前用户的信息

[wuqinfei@wuqinfei ~]$ id
uid=500(wuqinfei) gid=500(wuqinfei) groups=500(wuqinfei) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

        passwd命令 可修改用户密码

    相关文件


        /etc/passwd : 保存用户信息

            用户名:密码:userid:gid:描述信息:用户home目录:登陆的shell
            普通用户 wuqinfei:x:500:500:wuqinfei:/home/wuqinfei:/bin/bash
            系统用户 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@wuqinfei ~]# less /etc/passwd
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/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
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
wuqinfei:x:500:500:wuqinfei:/home/wuqinfei:/bin/bash


        /etc/shadow : 保存用户密码(已加密)

            "!!"代表没有创建密码
            加密后的密码: $6$NNTEQcmf79DyZKoM$C(省略若干)HlS.9kV/
                $加密类型$添加进密码的数据$加密后的结果
[root@wuqinfei ~]# less /etc/shadow
ftp:*:15513:0:99999:7:::
nobody:*:15513:0:99999:7:::
dbus:!!:16023::::::
usbmuxd:!!:16023::::::
avahi-autoipd:!!:16023::::::
vcsa:!!:16023::::::
rpc:!!:16023:0:99999:7:::
rtkit:!!:16023::::::
ntp:!!:16023::::::
apache:!!:16023::::::
saslauth:!!:16023::::::
postfix:!!:16023::::::
avahi:!!:16023::::::
haldaemon:!!:16023::::::
pulse:!!:16023::::::
gdm:!!:16023::::::
rpcuser:!!:16023::::::
nfsnobody:!!:16023::::::
abrt:!!:16023::::::
sshd:!!:16023::::::
tcpdump:!!:16023::::::
wuqinfei:$6$NNTEQcmf79DyZKoM$CWVft8dkR1/rGZXUAjUaKO6hsJGulg1ZgGlAQFp73azTYccHDfJDK0zGoivi7PJd4EcsDOV18115PaHlS.9kV/:16023:0:99999:7:::


        /etc/group  : 保存组信息

            组名:组密码:组ID:用户1,用户2
                root:x:0:
                bin:x:1:bin,daemon
[root@wuqinfei ~]# less /etc/group
dbus:x:81:
usbmuxd:x:113:
utmp:x:22:
utempter:x:35:
desktop_admin_r:x:499:
desktop_user_r:x:498:
avahi-autoipd:x:170:
floppy:x:19:
vcsa:x:69:
rpc:x:32:
rtkit:x:497:
cdrom:x:11:
tape:x:33:
dialout:x:18:
ntp:x:38:
apache:x:48:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
avahi:x:70:
haldaemon:x:68:haldaemon
pulse:x:496:
pulse-access:x:495:


    查看登陆的用户


        whoami 命令: 显示当前用户

[root@wuqinfei ~]# whoami
root

        who 命令: 显示已经登陆系统的用户

[root@wuqinfei ~]# who
wuqinfei pts/0        2014-01-20 22:10 (192.168.1.100)

        w 命令: 显示已登陆的用户 以及这些用户在做什么

[root@wuqinfei ~]# w
 22:50:17 up  1:14,  1 user,  load average: 0.07, 0.02, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
wuqinfei pts/0    192.168.1.100    22:10    0.00s  0.52s  0.52s sshd: wuqinfei

        说明: 命令的字符数越多 显示的信息越少


创建用户


    useradd


        说明: 创建新的用户

        格式: useradd 用户名
              useradd user_a

[root@wuqinfei ~]# useradd user_a
[root@wuqinfei ~]# tail -5 /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
wuqinfei:x:500:500:wuqinfei:/home/wuqinfei:/bin/bash
user_a:x:501:501::/home/user_a:/bin/bash


        执行流程


            1) 在 /etc/passwd 中添加用户信息
            2) 如果使用passwd命令创建密码, 则将密码保存于 /etc/shadow

[root@wuqinfei ~]# tail -1 /etc/shadow
user_a:!!:16090:0:99999:7:::
[root@wuqinfei ~]# passwd user_a
Changing password for user user_a.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@wuqinfei ~]# tail -1 /etc/shadow
user_a:$6$KGcG8PsU$mdwYuBrhGrspSZWxOyGXbP9yF5rgq2adRDGlTP4eOtRq5RAvMhENDf.dzVYJpAlHarlppSTvvXA4G0aRbm7pT/:16090:0:99999:7:::

            3) 为新建的用户 创建home目录  /home/用户名

[root@wuqinfei ~]# ls /home
user_a  wuqinfei

            4) 将 /etc/skel 中的所有文件复制到用户home目录
                .bash_logout 登出时执行; .bashrc 登入时执行

[root@wuqinfei ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla
[root@wuqinfei ~]# ls -a /home/user_a/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

            5) 建立一个与新建用户同名的组, 并将用户置于该组
[root@wuqinfei ~]# tail -3 /etc/group
slocate:x:21:
wuqinfei:x:500:
user_a:x:501:

        参数


            -d  : 指定home目录
            -s  : 登陆shell
            -u  : 指定userid
            -g  : 主组
            -G  : 附属组, 最多31个, ","分隔多个附属组
[root@wuqinfei ~]# useradd -u 600 -G user_a user_b
[root@wuqinfei ~]# id user_b
uid=600(user_b) gid=600(user_b) groups=600(user_b),501(user_a)
[root@wuqinfei ~]#


修改用户


    usermod


        格式: usermod [参数] 用户名

        参数

            -l  : 新用户名
            -u  : 新userid
            -d  : home目录
            -g  : 主组
            -G  : 附属组
            -L  : 锁定用户, 使其不能登陆
            -U  : 解锁用户

删除用户


    userdel

        说明: 删除指定用户

        格式

            保留home目录:   userdel 用户名
            不留home目录:   userdel -r 用户名

        示例
[root@wuqinfei ~]# userdel user_b
[root@wuqinfei ~]# ls /home
user_a  user_b  wuqinfei
[root@wuqinfei ~]# userdel -r user_a
[root@wuqinfei ~]# ls /home
user_b  wuqinfei

[root@wuqinfei ~]# rm -r /home/user_b
rm: descend into directory `/home/user_b'? y
rm: descend into directory `/home/user_b/.mozilla'? y
rm: remove directory `/home/user_b/.mozilla/plugins'? y
rm: remove directory `/home/user_b/.mozilla/extensions'? y
rm: remove directory `/home/user_b/.mozilla'? y
rm: remove directory `/home/user_b/.gnome2'? y
rm: remove regular file `/home/user_b/.bash_logout'? y
rm: remove regular file `/home/user_b/.bashrc'? y
rm: remove regular file `/home/user_b/.bash_profile'? y
rm: remove directory `/home/user_b'? y



    说明


        几乎所有OS都有组的概念
        通过组, 我们可以更方便地 组织和管理 用户
        一般使用 部门 职能 地理区域 的分类方式 来创建和使用 组
        每个组对应一个组ID
        组信息保存在 /etc/group 中
        每个用户对应一个主组, 可对应多个附属组

    创建组


        groupadd 组名

    修改组


        groupmod -n new_name old_name

    删除组


        groupdel 组名
        


你可能感兴趣的:(linux,用户,组)