Ignore:
Timestamp:
07/10/13 11:08:30 (20 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1
Children:
ed24336f
Parents:
e961598
Message:

Add ability to PEFS encrypt users home-directories when we
create a new user via the user-manager GUI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/pc-usermanager/usermanagerback.cpp

    r1620346 r87d35b7  
    207207} 
    208208 
     209void UserManagerBackend::setEnc(QString username, bool nEnc) 
     210{ 
     211    userList[username].setEnc(nEnc); 
     212} 
     213 
    209214int UserManagerBackend::validateFullname(QString fullname) { 
    210215    int result = 0; 
     
    357362                args << "usermod"; 
    358363                args << userIt->getUsername(); 
    359                 args << "-d"; 
    360                 args << userIt->getHome(); 
     364                // Only change home-dir on non-encrypted users 
     365                if ( ! userIt->getEnc() ) { 
     366                  args << "-d"; 
     367                  args << userIt->getHome(); 
     368                } 
    361369                args << "-s"; 
    362370                args << userIt->getShell(); 
     
    370378                if (userIt->getPassword() != "") 
    371379                { 
     380                    // Refuse to continue if we are trying to change PW 
     381                    // On an encrypted users homedir 
     382                    if ( userIt->getEnc() ) { 
     383                      qDebug() << "Cannot change encrypted password: " << userIt->getUsername(); 
     384                      break; 
     385                    } 
     386                    qDebug() << "Changing password: " << userIt->getUsername(); 
    372387                    args.clear(); 
    373388                    if ( ! chroot.isEmpty() ) 
     
    386401                qDebug() << "Adding user " << userIt->getUsername(); 
    387402                // Create the new home-directory 
    388                 if ( chroot.isEmpty() ) 
     403                if ( chroot.isEmpty() ) { 
    389404                   system("/usr/local/share/pcbsd/scripts/mkzfsdir.sh " + userIt->getHome().toLatin1() ); 
    390                 else { 
     405                   system("pw groupadd " + userIt->getUsername().toLatin1() ); 
     406                } else { 
    391407                   system("mkdir -p " + chroot.toLatin1() + "/" + userIt->getHome().toLatin1() + " 2>/dev/null" ); 
    392408                   system("chroot " + chroot.toLatin1() + " ln -s /usr/home /home 2>/dev/null" ); 
     409                   system("chroot " + chroot.toLatin1() + " pw groupadd " + userIt->getUsername().toLatin1() ); 
    393410                } 
    394411 
     
    399416                args << "-c"; 
    400417                args << userIt->getFullname(); 
     418                args << "-m"; 
    401419                args << "-d"; 
    402420                args << userIt->getHome(); 
     
    407425                    args << "-g"; 
    408426                    args << QString::number(userIt->getGid()); 
     427                } else { 
     428                    args << "-g"; 
     429                    args << userIt->getUsername(); 
    409430                } 
    410431                args << "-G"; 
    411432                args << "operator"; 
    412                 args << "-m"; 
    413433                if ( ! chroot.isEmpty() ) 
    414434                   QProcess::execute("chroot", args); 
     
    439459                   system("chroot " + chroot.toLatin1() + " chown -R " + userIt->getUsername().toLatin1() +":" + userIt->getUsername().toLatin1() + " "  + userIt->getHome().toLatin1() ); 
    440460 
     461                // Are we enabling encryption? 
     462                if ( userIt->getEnc() ) { 
     463                   system("enable_user_pefs " + userIt->getUsername().toLatin1() + " " + userIt->getClearPassword().toLatin1() ); 
     464                } 
     465 
    441466                break; 
    442467            case 3: 
    443468                //Delete User 
    444469                qDebug() << "Deleting user " << userIt->getUsername(); 
     470 
     471                if(userIt->getEnc()) { 
     472                  // Unmount PEFS 
     473                  system("umount " + userIt->getHome().toLatin1() ); 
     474                } 
    445475                if ( ! chroot.isEmpty() ) 
    446476                   args << chroot << "pw"; 
Note: See TracChangeset for help on using the changeset viewer.