一. 用户的分类

1.1 超级管理员(root) uid=0

1.2 虚拟用户(nobody) uid=1-999

虚拟用户主要用于管理服务进程,没有家目录 ,不需要进行登陆系统

1.3 普通用户 uid=1000+

二. 用户管理有关文件

2.1 /etc/passwd

root:x:0:0:root:/root:/bin/bash
第一列: 用户名称信息
第二列: 用户密码信息. 真正密码信息已经保存在了/etc/shadow文件中
第三列: 用户uid数值信息
第四列: 用户gid数值信息
第五列: 用户注释信息
第六列: 用户所在家目录信息
第七列: 用户是否能够登陆系统 shell信息(/sbin/nologin)

2.2 /etc/shadow

root:$6$piuEtt7VpTtUdkc4X4u1mYEo69u/::0:99999:7:::

第一列: 用户名称信息
第二列: 密码信息
第三列: 最近更改密码时间
第四列: 禁止修改密码天数
第五列: 用户必须更改口令天数
第六列: 警告更改密码期限
第七列: 不活动时间

2.3 /etc/group

确认组是否存在,可以查看group文件

三. 用户管理中重要目录

3.1 /etc/skel/ — 企业注意事项文件

[root@oldboy-xiaodao.com.cn ~]# echo “info oldboy” >/etc/skel/readme
[root@oldboy-xiaodao.com.cn ~]# useradd oldboy21
[root@oldboy-xiaodao.com.cn ~]# su - oldboy21
[oldboy21@oldboy-xiaodao.com.cn ~]$ ll
total 4
-rw-r—r—. 1 root root 18 4月 1 2020 .bash_logout
-rw-r—r—. 1 root root 193 4月 1 2020 .bash_profile
-rw-r—r—. 1 root root 231 4月 1 2020 .bashrc
-rw-r—r— 1 oldboy21 oldboy21 12 Jan 23 17:34 readme
[oldboy21@oldboy-xiaodao.com.cn ~]$ cat readme
info oldboy
案例:当家目录信息被清空之后,命令提示符会发生变化
-bash-4.2$
解决方式:
将/etc/skel目录中的数据信息复制到相应用户家目录中
cp -a /etc/skel/.bash* ~/

四. 用户管理相关命令

4.1 useradd 用于创建用户

4.1.1 相关参数总结

  1. -u 指定用户的uid数值
  2. -G 指定用户附属组信息
  3. -g 指定用户主要组信息
  4. -s 指定新建用户shell信息, 如果指定为/sbin/nologin,用户无法登陆系统
  5. -M 创建新用户时,不给家目录
  6. -c 创建的新用户添加注释信息
  7. -d 指定家目录

4.1.2 案例

创建一个用户alex999指定uid为888,禁止用户登录系统,不创建家目录
useradd alex999 -u 888 -c test -s /sbin/nologin -M

4.1.3 添加用户-免交互

echo ‘hajhkkasjd’ |passwd —stdin oldboy
ps:密码里有特殊字符时不要用echo “ “ , 因为” “会解析里面的特殊符号

4.2 userdel 删除用户信息

userdel -r test —- 彻底删除用户信息

4.2.1 解决删除用户时,有残留信息没有删除掉

  1. 1)创建用户
  2. useradd -u uid 相同用户名 --- uid值和家目录属主信息保持一致
  3. 2)彻底删除用户
  4. userdel -r 用户名

4.3 usermod 修改用户信息

  1. -u 指定新建用户的uid数值<br /> -G 指定用户还属于哪个组 指定用户附属组信息<br /> -g 指定用户属于主要组信息<br /> -s 指定新建用户shell信息, 如果指定为/sbin/nologin,用户无法登陆系统<br /> -c 创建的新用户添加注释信息 <br />

4.4 groupadd 创建用户组信息

-g 设置用户组的id信息

五. 用户查询相关命令

5.1 id

id root
uid=0(root) gid=0(root) groups=0(root)
用户的uid 用户的组id,所属组 用户所属的其它组

5.2 w

显示主机工作时间 负载情况 连接主机的用户信息

  1. [root@oldo.com.cn ~]# w
  2. 16:40:32 up 1:41, 13 users, load average: 0.02, 0.04, 0.05
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. root tty1 16:35 5:28 0.02s 0.02s -bash
  5. root pts/0 10.0.0.1 15:07 0.00s 1.81s 0.00s w
  6. root pts/1 192.168.12.147 16:36 0.00s 7.99s 0.05s vim 1.txt
  7. oldboy pts/2 10.0.0.1 16:26 13:44 0.03s 0.03s -bash
  8. root pts/3 10.0.0.1 16:38 8.00s 0.57s 0.00s sleep 2

5.3 last

哪个用户从哪里远程登录你的系统 用户登录的信息

  1. root pts/3 192.168.221.1 Mon Jul 26 20:31 still logged in
  2. root pts/2 192.168.221.1 Mon Jul 26 19:55 - 22:12 (02:17)
  3. root pts/0 192.168.221.1 Mon Jul 26 18:38 - 21:55 (03:16)
  4. root pts/1 192.168.221.1 Sun Jul 25 21:33 - 21:03 (23:30)
  5. root pts/0 192.168.221.1 Sun Jul 25 18:26 - 21:54 (03:27)
  6. root pts/2 192.168.221.1 Sun Jul 25 16:53 - 21:31 (04:38)
  7. root pts/1 192.168.221.1 Sun Jul 25 15:23 - 20:10 (04:46)
  8. root pts/0 192.168.221.1 Sun Jul 25 13:31 - 17:18 (03:46)
  9. root pts/0 192.168.221.1 Sat Jul 24 21:27 - 23:02 (01:34)
  10. root pts/0 192.168.221.1 Wed Jul 21 22:54 - 00:38 (01:43)
  11. reboot system boot 3.10.0-1127.el7. Wed Jul 21 22:28 - 22:33 (5+00:05)
  12. root pts/1 192.168.221.1 Tue Jul 20 22:42 - crash (23:45)
  13. root pts/0 192.168.221.1 Tue Jul 20 22:38 - crash (23:49)

