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
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
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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律