学习linux基础的第一天
用户和组
超级用户root 其他用户 可以有上千个 只是权限
用户:
任何一个用户都会被分配一个ID
UID 0 标识超级用户root
一般的其他用户 redhat UID是从1000开始的
0-1000是系统默认存在的用户 系统已经占用
/etc/passwd 文件存储了所有用户的信息,千万不可以直接修改
// A code block
var foo = 'bar';
```redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
dnsmasq:x:984:984:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
```javascript
linux系统文件用:来分割字段
字段1:用户名称 redhat
字段2:密码占位符 x
字段3:UID 1000
字段4:用户的私有组 1000
字段5:用户描述信息 redhat
字段6:用户的家目录 /home/redhat
字段7:登陆的shell信息 /bin/bash 可以使用命令功能
/sbin/nologin 不可以使用命令功能
id用于显示用户的ID,以及所属群组的ID
组 :
用户必须属于一个组 我们在创建用户的时候 默认会创建一个组 组名和用户名完全相同
每个组也都被分了一个组ID
/etc/group 存放组信息
可以将用户添加到某个组
同一个组的所有用户,是可以共享这个组的文件的
wheel 如果某个普通用户 想通过sudo提权来完成某些命令
要把这个用户加入到 wheel这个组里面 wheel组是系统管理员组
提权 sudo + 某些命令 就可以以root用户来执行这个命令
在某些情况下 需要提供root密码
su - 是直接切换到root用户
sudo 和 su - 区别
sudo全称: substitute user do 允许用户做
su - 切换到root用户的传统命令
redhat❌1000:
字段1:组名称
字段2:密码占位符
字段3:组的id
**
用户和组的创建:
**
useradd
-u: uid
-g: 用户组的名称
-d: 家目录
-G: 附加组 (wheel)
-s: 指定shell文件
usermod可用来修改用户帐号的各项设定
-d<登入目录>:修改用户登入时的目录。
-e<有效期限>:修改帐号的有效期限。
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号。
-g<群组>:修改用户所属的群组。
-G<群组>:修改用户所属的附加群组。
-l<帐号名称>:修改用户帐号名称。
-L:锁定用户密码,使密码无效。
-s 修改用户登录后的shell功能
-u 修改用户uid
-U:解除密码锁定
groupadd 增加组 -g 组id
groupadd workgroup -g 1001
groupmod 命令用于更改群组识别码或名称
groupmod [选项] 组
选项
-g:将组 ID 改为 GID
-n:改名为 NEW_GROUP
用户和组的删除
-f 删除用户家目录及邮箱 目录名还在
userdel
groupdel
密码
passwd test 可以给test赋值密码
输入密码:
Redhat@123 passwd赋值密码会对密码有要求
通常来说 都会通过管道符来赋值
echo 输出
echo redhat | passwd --stdin test
把redhat这个密码 赋值给用户 test
/etc/shadow 这个文件存放了所有的用户密码信息
redhat: 6 6 6HHmrlnNuP4wOvb5.$l.opck2FlwyQluRsSAS2VOGl1qY79x4UB2YKK2F7pIlx8GRn1VZV7LHiXKMvzKcQCtC/eklaIiz8TeEhsNPWQ/::0:99999:7:::
字段1:用户账户名称
字段2:加密秘钥字符串信息 一般都是sha或md5加密
字段3:最近一次修改密码的时间,表示从1970.1.1 到至今的天数
字段4:密码的最短使用天数
字段5:密码最长有效天数 默认99999
字段6:密码即将到期警告天数 默认7
字段7:在密码过期后账号保持活跃的天数,指天数之后账号被锁定,无效 表示从1970.1.1 到至今的天数
字段8:账号失效时间,默认也是为空
chage 配置密码相关
-m 最小期限
-M 最大期限
-W 警告周期
-I 失效周期
-d 强制要求用户在下一次登陆时更新密码
-l 显示秘密信息
-E 用户将于2020-12-30到期(XXXX-DD-YY)
chage -m 0 -M 30 -W 7 -I 14 test
chage -E 2022-12-30 test
chage -d test 下次登录必须要修改密码
/etc/login.defs 这个文件是用来创建用户时进行一定的限制,但是优先级低于/etc/passwd
和/etc/shadow
[root@localhost ~]# vi /etc/login.defs
MAIL_DIR /var/spool/mail # 系统消息(邮件)文件夹
PASS_MAX_DAYS 99999 # 密码有效最大天数
PASS_MIN_DAYS 0 # 密码有效最小天数
PASS_MIN_LEN 5 # 密码长度
PASS_WARN_AGE 7 # 密码失效警告倒计时
UID_MIN 1000 # 用户UID最小1000
UID_MAX 60000 # 用户UID最大60000
SYS_UID_MIN 201 # 系统用户UID最小201
SYS_UID_MAX 999 # 系统用户UID最大999
GID_MIN 1000 # 用户组GID最小1000
GID_MAX 60000 # 用户组GID最大60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes # 创建家目录
UMASK 077 # 创建文件/目录的权限掩码
USERGROUPS_ENAB yes # 创建用户时同时生成组是 如果此处是no 创建的用户 会是gid=100(users)groups=100(users)
ENCRYPT_METHOD SHA512 # 加密 方法 sha 512 这个方法生成的密码在/etc/shadow里面的第二列会以
6
6
6开头
sudo命令执行过程
1.当用户执行sudo,系统会主动寻找 /etc/sudoers文件,判断该用户是否有执行sudo权限
2.确认用户具有可执行sudo权限后,让用户输入自己的密码确认
3.若密码输入成功,才可以执行sudo后续命令
赋予用户sudo操作权限?
通过useradd添加的用户,并不具备sudo权限。在ubuntu/centos等系统下, 需要将用户加入admin组或者wheel组或者sudo组。以root用户身份执行如下命令, 将用户加入wheel/admin/sudo组。
usermod -a -G wheel 用户名
sudo yum repolist all 尝试执行一下只有root才能运行的命令
/etc/sudoers 是可以让整个组 完成sudo提权 且不许要密码
%wheel ALL=(ALL) ALL 例如wheel组
官方文档推荐的做法,不是直接修改/etc/sudoers文件,而是将修改写在/etc/sudoers.d/目录下的文件中。
加密算法md5 sha
MD5加密算法 密码 + 随机数+ id 通过md5算法 最后变成128位字符
1.等长原则 不管加密内容有多少字符,最后加密输出都是等长的
2.雪崩效应 只要两个文件有一个字符不一样 那整个秘钥输出也是完全不同的
3 MD5不可逆 无法通过加密后字符 来得出之前原来的密码
md5加密所谓破解完全不是靠逆推,靠撞库