交流群:692356620,有不同的问题或见解可以来群里讨论,或者私聊我
qq:1251611916
文章目录
何为用户和组
用户:区分不同人的身份和权限。即,用户存在的目的是为了实现资源的分配。
组:多个同一类型的用户在一起为一组,为组设置权限
用户分类
linux用户分为管理员和普通用户:
用户类型 用户ID
管理员 0
普通用户 1-65535 (UID是给计算机理解的)
其中普通用户又分为系统用户和登录用户
系统用户 用户ID 为1-999(为守护类进程获取系统资源而完成指定权限指派的
登录用户 用户ID为1000-60000(为了完成交互式登录使用的用户)
linux安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行
root:cat
tom:cat
进程所能访问的所有资源的权限取决于进程的发起者的身份,即进程的发起者对进程所处理的对象有无权限。
linux通过安全上下文的概念完成用户权限的指派
先判断用户是否是某文件的属主
再判断用户是否属于某个属组
最后定义为其它用户
linux用户组类型
1.私有组:创建用户时,如果没有指定所属的组,系统会创建一个与用户名相同名字的组。
2.基本组:用户的默认组。
3.附加组:默认组以外的其他组
私有组一定是基本组,基本组不一定是私有组。
Linux用户和组相关的配置文件
各配置文件说明
配置文件 作用
/etc/passwd 用户及其属性信息(名称、uid、基本组id等等)
/etc/group 组及其属性信息
/etc/shadow 用户密码及其相关属性
/etc/gshadow 组密码及其相关属性。在用户执行基本组切换时使用
第一字段 用户名
第二字段 密码占位符
第三字段 UID
第四字段 GID 以当前组为附加组的用户列表(分隔符为逗号)
第五字段 用户的描述信息
第六字段 用户家目录
第七字段 用户的登录shell
配置文件 / etc/group
第一字段 组名
第二字段 组密码
第三字段 GID
第四字段 以当前组为附加组的用户列表(分隔符为逗号)
配置文件 /etc/shadow
第一字段 登录名
第二字段 加密后的密码
第三字段 最近一次更改密码的日期
第四字段 密码的最小使用期限
第五字段 密码的最大使用期限
第六字段 密码警告时间段
第七字段 密码禁用期
第八字段 帐号的过期日期
第九字段 保留字段
密码复制性
密码复杂性策略:
使用数字,大写字母,小写字母,及特殊字符中的至少3中
足够长
使用随机密码,不要使用又意义的单词或数字
定期更换,不要使用最近曾经使用过的密码
用户管理
useradd
创建用户
语法:useradd [option] USERNAME
-u UID 创建指定UID的用户 [UID_min,UID_max定义在/let/login.defs文件中](事先不能存在)
-g GID 指定用户所属基本组,可为组名或GID(事先必须存在)
-G groupname ,… 附加组,可以有多个,逗号隔开且组必须事先存在
-c “COMMENT” 注释信息
-d /path/to/ddirectory 指定用户的家目录,此目录不能事先存在,否则将不会从/etc/skel中复刻环境设置文件
-s shell 这里的shell最好使用/etc/shells里面有的shell,
/etc/shells指定了当前系统可用的安全shell
-M 创建用户时不给其创建家目录
-r 添加一个系统用户
-D 直接打印/etc/default/useradd文件的内容或配合其它选项(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
用户删除命令
userdel
语法: userdel [option] USERNAME
- r 删除用户时删除其家目录(默认不删除家目录)
id
查看账户的信息命令
id 查看用户的帐号属性信息
-u 查看UID
-g 查看GID
-G 查看Groups
usermod
修改用户帐号属性的命令
usermod 修改用户属性
语法:usermod [options] username
-u UID
-g GID
-a -G groupname 不使用-a选项,会覆盖此前的附加组
-d -m 改变用户家目录的同时把原来家目录的文件移动到新的家目录中
-e YYYY-MM-DD 指明用户帐号过期日期
-f INACTIVE 设定非活动期限
-L 锁定帐号。(luck)
被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
-U 解锁帐号(unluck)
chsh 修改用户的默认shell
语法:chsh [options] [username]
-s SHELL
su
切换用户命令
切换用户的方式 特点
su USERNAME 非登录式切换,即不会读取目标用户的配置文件
su - USERNAME 登录式切换,即会读取目标用户的配置文件。完全切换
su - 不指定用户时默认切换至root用户
root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码
语法:su [options] [-] [USER [arg]…]
-c ‘COMMAND’ 切换身份执行命令,命令执行结束后又回到原来的身份
bash的配置文件:
配置文件类型 配置文件路径
全局配置 /etc/profile
/etc/profile.d/.sh
/etc/bashrc
个人配置 ~/.bash_profile
~/.bashrc
配置文件类型 功能
profile类 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本
bashrc类 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名
登录式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
密码管理
passwd
密码管理命令
语法:passwd [options] [USERNAME]
–stdin 从标准输入获取用户密码,
例:echo "redhat"|passwd --stdin user1
-l 锁定用户
-u 解锁用户
-d 删除用户密码
-n mindays 指定最短使用期限
-x maxdays 指定最长使用期限
-w warndays 提前多少天开始警告
-i inactivedays 非活动期限,密码过期后到禁用前的这段时间
openssl
密码生成工具
语法:openssl command [ command_opts ] [ command_args ]
command 包含标准命令、消息摘要命令、加密命令
version 查看程序版本号
dgst 提取特征码
passwd 生成密码
rand 生成伪随机数
提取特征码
[root@localhost ~]# openssl dgst -md5 /etc/fstab
生成密码 openssl passwd -1 -salt string string一般为8位
[root@localhost ~]# openssl passwd -1 -salt hellotom
生成随机数 openssl rand -base64 NUM
NUM表示随机数的长度
[root@localhost ~]# openssl rand -base64 20
组管理
groupadd
创建组命令
语法:groupadd [options] GROUP
-g GID 指定GID
-r 添加一个系统组
groupdel
删除组命令
语法:groupdel [options] GROUP
删除组时只需要指定组名即可