Linux下VMware虚拟机报Could not open /dev/vmmon: No such file or directory. Please make sure that the kernel module `vmmon’ is loaded.错误的解决方法

问题描述

Linux下的VMware虚拟机在启动时报Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module `vmmon’ is loaded.错误。

解决办法

重新编译模块。

$sudo vmware-modconfig --console --install-all

再次运行即可。

Linux下VMware虚拟机启动时报Kernel headers for version 4.x-xxxx were not found. If you installed them[…]的错误的解决方法

问题表现

在Linux下安装完VMware虚拟机后启动虚拟机报:Kernel headers for version 4.x-xxxx were not found. If you installed them[…],具体报错如下图所示。
2018-02-20 08-50-33屏幕截图.png

解决方法

安装系统内核对应版本的linux-headers
例如,我的系统的内核版本是4.14.19,操作系统是Archlinux,就执行如下命令来安装。

$ sudo pacman -S linux-headers

之后再根据命令提示选择与内核版本对应的linux-headers
Ubuntu和Fedora用户则使用各自的包管理工具安装正确的linux-headers版本

安装后再次启动VMware会看到如下提示。
2018-02-20 16-50-27屏幕截图.png
点击install并按要求输入管理员密码即可。

解决Ubuntu下无法使用pthread库的问题(加-lpthread也不好使的情况)

导语

这个问题困扰了我很久,因为写一个飞机大战的小游戏需要用到多线程。看到Linux下的多线程可以用pthread.h库来实现,但该库不是C的标准库,所以编译的时候要加上-lpthread,可是,为在我的Ubuntu 16.04下如此编译的结果是报了这个错误:

/usr/bin/ld: 找不到 -lphtread
collect2: error: ld returned 1 exit status

为了解决这个问题,我在网上苦苦地搜了很久很久,最后无奈地发现:网上现有的文章基本上都是抄来抄去,全是胡言乱语。。。

正确的解决办法

安装manpages-posix软件包即可。

$ sudo apt install manpages-posix

再次编译即可通过!

光纤链路聚合使用哪种聚合方式比较好?

原题如下:

在SW3-1、 SW3-2之间的链路假设采用光纤链路互连,两端采用光纤收发器转换成RJ45接口,要求在两者间启用端口汇聚技术,聚合的方式根据题目推断选择合适的方式;

这个问题是我在一份外校老师发我的赛题上看到的,当时懵了一会,询问后得知:应使用静态方式聚合

至于原因嘛,目前还不晓得~

PPP认证时产生地址为对端的32位直连路由的解决方法

问题描述

在串口启用PPP认证后,会在路由表中多出一条地址为对端的32位直连路由,这在双点双向重发布中将产生路由环路,十分烦人!

类似下面这样:

C 202.90.1.0/30 is directly connected, Serial0/1
C 202.90.1.2/32 is directly connected, Serial0/1    //此条为PPP认证产生的路由,202.90.1.2为对端串口的地址

解决方法

在两边的串口上敲以下命令就好啦!

Router_config_s0/1#no peer neighbor-route    //禁止创建到对端的主机路由

dhclient报错:dhclient(3108) is already running – exiting.的解决方法

问题表现:
执行dhclient命令时抛出以下错误。

dhclient(3108) is already running - exiting.
This version of ISC DHCP is based on the release available
on ftp.isc.org. Features have been added and other changes
have been made to the base software release in order to make
it work better with this distribution.
Please report for this software via the CentOS Bugs Database:
 http://bugs.centos.org/
exiting.

解决方法:
查找dhclient进程。

[root@localhost ~]# ps -ef | grep dhclient
root 3108 1    0 04:36 ?     00:00:00 dhclient
root 4140 3013 0 05:16 pts/0 00:00:00 grep dhclient

可以看到进程ID是3108,杀死他。

[root@localhost ~]# kill -9 3108

之后再次执行dhclient就正常了。

vsftp在启用虚拟用户登录后本地系统用户登录无法进入家目录的解决方法

