[排错] Linux 解决 SSSD 用户导致本地用户无法创建的问题 (本地用户名称和 SSSD 里的用户名称冲突导致本地用户名称无法被创建)

报错现象

创建这个用户时报错这个用户已经创建
删除这个用户时报错这个用户不存在
使用 id 命令检查这个用户时会显示此用户

确认方法:检查某个用户名有没有被域名占用

# getent passwd -s sss mingyuzhu

(补充:这里以检查某个用户名有没有被域名占用为例)

解决方法方法一:临时禁用 SSSD 解析

1.1 修改 /etc/nsswitch.conf 配置文件

# vi /etc/nsswitch.conf

将以下内容:

......
passwd:     files systemd
......

修改为:

......
#passwd:     files systemd
......

1.2 让刚刚修改的配置文件生效

# systemctl restart sssd

解决方法二:在 SSSD 服务中忽略某用户

2.1 修改 /etc/sssd.conf 配置文件

# vi /etc/sssd.conf

添加以下内容:

......
[nss]
filter_users = mingyuzhu

(补充:这里以忽略 mingyuzhu 用户为例)

2.2 让刚刚修改的配置文件生效

# systemctl restart sssd

参考文献

https://access.redhat.com/solutions/3442161

[SQL] MariaDB & MySQL 用户权限的显示

内容一:显示当前用户的所有权限

> show grants;

或者:

> show grants for current_user();

内容二:显示某个用户的所有权限

> show grants root;

(补充:这里以显示 root 用户的所有权限为例)

内容三:显示所有用户的所有权限

3.1 合成显示所有用户的所有权限的 SQL 语句

> select concat('show grants for ''',user,'''@''',host,''';') as query from mysql.user;
+-------------------------------------+
| query                               |
+-------------------------------------+
| show grants for 'root'@'127.0.0.1'; |
| show grants for 'root'@'::1';       |
| show grants for 'root'@'localhost'; |
| show grants for 'root'@'mysql';     |
+-------------------------------------+
4 rows in set (0.000 sec) 

3.2 显示所有用户的所有权限

> show grants for 'root'@'127.0.0.1';
show grants for 'root'@'::1';
show grants for 'root'@'localhost';
show grants for 'root'@'mysql';

(补充:这里使用的 SQL 语句是上个步骤 3.1 合成的)

[步骤] 让虚拟机或容器被宿主机以外的其他物理机访问的设置 (在宿主机上取保虚拟网络处于路由模式并开启 IP 地址转发)

步骤一:确保虚拟机或容器的虚拟网路是路由模式

例如 KVM 虚拟机所处的网络是 Routed 模式而是 NAT 模式的话,则无论如何也无法被其他物理机访问。

参考步骤:停止所有虚拟机 –> 记录原虚拟网络的名称和网段信息 –> 修改原虚拟网络的名称 –> 用原虚拟网络的名称和网段信息创建新的虚拟网络 –> 开启所有虚拟机

步骤二:在虚拟机的宿主机上开启 IP 地址转发

2.1 临时开启 IP 地址转发

2.1.1 通过修改 /proc/sys/net/ipv4/ip_forward 文件的方式临时开启 IP 地址转发
# echo 1 > /proc/sys/net/ipv4/ip_forward
2.2.2 通过 sysctl 命令的方式开启 IP 地址转发
# sysctl -w net.ipv4.ip_forward=1

2.2 永久开启 IP 地址转发

2.2.1 修改 /etc/sysctl.conf 文件
# vi /etc/sysctl.conf

添加以下内容:

......
net.ipv4.ip_forward = 1
2.2.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p

[命令] Linux 命令 findmnt 的使用 (显示目前挂载的文件系统)

案例一:显示目前挂载的文件系统

# findmnt

案例二:显示目前挂载的文件系统并取消过滤器 (显示所有挂载的文件系统)

# findmnt -A

或者:

# findmnt --all

案例三:显示目前挂载的文件系统并以 df 命令的输出格式显示出来 (可以和 -A 或者 –all 选项和作用一起使用)

# findmnt -D

或者:

# findmnt --df

或者:

# findmnt -I

或者:

# findmnt --dfi

案例四:显示目前挂载的文件系统并取消显示文件系统之间的上下级关系

# findmnt -l

或者:

# findmnt --list

案例五:显示目前挂载的文件系统但是指定要显示的文件系统

# findmnt -t xfs

或者:

# findmnt --types xfs

(补充:这里以只显示 xfs 文件系统为例)

案例六:显示目前挂载的文件系统并以 tree 命令的输出格式显示出来

# findmnt --tree

案例七:显示目前挂载的文件系统但是去掉重复的挂载点

# findmnt -U

或者:

# findmnt --uniq