Re: Final conversion questions

From: Bob Martin (bob_at_buckhorn.net)
Date: 02/29/04

  • Next message: Paul Schenkeveld: "Re: Final conversion questions"
    Date: Sun, 29 Feb 2004 10:51:31 -0600
    
    
    

    Scott,
    Paul is absolutely right. The perl script is missing a line:
    next unless $home =~ /home/;

    See new attachment. Sorry about that. I grabbed the wrong script.

    Bob

    Paul Schenkeveld wrote:
    > Hi Scott, Bob, All,
    >
    > PLEASE be VERY CAREFULL with the perl script. The first account
    > in /etc/passwd is root with / as its home directory, so everything
    > will be chown'd to root. Later they ge chown'd to operator, bin, tty,
    > kmem and so on because all these accounts have / as their home dir.
    >
    > Files for normal users will eventually be corrected once their accounts
    > are encountered later in the password file but ownership/group
    > membership of all system files and directories will be lost forever this
    > way.
    >
    > You could use this perl script on a copy op /etc/passwd with all
    > system accounts removed, leaving just the normal users and you'll
    > be fine.
    >
    > Or - without perl - the following lines can be cut-n-pasted directly
    > into a /bin/sh compatible shell to do what you want to do, assuming
    > all normal users have home directories living under /home.
    >
    > awk -F: '$6 ~ "^/home/" {print $6, $3, $4}' /etc/passwd |
    > while read dir uid gid
    > do
    > chown -R $uid:$gid $dir
    > done
    >
    > Regards,
    >
    > Paul Schenkeveld, Consultant
    > PSconsult ICT Services BV
    >
    > On Sun, Feb 29, 2004 at 12:42:01AM -0600, Bob Martin wrote:
    >
    >>Scott,
    >>After you move the directories, use the attached perl script (run as
    >>root). Use the -r option to scp, and you'll get all files, including .
    >>files.
    >>
    >>Bob Martin
    >>
    >>
    >>
    >>Scott St. John wrote:
    >>
    >>>Bob-
    >>>
    >>>I do not have a NFS connection between the two boxes, I am using scp to
    >>>transfer files between the Linux and the new FreebSD boxes. I used John
    >>>The Ripper to merge my passwd and shadow files and then used some awk
    >>>scripts from the OpenBSD site to format, then create my new passwd file
    >>>for BSD. I am almost sure the UID/GID will NOT be the same since BSD
    >>>starts at a different # than Linux where my first UID is 1000.
    >>>
    >>>If you have it, it sounds like the perl script would be the better trick
    >>>since it would check the passwd file instead of assuming the UID/GID were
    >>>the same.
    >>>
    >>>Thanks!
    >>>
    >>>-Scott
    >>>
    >>>On Sat, 28 Feb 2004 13:53:12 -0600, Bob Martin wrote
    >>>
    >>>
    >>>>Scott,
    >>>>I haven't followed this thread closely enough, but from what you're
    >>>>saying, it sounds like you have a NFS connection between the 2 boxen.
    >>>>That being the case, and since the UID/GID's are the same on both boxen
    >>>>(IIRC you moved the Linux accounts to the BSD box), the following
    >>>>command will get all of the files, and maintain the permissions:
    >>>>
    >>>>cp -pRP /<linux mount point/home/* /home/
    >>>>
    >>>>If the UID/GID's have changed, then this command will fix them for you:
    >>>>(Note, this assumes you use bash as your shell)
    >>>>cd /home
    >>>>for a in `ls -1 /home`;do chown -R $a:users $a;done
    >>>>
    >>>>That command does assume that you have a 1 to 1 relationship between
    >>>>home directories and usernames. If not, let me know and I'll find my
    >>>>little perl script that reads /etc/passwd and sets the permissions.
    >>>
    >>>
    >>>_______________________________________________
    >>>freebsd-isp@freebsd.org mailing list
    >>>http://lists.freebsd.org/mailman/listinfo/freebsd-isp
    >>>To unsubscribe, send any mail to "freebsd-isp-unsubscribe@freebsd.org"
    >
    >
    >>#!/usr/bin/perl
    >>$Home = "/home";
    >>
    >>open(PASSWD, '/etc/passwd') or die("Can't open password: $!\n");
    >>while (<PASSWD>) {
    >> chomp;
    >> ($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(/:/);
    >> system("chown -R $uid:$gid $home") or die("Error: $!\n");
    >> print "$login, $uid, $gid, $home\n";
    >>}
    >
    >
    >>_______________________________________________
    >>freebsd-isp@freebsd.org mailing list
    >>http://lists.freebsd.org/mailman/listinfo/freebsd-isp
    >>To unsubscribe, send any mail to "freebsd-isp-unsubscribe@freebsd.org"
    >
    >
    > _______________________________________________
    > freebsd-isp@freebsd.org mailing list
    > http://lists.freebsd.org/mailman/listinfo/freebsd-isp
    > To unsubscribe, send any mail to "freebsd-isp-unsubscribe@freebsd.org"

    
    

    #!/usr/bin/perl
    $Home = "/home";

    open(PASSWD, '/etc/passwd') or die("Can't open password: $!\n");
    while (<PASSWD>) {
            chomp;
            ($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(/:/);
            next unless $home =~ /home/;
            print "Processing: $home\n";
            system("chown -R $uid:$gid $home");
    }

    
    

    _______________________________________________
    freebsd-isp@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-isp
    To unsubscribe, send any mail to "freebsd-isp-unsubscribe@freebsd.org"


  • Next message: Paul Schenkeveld: "Re: Final conversion questions"

    Relevant Pages

    • Re: Final conversion questions
      ... PLEASE be VERY CAREFULL with the perl script. ... in /etc/passwd is root with / as its home directory, ... will be chown'd to root. ... Files for normal users will eventually be corrected once their accounts ...
      (freebsd-isp)
    • Re: Sensitive data in scripts
      ... > want to write a Perl script for myself that uses several sensitive ... What are ways that programmers use to protect sensitive ... so go ahead and put all your money into these accounts. ... I'd be happy to check your work after all the money is ...
      (comp.unix.programmer)
    • Re: How to find all files containing a certaing (text) string?
      ... > I want to find all files matching *.log which contain the string ... "paul" inside. ... I just did a very quick Perl script, which may be broken in some way I ...
      (comp.unix.shell)
    • Re: spamass-milter keeps dying
      ... den 01.08.2005 schrieb Paul Howarth um 11:42: ... You already added the wrapper script. ... The Perl script may be worth to be adopted for spamass-milter (of course ... I would prefer a stable milter application, ...
      (Fedora)
    • Re: Active Directory and Perl advice
      ... > I am being asked to create a perl script to migrate AD accounts from one ... Offer Kaye ... Prev by Date: ...
      (perl.beginners)