用户相关命令
useradd
-u uid
制定用户的uid(数字 身份证号码)
-s 指定用户使用的shell
/bin/bash 默认
/sbin/nologin 手动添加一个傀儡用户 虚拟用户
-M标示不创建家目录一般创建虚拟用户使用
-g 指定 用户属于的组(组的名字)添加用户的时候 默认创建一个与用户名一样的家庭
添加一个用户lidao666指定uid为888禁止用户登陆系统 不创建家目录
添加一个uid是888的虚拟用户alex999
userdel
删除用户
把这个用户/etc/passwd中注释
userdel默认不删除用户的家目录和邮箱
-r 连窝端删除与用户有关的所有信息(家目录)
ussermod
修改用户的信息(这个用户已经存在了)
-s 修改用户使用的shell
-g 属于的家庭 用户组名字
主要组
-G属于多个家庭
附加组
passwd
--stdin 从管道中获取用户的密码(非交互式设置密码)
企业场景:用户及密码管理
□密码要复杂12位以上字母数字特殊符号
保存密码:
keepass
(软件,密码存放在本地,本地保险柜)
lastpass
(在线版本,银行的保险柜)
大的企业用户和密码统一管理(相当于活动目录(ad),openldap域)
动态密码:动态口令,第三方提供自己开发也很简单
企业面试题
批量添加10个用户stu01,stu02……stu10,并设置8位随机密码(禁止使用for,while等循环)
chown
修改文件或目录所有者和属于的用户组
-R 递归修改文件或目录的所有者和用户组
chown oldboy oldboy.txt #只修改了文件的所有者
chown oldboy.oldboy oldboy.txt #修改了文件的所有者和属于的组
chmod
【功能说明】:修改文件目录的权限
【语法格式】:chmod [数字或参数] [文件路径]
【选项参数】:
参数 |
参数说明 |
其他说明 |
+ |
表示增加权限 |
|
= |
表示唯一设定权限 |
|
- |
表示取消权限 |
|
u |
在这里改的前三位 |
|
g |
在这里改的中三位 |
|
o |
在这里该改的后三位 |
|
a |
所有 |
|
例子:
chmod u=w /oldboy/test.sh
chmod 755 test.sh”。755表示“创建者拥有读写可执行权限、同一组用户以及其他用户拥有读和执行权限”。
第1章 Linux用户分类
用户分类
UID
user ID 身份证号码
GID
group ID 用户组ID
root皇帝 UID:0
虚拟用户 傀儡 UID:1-499(c6) /999(c7)
用户的命令解释器/sbin/nologin
每个程序、服务运行的时候都需要一个用户
傀儡用户不需要用来登陆系统
普通用户 UID 500(c6)+1000(c7)
第2章 Linux用户
2.1 Linux启动流程
CentOS 6 VS CentOS 7
串行 并行
Contos6:
第一步按下电源→开机自检→MBR引导→GRUB菜单→加载内核→运行INIT(第一个启动的进程)→读取/etc/inittab →读取/etc/rc数字.sysinit(开机自启动)→启动mingetty显示界面
2.2 #process 进程
ps -ef 查看系统进程
2.3 用户与用户组关系
这个人属于哪个(或者多少个)家庭
2.4 命令解释器 shell
echo houstname通过管道给bash 替你运行!
这叫命令解释器
/bin/bash 系统默认的命令解释器
/sbin/nologin 虚拟用户的命令解释器
nologin不能登陆的login (虚拟用户)
统计系统中 虚拟用户数量
/sbin/nologin 文件中一个( nologin ) 代表虚拟用户
如和计算?
一两种种方法不算方法,
Cat?grep,sed,awk
grep '/sbin/nologin' /etc/passwd|wc -l wc -l小写(统计文件中单词数量显示结果)
grep -c '/sbin/nologin' /etc/passwd
-c 统计包含 xxxx的有多少行 行数 count(计数)
awk '/nologin/{i++}END{print i}' /etc/passwd
find 查找文件名或目录
-maxdepth 最大深度
-type 类型
-name 名字
-iname 不区分大小写
-size 大小
-mtime 时间
/etc/passwd内的每一列的含义
2.5 /etc/group用户,用户组信息
2.6 /etc/shadow 密码密码信息
2.7 与用户有关目录
2.7.1 /etc/skel 新用户的家目录的模板 (内有隐藏文件)
2.8 useradd 添加用户
1# 创建家目录 /home/oldfei
2# 把 /etc/skel 下面的所有内容 复制到 家目录
3# 修改家目录权限和所有者
ll -a /etc/skel/
total 24 (总数)
.bash_logout #用户退出系统的时候#执行里面的命令
/etc/rc.d/rc.local #用户开机时运行里面的内容
.bash_profile #/etc/profile 环境变量 别名
.bashrc #/etc/bashrc 别名
2.9 准备故障:
2.9.1 检查环境
grep PS1 /etc/profile
#export PS1='[\u@\h \w]\$ '
2.9.2 添加用户
[root@oldboyedu-lnb ~]# useradd alex
[root@oldboyedu-lnb ~]# su - alex
[alex@oldboyedu-lnb ~]$ \rm -fr /*
删根
2.9.3 退出用户 重新登陆
-bash-4.2$
版本
-bash-4.1$ 代表cenos6
-bash-4.2$ 代表cenos7
2.9.4 原因
用户家目录 环境变量文件 没了
2.9.5 解决
-bash-4.2$ ##方法1./etc/skel
-bash-4.2$ cp /etc/skel/.bash* ~ 复制
重新登陆 恢复
-bash-4.2$ logout
切换用户:su - alex
Last login: Fri Nov 16 11:18:54 CST 2018 on pts/0(显示登陆信息)
[alex@oldboyedu-lnb ~]$ (已登陆环境)
第3章 语法格式
3.1 添加一个UID是888的虚拟用户
useradd -u 888 -M -s /sbin/nologin lg
指定UID为888+-u,不创建家目录是大M,指定用户使用的shell虚拟用户 ,加上用户名lg
显示用户的信息叫id 亮哥 (id + 用户名)
[root@oldboyedu-lnb ~]# usermod -g alex alex
[root@oldboyedu-lnb ~]# id alex
uid=1003(alex) gid=1006(alex) groups=1006(alex)
#-G 让用户属于多个组↓
[root@oldboyedu-lnb ~]# usermod -G root,oldboy,lidao666 alex
[root@oldboyedu-lnb ~]# id alex
uid=1003(alex) gid=1006(alex) groups=1006(alex),0(root),1000(oldboy),1007(lidao666)
清空之前设置的属组↓
[root@oldboyedu-lnb ~]# usermod -G '' alex
[root@oldboyedu-lnb ~]# id alex
uid=1003(alex) gid=1006(alex) groups=1006(alex)
passwd 更改密码
stdin (standard input 标准输入 ) 从管道获取密码
echo 123456 |passwd --stdin alex 结果如↓
Changing password for user alex. 更改用户密码
passwd: all authentication tokens updated successfully. 成功更新所有身份认证令牌
记录密码:
尽量复杂一点
history 查看历史命令
history -c 删除历史命令
第4章 用户管理
用户相关命令
4.1 useradd 增加用户
-u uid 指定用户的uid(数字 身份证号码)
-s 指定用户使用的shell
/bin/bash 默认
/sbin/nologin 手动添加一个傀儡用户 虚拟用户
-M标示不创建家目录一般创建虚拟用户使用
-g 指定 用户属于的组(组的名字)添加用户的时候 默认创建一个与用户名一样的家庭
添加一个用户lidao666指定uid为888禁止用户登陆系统 不创建家目录
添加一个uid是888的虚拟用户alex999
4.2 userdel 删除用户
userdel默认不删除用户的家目录和邮箱
-r 连窝端删除与用户有关的所有信息(家目录)
在/etc/passwd中注释掉更安全方便点
4.3 usermod 修改用户
修改用户的信息(这个用户已经存在)
-s 修改用户使用的shell
-g 属于的家庭 用户组名字
主要组
-G属于多个家庭
附加组
4.4 passwd 更改密码
--stdin 从管道中获取用户的密码(非交互式设置密码)
企业场景:用户及密码管理
□密码要复杂12位以上字母数字特殊符号
保存密码:
4.4.1 keepass 密码管理器
(软件,密码存放在本地,本地保险柜)
4.4.2 lastpass
在线版本,银行的保险柜)
大的企业用户和密码统一管理(相当于活动目录(ad),openldap域)
动态密码:动态口令,第三方提供自己开发也很简单
企业面试题
批量添加10个用户stu01,stu02……stu10,并设置8位随机密码(禁止使用for,while等循环)
第5章 用户组
5.1 chown 修改文件或目录所有者和属于的用户组
-R 递归修改文件或目录的所有者和用户组
chown oldboy oldboy.txt #只修改了文件的所有者
chown oldboy.oldboy oldboy.txt #修改了文件的所有者和属于的组
用户相关组
5.2 groupadd 创建用户组
-g指定用户组的gid数字
添加一个虚拟用户用户 mysql 指定用户的uid gid都是999
5.3 用户查询命令
id 查看用户的信息
一个用户是否存在
查询用户的uid gid
属于哪个用户组
w 显示系统中已经远程登陆的用户 干啥
https://www.processon.com/view/link/59ffcfe6e4b06bed41ccb8d6
last 哪个用户在什么时候 从哪里 远程登陆你的系统 用户登陆的信息
lastlog 显示linux中所有用户最近一次远程登陆的信息
第6章 权限体系
6.1 Linux权限体系 rwx 读写执行 permission 权限denied 拒绝
6.2 chown 用户管理命令更改文件的属主,属组,原有的主,组改为另一个指定的用户或组
参数 -R 递归更改该目录下所有文件
6.3 chown oldboy . oldboy ld.txt
使这个文件的属主属组更改为oldboy
6.4 #添加一个虚拟用户 mysql 指定用户的uid gid都是999
useradd -u 999 -g 999 -s /sbin/nologin -M mysql (mysql=用户名)
-s -M 不创建家目录
id mysql 查看这个用户
uid=999(mysql) gid=999(mysql) groups=999 (mysql)
-g 指定用户组名字 或者指定一个已经存在的用户组的gid
groupadd -g 996 lidao996
创建组,-g指定用户组名 用户名
useradd -u 996 -g lidao996 -s /sbin/nologin -M lidao996
添加用户 -u -g -s -M
第7章 如何让系统变得更安全
7.1 连接到任何服务器需要做:
1.ip地址
2.端口 sshd 22 (52113)
3.用户名 root #禁止root用户远程登录
4.密码
5.登陆情况放在这个日志里面: /var/log/secure Failed password
7.2 创建指纹
72.1 直接创建
md5sum /oldboy/oldboy.txt >/oldboy/l/123.txt
把oldboy.txt做一个指纹到这个指纹数据库
7.2.2 把一个目录下的文件全部过滤到指纹数据库备份
找出/oldboy下面 文件 并制作指纹信息 存放在/oldboy/l/123.txt
find /oldboy/ -type f |xargs md5sum >/oldboy/l/123.txt
在这 /oldboy/l/123.txt 即指纹数据库
7.2.3 自动比对
命令+参数+指纹文件库 自动对比
这样更容易做比较
md5sum -c /oldboy/l/123.txt |column -t 对齐的参数
7.2.4 被动和没被动的区别
/oldboy/l/123.txt: FAILED 被动了
/oldboy/l/1: OK 没被动
/oldboy/pipeima.md5: OK
/oldboy/oldboy.txt: OK
第8章 给予用户权限
8.1 visudo ==== vi /etc/sudoers
visudo 自带检查功能
8.2 sudo 给普通用户临时成为root 提供机会 普通用户可以临时以root身份运行某个命令
查看自己的权限: sudo -l
8.3 Root用户编辑 visudo 进入授权模式
8.3.1 如何进行授权
给oldboy用户 授权两个命令 ls touch
#oldboy ALL=(ALL) /bin/ls, /bin/touch
$1是给哪个用户权限,$2是全部的意思,$3是把这个命令的绝对路径加上
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户oldboy可以在oldboyedu-lnb上运行以下命令: (ALL) /bin/ls, /bin/touch
如果没有权限的用户被授予权限使用命令前不加sudo则无效,权限被拒绝
8.3.2 sudo -l #查看自己有的sudo权限
sudo ls /root
8.3.3 给oldboy用户授予权限/bin 下所有命令
oldboy ALL=(ALL) /bin/* 不安全怎么办?
8.3.4 给oldboy用户授予权限/bin 下所有命令 排除某个命令或参数
[root@oldboy ~]# grep oldboy /etc/sudoers
oldboy ALL=(ALL) /bin/*, !/bin/su
排除su 切换用户命令
#需要什么 给什么命令 这样安全
8.4 运维人员自己用 全部用户并且不需要输入当前用户密码
[root@oldboyedu-lnb ~]# grep oldboy /etc/sudoers
oldboy ALL=(ALL) ALL
[root@oldboyedu-lnb ~]# grep oldboy /etc/sudoers
oldboy ALL=(ALL) NOPASSWD: ALL
用户 可以在所有服务器使用sudo=(你可以成为谁) 命令