Re: Final conversion questions

From: Paul Schenkeveld (fb-isp_at_psconsult.nl)
Date: 02/29/04

  • Next message: Bill Vermillion: "Re: Final conversion questions"
    Date: Sun, 29 Feb 2004 17:00:38 +0100
    To: freebsd-isp@freebsd.org
    
    

    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"


  • Next message: Bill Vermillion: "Re: Final conversion questions"

    Relevant Pages

    • Re: scp as root, but not ssh?
      ... Is it possible to allow scp between machines as root ... # Use this to prevent accounts from doing anything other than scp ... # only within their own HOME directory. ...
      (comp.unix.solaris)
    • standard users in /etc/passwd
      ... used by the shutdown command? ... What is the point of having an account with no login shell (i.e. ... does the the user "operator" have /root as its home directory? ... Is there a reason why the standard accounts are setup the way they ...
      (comp.unix.admin)
    • standard users in /etc/passwd
      ... used by the shutdown command? ... What is the point of having an account with no login shell (i.e. ... does the the user "operator" have /root as its home directory? ... Is there a reason why the standard accounts are setup the way they ...
      (comp.unix.questions)
    • standard users in /etc/passwd
      ... used by the shutdown command? ... What is the point of having an account with no login shell (i.e. ... does the the user "operator" have /root as its home directory? ... Is there a reason why the standard accounts are setup the way they ...
      (comp.unix.misc)
    • Re: Final conversion questions
      ... Paul is absolutely right. ... > PLEASE be VERY CAREFULL with the perl script. ... > kmem and so on because all these accounts have / as their home dir. ... > Files for normal users will eventually be corrected once their accounts ...
      (freebsd-isp)