1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import os
- from infra.basetest import BRTest
- class TestShadow(BRTest):
- username = 'user_test'
- # Need to use a different toolchain than the default due to
- # shadow package requiring a toolchain w/ headers >= 4.14
- config = \
- """
- BR2_arm=y
- BR2_TOOLCHAIN_EXTERNAL=y
- BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
- BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE=y
- BR2_PACKAGE_SHADOW=y
- BR2_TARGET_ROOTFS_EXT2=y
- BR2_TARGET_ROOTFS_EXT2_4=y
- BR2_TARGET_ROOTFS_EXT2_SIZE="65536"
- """
- timeout = 60
- def login(self):
- img = os.path.join(self.builddir, "images", "rootfs.ext4")
- self.emulator.boot(arch="armv7",
- kernel="builtin",
- kernel_cmdline=["root=/dev/mmcblk0",
- "rootfstype=ext4"],
- options=["-drive", f"file={img},if=sd,format=raw"])
- self.emulator.login()
- def test_nologin(self):
- self.login()
- self.assertRunOk("! nologin")
- cmd = 'test "$(nologin)" = "This account is currently not available."'
- self.assertRunOk(cmd)
- def test_useradd_del(self):
- username = self.username
- self.login()
- self.assertRunOk(f'userdel {username} || true')
- self.assertRunOk(f'groupdel {username} || true')
- self.assertRunOk(f'useradd -s /bin/sh {username}')
- self.assertRunOk(f'test $(su {username} -c "whoami") = {username}')
- self.assertRunOk(f'userdel {username}')
- def test_usermod(self):
- username = self.username
- new_home = '/tmp'
- self.login()
- self.assertRunOk(f'userdel {username} || true')
- self.assertRunOk(f'groupdel {username} || true')
- self.assertRunOk(f'useradd -s /bin/sh {username}')
- self.assertRunOk(f'usermod {username} --home {new_home}')
- self.assertRunOk(f'test $(su {username} -c \'echo $HOME\') = {new_home}')
- self.assertRunOk(f'userdel {username}')
|