10月24日预习笔记 用户和组管理

**
用户配置文件和密码配置文件

/etc/passwd 用户目录

用户名:x(表示密码):用户id:用户组id::用户注释信息:用户家目录:表示该用户登录linux时的shell
[root@localhost ~]# cat /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
user❌1000:1000:user:/home/user:/bin/bash

root用户和普通用户都是/bin/bash结尾。
常见用户:以/sbin/nologin与/bin/bash结尾。
特殊用户:以/sbin/shutdown结尾
已/sbin/shutdown与/sbin/nologin结尾的用户即便设置密码也不可以登录

用户密码配置文件 /etc/shadow

/etc/shadow与/etc/passwd文件相对应,一个是账户一个为密码文件。

用户名:用户密码(加密不能反编译):天数(距离1970年1月1日更改密码过去了多少天):(多少天之后才
能修改密码):多少天以后禁止修改密码:具体密码到期多少天提示告警:密码到期期限:帐号的生命周
期(可以使用多久):保留字段(无意义)
[root@localhost ~]# cat /etc/shadow
root: 6 6 6jNHmMDtSD4NAa58Q$pgDxFCRmHT6DZNjFqyVqYCcqsodCB6V6ocjwkVEWZJigUGLHKoqX8AcHcvtgdNxA
E8Ib1BP6CcmEHvvXO6llp.::0:99999:7:::
bin:*:17110:0:99999:7:::
user: 6 6 6iPoCD4EZr$P4RBKbXNlvnsHTrbcH3TyJ.V7jevBhrM1mahjisDOrQLXFVt5zjKTFy2v3WmjJdoXSiGpRI
1Y/KcqSKLPiXd01:17821:0:99999:7:::

3.2 用户组管理

用户组配置文件 /etc/group
与/etc/passwd相对应,但部分系统用户不存在。

[root@localhost ~]# cat /etc/passwd
passwd passwd-
[root@localhost ~]# cat /etc/shadow
shadow shadow-
[root@localhost ~]# cat /etc/group
group group-

带“-”的文件为系统创建的备份文件,当不小心删除相关文件时可以使用带“-”的文件来恢复,如遇到系统
未来得及备份相关文件,则可能出现部分数据丢失。

[root@localhost ~]# groupadd users1 创建用户组users1
[root@localhost ~]# tail -n1 /etc/group 查看用户组id
users1❌1001:
[root@localhost ~]# groupadd -g 10086 users2 指定用户组id创建用户组users2
[root@localhost ~]# tail -n1 /etc/group 查看用户组id
users2❌10086:

[root@localhost ~]# groupdel users2 删除用户组users2
[root@localhost ~]# tail -n4 /etc/group
sshd❌74:
tcpdump❌72:
user❌1000:
users1❌1001:

当用户组中有用户时则无法删除用户组,需用户组为空才可删除。

3.3 用户管理

-u 指定uid
-g 指定gid
-d 指定家目录
-s 指定shell类型
-M 创建用户且创建家目录但不显示家目录
-r 删除用户同时删除家目录及信箱

useradd与adduser用法一致

[root@localhost ~]# useradd user1 创建用户user1
[root@localhost ~]# tail -n2 /etc/passwd 查看user1是否创建成功
user❌1000:1000:user:/home/user:/bin/bash
user1❌1001:1002::/home/user1:/bin/bash

[root@localhost ~]# useradd -u 1024 -g users1 admin 指定uid并指定用户组创建admin账户
[root@localhost ~]# tail -n3 /etc/passwd 查看admin是否创建成功
user❌1000:1000:user:/home/user:/bin/bash
user1❌1001:1002::/home/user1:/bin/bash
admin❌1024:1001::/home/admin:/bin/bash

[root@localhost ~]# useradd -u 10244 -g users1 -d /home/admin2 -s /sbin/nologin admin3 指定uid并指
定用户组、指定家目录、指定账户类型创建admin3账户
[root@localhost ~]# tail -n4 /etc/passwd
user1❌1001:1002::/home/user1:/bin/bash
admin❌1024:1001::/home/admin:/bin/bash
admin3❌10244:1001::/home/admin2:/sbin/nologin

