Linux用户管理

Linux用户管理

一、用户管理概述

1.概述

  • 各种系统中都有用户,windows是administrator,Linux系统中是有各种类型的用户的。

  • 未来大部分操作使用root实现,进行系统管理的时候都是用root,造成管理混乱。

  • 推荐使用普通用户,提升系统安全

  • 未来Linux系统会有各种的用户,每个用户都有自己的用途,root最高权限用户,普通用户,虚拟用户

  • Linux系统是一个多用户系统

2.UID GID

Linux中的用户是由一个标记的,类似于身份证号码一样的东西,叫做UID和GID.一般情况下UID和GID要唯一

3.用户分类

用户分类 分类方法(uid)
root uid是0
普通用户 uid≧1000(centos7),手动创建,无法对系统进行更改,只能在当前家目录有权限
uid≧500(centos5 or centos6)
虚拟用户 uid<1000 ,也叫傀儡用户,用于服务,进程运行使用的用户,无法直接使用

二、用户相关文件

用户相关文件 说明
/etc/passwd 存放用户信息
/etc/shadow 存放密码信息
/etc/group 用户组信息
/etc/gshadow 用户组密码信息,几乎不会给用户组设置密码

Linux下面每创建一个用户,一般会影响这几个文件

1. /etc/passwd

[root@lnh ~]# head /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

image

2. /etc/shadow

[root@lnh ~]# head /etc/shadow
root:$6$n2mIIkuJcmje9.kq$bPx.yRK9xGcp4MWJ1ar.Lxn1c9eaQFWaQSjvXVq4ZlEzzmbc84CAeY7zACkUipyp7ASEyIRFazKvTUF4SmYL50::0:99999:7:::
bin:*:18353:0:99999:7:::
第一列:用户名
第二列:密码
第三列及以后:密码过期时间,默认是不过期

3. /etc/group

[root@lnh ~]# head /etc/group
root:x:0:
bin:x:1:
第一列:用户组的名字,默认是和用户名一致
第二列:密码
第三列:gid
第四列:空,这个是放属于这个组的其他用户

三、用户管理命令

1.增加(创建用户)useradd 必会

useradd 选项 说明
-u 指定用户uid
-s 指定命令解释器,默认是/bin/bash
-M 不创建家目录
#添加用户oldboy
[root@lnh ~]# useradd oldboy
[root@lnh ~]# grep 'oldboy' /etc/passwd
oldboy:x:1000:1000::/home/oldboy:/bin/bash
#创建用户mysql指定uid 1314指定命令解释器/sbin/nologin不创建家目录 创建虚拟用户
[root@lnh ~]# useradd -u 1314 -s /sbin/nologin -M mysql
[root@lnh ~]# grep 'mysql' /etc/passwd
mysql:x:1314:1314::/home/mysql:/sbin/nologin

虚拟用户:命令解释器为/sbin/nologin 和不创建家目录

2.passwd 修改密码

passwd选项 说明
--stdin 非交互式设置密码
#非交互式修改密码,用于批量修改密码.(只能root用)
[root@lnh ~]# echo 1 |passwd --stdin oldboy

3. su切换用户

[root@lnh ~]# su - oldboy
Last login: Mon Dec 5 16:10:06 CST 2022 on pts/1
[oldboy@lnh ~]$
#退出当前用户
ctrl+d #相当于logout

提示:关于su - 与su命令

su命令中的-,是su命令的选项,-,-l,--login

切换用户的时候,更新用户的配置与环境变量

4. 删除 userdel

userdel选项
默认不会删除家目录和相关的文件
-r 删除用户及家目录
#删除用户
[root@lnh ~]# userdel -r oldboy
[root@lnh ~]# id oldboy
id: oldboy: no such user

5. 修改 usermod 了解

用于修改用户信息,用户已存在,修改useradd添加的时候指定的信息

[root@lnh ~]# grep 'oldboy' /etc/passwd
oldboy:x:1315:1315::/home/oldboy:/bin/bash
[root@lnh ~]# usermod -s /sbin/nologin oldboy
[root@lnh ~]# grep 'oldboy' /etc/passwd
oldboy:x:1315:1315::/home/oldboy:/sbin/nologin

6. 查看

1)id 查询用户的uid,gid,用户组信息,检查用户是否存在

[root@lnh ~]# id oldboy
uid=1315(oldboy) gid=1315(oldboy) groups=1315(oldboy)

2) whoami 查看当前用户的名字,也可以用于获取当前用户的名字

[root@lnh ~]# whoami
root

3) w 查询谁登录了系统并且正在看啥,系统运行时间,负载信息

替代了uptime

[root@lnh ~]# w
16:38:23 up 19:01, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 09:23 7.00s 0.09s 0.01s w

image

4) last,lastlog 查看用户登录情况

last 显示所有用户的登录信息

lastlog 显示所有用户最近一次的登录信息

