From c09a28919ed0e04de0e568290e0e6ab9e40162ee Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 12 Jan 2017 13:44:11 +0100 Subject: [PATCH] Make sure to disable the root password if setRootPassword is false. CAL-442 #comment This should be fixed now, please test and report back. --- src/modules/users/SetPasswordJob.cpp | 16 +++++++++++++++- src/modules/users/UsersPage.cpp | 8 +++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/modules/users/SetPasswordJob.cpp b/src/modules/users/SetPasswordJob.cpp index 4828aec93..5121a7632 100644 --- a/src/modules/users/SetPasswordJob.cpp +++ b/src/modules/users/SetPasswordJob.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,6 +59,20 @@ SetPasswordJob::exec() return Calamares::JobResult::error( tr( "Bad destination system path." ), tr( "rootMountPoint is %1" ).arg( destDir.absolutePath() ) ); + if ( m_userName == "root" && + m_newPassword.isEmpty() ) //special case for disabling root account + { + int ec = CalamaresUtils::System::instance()-> + targetEnvCall( { "passwd", + "-dl", + m_userName } ); + if ( ec ) + return Calamares::JobResult::error( tr( "Cannot disable root account." ), + tr( "passwd terminated with error code %1." ) + .arg( ec ) ); + return Calamares::JobResult::ok(); + } + QString encrypted = QString::fromLatin1( crypt( m_newPassword.toLatin1(), QString( "$6$%1$" ) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 9766843fd..87e64deb1 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -138,6 +138,12 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) ui->textBoxRootPassword->text() ); list.append( Calamares::job_ptr( j ) ); } + else + { + j = new SetPasswordJob( "root", + "" ); //explicitly disable root password + list.append( Calamares::job_ptr( j ) ); + } j = new SetHostNameJob( ui->textBoxHostname->text() ); list.append( Calamares::job_ptr( j ) );