目录
Linux 用户介绍
Linux用户类型
UID
用户组ID
Linux 用户相关命令
id 查看用户信息
useradd 创建新的用户账户
groupadd 创建新的用户组
usermod 修改用户的属性
passwd 修改用户的密码、过期时间等
userdel 删除用户
通过文件的方法新建、编辑用户
/etc/passwd
/etc/group
/etc/shadow
/etc/skel
通过文件创建用户实例
切换用户的身份
su 切换命令身份
sudo 授权普通用户执行管理员权限
Linux 用户介绍
Linux用户类型
Linux用户被分为三种类型:管理员用户、系统用户、普通用户
管理员用户
权限最大,限制最小
系统用户
默认情况下不能登录服务器,只能去调用某个服务程序
系统用户可以避免两个问题
黑客破解系统用户密码后,不能够登录服务器
当黑客入侵了网站服务之后,由于系统用户的权限特别小,黑客造成的范围也会降低很多
普通用户
用来日常完成工作的用户(普通用户下不能够新建普通用户)
系统用户和普通用户的区别
系统用户和普通用户登录终端不同
普通用户的登录终端是 /bin/bash,能够正常使用这个账户登录服务器
系统用户的登录终端是/sbin/nologin,不能够正常登录登录到服务器(只能管理某些服务)
UID
UID 用户的身份证号码(uid user identification),具有唯一性
不同用户的UID范围
管理员的UID 为0 (唯一的,不可更改的,UID为0就代表是管理员用户)
系统管理员的UID RHEL5、6 为1-499 RHEL7-8 为1-999
普通用户的UID RHEL5、6为500-65535 RHEL7、8为从1000开始,没有上限
注意事项
UID=0一定代表的是管理员用户,其余的UID不能确定
即除了管理员用户的UID外,其余用户的UID都可以手工指定,所以无法只通过UID来判断其是系统用户还是普通用户
系统用户和普通用户是通过功能和作用来区分的,不是通过UID来区别,即UID只是做个参考
用户组ID
用户组只有一个组ID,就是用户组ID,其基本组ID和扩展组ID是对于用户来说的
可以将不同的用户加入到用户组,使得不同的用户都拥有这个用户组所有的权限
不用过多的去区分基本组和扩展组,要想用户获得某个用户组的权限,直接将这个用户加入到这个用户组就可以了
基本组ID(gid)
当创建用户时会自动生成一个组,这个组对于用户自己来说就是基本组
用户组ID
当用户加入到其它用户的基本组时,其它用户的其本组对于自己来说就是扩展组
注意事项(groups)
一个用户只可以有一个基本组,一个用户可以加入到多个扩展组
文件属性的所属组就是用户组,只要是这个用户组的用户,就可以享用此用户组对这个文件的权限,不区分此用户组对用户来说是基本组还是扩展组
ls -l 可以查看
文件属性 文件所有者 文件所属组
此时文件所属组并不区分基本组和扩展组,只要文件有所属组就可以
Linux 用户相关命令
id 查看用户信息
id 查看用户的信息(UID、基本组ID、扩展组ID)
id 查看当前用户的信息
id 用户名 查看指定用户的信息
gid 基本组ID(用户组)、groups 扩展组ID(用户组)
useradd 创建新的用户账户
useradd 用户 创建用户
useradd -u 1000 用户 创建uid为1000的用户
-d 指定用户的家用户(默认为/home/username)
-e 指定账户的到期时间(格式为YYYY-MM-DD)
-g 指定一个用户组(包括基本组和扩展组)
-G 指定一个或多个用户的扩展组
-N 不创建于用户同名的基本用户组(默认创建)
-s 指定该用户默认的shell解释器
groupadd 创建新的用户组
groupadd admin 创建名为admin的用户组
groupadd -g 123 linux 创建用户组linux,并指定工作组的id为123
groupdel 用户组 删除用户组
usermod 修改用户的属性
usermod -u 10 用户名 修改用户的UID
uermode -s /sbin/nologin 用户名 将用户的登录终端修改为/sbin/nologin
-s 修改用户登录终端,此时su - 用户名,此用户就无法登录服务器了
-d 修改用户登录时的家用户(当-d 和 -m 一起使用时,可以将旧的数据移动到新的家目录中)
-c 填写账户的备注信息
-e 修改账户的到期时间,格式为(YYYY-MM-DD)
-g 变更用户组(包括基本组和扩展组)
-G 变更扩展组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登陆系统
passwd 修改用户的密码、过期时间等
passwd 修改当前用户的密码
passed 用户名 修改此用户的密码
passed -e 用户名 强制用户在下一次登录时修改密码
--stdin 允许用户通过标准输入修改用户密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
-l 锁定用户,禁止其登录
-u 解锁锁定,允许用户登录
userdel 删除用户
userdel 用户 删除用户名称,但是用户的家目录信息没有删除
/home 存放着用户的资料
当删除用户后,只是删除了用户名称,关于此用户的重要数据还存放在/home文件下
当再次创建此用户后,会自动关联此信息
userdel -r 用户 删除用户的同时并删除用户的家目录
-f 强制删除用户
通过文件的方法新建、编辑用户
/etc/passwd
vim /etc/passwd 此文件时用来存储用户信息的(不包括密码)
用户名称:是否有密码(有为x,真正的密码存放在shadow中):UID:初始用户组ID(包括基本组和扩展组):用户的描述信息:用户的家目录:解释器终端
/etc/group
vim /etc/group 此文件报文的是用户组信息
用户组名:是否有密码:用户组ID:组内用户列表
/etc/shadow
vim /etc/shadow 文件保存的是用户的密码信息
用户名:加密密码(!!表示不设置密码):最后一次修改日期():最小时间间隔(修改密码最小间隔天数):最大时间间隔(密码保存的最大有效天数):警告时间(系统警告用户到用户密码正式失效时间之间的天数):不活动时间(密码失效后账号能够保持有效的最大天数):失效时间(密码无效时间-使用这个字段需要给出账号的生存日期,期满后此账号无法登录):标志
注意事项
密码是通过MD5加密出来的(不是传统的1对1的,相同的密码每次加密的结果都不一样)
如果要输入密码,可以通过机密软件将密码加密,然后复制进来
/etc/skel
/etc/skel 用于存放shell的环境变量,当使用命令创建新用户的时候,这个目录下的所有文件会自动复制到新用户的家目录下
由于我们使用文件建立用户,我们需要手动将此文件复制到用户的加目录下
cp -r /etc/skel 用户家目录
通过文件创建用户实例
vim /etc/group 创建用户组名为linuxjp,组ID为521
linuxjp:x:521
vim /etc/passwd 创建用户名为linuxj,uid为520,用户组id为521,家目录为/home/linuxj,终端解释器为/bin/bash
vim /etc/shadow 为linuxj编写密码,此处表示暂时不写密码
linuxj:!!::::::
此时登录用户发现虽然也可登录进去,但是用户没有家目录
cp -r /etc/skel /home/linuxj 为linuxj创建家目录
id linuxj查看用户信息
切换用户的身份
su 切换命令身份
su 用户名 切换到用户名(会保留先前用户的变量信息)
su - 用户名 完整的身份变更(不会保留先前用户的变量信息,变量信息都变为自己的了)
注意事项
管理员可以切换到普通用户 此时无需密码
普通用户可以切换到管理员、也可以切换到其它普通用户 此时需要密码
sudo 授权普通用户执行管理员权限
sudo 是服务程序,也是命令
可以让某个用户执行某个工作,进行单独的权限设定(类似于精准的SUID)
让执行sudo命令的用户临时获取到更高的权限(但是仅限于某个用户)
配置sudo服务
可以通过visudo配置sudo服务(visudo 也是调用vim编译器来实现编译的,推荐)
也可以编辑文件目录来实现 vim /etc/sudoers
root 谁可以使用sudo服务(要为哪位用户进行命令授权)
ALL 哪些主机可以使用sudo命令(填写网段表示从此网段登录的主机才可以使用sudo命令,ALL表示不限制主机来源)
(ALL) 以谁的身份执行sudo命令(输入用户名表示为通过其它用户来执行命令,ALL表示最高权限,)
ALL 可以执行的命令(命令必须使用命令路径的方式来写,ALL表示不限制命令)
命令路径可以通过which 命令 来进行查找
执行sudo命令
只有/etc/sudoers文件有用户的名字,用户才可以使用sudo命令
sudo 命令1 执行命令1(此主机需满足/etc/sudoers文件定义的要求,需要进入被sudo授权的用户)
sudo -u 用户名 命令1 使用sudo服务允许的用户身份来执行命令1(不需要进入被sudo授权的用户)
sudo -l 查看此用户被sudo授权了哪些命令
配置举例
visudo 配置sudo服务
admin ALL=(root) /usr/bin/ls
表示不限主机来源,当主机登录admin用户后,可以通过root的身份执行ls命令
执行sudo命令(两种方式)
方式一:sudo –u admin ls 通过admin用户身份执行ls
方式二:或者登录到admiin用户(被sudo授权的用户)下执行sudo 命令
sudo -l 查此用户被sudo授权的命令
注意事项
在满足工作的前提之下,权限越少越好
尽量不要给用户一个能够编写文件的命令的权限(vim echo)