zoukankan      html  css  js  c++  java
  • linux下用非root用户重启导致ssh无法连接的问题

    问题描述

    安装好了centOS服务器,一直用Secure CRT工具通过ssh服务来远程连接linux,很方便的进行各种操作。今天偶然尝试了一下在非root的一般用户下执行重启服务器的命令,发现一般用户是没有权限执行重启的,果断使用sudo命令再次执行,终于重启成功,却发现Secure CRT再也连不上服务器了,郁闷不已,去网上查找各种资料总算有了一点粗浅的认识,记录下来,也让其他的linux beginner们能够少走些弯路吧。

    普通用户下执行重启命令:

    shutdown -r now  或者  reboot

    其中-r为重启,改为-h则为关机;而now为马上,也可以改成数字,单位是分钟,也是使用shutdown命令可以实现定时关机和重启。

    以上的命令在普通用户下是没有权限执行的,需要sudo,有关sudo命令的配置在之前的博文中已经详细解释过(参见:http://www.cnblogs.com/bxljoy/p/3868494.html):

    sudo shutdown -r now
    
    input passwd:

    根据提示输入该用户的密码,回车执行,系统开始重启,Secure CRT的ssh连接自动断开,然后就会无法连接了。

    原因及解决方案

    我经过测试发现,如果切换到root用户下,执行上述的重启命令是正常的,可以用ssh连接到服务器,所以问题的原因应该是普通用户重启之后网络不通。

    在之前的博文中我们曾经介绍过linux的网络配置,/etc/sysconfig/network-scripts/ifcfg-eth0的配置文件中,ONBOOT=yes必须设置,这样可以保证系统重启时,网络服务也会自启动,否则会导致网络不通。

    而我们知道,重启动网络服务的命令为:

    service network restart

    而重启服务的命令的执行必须要有root用户的权限,所以通过一般用户进行重启后,执行此类重启服务的命令都没有足够的权限,从而导致了服务的启动失败。

    这也是我自己猜测,并没有找到太详细的资料,希望有高手能够对这个问题进行详细的解释。

    另外,linux重启时,会执行/etc/rc*.d目录下的各种服务启动脚本,而/etc/rc*.d其实是/etc/rc.d/rc*.d的链接(类似于windows的快捷方式),其中,我在/etc/rc.d/rc.local文件中找到了service network restart的命令,不知道是否执行的就是这里的服务启动命令,希望高手指正。

     

  • 相关阅读:
    Angular中文api
    Angular各版本和组件下载
    判断一个浏览器是否支持opacity
    查找函数参数名称
    运行时代码求值
    简单的动画引擎
    利用闭包特性改写addEventListener的回调函数
    springboot指定redis库编号配置实现
    springboot获取IOC(ApplicationContext)实例
    ajax-springMVC提交表单的方式
  • 原文地址:https://www.cnblogs.com/bxljoy/p/3899233.html
Copyright © 2011-2022 走看看