用户管理
linux系统中是根据二进制数来操作
用户是 UID(十进制数字)
组是用GID(十进制数字)
系统是根据文件的id号访问不是根据文件名字
用户基本信息和密码信息
用户信息保存在 /etc/passwd文件中
shark:x:1002:1002::/home/shark:/bin/bash
用户密码的信息保存在 /etc/shadow文件中
nginx:!!:18101:0:99999:7:::
意义 第一个是用户名 两个!!是显示创建的用户但没有设置密码
后面的18101是兄1970年1月1号到现在累加的日期
计算某个日期的累积天数
echo $(( $(date --date="2019/07/24" +%s) /86400+1))
1、密码不可被更的天数(修改密码后需要几天后才能再次被修改)
2、密码需要重新修改的天数(密码修改后规定多少天后还需再次修改一次)
3、距离密码要修改的天数(会设置一个数字 数字是几 就在临近修改密码的前几天提示用户更新密码)
4、密码过期后的账号宽限时间(密码到期了账户依然可以登录,但是登录时会提示你密码更新,否则无法继续操作)
5、账号失效日期(通常会用到收费系统上)
UID
0 属于系统管理员
1~999 属于系统用户
1000~2^32-1 给其他用户使用
用户编辑修改命令
useradd 添加用户
useradd [-u] [-g 初始群组] [-G 次要群组][-mM][-c 说明栏] [-d 家目录]
-M 不自动建立一个用户登入目录
-m 自动建立一个用户登入目录
-r 创建一个系统用户
-s 后面接指定目录 没指定默认为/bin/bash
-e 后面接一个日期 格式是“2019-07-24”也可作为账号失效日期
useradd username -G group_name #添加一个用户并添加一个附加组
新增一个系统用户指定shell为/sbin/nologin
useradd -r -s /sbin/nologin shark
useradd的默认值
useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
设置用户密码
root用户可以设置任何人的密码
[root@localhost ~]# passwd 用户
普通用户修改密码需进入这个用户中
[root@localhost shark]# passwd
修改用户信息 usermod
root用户执行
usermod 命令参数 用户名
-c 后面接账号的说明
-d 后面接账号的主文件夹
-e 后面接日期
-f 后面接天数
-g 后面接初始群组
-G 后面接次要群组
-a 添加群组
-l 修改账号名称
-s 后面接shell实际文件即目录
-u 后面接UID
-L 对使用者密码冻结
-U 接触锁定
示例 把用户shark添加到wheel组中
usermod -a -G wheel shark
命令 添加 组 组名 用户名
拓展
gpasswd命令
gpasswd - a 用户 组 #添加组成员用户
- d 用户 组 #删除组成员用户
- M 用户,用户,用户... 组 #可以添加多个用户到一个组里
删除用户userdel
用户存在用户名跟数据,数据有:
账号和密码:/etc/passwd, /etc/shadow
组:/etc/group, /etc/gshadow
个人文件数据:/home/username, /var/spool/mail/username..
等等
删除的话不会把家目录和邮箱删了只会把这个用户名给删了
userdel shark 只删除用户
userdel -r shark 将这个用户的所有都删了
组
初始组(initial group):创建用户的时候默认创建一个和用户名同名的组。后期可以修改。初始组的 GID 会出现在 /etc/passwd 中,用户的存放 GID 的位置,用户已登录到系统中就会拥有此组的权限。
有效组(effective group):后来加入的组
Linux 系统中的组信息存放在 /tec/group 文件中,可以分为四个部分
joint : x : 1020 : dph,djh,rxb,wjw
组名 密码 组ID 组内成员
# UID 范围及意义,和 UID 几乎相同。 0 是管理员用户的初始组
关于组的命令
groups 查看用户都加入了哪些组
[root@localhost ~]# groups #查看自己的当前的组
[root@localhost ~]# groups dph #查看dph用户属于哪个组
dph : dph joint #所属的组为joint
groupadd 新增组
groupadd -g group_name #单独添加组
-r group_name #添加系统组
groupdel 删除组
groupdel group_name
用户身份切换
su
切换别的用户,但是需要提供密码
root切换别的用户不需要密码
语法
su - [-c] [用户名]
sudo
是用于使用普通用户的身份去执行root身份才有权执行的命令操作
必要条件:
1、需要把普通用户设置为sudo用户
2、使用sudo的时候需要提供root的用户名
语法
sudo [-b] [-u]
-b 后面接着指令放到后台中让系统或者后台执行,与目前的shell不会有影响
-u 后面可以接想要指定切换的使用者, 如果不加就代表切换身份到root
切换到sshd用户,并在/tmp目录下创建一个普通文件
sudo -u sshd touch /tmp/sshd.file
sudo执行流程
1、使用者执行sudo时,系统于/etc/sudoers文件中搜寻该使用者是否有执行sudo的权限
2、使用者具有可执行sudo权限后,就得用使用者的密码来确认
3、密码输入成功后,就可以进行sudo后的指令(root执行sudo时,不需要输入密码)
4、切换身份与执行者身份一样也不需要密码
visudo将普通用户设置为sudo用户
设置格式
root ALL=(ALL) ALL
用户 从哪登录的,括号里的是想切换成那个用户 命令
括号里的ALL可以是有多个
命令可以是多个用逗号隔开,不过有的涉及权限应该是大权限在前小权限在后
[root@localhost ~]# su - one #创建一个用户
[one@localhost ~]$ which su #查看one用户的路径
/bin/su
[one@localhost ~]$ exit
logout
[root@localhost ~]# visudo #进入里面修改命令
#change-pass ALL=(root) /bin/su -
#shark ALL=(one,change-pass) /bin/su -
#one ALL=(root) NOPASSWD:ALL
[root@localhost ~]# su - one #再次进入one用户
Last login: Wed Jul 24 15:13:46 CST 2019 on pts/0
[one@localhost ~]$ sudo su - #执行sudo su -
Last login: Wed Jul 24 15:07:53 CST 2019 on pts/0
[root@localhost ~]# id #回到root查看id为root的
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
只要不退出sudo就不需要在输入密码,没有时间限制重新输入密码
免密码命令
one ALL=(ALL) NOPASSWD:ALL
切换指定身份
shark ALL=(root) /user/bin/passwd #可以修改密码
限制使用的命令
shark ALL=(root) !/user/bin/passwd,/user/bin/passwd[A-Za-z]*
#允许shark用户以root身份修改其他用户的密码,但不允许修改root的密码
用户别名和命令别名
User_Alias ADMPW = shark1, shark2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
ADMPW ALL=(root) ADMPWCOM
#在visudo里面修改
sudo和su
普通用户切换为root身份,并且不需要输入root的密码
User_Alias ADMINS = shark1, shark2
ADMINS ALL=(root) /bin/su -
网友评论