文章目录
一、Linux用户管理
人 名字 身份证
linux root 0
身份标识 UID 唯一标识
组标识 GID 唯一标识
1. 用户介绍(user)
1)超级用户
系统管理员,掌握系统最高权限,皇帝一样。家目录/root
用户名是root,UID为0.
UID为0的用户就是root。
登录shell,/bin/bash
登录安全:企业级应用。
a.配置ssh,禁用root通过SSH远程登录,权限非常大,所有人都知道。
使用普通用户登录,然后切换到root
b.平时使用普通用户登录,有必要的话在登录root。
2)普通用户
普通的权限,写的权限范围 家目录 /home/用户名,/tmp。
老百姓,过着平常的日子。
由管理员用户创建的。日常登录应该首先登录普通用户。
UID为C6 500-6000,C7 1000-60000
登录shell,/bin/bash
普通用户如何管理系统?
a.切换root,su - buffes #角色改变,由普通用户变成了root。
农民起义,当皇帝。
b.不切换到root,可以使用root的权限去做事,sudo useradd buffes
赋予普通用户一部分权限。
3)虚拟用户(傀儡用户)
多数情况装系统就存在的,不能登录的。
UID 1-499
登录shell,/sbin/nologin
存在还不能登录?
linux 文件、进程这样的东西如果要存在,必须要有对应的用户和组。
类似人出生,一定有父母的。家庭(组1),团队(组2)
文件创建时就要有对应的用户和组。
进程启动时就要有对应的用户和组。
虚拟用户存在的目的就是满足进程启动时对用户和组的要求。
用普通用户行不行?行
最小化原则:
1.安装软件最小化
2.登录安全最小化(普通用户)
3.进程启动权限最小化。
4.权限最小化
2. 用户组介绍(group)
GID Group Identify
组名
用户的用户组 类似于【人】的家庭,学校等组织
1个用户可以在多个组里。
1个组可以有多个用户。
用户组怎么产生的?
1)创建用户的时候默认产生的,创建一个buffes,默认情况就会生成buffes组,
用户和组同名,且UID和GID相同
2)由root用户直接创建。
3. 用户相关的配置文件
直接相关的有4个
/etc/passwd ##用户主配置文件,用户的各种属性(UID,GID,家目录,登录SHELL)
/etc/shadow ##用户密码文件,存放密码及密码的属性(失效时间,修改密码时间等)。
/etc/group ##组文件,存放用户组及属性。
/etc/gshadow ##用户组的密码文件(废弃)
和创建用户相关的有3个
/etc/default/useradd ##创建用户命令useradd的配置文件
/etc/skel ##创建用户环境变量原始文件存放地。
/etc/login.defs ##创建用户系统配置,对应文件。
3.1 详细说明,用户文件
/etc/passwd 以 passwd 文件中 root一行为例介绍各个字段作用
root :X :0 :0 :root :/ropt :/bin/bash
用户名称 :用户密码:用户UID :用户组GID :用户说明 :用户家目录:shell解释器。
字段 | 注释说明 |
---|---|
用户名称 | 和用户 UID 对应,这是用户登录时使用的用户名称,在系统中是唯一的,不能重名 |
用户密码 | 早期的 Unix 系统中,该字段是存放用户密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow文件中了。这位置可以看到一个字母x,表示该用户的密码是在/etc/shadow 文件中保护的 |
用户UID | 用户 UID一般是由一个整数表示的,默认范围是0-60000,最大可以到65535,有关UID的范围,在第9章中已列表讲解,读者可以回看 |
用户组GID | 用户 GID 一般也是由一个整数表示的,范围、最大值和用户 UID 相同,当添加用户时,默认情况下会同时建立一个与用户同名且ID相同的组 |
用户说明 | 对用户的描述说明 |
用户家目录 | 用户登录后默认进入的目录,一般为"/home/用户名”这样的目录 |
shell 解析器 | 当前用户登录后所使用的解释器。在 CentOS/Red Hat 等主流 Linux 系统中,默认的解释器为bash,。如果不希望用户登录系统,可以通过usermod或者手工修改passwd配置,将解释器类型改为Asbin/nologin即可。如果你仔细看passwd文件的话,会发现大部分内置系统虚拟用户的这个字段都是/sbin/nologin,表示禁止登录系统,这是出于安全考虑的 |
/etc/shadow 见视频
用户组文件:
/etc/group 见视频
/etc/gshadow 见视频
4. Linux基础命令
4.1 useradd命令
1)添加用户
[root@buffes ~]# useradd test1
查看:
[root@buffes ~]# id test1 #查看用户
uid=1001(test1) gid=1001(test1) 组=1001(test1)
[root@buffes ~]# tail -n 1 /etc/passwd /etc/group /etc/shadow /etc/gshadow
==> /etc/passwd <==
test1:x:1001:1001::/home/test1:/bin/bash
==> /etc/group <==
test1:x:1001:
==> /etc/shadow <==
test1:!!:22052:0:99999:7:::
==> /etc/gshadow <==
test1:!::
2)指定uid添加用户(-u)
[root@buffes ~]# useradd -u 5000 test2 #创建test2用户,并指定uid为5000
[root@buffes ~]# id test2
uid=5000(test2) gid=5000(test2) 组=5000(test2)
3)指定用户的登录shell(-s)
[root@buffes ~]# useradd -s /sbin/nologin test3 #创建test3用户,禁止登录
[root@buffes ~]# id test3
uid=5001(test3) gid=5001(test3) 组=5001(test3)
[root@buffes ~]# tail -1 /etc/passwd
test3:x:5001:5001::/home/test3:/sbin/nologin
[root@buffes ~]# su - test3
This account is currently not available.
企业应用:配置网络服务时候,编译安装需要,创建虚拟用户。
4)指定用户家目录(-d)
[root@buffes ~]# useradd -d /opt test4
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@buffes ~]# tail -1 /etc/passwd
test4:x:5002:5002::/opt:/bin/bash
su - test4
正常报错
-bash-4.1$ ##缺少用户环境变量所致。
范例14-1:使用buffes用户登录到Linux系统后,发现提示符为如下所示异常情况,
请问如何恢复到正常的Linux命令行提示符情况?
-bash-4.1$
-bash-4.1$
-bash-4.2$ cp /etc/skel/.bash* .
-bash-4.2$ ls -la
总用量 12
drwx------. 2 buffes buffes 62 6月 30 01:32 .
drwxr-xr-x. 8 root root 85 6月 30 01:17 ..
-rw-r--r--. 1 buffes buffes 18 6月 30 01:32 .bash_logout
-rw-r--r--. 1 buffes buffes 193 6月 30 01:32 .bash_profile
-rw-r--r--. 1 buffes buffes 231 6月 30 01:32 .bashrc
-bash-4.2$ 重新登录即可
root用户处理:
[root@buffes buffes ]# \cp /etc/skel/.bash* .
[root@buffes buffes ]# chown -R buffes .buffes /home/buffes
[root@buffes buffes ]# su - buffes
上一次登录:日 6月 30 01:31:25 CST 2030pts/0 上
[buffes @buffes ~]$
5)添加用户指定属于其他用户组(-g)
[root@buffes ~]# useradd test5 -g root #添加用户属于root组。
[root@buffes ~]# id test5
uid=5004(test5) gid=0(root) 组=0(root)
6)添加用户设置过期时间(-e)
企业应用:给非运维人员设置用户登录的固定期限,到期了自动无法登陆。
[root@buffes ~]# date
2030年 05月 18日 星期六 12:07:59 CST
[root@buffes ~]# useradd -e "2030/05/30" test6
[root@buffes ~]# passwd test6
更改用户 test6 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@buffes ~]# date -s "2030/06/01"
2030年 06月 01日 星期六 00:00:00 CST
[root@buffes ~]# ssh test6@127.0.0.1 #SSH客户端类似xshell。
test6@127.0.0.1's password:
Your account has expired; please contact your system administrator
Authentication failed.
7)添加用户不创建家目录(-M)
配合创建虚拟用户
useradd -s /sbin/nologin test3 -M
总结:
-u 指定UID
-g 指定属于的组
-e 指定过期时间
-d 指定家目录
-M 不创建家目录
-s 指定登录的解释器
4.2 usermod 修改用户
-u 指定UID
-g 指定属于的组
-e 指定过期时间
-d 指定家目录
-M 不创建家目录
-s 指定登录的解释器
1)修改test1的UID
[root@buffes ~]# id test1
uid=1001(test1) gid=1001(test1) 组=1001(test1)
[root@buffes ~]# usermod -u 10001 test1
[root@buffes ~]# id test1
uid=10001(test1) gid=1001(test1) 组=1001(test1)
UID已改,组ID没改。
2)修改test2属于的新组root
[root@buffes ~]# usermod -g root test2
[root@buffes ~]# id test2
uid=5000(test2) gid=0(root) 组=0(root)
3)修改过期时间为2031/7/18
[root@buffes ~]# id test6
uid=5005(test6) gid=5005(test6) 组=5005(test6)
[root@buffes ~]# chage -l test6 #查看密码的属性,间接看/etc/shadow内容
最近一次密码修改时间 :5月 18, 2030
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :5月 30, 2030
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@buffes ~]# usermod -e "2031/7/18" test6 #修改过期时间为2031/7/18
[root@buffes ~]# chage -l test6
最近一次密码修改时间 :5月 18, 2030
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :7月 18, 2031
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
4)更改test3解释器为/bin/bash(-s)
[root@buffes ~]# grep test3 /etc/passwd
test3:x:5001:5001::/home/test3:【/sbin/nologin】
[root@buffes ~]# usermod -s /bin/bash test3
[root@buffes ~]# grep test3 /etc/passwd
test3:x:5001:5001::/home/test3:【/bin/bash】
4.3 userdel用户删除
-r 删除家目录,有风险的。
[root@buffes ~]# userdel -r test6
[root@buffes ~]# ls -l /home/
总用量 0
drwx------. 3 buffes buffes 121 5月 30 21:01 buffes
drwx------. 2 10001 1001 62 5月 18 11:47 test1
drwx------. 2 test3 test3 62 5月 18 11:55 test3
drwxr-xr-x. 2 root root 6 6月 30 00:52 test4
drwx------. 2 test5 root 62 5月 18 12:06 test5
企业应用:人员离职,他的用户怎么管?
a.userdel -r 离职人员 #容易把离职人员数据删除。不明智
b.userdel 离职人员用户名 #家目录保留。
c.设置过期时间,/etc/passwd注释掉。
编辑/etc/passwd注释掉test5,生产场景推荐。
#test5:x:5004:0::/home/test5:/bin/bash
"/etc/passwd" 26L, 1172C 已写入
[root@buffes ~]# su - test5
su: user test5 does not exist
1)useradd命令3个配置文件
和创建用户相关特殊的有3个
/etc/default/useradd ##创建用户命令useradd的配置文件
/etc/skel ##创建用户环境变量原始文件存放地。
/etc/login.defs ##创建用户系统配置,对应文件。
2)/etc/skel 用户环境变量原始文件存放地
每个用户家目录默认都会有.bash_logout .bash_profile .bashrc,
创建用户的同时,从/etc/skel里复制到/home/用户名下的,如果这几个文件丢失
就会出现提示符问题:-bash-4.1$
[root@buffes ~]# useradd test7
[root@buffes ~]# su - test7
[test7@buffes ~]$ pwd
/home/test7
[test7@buffes ~]$ ls -al
总用量 12
drwx------. 2 test7 test7 62 6月 30 01:17 .
drwxr-xr-x. 8 root root 85 6月 30 01:17 ..
-rw-r--r--. 1 test7 test7 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 test7 test7 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 test7 test7 231 4月 1 2020 .bashrc
创建用户的时候为什么会从/etc/skel下面拷贝环境变量。
/etc/default/useradd ##创建用户命令useradd的配置文件
useadd 相当于你,/etc/default/useradd 你媳妇。
备份:
[root@buffes ~]# cp /etc/default/useradd{,.ori}
[root@buffes ~]# cp /etc/default/useradd /etc/default/useradd.ori
[root@buffes ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/opt #把默认/home/修改为/opt
INACTIVE=-1
EXPIRE="2031/12/31"
SHELL=/sbin/nologin #默认/bin/bash,修改为/sbin/nologin。
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
===========
useradd -D 修改/etc/default/useradd里面配置。
[root@buffes ~]# useradd -D -s /sbin/nologi
==============================================
[root@buffes ~]# useradd test7
useradd:用户“test7”已存在
[root@buffes ~]# useradd test8
[root@buffes ~]# tail -1 /etc/passwd
test8:x:5006:5006::/opt/test8:/sbin/nologin
[root@buffes ~]# chage -l test8
最近一次密码修改时间 :6月 29, 2030
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
4.3.1 案例
范例14-1:使用buffes用户登录到Linux系统后,发现提示符为如下所示异常情况,
请问如何恢复到正常的Linux命令行提示符情况?
-bash-4.1$
-bash-4.1$
解答:环境变量文件丢失问题
-bash-4.2$ cp /etc/skel/.bash* .
-bash-4.2$ ls -la
总用量 12
drwx------. 2 buffes buffes 62 6月 30 01:32 .
drwxr-xr-x. 8 root root 85 6月 30 01:17 ..
-rw-r--r--. 1 buffes buffes 18 6月 30 01:32 .bash_logout
-rw-r--r--. 1 buffes buffes 193 6月 30 01:32 .bash_profile
-rw-r--r--. 1 buffes buffes 231 6月 30 01:32 .bashrc
-bash-4.2$ 重新登录即可
root用户处理:
[root@buffes buffes]# \cp /etc/skel/.bash* .
[root@buffes buffes]# chown -R buffes.buffes /home/buffes
[root@buffes buffes]# su - buffes
上一次登录:日 6月 30 01:31:25 CST 2030pts/0 上
[buffes@buffes ~]$