如何重置CentOS 7的Root密码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重置CentOS 7的Root密码?相关的知识,希望对你有一定的参考价值。

以下是centos7重置root密码的方法:
1、开启虚拟机;
2、在弹出这个界面时,按上下键防止页面跳转,选择"CentOSLinux(3.10.0-1160.e17.x8664)7(Core)"并按e;
3、找到rocrashkernel=autoxxx,把ro换成rwinit=/sysroot/bin/sh;
4、使用组合键Ctrl+X进入单用户模式;
5、chroot/sysroot访问系统;
6、passwdroot重新输入新的root用户密码;
7、touch/.autorelabel创建标签文件;
8、exit返回刚刚的单用户模式;
9、reboot重启系统;
10、再次重启,输入刚才重新更改的用户密码就能登录系统了!
参考技术A CentOS 7&RHEL 7进入单用户方式和重置密码方式发生了较大变化,GRUB由b引导变成了ctrl+x引导。
重置密码主要有rd.break和init两种方法。
rd.break方法:
1、启动的时候,在启动界面,相应启动项,内核名称上按“e”;
2、进入后,找到linux16开头的地方,按“end”键到最后,输入rd.break,按ctrl+x进入;
3、进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限;
4、mount -o remount,rw /sysroot/,重新挂载,之后mount,发现有了r,w权限;
5、chroot /sysroot/ 改变根;
(1)echo RedHat|passwd –stdin root 修改root密码为redhat,或者输入passwd,交互修改;
(2)还有就是先cp一份,然后修改/etc/shadow文件
6、touch /.autorelabel 这句是为了selinux生效
7、ctrl+d 退出
8、然后reboot
至此,密码修改完成
init方法:
1. 启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式。
2. 在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh
3. 按Ctrl+x启动到shell。
4. 挂载文件系统为可写模式:mount –o remount,rw /
5. 运行passwd,并按提示修改root密码。
6. 如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel
7. 运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启
参考技术B 步骤一:开机启动时,在相应内核上按e进入编辑模式
步骤二:找到linux16开头那一行,移动光标到最后,输入rd.break,然后按ctrl+x
步骤三:重新挂载/sysroot可读写,mount -o remount,rw /sysroot
步骤四:切换chroot /sysroot
步骤五:更改root密码,echo "密码" | passwd --stdin root
步骤六:重启时selinux对系统relabel,touch / .autorelabel,没开selinux就不需要这一步
步骤七:退出exit
步骤八:重启reboot

如何在一定时间后重置计时器?

【中文标题】如何在一定时间后重置计时器?【英文标题】:How can I reset the timer after a certain duration? 【发布时间】:2017-03-24 19:37:35 【问题描述】:

我在下面的代码中设置了一个计时器。如何在每次达到给定持续时间(例如 7 秒)时重置计时器?

class SpriteGroup    
var sprites : [Sprite]
var isVisible : Bool
var startTime: TimeInterval = 0.0
var currentTime: TimeInterval = 0.0


init(sprites : [Sprite], isVisible: Bool, pos: CGPoint) 
    self.sprites = sprites
          ...       
    startTime = Date.timeIntervalSinceReferenceDate
    Timer.scheduledTimer(timeInterval: 1,
                         target: self,
                         selector: #selector(self.advanceTimer(timer:)),
                         userInfo: nil,
                         repeats: true)


   func advanceTimer(timer: Timer)

    currentTime = Date.timeIntervalSinceReferenceDate - startTime

【问题讨论】:

你为什么使用定时器?你真的需要使用定时器吗?与在更新函数中使用 SpriteKit 的内置处理时间方法 @RonMyschuk 我的代码中有很多复杂的操作。这就是SpriteGroup 具有currentTime 属性的原因。我需要能够监控每组精灵并偶尔打断他们的动作。基于此,我相信 Timer 对我来说会更好。 很公平......但您没有列出内置更新计时器无法处理的任何原因。我的理念是,当您已经在场景中运行工具时,为什么还要引入另一组对象?您可能还想查看此链接***.com/questions/23978209/spritekit-creating-a-timer @RonMyschuk 链接中的所有方法都在使用操作。即使偶尔我停止在精灵上运行所有动作,我仍然需要计时器来保持。 我认为您误解了该链接的意义。该链接所说的只是不要使用计时器,它使用动作的事实是无关紧要的。更新总是在运行,它永远不会停止(除非你暂停场景)事实上它每秒触发大约 60 次。您说链接无效,因为示例正在使用操作,但随后您谈到“停止运行所有操作”......我很困惑 【参考方案1】:

