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 ) );