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加这一行
标签:oldboy,sbin,LC,管理,用户,lnh,Linux,root From: https://www.cnblogs.com/world-of-yuan/p/17011192.html补充:
sudo -k #清空授予的密码