Date: Sun, 29 Feb 2004 17:00:38 +0100 From: Paul Schenkeveld <fb-isp@psconsult.nl> To: freebsd-isp@freebsd.org Cc: "Scott St. John" <ssj@scottah.com> Subject: Re: Final conversion questions Message-ID: <20040229160038.GA36107@psconsult.nl> In-Reply-To: <404189B9.6040801@buckhorn.net> References: <20040228191105.M42305@scottah.com> <4040F1A8.1070108@buckhorn.net> <20040228211439.M89441@scottah.com> <404189B9.6040801@buckhorn.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040229160038.GA36107>