出现这种情况是因为在配置虚拟用户登录时启用了用户个性配置文件,而没有为系统用户创建个性配置文件,所以他们统统会进入到匿名用户的默认目录中,也就是/var/ftp目录中(前提是你没修改匿名用户的默认FTP目录的话)。
解决方法自然是为系统用户也分别创建个性配置文件并在其中指明其家目录。
然而这样做了之后你会发现,虽然这次可以登录到家目录了但依然无法查看、上传及下载文件。我分析原因可能是因为配置了guest_enable=YES,所以本地用户被自动映射到了guest的用户上,这样就对用户自身的家目录失去了操作权限。
想解决这个问题,就赋予其家目录777的权限,或是使用ACL权限只赋予guest所对应的用户对目录有操作权限(暂时没有找到其他好的解决办法,如果你知道,那么请告诉我~)。

vsftpd配置虚拟用户后登录提示530错误的解决方法

这个错误其实是提示你账户认证失败,那么就从有关账户认证的方面来排查错误。
查看日志。

tail /var/log/secure

下面是关于vsftpd账号登录失败的日志信息

Sep 21 07:50:44 localhost vsftpd[2154]: pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd/user.db': No such file or directory
Sep 21 07:50:44 localhost vsftpd[2154]: pam_unix(vsftpd:auth): check pass; user unknown
Sep 21 07:50:44 localhost vsftpd[2154]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=user1 rhost=192.168.1.252
Sep 21 07:50:44 localhost vsftpd[2154]: pam_succeed_if(vsftpd:auth): error retrieving information about user user1

注意到这一行:

Sep 21 07:50:44 localhost vsftpd[2154]: pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd/user.db': No such file or directory

提示说,找不到用户认证数据库文件,但是事实上这个文件是存在的,最后经过漫长的百度搜索后发现,原来是在pam的vsftpd的配置文件中填的数据库地址是不可以带.db后缀的,因为pam会自动加上.db,如果手动加了一个那么最后的后缀就变为了.db.db了,当然会提示说找不到配置文件啦!

vim /etc/pam.d/vsftpd

去掉不该有的.db后缀(图中红色箭头所指的部分)。

记录一个防火墙端口ping不通的问题

头一次接触防火墙,照着手册一顿配置后发现计算机ping不通网关(网关为防火墙三层端口)???
最后索性在防火墙上ping了下计算机,咦~是通的,这起码证明它们俩的通信应该是没问题,那问题的原因应该是防火墙上禁ping了。
查看了下防火墙的端口配置页面,发现了这个小细节。

本着试试看的心态,勾上了这个复选框之后再次尝试ping防火墙的端口,终于终于通了~~~

使用匿名用户登录vsftpd服务器时提示:500 OOPS: vsftpd: refusing to run with writable anonymous root

这个错误是由于你为FTP的根目录赋予了777权限,vsftpd的安全机制是不允许这种“不安全”的操作的,解决办法自然是对其稍稍进行一些限制啦。

[root@localhost ~]# chmod 755 /var/ftp

但此文件夹的所有者是root用户的,那如果又想让匿名用户具有上传权限要怎么做?
可以在/var/ftp目录下面再新建一个目录并赋予其777权限。总之,只要/var/ftp这个目录的权限不瞎改,其下面的其他文件或文件夹的权限可以随意~
还有,在/etc/vsftpd/vsftpd.conf配置文件中有一条:

anon_root=/var/ftp

这个选项是用于定义匿名用户的默认文件夹的,此选项的参数必须是和/etc/passwd文件中ftp用户的家目录一致,否则也会出现本文中所述的错误。

CentOS 6找不到partprobe命令的解决方法

今天在做CentOS 6下的软RAID时需要使用到partprobe命令使系统内核立即读取新分区,但悲催的是,最小化安装版的CentOS 6是没有这一命令的,百度搜了半天也没搜到解决办法,后来我索性查看了下我网站服务器的CentOS7上有没有这一命令,咦,我狗屎运就是好,还真查到了,赶紧查看了下这个命令属于哪一软件包。

