diff options
Diffstat (limited to 'meta/classes/useradd_base.bbclass')
| -rw-r--r-- | meta/classes/useradd_base.bbclass | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/meta/classes/useradd_base.bbclass b/meta/classes/useradd_base.bbclass index 0d0bdb80f5..7f5b9b7219 100644 --- a/meta/classes/useradd_base.bbclass +++ b/meta/classes/useradd_base.bbclass | |||
| @@ -145,3 +145,21 @@ perform_usermod () { | |||
| 145 | fi | 145 | fi |
| 146 | set -e | 146 | set -e |
| 147 | } | 147 | } |
| 148 | |||
| 149 | perform_passwd_expire () { | ||
| 150 | local rootdir="$1" | ||
| 151 | local opts="$2" | ||
| 152 | bbnote "${PN}: Performing equivalent of passwd --expire with [$opts]" | ||
| 153 | # Directly set sp_lstchg to 0 without using the passwd command: Only root can do that | ||
| 154 | local username=`echo "$opts" | awk '{ print $NF }'` | ||
| 155 | local user_exists="`grep "^$username:" $rootdir/etc/passwd || true`" | ||
| 156 | if test "x$user_exists" != "x"; then | ||
| 157 | eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO sed -i \''s/^\('$username':[^:]*\):[^:]*:/\1:0:/'\' $rootdir/etc/shadow \" || true | ||
| 158 | local passwd_lastchanged="`grep "^$username:" $rootdir/etc/shadow | cut -d: -f3`" | ||
| 159 | if test "x$passwd_lastchanged" != "x0"; then | ||
| 160 | bbfatal "${PN}: passwd --expire operation did not succeed." | ||
| 161 | fi | ||
| 162 | else | ||
| 163 | bbnote "${PN}: user $username doesn't exist, not expiring its password" | ||
| 164 | fi | ||
| 165 | } | ||