[root@localhost ~]# useradd -M useradd 创建useradd用户但不创建其用户家目录
[root@localhost ~]# tail -n5 /etc/passwd
user1❌1001:1002::/home/user1:/bin/bash
admin❌1024:1001::/home/admin:/bin/bash
admin1❌1025:1001::/home/admin:/sbin/nologin
admin3❌10244:1001::/home/admin2:/sbin/nologin
useradd❌10245:10245::/home/useradd:/bin/bash
[root@localhost ~]# ls /home/
123 admin admin2 user user1

但指定uid为某数值时来创建用户1,那么创建用户2时不指定uid时则用户2uid数值跟着用户1uid+1。

[root@localhost ~]# groupadd -g 1021 admin3 指定gid创建用户组admin3
[root@localhost ~]# useradd -g admin3 user9 指定用户组为admin3创建用户user9
[root@localhost ~]# tail -n6 /etc/passwd
user1❌1001:1002::/home/user1:/bin/bash
admin❌1024:1001::/home/admin:/bin/bash
admin1❌1025:1001::/home/admin:/sbin/nologin
admin3❌10244:1001::/home/admin2:/sbin/nologin
useradd❌10245:10245::/home/useradd:/bin/bash
user9❌10246:1021::/home/user9:/bin/bash

[root@localhost ~]# useradd -g admin3 user10 指定用户组admin3创建用户user10
[root@localhost ~]# useradd user11 创建用户user11
[root@localhost ~]# tail -n7 /etc/passwd
admin❌1024:1001::/home/admin:/bin/bash
admin1❌1025:1001::/home/admin:/sbin/nologin
admin3❌10244:1001::/home/admin2:/sbin/nologin
useradd❌10245:10245::/home/useradd:/bin/bash
user9❌10246:1021::/home/user9:/bin/bash
user10❌10247:1021::/home/user10:/bin/bash

由此得出账户的gid与用户组有关,且不随新增用户而增加,uid在不指定的情况下顺序增加。
user11❌10248:10248::/home/user11:/bin/bash

删除用户

[root@localhost ~]# useradd admin21 创建账户admin21
[root@localhost ~]# useradd admin22 创建账户admin22
[root@localhost ~]# tail -n2 /etc/passwd
admin21❌10248:10248::/home/admin21:/bin/bash
admin22❌10249:10249::/home/admin22:/bin/bash
[root@localhost ~]# userdel admin21 删除账户admin21
[root@localhost ~]# tail -n2 /etc/passwd
admin❌10247:10247::/home/admin:/bin/bash
admin22❌10249:10249::/home/admin22:/bin/bash

[root@localhost ~]# userdel -r admin22 加-r时,删除用户同时删除用户家目录
[root@localhost ~]# ls /home/
admin admin21 user user1 user10 user11 user9

usermod

更改用户属性命令

-u 修改用户uid
-g 修改用户所属组
-d 修改用户家目录
-s 修改用户属性(/sbin/nologin)
-G 扩展组

[root@localhost ~]# usermod -u 223 user 更改账户user的uid为223
[root@localhost ~]# tail -n2 /etc/passwd
tcpdump❌72:72:?:/sbin/nologin
user❌223:1000:user:/home/user:/bin/bash

[root@localhost ~]# id user 查看账户组信息
uid=223(user) gid=1000(user) 组=1000(user)
[root@localhost ~]# usermod -G root user 给账户user拓展到root用户组
[root@localhost ~]# id user
uid=223(user) gid=1000(user) 组=1000(user),0(root)

[root@localhost ~]# usermod -G root,admin3 user 给账户user拓展root及admin3用户组
[root@localhost ~]# id user
uid=223(user) gid=1000(user) 组=1000(user),0(root),1021(admin3)

mkpasswd 命令

mkpasswd=make passwd
安装yum包 yum -y install expect

-l 指定长度
-s 指定特殊符号
[root@localhost ~]# mkpasswd -l 10 生成长度为10的随机字符串
3jfsnHr8K,
[root@localhost ~]# mkpasswd -l 10 -s 3 生成长度为10且有3个特殊符号的随机字符串
0KR/fmp7*=

su 命令

su 切换用户
su - name 切换用户并且进入到用户家目录下
[admin@localhost ~]$ su root 从amdin用户切换到root用户下
密码:
[root@localhost admin]#
[root@localhost admin]# su - admin 切换到admin用户下并且进入该用户的家目录下
[admin@localhost ~]$ pwd
/home/admin