我可能会这样做

我添加了 Clouds 的一个子类,向您展示他们的 Timer 如何受到场景更新的影响,它只是以均匀的速度在场景中滚动云,而不管设备性能如何

private var lastUpdateTime: TimeInterval = 0.0

override func update(_ currentTime: TimeInterval) 

    //check if game is actually playing, don't want to update time if game is paused
    if lastUpdateTime == 0 || gameState != .playing 

        lastUpdateTime = currentTime
        return
    

    let delta = currentTime - lastUpdateTime

    if delta > 7 
        //this has now been 7 seconds so do something here
    

    //reset timer
    lastUpdateTime = currentTime

    enumerateChildNodes(withName: "cloud*", using:   cloud, stop in
        if let cloud = cloud as? Cloud 
            cloud.update(delta: delta)
        
    )


class Cloud: SKSpriteNode 

    private var minY: CGFloat = 0
    private var maxY: CGFloat = 0
    private var cloudWidth: CGFloat = 0

    private override init(texture: SKTexture?, color: UIColor, size: CGSize) 
        super.init(texture: texture, color: color, size: size)
    

    convenience init() 

        let texture = SKTexture(image: #imageLiteral(resourceName: "cloud1"))
        self.init(texture: texture, color: SKColor.white, size: texture.size())
    

    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
    

    func setup(type: CloudType) 

        texture = type.texture
        size = (texture?.size())!
        setScale(2.0)

        var midHeight = gameModel.gameHeight / 2
        if let anchorY = (self.parent as? SKScene)?.anchorPoint.y 
            midHeight = gameModel.gameHeight * anchorY
        

        self.minY = gameModel.gameHeight * 0.3 - midHeight
        self.maxY = gameModel.gameHeight * 0.9 - midHeight
        cloudWidth = self.size.width

        let randomY = RandomFloatBetween(min: minY, max: maxY)
        self.position = CGPoint(x: gameModel.gameWidth / 2 + cloudWidth, y: randomY)
    

    func update(delta: TimeInterval) 

        let speedX = CGFloat(delta) * 90
        self.position.x -= speedX

        if self.position.x <= 0 - (gameModel.gameWidth / 2 + cloudWidth) 
            resetCloud()
        
    

    private func resetCloud() 

        self.position.x = gameModel.gameWidth / 2 + cloudWidth
        self.position.y = RandomFloatBetween(min: minY, max: maxY)
        enabled = false
        run(.wait(forDuration: 5, withRange: 3), completion:  self.enabled = true )
    

【讨论】:

如果我理解你的话,Cloud 的类型是SKSpriteNode,所以你可以在游戏场景中使用enumerateChildNodes(..),但SpriteGroup(如上所示)不是SKSpriteNode 类型我将如何在游戏场景中更新它? 只要让它成为 SKSpriteNode 的子类,不会有什么坏处 真的,在使它成为 SKSpriteNode 的子类后,我遇到了一系列错误。我设法解决了其中一些问题,但目前我不确定能否解决这个问题。我添加了` super.init(texture: SKTexture!, color: UIColor, size: CGSize) super.init(texture: texture, color: color, size: size) `到我的init(在问题中)然后我得到了错误Cannot invoke 'SKSpriteNode.init' with an argument list of type ‘(texture: SKTexture!.Type.color:UIColor.Type, size:CGSize.Type, ()-&gt;())’ 子类化 SKSpriteNode 也是最好的方法吗?我预见到未来会出现问题,总是不得不提醒自己,虽然它是SKSpriteNode,但我并没有按照SKSpriteNode的说法使用它。 将此行添加到您的 init 'Super.init(texture: nil, color: .clear, size: CGSize.zero)'

以上是关于如何重置CentOS 7的Root密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何重置CentOS 7的Root密码

如何重置CentOS 7的Root密码?

如何重置CentOS 7的Root密码

如何重置CentOS 7的Root密码

如何重置CentOS 7的Root密码

如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置