Add regression test for 'usermod -rG' -- it should not add users to groups they did not previously belong to
This commit is contained in:
		
				
					committed by
					
						 Serge Hallyn
						Serge Hallyn
					
				
			
			
				
	
			
			
			
						parent
						
							899f7a43b1
						
					
				
				
					commit
					20f8ead9ec
				
			| @@ -0,0 +1,4 @@ | |||||||
|  | user foo, in group users (only in /etc/group) | ||||||
|  | user bar, in group users (only in /etc/group) | ||||||
|  | user foo, in group floppy | ||||||
|  | user bar, in group fax | ||||||
| @@ -0,0 +1,36 @@ | |||||||
|  | # Default values for useradd(8) | ||||||
|  | # | ||||||
|  | # The SHELL variable specifies the default login shell on your | ||||||
|  | # system. | ||||||
|  | # Similar to DHSELL in adduser. However, we use "sh" here because | ||||||
|  | # useradd is a low level utility and should be as general | ||||||
|  | # as possible | ||||||
|  | SHELL=/bin/foobar | ||||||
|  | # | ||||||
|  | # The default group for users | ||||||
|  | # 100=users on Debian systems | ||||||
|  | # Same as USERS_GID in adduser | ||||||
|  | # This argument is used when the -n flag is specified. | ||||||
|  | # The default behavior (when -n and -g are not specified) is to create a | ||||||
|  | # primary user group with the same name as the user being added to the | ||||||
|  | # system. | ||||||
|  | GROUP=10 | ||||||
|  | # | ||||||
|  | # The default home directory. Same as DHOME for adduser | ||||||
|  | HOME=/tmp | ||||||
|  | # | ||||||
|  | # The number of days after a password expires until the account  | ||||||
|  | # is permanently disabled | ||||||
|  | INACTIVE=12 | ||||||
|  | # | ||||||
|  | # The default expire date | ||||||
|  | EXPIRE=2007-12-02 | ||||||
|  | # | ||||||
|  | # The SKEL variable specifies the directory containing "skeletal" user | ||||||
|  | # files; in other words, files such as a sample .profile that will be | ||||||
|  | # copied to the new user's home directory when it is created. | ||||||
|  | # SKEL=/etc/skel | ||||||
|  | # | ||||||
|  | # Defines whether the mail spool should be created while | ||||||
|  | # creating the account | ||||||
|  | # CREATE_MAIL_SPOOL=yes | ||||||
| @@ -0,0 +1,43 @@ | |||||||
|  | root:x:0: | ||||||
|  | daemon:x:1: | ||||||
|  | bin:x:2: | ||||||
|  | sys:x:3:root | ||||||
|  | adm:x:4:root | ||||||
|  | tty:x:5: | ||||||
|  | disk:x:6: | ||||||
|  | lp:x:7:root | ||||||
|  | mail:x:8: | ||||||
|  | news:x:9: | ||||||
|  | uucp:x:10: | ||||||
|  | man:x:12: | ||||||
|  | proxy:x:13: | ||||||
|  | kmem:x:15: | ||||||
|  | dialout:x:20: | ||||||
|  | fax:x:21:bar | ||||||
|  | voice:x:22: | ||||||
|  | cdrom:x:24: | ||||||
|  | floppy:x:25:foo | ||||||
|  | tape:x:26: | ||||||
|  | sudo:x:27: | ||||||
|  | audio:x:29: | ||||||
|  | dip:x:30: | ||||||
|  | www-data:x:33: | ||||||
|  | backup:x:34: | ||||||
|  | operator:x:37: | ||||||
|  | list:x:38: | ||||||
|  | irc:x:39: | ||||||
|  | src:x:40: | ||||||
|  | gnats:x:41: | ||||||
|  | shadow:x:42: | ||||||
|  | utmp:x:43: | ||||||
|  | video:x:44: | ||||||
|  | sasl:x:45: | ||||||
|  | plugdev:x:46: | ||||||
|  | staff:x:50: | ||||||
|  | games:x:60: | ||||||
|  | users:x:100:foo,bar | ||||||
|  | nogroup:x:65534: | ||||||
|  | crontab:x:101: | ||||||
|  | Debian-exim:x:102: | ||||||
|  | foo:x:1000: | ||||||
|  | bar:x:1001: | ||||||
| @@ -0,0 +1,42 @@ | |||||||
|  | root:*:: | ||||||
|  | daemon:*:: | ||||||
|  | bin:*:: | ||||||
|  | sys:*::root | ||||||
|  | adm:*::root | ||||||
|  | tty:*:: | ||||||
|  | disk:*:: | ||||||
|  | lp:*::root | ||||||
|  | mail:*:: | ||||||
|  | news:*:: | ||||||
|  | uucp:*:: | ||||||
|  | man:*:: | ||||||
|  | proxy:*:: | ||||||
|  | kmem:*:: | ||||||
|  | dialout:*:: | ||||||
|  | fax:*::bar | ||||||
|  | voice:*:: | ||||||
|  | cdrom:*:: | ||||||
|  | floppy:*::foo | ||||||
|  | tape:*:: | ||||||
|  | sudo:*:: | ||||||
|  | audio:*:: | ||||||
|  | dip:*:: | ||||||
|  | www-data:*:: | ||||||
|  | backup:*:: | ||||||
|  | operator:*:: | ||||||
|  | list:*:: | ||||||
|  | irc:*:: | ||||||
|  | src:*:: | ||||||
|  | gnats:*:: | ||||||
|  | shadow:*:: | ||||||
|  | utmp:*:: | ||||||
|  | video:*:: | ||||||
|  | sasl:*:: | ||||||
|  | plugdev:*:: | ||||||
|  | staff:*:: | ||||||
|  | games:*:: | ||||||
|  | users:*:: | ||||||
|  | nogroup:*:: | ||||||
|  | crontab:x:: | ||||||
|  | Debian-exim:x:: | ||||||
|  | foo:*:: | ||||||
| @@ -0,0 +1,21 @@ | |||||||
|  | root:x:0:0:root:/root:/bin/bash | ||||||
|  | daemon:x:1:1:daemon:/usr/sbin:/bin/sh | ||||||
|  | bin:x:2:2:bin:/bin:/bin/sh | ||||||
|  | sys:x:3:3:sys:/dev:/bin/sh | ||||||
|  | sync:x:4:65534:sync:/bin:/bin/sync | ||||||
|  | games:x:5:60:games:/usr/games:/bin/sh | ||||||
|  | man:x:6:12:man:/var/cache/man:/bin/sh | ||||||
|  | lp:x:7:7:lp:/var/spool/lpd:/bin/sh | ||||||
|  | mail:x:8:8:mail:/var/mail:/bin/sh | ||||||
|  | news:x:9:9:news:/var/spool/news:/bin/sh | ||||||
|  | uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh | ||||||
|  | proxy:x:13:13:proxy:/bin:/bin/sh | ||||||
|  | www-data:x:33:33:www-data:/var/www:/bin/sh | ||||||
|  | backup:x:34:34:backup:/var/backups:/bin/sh | ||||||
|  | list:x:38:38:Mailing List Manager:/var/list:/bin/sh | ||||||
|  | irc:x:39:39:ircd:/var/run/ircd:/bin/sh | ||||||
|  | gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh | ||||||
|  | nobody:x:65534:65534:nobody:/nonexistent:/bin/sh | ||||||
|  | Debian-exim:x:102:102::/var/spool/exim4:/bin/false | ||||||
|  | foo:x:1000:1000::/home/foo:/bin/false | ||||||
|  | bar:x:1001:1001::/home/foo:/bin/false | ||||||
| @@ -0,0 +1,21 @@ | |||||||
|  | root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: | ||||||
|  | daemon:*:12977:0:99999:7::: | ||||||
|  | bin:*:12977:0:99999:7::: | ||||||
|  | sys:*:12977:0:99999:7::: | ||||||
|  | sync:*:12977:0:99999:7::: | ||||||
|  | games:*:12977:0:99999:7::: | ||||||
|  | man:*:12977:0:99999:7::: | ||||||
|  | lp:*:12977:0:99999:7::: | ||||||
|  | mail:*:12977:0:99999:7::: | ||||||
|  | news:*:12977:0:99999:7::: | ||||||
|  | uucp:*:12977:0:99999:7::: | ||||||
|  | proxy:*:12977:0:99999:7::: | ||||||
|  | www-data:*:12977:0:99999:7::: | ||||||
|  | backup:*:12977:0:99999:7::: | ||||||
|  | list:*:12977:0:99999:7::: | ||||||
|  | irc:*:12977:0:99999:7::: | ||||||
|  | gnats:*:12977:0:99999:7::: | ||||||
|  | nobody:*:12977:0:99999:7::: | ||||||
|  | Debian-exim:!:12977:0:99999:7::: | ||||||
|  | foo:!:12977:0:99999:7::: | ||||||
|  | bar:!:12977:0:99999:7::: | ||||||
| @@ -0,0 +1,43 @@ | |||||||
|  | root:x:0: | ||||||
|  | daemon:x:1: | ||||||
|  | bin:x:2: | ||||||
|  | sys:x:3:root | ||||||
|  | adm:x:4:root | ||||||
|  | tty:x:5: | ||||||
|  | disk:x:6: | ||||||
|  | lp:x:7:root | ||||||
|  | mail:x:8: | ||||||
|  | news:x:9: | ||||||
|  | uucp:x:10: | ||||||
|  | man:x:12: | ||||||
|  | proxy:x:13: | ||||||
|  | kmem:x:15: | ||||||
|  | dialout:x:20: | ||||||
|  | fax:x:21:bar | ||||||
|  | voice:x:22: | ||||||
|  | cdrom:x:24: | ||||||
|  | floppy:x:25: | ||||||
|  | tape:x:26: | ||||||
|  | sudo:x:27: | ||||||
|  | audio:x:29: | ||||||
|  | dip:x:30: | ||||||
|  | www-data:x:33: | ||||||
|  | backup:x:34: | ||||||
|  | operator:x:37: | ||||||
|  | list:x:38: | ||||||
|  | irc:x:39: | ||||||
|  | src:x:40: | ||||||
|  | gnats:x:41: | ||||||
|  | shadow:x:42: | ||||||
|  | utmp:x:43: | ||||||
|  | video:x:44: | ||||||
|  | sasl:x:45: | ||||||
|  | plugdev:x:46: | ||||||
|  | staff:x:50: | ||||||
|  | games:x:60: | ||||||
|  | users:x:100:foo,bar | ||||||
|  | nogroup:x:65534: | ||||||
|  | crontab:x:101: | ||||||
|  | Debian-exim:x:102: | ||||||
|  | foo:x:1000: | ||||||
|  | bar:x:1001: | ||||||
| @@ -0,0 +1,42 @@ | |||||||
|  | root:*:: | ||||||
|  | daemon:*:: | ||||||
|  | bin:*:: | ||||||
|  | sys:*::root | ||||||
|  | adm:*::root | ||||||
|  | tty:*:: | ||||||
|  | disk:*:: | ||||||
|  | lp:*::root | ||||||
|  | mail:*:: | ||||||
|  | news:*:: | ||||||
|  | uucp:*:: | ||||||
|  | man:*:: | ||||||
|  | proxy:*:: | ||||||
|  | kmem:*:: | ||||||
|  | dialout:*:: | ||||||
|  | fax:*::bar | ||||||
|  | voice:*:: | ||||||
|  | cdrom:*:: | ||||||
|  | floppy:*:: | ||||||
|  | tape:*:: | ||||||
|  | sudo:*:: | ||||||
|  | audio:*:: | ||||||
|  | dip:*:: | ||||||
|  | www-data:*:: | ||||||
|  | backup:*:: | ||||||
|  | operator:*:: | ||||||
|  | list:*:: | ||||||
|  | irc:*:: | ||||||
|  | src:*:: | ||||||
|  | gnats:*:: | ||||||
|  | shadow:*:: | ||||||
|  | utmp:*:: | ||||||
|  | video:*:: | ||||||
|  | sasl:*:: | ||||||
|  | plugdev:*:: | ||||||
|  | staff:*:: | ||||||
|  | games:*:: | ||||||
|  | users:*:: | ||||||
|  | nogroup:*:: | ||||||
|  | crontab:x:: | ||||||
|  | Debian-exim:x:: | ||||||
|  | foo:*:: | ||||||
							
								
								
									
										43
									
								
								tests/usertools/62_usermod_remove_supplementary_groups/usermod.test
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										43
									
								
								tests/usertools/62_usermod_remove_supplementary_groups/usermod.test
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | cd $(dirname $0) | ||||||
|  |  | ||||||
|  | . ../../common/config.sh | ||||||
|  | . ../../common/log.sh | ||||||
|  |  | ||||||
|  | log_start "$0" "usermod can remove users from supplementary groups" | ||||||
|  |  | ||||||
|  | save_config | ||||||
|  |  | ||||||
|  | # restore the files on exit | ||||||
|  | trap 'log_status "$0" "FAILURE"; restore_config' 0 | ||||||
|  |  | ||||||
|  | change_config | ||||||
|  |  | ||||||
|  | echo -n "Remove user foo from the 'floppy' group (usermod -rG \"floppy\" foo)..." | ||||||
|  | usermod -rG "floppy" foo | ||||||
|  | echo "OK" | ||||||
|  |  | ||||||
|  | echo -n "Remove user foo from the 'fax' group (usermod -rG \"fax\" foo)..." | ||||||
|  | usermod -rG "fax" foo | ||||||
|  | echo "OK" | ||||||
|  |  | ||||||
|  | echo -n "Check the passwd file..." | ||||||
|  | ../../common/compare_file.pl config/etc/passwd /etc/passwd | ||||||
|  | echo "OK" | ||||||
|  | echo -n "Check the group file..." | ||||||
|  | ../../common/compare_file.pl data/group /etc/group | ||||||
|  | echo "OK" | ||||||
|  | echo -n "Check the shadow file..." | ||||||
|  | ../../common/compare_file.pl config/etc/shadow /etc/shadow | ||||||
|  | echo "OK" | ||||||
|  | echo -n "Check the gshadow file..." | ||||||
|  | ../../common/compare_file.pl data/gshadow /etc/gshadow | ||||||
|  | echo "OK" | ||||||
|  |  | ||||||
|  | log_status "$0" "SUCCESS" | ||||||
|  | restore_config | ||||||
|  | trap '' 0 | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user