[root@lnh ~]# last
root pts/1 10.0.0.1 Tue Dec 6 11:59 - 15:21 (03:21)
root pts/0 10.0.0.1 Tue Dec 6 09:23 still logged in
root pts/1 10.0.0.1 Mon Dec 5 16:35 - 22:02 (05:26)
oldboy pts/2 10.0.0.1 Mon Dec 5 15:59 - 16:10 (00:10)
root pts/1 10.0.0.1 Mon Dec 5 11:36 - 16:10 (04:33)
root pts/0 10.0.0.1 Mon Dec 5 10:19 - 16:35 (06:16)
reboot system boot 3.10.0-1160.el7. Mon Dec 5 10:18 - 16:40 (1+06:21)
root pts/2 10.0.0.1 Sun Dec 4 11:52 - 18:39 (06:47)
root pts/1 10.0.0.1 Sun Dec 4 11:51 - 11:52 (00:01)
root pts/0 10.0.0.1 Sun Dec 4 11:48 - 11:52 (00:03)
reboot system boot 3.10.0-1160.el7. Sun Dec 4 11:43 - 16:40 (2+04:56)
wtmp begins Sun Dec 4 11:43:29 2022
[root@lnh ~]# lastlog
Username Port From Latest
root pts/1 10.0.0.1 Tue Dec 6 11:59:42 +0800 2022
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**

7. 用户组命令(了解)

创建用户组: groupadd

使用场景: 指定用户的uid和gid的时候可以用groupadd

​ 创建组指定gid groupadd -g 1315 oldboy

​ 创建用户指定uid 与用户组 useradd -u 1315 -g oldboy -s /sbin/nologin -M oldboy

#创建uid,gid都为888 的tset虚拟用户
[root@lnh ~]# groupadd -g 888 test
[root@lnh ~]# useradd -u 888 -g test -s /sbin/nologin -M test
[root@lnh ~]# id test
uid=888(test) gid=888(test) groups=888(test)

四、故障案例 -命令行 -bash-4.2$

1.了解/etc/skel目录

  • 这个目录是Linux新用户家目录的一个模板
  • 每当我们创建用户的时候,系统会把/etc/skel/下面的所有内容,复制到新用户的家目录下面
  • 其他应用:创建通知文件,告知每个新用户,禁止使用rm等危险命令

2. 原因

命令行变为:
-bash-4.2$
用户家目录没有,用户家目录下面的配置文件没了 ~/.bashrc ~/.bash_profile

3. 解决方法

通过 复制 /etc/skel/.bash* 解决

-bash-4.2$ cp /etc/skel/.bash* .
重新登录
[oldboy@lnh ~]$

4. 复现故障

[root@lnh ~]# su - oldboy
Last login: Tue Dec 6 12:07:09 CST 2022 on pts/1
[oldboy@lnh ~]$ rm -rf ./.bash*
rm is dangerous,please use mv -rf ./.bash_history ./.bash_logout ./.bash_profile ./.bashrc
[oldboy@lnh ~]$ \rm -rf ./.bash*

五、 sudo权限管理

1.概述

  • Linux系统开发人员要看日志,如何创建用户与授权?
    • root权限,权限太大
    • 普通用户,权限太小
    • 日志平台
    • 普通用户+尚方宝剑以root权限运行命令
  • 这时候就要使用sudo(提权)
  • 这时候可以通过普通用户+sudo权限实现这个目标
  • 授予普通用户以root权限运行,cat

sudo:用于给普通用户配置的命令,配置了sudo权限后,普通用户就可以以root权限运行命令

2.进行sudo授权与使用

提示:

授权sudo,需要使用root

#root的授权配置
#使用visudo 相当于修改/etc/sudoers
#普通用户使用
sudo + 命令
#授予oldboy用户,以root权限运行cat,head,tail,more,less,grep权限
#root授权
[root@lnh ~]# visudo
oldboy ALL=(ALL) /bin/cat, /bin/head, /bin/tail #第一行后边输入此行
[oldboy@lnh ~]$ cat /var/log/secure
cat: /var/log/secure: Permission denied
[oldboy@lnh ~]$ sudo cat /var/log/secure
[sudo] password for oldboy:
Dec 4 11:43:41 muban polkitd[1079]: Loading rules from directory /etc/polkit-1/rules.d
Dec 4 11:43:41 muban polkitd[1079]: Loading rules from directory /usr/share/polkit-1/rules.d
Dec 4 11:43:41 muban polkitd[1079]: Finished loading, compiling and executing 2 rules
#查看你普通用户拥有的sudo权限
[oldboy@lnh ~]$ sudo -l
Matching Defaults entries for oldboy on lnh:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User oldboy may run the following commands on lnh:
(ALL) /bin/cat, /bin/head, /bin/tail
#看最后2行
#授予oldboy运行所有命令(root)并且不需要输入密码(一般用于运维自己使用的普通用户)
[oldboy@lnh ~]$ sudo -l
Matching Defaults entries for oldboy on lnh:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User oldboy may run the following commands on lnh:
(ALL) NOPASSWD: ALL #visudo加这一行

补充:

sudo -k #清空授予的密码

本文作者:wh459086748

本文链接:https://www.cnblogs.com/world-of-yuan/p/17011192.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wh459086748  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起