2010-01-30 Paweł Hajdan, Jr. <phajdan.jr@gentoo.org>
* NEWS: Add support for TCB. * lib/tcbfuncs.h, lib/tcbfuncs.c, lib/Makefile.am: New library to support TCB. * lib/prototypes, libmisc/copydir.c (remove_tree): Add boolean parameter remove_root. * configure.in: Add conditional WITH_TCB. * src/userdel.c, src/usermod.c: Add support for TCB. Update call to remove_tree(). * src/pwconv.c, src/pwunconv.c: Should not be used with TCB enabled. * src/vipw.c: Add support for TCB. Update call to remove_tree(). * src/useradd.c: Add support for TCB. Open the shadow file outside of open_files(). * src/chage.c: Add support for TCB. * src/Makefile.am: Install passwd sgid shadow when TCB is enabled. * lib/getdefs.c, man/vipw.8.xml, man/login.defs.5.xml, man/login.defs/TCB_AUTH_GROUP.xml, man/login.defs/USE_TCB.xml, man/login.defs/TCB_SYMLINKS.xml, man/generate_mans.mak, man/generate_mans.deps, man/Makefile.am: New configuration parameters: TCB_AUTH_GROUP, TCB_SYMLINKS, USE_TCB. * lib/shadowio.c, lib/commonio.c: Add support for TCB.
This commit is contained in:
@ -63,6 +63,9 @@
|
||||
#include "sgroupio.h"
|
||||
#endif
|
||||
#include "shadowio.h"
|
||||
#ifdef WITH_TCB
|
||||
#include "tcbfuncs.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* exit status values
|
||||
@ -1438,7 +1441,7 @@ static void move_home (void)
|
||||
if (copy_tree (user_home, user_newhome,
|
||||
uflg ? (long int)user_newid : -1,
|
||||
gflg ? (long int)user_newgid : -1) == 0) {
|
||||
if (remove_tree (user_home) != 0) {
|
||||
if (remove_tree (user_home, true) != 0) {
|
||||
fprintf (stderr,
|
||||
_("%s: warning: failed to completely remove old home directory %s"),
|
||||
Prog, user_home);
|
||||
@ -1456,7 +1459,7 @@ static void move_home (void)
|
||||
|
||||
/* TODO: do some cleanup if the copy
|
||||
* was started */
|
||||
(void) remove_tree (user_newhome);
|
||||
(void) remove_tree (user_newhome, true);
|
||||
}
|
||||
fprintf (stderr,
|
||||
_("%s: cannot rename directory %s to %s\n"),
|
||||
@ -1655,7 +1658,7 @@ static void move_mailbox (void)
|
||||
return;
|
||||
}
|
||||
if (uflg) {
|
||||
if (fchown (fd, user_newid, (gid_t) - 1) < 0) {
|
||||
if (fchown (fd, user_newid, (gid_t) -1) < 0) {
|
||||
perror (_("failed to change mailbox owner"));
|
||||
}
|
||||
#ifdef WITH_AUDIT
|
||||
@ -1770,6 +1773,11 @@ int main (int argc, char **argv)
|
||||
#endif /* USE_PAM */
|
||||
#endif /* ACCT_TOOLS_SETUID */
|
||||
|
||||
#ifdef WITH_TCB
|
||||
if (!shadowtcb_set_user(user_name))
|
||||
exit(E_PW_UPDATE);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Do the hard stuff - open the files, change the user entries,
|
||||
* change the home directory, then close and update the files.
|
||||
@ -1784,6 +1792,13 @@ int main (int argc, char **argv)
|
||||
}
|
||||
close_files ();
|
||||
|
||||
#ifdef WITH_TCB
|
||||
if ((user_newname || user_newid != -1) &&
|
||||
!shadowtcb_move(user_newname, user_newid)) {
|
||||
exit(E_PW_UPDATE);
|
||||
}
|
||||
#endif
|
||||
|
||||
nscd_flush_cache ("passwd");
|
||||
nscd_flush_cache ("group");
|
||||
|
||||
|
Reference in New Issue
Block a user