[root@localhost ~]# rm -rf /home/admin/ 当删除一个用户家目录后登录时无法正常显示
[root@localhost ~]# su - admin
上一次登录:四 10月 25 23:17:38 CST 2018pts/1 上
su: 警告:无法更改到 /home/admin 目录: 没有那个文件或目录
-bash-4.2$
登出到root用户下
[root@localhost ~]# mkdir /home/admin 创建amdin家目录
[root@localhost ~]# chown admin:admin /home/admin 赋权admin用户用户组及家目录
[root@localhost ~]# su - admin 再次登录到admin依旧无法显示
上一次登录:四 10月 25 23:18:17 CST 2018pts/1 上
-bash-4.2$
登出到root用户下复制配置模板文件到admin用户家目录下
[root@localhost ~]# cp /etc/skel/.bash* /home/admin 复制模板文件到admin家目录下
[root@localhost ~]# chown -R admin:admin /home/admin 给admin家目录授权所属用户及所属组
[root@localhost ~]# su - admin 切换到admin用户下正常
上一次登录:四 10月 25 23:27:04 CST 2018pts/1 上
[admin@localhost ~]$

sudo 命令

给user账户添加root权限 给admin账户添加root的ls,mv,cat权限
[root@localhost ~]# visudo

Allow root to run any commands anywhere

用户 默认(任何用户) 所有命令
root ALL=(ALL) ALL 找到root这一行
user ALL=(ALL) ALL 给user添加root权限
admin ALL=(ALL) /usr/bin/ls, /usr/bin/mv,/usr/bin/cat 给admin添加ls,mv,cat权限

[admin@localhost ~]$ sudo /usr/bin/ls /root/ 使用admin用户ls查看/root/目录时
1122.txt.bak anaconda-ks.cfg qaa.txt.bak
[admin@localhost ~]$ sudo /usr/bin/cd /root/ 在sudo中没有给该用户添加命令时,则该命令提示无权使用
对不起,用户 admin 无权以 root 的身份在 localhost.localdomain 上执行 /usr/bin/cd /root/。

admin2 ALL=(ALL) NOPASSWD:/usr/bin/ls, /usr/bin/mv,/usr/bin/cat 增加NOPASSED后再使用时可以不输入密码。

其他用法
给主机做别名

Host_Alias FILESERVERS = fs1, fs2 FILESERVERS主机别名为fs1 fs2

Host_Alias MAILSERVERS = smtp, smtp2 MAILSERVERS主机别名为smtp smtp2

虚拟用户中添加真实用户

User_Alias ADMINS = jsmith, mikem ADMINS中添加jsmith mikem两个用户。

命令的别名

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,

/sbin/iptables,/usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-too

即代表NETWORKING包含了=号后面的所有命令
用法
[root@localhost ~]# visudo

Allow root to run any commands anywhere

root ALL=(ALL) ALL
user ALL=(ALL) NETWORKING 即代表user用户拥有NETWORKING等于号后的所有命令
admin ALL=(ALL) /usr/bin/ls, /usr/bin/mv,/usr/bin/cat 给admin添加ls,mv,cat权限

用户组

Allows people in group wheel to run all commands

用户组 默认 所有命令
%wheel ALL=(ALL) ALL

将用户组添加到下面即可限制该组用户的权限,与用户用法相同

限制root远程登录

[root@localhost ~]# visudo

User_Alias ADMINS = jsmith, mikem

User_Alias USERS = user, admin, admin2 添加用户别名 逗号分隔且加空格

Allow root to run any commands anywhere

root ALL=(ALL) ALL
USERS ALL=(ALL) NOPASSWD:/usr/bin/su 将用户别名到用户权限中然后添加su权限

[admin2@localhost ~]$ sudo su - root 然后使用sudo su - root切换到root用户下
上一次登录:五 10月 26 00:41:13 CST 2018pts/1 上
[root@localhost ~]#

取消root远程登录
[root@localhost ~]# vi /etc/ssh/sshd_config
#PermitRootLogin yes 取消注释,将yes改为no 保存退出
systemctl restart sshd.service 然后重启服务
然后使用普通用户登录到系统使用sudo su - root切换到root用户下

你可能感兴趣的:(学习笔记)