[root@localhost ~]# rpm -qf /sbin/partprobe    //此命令是在可以使用partprobe命令的Linux服务器上执行的,不要傻傻地在自己的系统上试~
parted-3.1-28.el7.x86_64

唔,原来,想使用partprobe命令就要安装parted这个软件包呀!
那就安装呗。

yum install -y parted     //在你的系统上安装这个软件包就可以用partprobe命令啦!

大功告成后就会发现partprobe命令已经可以使用啦!

Linux下使用SSH客户端连接Linux服务器提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!的解决方法。

问题描述:
Linux下使用SSH客户端连接Linux服务器的时候抛出类似如下错误。

产生原因:
这是因为之前连接过一台与当前连接的Linux服务器使用相同IP但公钥不同的Linux服务器。系统中已经存储了此服务器的公钥,故再次连接时发现公钥变更,ssh客户端主动拒绝了连接。
解决方法:
清空~/.ssh/known_hosts文件,此文件中存放SSH客户端曾经连接的服务器的公钥信息。
echo “”> ~/.ssh/known_hosts
再次连接Linux服务器,SSH客户端会重新询问是否要接受服务器的公钥。

记录一个Linux下使用usermod修改用户家目录后产生的奇怪问题

问题描述:
学校机房的samba服务器中本来所有用户都是存放在/home目录下的,但是我在为用户统一修改权限时发现这样极不方便。因为老师和学生的权限肯定是不同的,但他们又都在同一个目录下,修改起来很麻烦。
我的解决办法是:在/home目录下新建一个teacher目录用来存放教师的用户家目录,再新建一个student用来存放学生的用户家目录,这样下次修改权限时就可以直接用通配符来分别为教师和学生修改了。
既然有了想法,就开始实施吧。
我选择使用usermod命令一个一个的辛苦的为每个用户修改家目录,而不是简单粗暴地修改/etc/passwd文件。
以下以“sxy”这个用户来做演示,注:此时我的工作目录在/home下,且/home/teacher与/home/student目录已创建。

usermod -md student/sxy sxy

修改后,查看/home下已经没有sxy这目录了,此目录已被迁移至/home/student下。
然而, 重点来了!!!!
虽然成功的迁移了目录,但是我用windows登陆samba服务器的时候点sxy这个共享目录竟然提示我“找不到路径”???注:此处的sxy共享是使用[homes]配置的。
排错过程:
我的第一步:怀疑,是不是因为samba的用户数据库中记录的还是旧的文件路径,要将用户重新加入数据库才能解决问题?
结果:用户重新加入samba数据库后问题依旧。
第二步:怀疑,是不是samba的[homes]字段必须使用默认的家目录路径,也是就是存放在/home下,不能自定义家目录?
结果:新建了一个系统用户“test”,创建用户时指定其家目录为/home/student/test并将其加入samba用户数据库中后,发现其家目录的共享可正常访问。
第三步:陷入沉思~~~随后怀疑,是不是因为usermod命令修改用户家目录改的不够彻底(比如说,某些系统配置文件中的用户家目录的路径还是以前的)。
结果:删除一个samba家目录共享无法访问的用户“lzl”,并在重新建立时使用相同的用户名,且指定家目录为/home/student/lzl同时加入到samba用户数据库中后samba的家目录共享又可以正常访问了。
第四步:感觉上,第三步中貌似找到了问题的原因。就在我准备一个个删除并重建用户时突然一个想法冒出来,我是不是可以切换到一个之前修改过家目录的“问题用户”上,来看看其家目录到底变没变。
结果:使用su – sxy命令尝试切换到“sxy”这个用户上时抛出错误:

第五步:我注意到,第四步的报错中的路径是相对路径而不是绝对路径,马上查看/etc/passwd文件,发现,所有的“问题用户”的家目录都是相对路径而正常用户都是绝对路径。
问题用户:

正常用户:

至此,问题的原因彻底搞清楚了,那就是因为我在使用usermod修改家目录时使用的是相对路径。
解决办法:使用usermod命令重新修改为绝对路径,或直接改/etc/passwd文件。