5.4 lastlog

用户名 端口 来自 最后登陆时间

  1. root pts/3 192.168.221.1 7 26 20:31:42 +0800 2021
  2. bin **从未登录过**
  3. daemon **从未登录过**
  4. adm **从未登录过**
  5. polkitd **从未登录过**
  6. tss **从未登录过**
  7. abrt **从未登录过**
  8. sshd **从未登录过**
  9. postfix **从未登录过**
  10. ntp **从未登录过**
  11. test **从未登录过**

六. 用户权限管理

6.1 sudo授权

6.1.1 sudo -l 查询普通用户拥有了root用户哪些能力

  1. [test@133 ~]$ sudo -l
  2. 匹配 %2$s %1$s 的默认条目:
  3. !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
  4. env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
  5. env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
  6. env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
  7. env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
  8. env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
  9. secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

6.1.2 编辑配置文件

  1. [root@133 ~]# visudo
  2. 切换到100gg(centos7) 98gg(centos6)
  3. ## Allow root to run any commands anywhere
  4. test ALL=(ALL) (固定不变) /usr/bin/cat /etc/shadow (命令要写绝对路径,which查看)
  5. test ALL=(ALL) /usr/bin/cat /etc/shadow, !/bin/rm -rf /oldboy/etc/
  6. 给谁进行授权 根据主机进行授权 授予什么权力
  7. 取消密码认证,授权大量命令信息,并排除部分危险命令
  8. test ALL=(ALL) NOPASSWD: /usr/bin/*, /bin/*, !/bin/rm -rf /root/

6.1.3 应用sudo能力

sudo cat /etc/shadow —-暂时切换到超级用户模式
sudo -i —-没有时间限制,切换到超级用户模式

6.1.4 注意事项

对于有些命令, root用户命令绝对路径和普通用户命令绝对路径不统一
添加多个命令时中间用空格隔开

6.2 使用特殊权限位进行授权

6.2.1 setuid: 在属主权限位生成一个s位 ( 4 )

总结: 让一些文件执行的时候, 可以让普通用户可以以root属主的身份进行执行

  1. 方法一: 利用字符进行特殊权限位设置<br />[root@oldboy ~]# ll /usr/bin/cat<br />-rwxr-xr-x. 1 root root 54080 Apr 11 2018 /usr/bin/cat<br />[root@oldboy ~]# chmod u+s /usr/bin/cat<br />[root@oldboy ~]# ll /usr/bin/cat<br />-rwsr-xr-x. 1 root root 54080 Apr 11 2018 /usr/bin/cat<br /> 方法二: 利用数值进行特殊权限位设置<br />[root@oldboy ~]# ll /bin/vim<br /> -rwxr-xr-x. 1 root root 2294208 Oct 31 03:57 /bin/vim<br />[root@oldboy ~]# chmod 4755 /bin/vim<br />[root@oldboy ~]# ll /bin/vim<br /> -rwsr-xr-x. 1 root root 2294208 Oct 31 03:57 /bin/vim<br />

6.2.2 setgid: 在属组权限位生成一个s位 ( 2 ) (不常用)

  1. <br />利用数值进行特殊权限位设置<br /> [root@oldboy-xiaodao.com.cn ~]# ll /bin/cat<br /> -rwsr-xr-x. 1 root root 54080 Apr 11 2018 /bin/cat<br /> [root@oldboy-xiaodao.com.cn ~]# chmod 2755 /bin/cat <br /> [root@oldboy-xiaodao.com.cn ~]# ll /bin/cat<br /> -rwxr-sr-x. 1 root root 54080 Apr 11 2018 /bin/cat<br />

6.2.3 Stickybit(粘滞位): 其他用户权限位生成一个t位 ( 1 )

对一个目录设置粘滞位权限, 目录中数据只能被自己进行删除, 其他用户没有权力删除

  1. 方法一: 利用字符进行特殊权限位设置<br /> [root@oldboy-xiaodao.com.cn oldboy30]# ll /share_dir/ -d<br /> drwxr-xrwx 2 root root 26 Jan 25 18:38 /share_dir/<br /> [root@oldboy-xiaodao.com.cn oldboy30]# chmod o+t /share_dir/<br /> [root@oldboy-xiaodao.com.cn oldboy30]# ll /share_dir/ -d<br /> drwxr-xrwt 2 root root 26 Jan 25 18:38 /share_dir/
  2. 方法二: 利用数值进行特殊权限位设置<br /> [root@oldboy-xiaodao.com.cn oldboy30]# ll /share_dir/ -d<br /> drwxr-xrwx 2 root root 26 Jan 25 18:43 /share_dir/<br /> [root@oldboy-xiaodao.com.cn oldboy30]# chmod 1777 /share_dir/<br /> [root@oldboy-xiaodao.com.cn oldboy30]# ll /share_dir/ -d<br /> drwxrwxrwt 2 root root 26 Jan 25 18:43 /share_dir/
  3. 特殊说明: 系统中已经设置了一个共享目录 <br /> [root@oldboy-xiaodao.com.cn oldboy30]# ll -d /tmp/<br /> drwxrwxrwt. 10 root root 248 Jan 25 18:46 /tmp/<br /> PS: 一定不能随意修改此目录的权限 (mysql服务需要依赖/tmp目录权限为1777)