Date: Sun, 29 Feb 2004 10:51:31 -0600 From: Bob Martin <bob@buckhorn.net> Cc: "Scott St. John" <ssj@scottah.com> Subject: Re: Final conversion questions Message-ID: <40421893.6000303@buckhorn.net> In-Reply-To: <20040229160038.GA36107@psconsult.nl> References: <20040228191105.M42305@scottah.com> <4040F1A8.1070108@buckhorn.net> <20040228211439.M89441@scottah.com> <404189B9.6040801@buckhorn.net> <20040229160038.GA36107@psconsult.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------040604000603070307090603 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit 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" --------------040604000603070307090603 Content-Type: text/plain; name="HomePerms.pl" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="HomePerms.pl" #!/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"); } --------------040604000603070307090603--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40421893.6000303>