• Linux-用户和组管理


    Linux-用户和组管理

    用户分类

    Linux用户分为管理员和普通用户两种:
    用户类别 用户ID
    管理员 0
    普通用户 1-65535
    其中普通用户又分为系统用户和登录用户两种:
    用户类别 用户ID
    系统用户 1-999(为守护类进程获取系统资源而完成权限指派的用户)
    登录用户 1000-60000(为了完成交互式登录使用的用户)

    用户管理

    useradd

    用户创建命令

    [root@localhost ~]# useradd 001
    useradd: invalid user name '001'				//用户创建不能以纯数字命名
    [root@localhost ~]# useradd linux001
    [root@localhost ~]# id linux001
    uid=1002(linux001) gid=1002(linux001) groups=1002(linux001)
    

    查看用户进程

    进程所能够访问的所有资源的权限取决于进程的发起者的身份
    ①
    [root@localhost ~]# vi abc
    ②
    [root@localhost ~]# su - linux001
    [linux001@localhost ~]$ vi abc
    ③
    [root@localhost ~]# ps -ef|grep vi
    root         985       1  0 11:08 ?        00:00:00 /usr/bin/VGAuthService -s
    root        6867    6848  0 19:20 pts/4    00:00:00 vi abc
    linux001    6896    6820  0 19:23 pts/0    00:00:00 vi abc
    root        6898    6873  0 19:23 pts/5    00:00:00 grep --color=auto vi
    

    文件控制权限

    [root@localhost ~]# ll
    total 4
    -rw-r--r--. 1 root root    0 Nov  9 19:27 abc
    -rw-------. 1 root root 1204 Nov  9 19:27 anaconda-ks.cfg
    -rw-r--r--. 1 root root    0 Nov  9 19:27 def
    
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    
     所有者权限	 所有组权限	  其他人权限      所有者  所有组
    -   rw-             r--              r--    . 1   root   root    0 Nov  9 19:27 abc
    -   rw-             ---              ---    . 1   root   root 1204 Nov  9 19:27 anaconda-ks.cfg
    -   rw-             r--              r--    . 1   root   root    0 Nov  9 19:27 def
    

    useradd 用户创建命令

    -u (UID)

    指定用户的用户号

    [root@localhost ~]# useradd -u 2000 linux002
    [root@localhost ~]# id linux002
    uid=2000(linux002) gid=2000(linux002) groups=2000(linux002)
    
    -g (GID)

    指定用户所属的用户组(基本组)

    [root@localhost ~]# useradd -g linux001 linux003
    [root@localhost ~]# id linux003
    uid=2001(linux003) gid=1002(linux001) groups=1002(linux001)
    
    -G (Groupname)

    指定用户所属的附加组,可以有多个,用逗号隔开

    [root@localhost ~]# useradd -g linux001 -G linux002 linux004
    [root@localhost ~]# id linux004
    uid=2002(linux004) gid=1002(linux001) groups=1002(linux001),2000(linux002)
    
    覆盖附加组
    [root@localhost ~]# useradd -g linux001 -G linux002 -G tom linux005
    [root@localhost ~]# id linux005			//linux002被后面的tom覆盖了
    uid=2003(linux005) gid=1002(linux001) groups=1002(linux001),1001(tom)
    
    -c (comment)

    注释信息

    [root@localhost ~]# useradd -c "喻庆浩注释了信息" yqh
    [root@localhost ~]# id yqh
    uid=2004(yqh) gid=2004(yqh) groups=2004(yqh)
    [root@localhost ~]# grep yqh /etc/passwd
    yqh:x:2004:2004:喻庆浩注释了信息:/home/yqh:/bin/bash
    
    -d (directory)

    指定用户的家目录,此目录必须不能事先存在

    [root@localhost ~]# ls /opt/
    abc  anaconda-ks.cfg
    [root@localhost ~]# useradd -d /opt/007 linux007
    [root@localhost ~]# ls /opt/
    007  abc  anaconda-ks.cfg
    [root@localhost ~]# ll /opt/
    total 4
    drwx------. 2 linux007 linux007   62 Nov  9 20:00 007
    -rw-r--r--. 1 root     root        0 Nov  6 16:39 abc
    -rw-------. 1 root     root     1204 Nov  6 15:00 anaconda-ks.cfg
    
    -s (shell) 指定用户登入后所使用的shell
    -M 创建用户时不给其创建家目录
    -r 添加一个系统用户(uid:1-999)
    [root@localhost ~]# useradd -r -M -s /sbin/nologin linux009
    [root@localhost ~]# id linux009
    uid=994(linux009) gid=991(linux009) groups=991(linux009)
    

    查看用户账号信息

    id 默认查看当前用户

    [root@localhost ~]# id
    uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    查看用户帐号的信息命令
    -u 查看用户的用户号
    -g 查看基本组
    -G 查看附加组
    [root@localhost ~]# id linux004
    uid=2002(linux004) gid=1002(linux001) groups=1002(linux001),2000(linux002)
    [root@localhost ~]# id -u linux004
    2002
    [root@localhost ~]# id -g linux004
    1002
    [root@localhost ~]# id -G linux004
    1002 2000
    

    userdel

    用户删除命令

    [root@localhost ~]# userdel linux005
    [root@localhost ~]# ll /home/
    total 0
    drwx------. 2 linux001 linux001 62 Nov 10 11:50 linux001
    drwx------. 2 linux002 linux002 62 Nov 10 11:51 linux002
    drwx------. 2 linux003 linux001 62 Nov 10 11:51 linux003
    drwx------. 2 linux004 linux001 62 Nov 10 11:51 linux004
    drwx------. 2     2003 linux001 62 Nov 10 11:55 linux005
    drwx------. 2 tom      tom      62 Nov 10 11:55 tom
    drwx------. 2 yqh      yqh      62 Nov 10 11:56 yqh
    [root@localhost ~]# find / -nouser
    /home/linux005
    /home/linux005/.bash_logout
    /home/linux005/.bash_profile
    /home/linux005/.bashrc
    /var/spool/mail/linux005
    [root@localhost ~]# rm -rf /home/linux005
    [root@localhost ~]# ll /home/
    total 0
    drwx------. 2 linux001 linux001 62 Nov 10 11:50 linux001
    drwx------. 2 linux002 linux002 62 Nov 10 11:51 linux002
    drwx------. 2 linux003 linux001 62 Nov 10 11:51 linux003
    drwx------. 2 linux004 linux001 62 Nov 10 11:51 linux004
    drwx------. 2 tom      tom      62 Nov 10 11:55 tom
    drwx------. 2 yqh      yqh      62 Nov 10 11:56 yqh
    
    -r 删除用户的同时删除其家目录
    [root@localhost ~]# userdel -r linux004
    [root@localhost ~]# ll /home/
    total 0
    drwx------. 2 linux001 linux001 62 Nov 10 11:50 linux001
    drwx------. 2 linux002 linux002 62 Nov 10 11:51 linux002
    drwx------. 2 linux003 linux001 62 Nov 10 11:51 linux003
    drwx------. 2 tom      tom      62 Nov 10 11:55 tom
    drwx------. 2 yqh      yqh      62 Nov 10 11:56 yqh
    

    usermod 修改用户帐号属性的命令

    -u 修改用户的用户号(事先必须不存在)
    [root@localhost ~]# id linux001
    uid=1002(linux001) gid=1002(linux001) groups=1002(linux001)
    [root@localhost ~]# usermod -u 3000 linux001
    [root@localhost ~]# id linux001
    uid=3000(linux001) gid=1002(linux001) groups=1002(linux001)
    
    -g 修改基本组(事先必须存在)
    [root@localhost ~]# id linux002
    uid=2000(linux002) gid=2000(linux002) groups=2000(linux002)
    [root@localhost ~]# usermod -g linux002 linux001
    [root@localhost ~]# id linux001
    uid=3000(linux001) gid=2000(linux002) groups=2000(linux002)
    
    -a -G 添加附加组
    [root@localhost ~]# id linux004
    uid=3001(linux004) gid=1002(linux001) groups=1002(linux001),2000(linux002)
    [root@localhost ~]# id tom
    uid=1001(tom) gid=1001(tom) groups=1001(tom)
    [root@localhost ~]# usermod -a -G tom linux004
    [root@localhost ~]# id linux004
    uid=3001(linux004) gid=1002(linux001) groups=1002(linux001),2000(linux002),1001(tom)
    
    -G 覆盖此前的附加组
    [root@localhost ~]# usermod -G tom linux004
    [root@localhost ~]# id linux004
    uid=3001(linux004) gid=1002(linux001) groups=1002(linux001),1001(tom)
    
    -m -d 改变用户家目录的同时把原来家目录的文件移动到新的家目录中
    [root@localhost ~]# ll /home/
    total 0
    drwx------. 2 linux001 linux002 62 Nov 10 11:50 linux001
    drwx------. 2 linux002 linux002 62 Nov 10 11:51 linux002
    drwx------. 2 linux003 linux001 62 Nov 10 11:51 linux003
    drwx------. 2 linux004 linux001 62 Nov 10 12:31 linux004
    drwx------. 2 tom      tom      62 Nov 10 11:55 tom
    drwx------. 2 yqh      yqh      62 Nov 10 11:56 yqh
    [root@localhost ~]# ls /opt/
    007  abc  anaconda-ks.cfg
    [root@localhost ~]# usermod -m -d /opt/004 linux004
    [root@localhost ~]# ll /home/
    total 0
    drwx------. 2 linux001 linux002 62 Nov 10 11:50 linux001
    drwx------. 2 linux002 linux002 62 Nov 10 11:51 linux002
    drwx------. 2 linux003 linux001 62 Nov 10 11:51 linux003
    drwx------. 2 tom      tom      62 Nov 10 11:55 tom
    drwx------. 2 yqh      yqh      62 Nov 10 11:56 yqh
    [root@localhost ~]# ls /opt/
    004  007  abc  anaconda-ks.cfg
    [root@localhost ~]# ll /opt/
    total 4
    drwx------. 2 linux004 linux001   62 Nov 10 12:31 004
    drwx------. 2 linux007 linux007   62 Nov 10 11:57 007
    -rw-r--r--. 1 root     root        0 Nov 10 11:56 abc
    -rw-r--r--. 1 root     root     1714 Nov  9 12:10 anaconda-ks.cfg
    
    -L 锁定帐号(登录不了,但是用root管理员账户可以切换)
    [root@localhost ~]# usermod -L linux004
    
    -U 解锁帐号
    [root@localhost ~]# usermod -U linux004
    
    -s 修改用户登入后所使用的shell
    [root@localhost ~]# useradd -r -M -s /sbin/nologin linux008
    [root@localhost ~]# id linux008
    uid=993(linux008) gid=990(linux008) groups=990(linux008)
    [root@localhost ~]# grep linux008 /etc/passwd
    linux008:x:993:990::/home/linux008:/sbin/nologin
    [root@localhost ~]# cat /etc/shells 
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    [root@localhost ~]# usermod -s /bin/sh linux008
    [root@localhost ~]# grep linux008 /etc/passwd
    linux008:x:993:990::/home/linux008:/bin/sh
    
    -c 修改注释信息
    [root@localhost ~]# grep linux001 /etc/passwd
    linux001:x:3000:2000::/home/linux001:/bin/bash
    [root@localhost ~]# usermod -c '喻庆浩修改了注释' linux001
    [root@localhost ~]# grep linux001 /etc/passwd
    linux001:x:3000:2000:喻庆浩修改了注释:/home/linux001:/bin/bash
    

    切换用户命令su

    切换用户的方式 特点
    su USERNAME 非登录式切换,即不会读取目标用户的配置文件
    su - USERNAME 登录式切换,即会读取目标用户的配置文件。完全切换
    su - 不指定用户时默认切换至root用户
    root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码

    su USERNAME:登录式切换,即不会读取目标用户的配置文件

    [root@localhost ~]# su linux001
    [linux001@localhost root]$ ls
    ls: cannot open directory '.': Permission denied
    [linux001@localhost root]$ touch abc
    touch: cannot touch 'abc': Permission denied
    

    su - USERNAME:登录式切换,即会读取目标用户的配置文件。完全切换

    [linux001@localhost root]$ su - root
    Password: 
    Last login: Tue Nov 10 11:47:47 CST 2020 from 192.168.21.1 on pts/1
    [root@localhost ~]# 
    

    su -:不指定用户时默认切换至root用户

    [linux001@localhost root]$ su -
    Password: 
    Last login: Tue Nov 10 13:13:18 CST 2020 on pts/1
    [root@localhost ~]# 
    

    -c 切换身份执行命令,命令执行结束后又回到原来的身份

    [root@localhost ~]# su - tom -c 'touch pdf'			//登录tom用户创建pdf文件
    [root@localhost ~]# ll /home/tom/
    total 0
    -rw-rw-r--. 1 tom tom 0 Nov 10 13:15 pdf
    [root@localhost ~]# su - tom -c 'rm -f pdf'			//登录tom用户删除pdf文件
    [root@localhost ~]# ll /home/tom/
    total 0
    

    本地和用户配置文件

    ①
    [root@localhost ~]# ls -a
    .   anaconda-ks.cfg  .bash_profile  .cshrc
    ..  .bash_logout     .bashrc        .tcshrc
    [root@localhost ~]# echo "alias cdnet='cd /etc/sysconfig/network-scripts'" >> .bashrc
    [root@localhost ~]# source .bashrc
    [root@localhost ~]# cdnet
    [root@localhost network-scripts]# pwd
    /etc/sysconfig/network-scripts
    ②
    [root@localhost ~]# echo "alias cdnet='cd /etc/sysconfig/network-scripts'" >> /etc/bashrc
    [root@localhost ~]# su - tom
    [tom@localhost ~]$ source /etc/bashrc
    [tom@localhost ~]$ cdnet
    [tom@localhost network-scripts]$ pwd
    /etc/sysconfig/network-scripts
    

    密码管理

    passwd 密码管理命令

    --stdin 从标准输入获取用户密码

    [root@localhost ~]# echo 'passsword' | passwd --stdin tom
    Changing password for user tom.
    passwd: all authentication tokens updated successfully.
    

    openssl 密码生成工具

    dgst 提取特征码

    -md5 一种被广泛使用的密码散列函数,可以产生出一个128位的散列值
    -sha256 SHA是一个密码散列函数家族,是FIPS所认证的安全散列算法,算法使用的哈希值长度是256位
    -sha512
    [root@localhost ~]# ls
    abc  anaconda-ks.cfg
    [root@localhost ~]# openssl dgst -md5 abc
    MD5(abc)= d41d8cd98f00b204e9800998ecf8427e
    [root@localhost ~]# openssl dgst -sha256 abc
    SHA256(abc)= e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    [root@localhost ~]# openssl dgst -sha512 abc
    SHA512(abc)= cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
    

    rand 生成伪随机数

    -base64
    [root@localhost ~]# openssl rand -base64 20
    2cRVo6l2/0I7DyENSzx9VYDWW3I=
    [root@localhost ~]# openssl rand -base64 50
    Dv9I9JdAKJ9UGjytY7QIegtMStsvQhNi2Tn6a2CmGUN6WGQ5PneWdrEJ23Km0E13
    eX0=
    

    tr 生成30位的密码

    [root@localhost ~]# tr -dc A-Za-z0-9 < /dev/urandom | head -c 30|xargs
    2CtC9VYN0ptCVYezdHngzc5wLlgDpu
    

    组管理

    groupadd 创建组命令

    -r 添加一个系统组

    [root@localhost ~]# groupadd -r mysys
    [root@localhost ~]# grep mysys /etc/group
    mysys:x:991:
    

    -g 指定GID

    [root@localhost ~]# groupadd -g 6000 mysys1
    [root@localhost ~]# grep mysys1 /etc/group
    mysys1:x:6000:
    

    groupdel 删除组命令

    [root@localhost ~]# groupdel mysys
    [root@localhost ~]# groupdel mysys1
    [root@localhost ~]# grep mysys /etc/group
    [root@localhost ~]# grep mysys1 /etc/group
    

    各配置文件说明

    配置文件 作用
    /etc/passwd 用户及其属性信息(名称、uid、基本组id等等)
    /etc/group 组及其属性信息
    /etc/shadow 用户密码及其相关属性
    /etc/gshadow 组密码及其相关属性。在用户执行基本组切换时使用
    /etc/passwd
    配置文件 /etc/passwd
    第一字段 用户名
    第二字段 密码占位符
    第三字段 UID
    第四字段 GID
    第五字段 用户的描述信息
    第六字段 用户家目录
    第七字段 用户的登录shell
    [root@localhost ~]# head /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    
    用户名	 密码占位符	UID   GID   描述信息   家目录    登录xshell
     root  :     x      :    0  :  0  :  root   : /root   : /bin/bash
    
    /etc/group
    配置文件 /etc/group
    第一字段 组名
    第二字段 组密码
    第三字段 GID
    第四字段 以当前组为附加组的用户列表(分隔符为逗号)
    [root@localhost ~]# tail -1 /etc/group
    mysys2:x:1001:tom,mysys1
    
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    
    组名字    组密码   组ID	   组成员
    mysys2 :   x   : 1001 :  tom,mysys1
    
    /etc/shadow
    配置文件 /etc/shadow
    第一字段 登录名
    第二字段 加密后的密码
    第三字段 最近一次更改密码的日期
    第四字段 密码的最小使用期限
    第五字段 密码的最大使用期限
    第六字段 密码警告时间段
    第七字段 密码禁用期
    第八字段 帐号的过期日期
    第九字段 保留字段
    [root@localhost ~]# head -1 /etc/shadow
    root:$6$HfCU.N1tU4jF2lfh$Riu5YUAQfW4EoSDU7e4gWtRXulL7I1/pVrO.4xrMl3U.05cibZI3VjIb2IMx9DoOVv/SSfMtpZ7w3m2boBKuc.:18577:0:99999:7:::
    [root@localhost ~]# tail -1 /etc/shadow
    tom:$6$f7apjWv92zjOhoyD$ZmScI.GW/2mUWJEIbG.ueZ1nrWkWiX/22MvWTyPqlOVatQHX7xoCVJ/n6GiKu3G4nRUiqlallUWhEgWRxeJVI.:18577:0:99999:7:::
    
  • 相关阅读:
    redis之Scan
    redis之GeoHash
    redis之漏斗限流
    redis之布隆过滤器
    redis之HyperLogLog
    redis位图
    redis延迟队列
    redis分布式锁
    如何安装redis
    社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
  • 原文地址:https://www.cnblogs.com/yuqinghao/p/14017623.html
Copyright © 2020-2023  润新知