Add the sysusers compat parts
This commit is contained in:
		
							parent
							
								
									9434e617a6
								
							
						
					
					
						commit
						ced9237a14
					
				
							
								
								
									
										10
									
								
								macros.sysusers
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								macros.sysusers
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | # RPM macros for packages creating system accounts | ||||||
|  | # | ||||||
|  | # Turn a sysusers.d file into macros specified by | ||||||
|  | # https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/#_dynamic_allocation | ||||||
|  | 
 | ||||||
|  | %sysusers_requires_compat Requires(pre): shadow-utils | ||||||
|  | 
 | ||||||
|  | %sysusers_create_compat() \ | ||||||
|  | %(%{_rpmconfigdir}/sysusers.generate-pre.sh %{?*}) \ | ||||||
|  | %{nil} | ||||||
| @ -48,7 +48,7 @@ for file in files(buildroot): | |||||||
|         continue |         continue | ||||||
|     if '/security/pam_' in n: |     if '/security/pam_' in n: | ||||||
|         o = o_pam |         o = o_pam | ||||||
|     elif 'rpm/macros' in n: |     elif '/rpm/' in n: | ||||||
|         o = o_rpm_macros |         o = o_rpm_macros | ||||||
|     elif re.search(r'/lib.*\.pc|/man3/|/usr/include|(?<!/libsystemd-shared-...).so$', n): |     elif re.search(r'/lib.*\.pc|/man3/|/usr/include|(?<!/libsystemd-shared-...).so$', n): | ||||||
|         o = o_devel |         o = o_devel | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								systemd.spec
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								systemd.spec
									
									
									
									
									
								
							| @ -54,6 +54,11 @@ Source12:       systemd-user | |||||||
| # https://src.fedoraproject.org/rpms/fedora-release/pull-request/80 is merged. | # https://src.fedoraproject.org/rpms/fedora-release/pull-request/80 is merged. | ||||||
| Source13:       99-default-disable-fallback.preset | Source13:       99-default-disable-fallback.preset | ||||||
| 
 | 
 | ||||||
|  | Source21:       macros.sysusers | ||||||
|  | Source22:       sysusers.attr | ||||||
|  | Source23:       sysusers.prov | ||||||
|  | Source24:       sysusers.generate-pre.sh | ||||||
|  | 
 | ||||||
| %if 0 | %if 0 | ||||||
| GIT_DIR=../../src/systemd/.git git format-patch-ab --no-signature -M -N v235..v235-stable | GIT_DIR=../../src/systemd/.git git format-patch-ab --no-signature -M -N v235..v235-stable | ||||||
| i=1; for j in 00*patch; do printf "Patch%04d:      %s\n" $i $j; i=$((i+1));done|xclip | i=1; for j in 00*patch; do printf "Patch%04d:      %s\n" $i $j; i=$((i+1));done|xclip | ||||||
| @ -461,6 +466,11 @@ sed -i 's|#!/usr/bin/env python3|#!%{__python3}|' %{buildroot}/usr/lib/systemd/t | |||||||
| 
 | 
 | ||||||
| install -D -t %{buildroot}/usr/lib/systemd/user-preset/ %{SOURCE13} | install -D -t %{buildroot}/usr/lib/systemd/user-preset/ %{SOURCE13} | ||||||
| 
 | 
 | ||||||
|  | install -m 0644 -D -t %{buildroot}%{_rpmconfigdir}/macros.d/ %{SOURCE21} | ||||||
|  | install -m 0644 -D -t %{buildroot}%{_rpmconfigdir}/fileattrs/ %{SOURCE22} | ||||||
|  | install -m 0755 -D -t %{buildroot}%{_rpmconfigdir}/ %{SOURCE23} | ||||||
|  | install -m 0755 -D -t %{buildroot}%{_rpmconfigdir}/ %{SOURCE24} | ||||||
|  | 
 | ||||||
| %find_lang %{name} | %find_lang %{name} | ||||||
| 
 | 
 | ||||||
| # Split files in build root into rpms. See split-files.py for the | # Split files in build root into rpms. See split-files.py for the | ||||||
| @ -728,8 +738,11 @@ fi | |||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
| * Fri Feb  7 2020 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 245~rc1-2 | * Fri Feb  7 2020 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 245~rc1-2 | ||||||
| - Add default 'disable *' preset for user units | - Add default 'disable *' preset for user units (#1792474), | ||||||
|   (see https://fedoraproject.org/wiki/Changes/Systemd_presets_for_user_units). |   see https://fedoraproject.org/wiki/Changes/Systemd_presets_for_user_units. | ||||||
|  | - Add macro to generate "compat" scriptlets based off sysusers.d format | ||||||
|  |   and autogenerate user() and group() virtual provides (#1792462), | ||||||
|  |   see https://fedoraproject.org/wiki/Changes/Adopting_sysusers.d_format. | ||||||
| 
 | 
 | ||||||
| * Wed Feb  5 2020 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 245~rc1-1 | * Wed Feb  5 2020 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 245~rc1-1 | ||||||
| - New upstream release, see | - New upstream release, see | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								sysusers.attr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								sysusers.attr
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | %__sysusers_provides	%{_rpmconfigdir}/sysusers.prov | ||||||
|  | %__sysusers_path	^%{_sysusersdir}/.*\\.conf$ | ||||||
							
								
								
									
										79
									
								
								sysusers.generate-pre.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										79
									
								
								sysusers.generate-pre.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,79 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | # This script turns sysuser.d files into scriptlets mandated by Fedora | ||||||
|  | # packaging guidelines. The general idea is to define users using the | ||||||
|  | # declarative syntax but to turn this into traditional scriptlets. | ||||||
|  | 
 | ||||||
|  | user() { | ||||||
|  |     user="$1" | ||||||
|  |     uid="$2" | ||||||
|  |     desc="$3" | ||||||
|  |     group="$4" | ||||||
|  |     home="$5" | ||||||
|  |     shell="$6" | ||||||
|  | 
 | ||||||
|  | [ "$desc" = '-' ] && desc= | ||||||
|  | [ "$home" = '-' -o "$home" = '' ] && home=/ | ||||||
|  | [ "$shell" = '-' -o "$shell" = '' ] && shell=/sbin/nologin | ||||||
|  | 
 | ||||||
|  | if [ "$uid" = '-' -o "$uid" = '' ]; then | ||||||
|  |     cat <<EOF | ||||||
|  | getent passwd '$user' >/dev/null || \\ | ||||||
|  |     useradd -r -g '$group' -d '$home' -s '$shell' -c '$desc' '$user' | ||||||
|  | EOF | ||||||
|  | else | ||||||
|  |     cat <<EOF | ||||||
|  | if ! getent passwd '$user' >/dev/null ; then | ||||||
|  |     if ! getent passwd '$uid' >/dev/null ; then | ||||||
|  |         useradd -r -u '$uid' -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user' | ||||||
|  |     else | ||||||
|  |         useradd -r -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user' | ||||||
|  |     fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | EOF | ||||||
|  | fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | group() { | ||||||
|  |     group="$1" | ||||||
|  |     gid="$2" | ||||||
|  | if [ "$gid" = '-' ]; then | ||||||
|  |     cat <<EOF | ||||||
|  | getent group '$group' >/dev/null || groupadd -r '$group' | ||||||
|  | EOF | ||||||
|  | else | ||||||
|  |     cat <<EOF | ||||||
|  | getent group '$group' >/dev/null || groupadd -f -g '$gid' -r '$group' | ||||||
|  | EOF | ||||||
|  | fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | parse() { | ||||||
|  |     while read line; do | ||||||
|  |         [ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue | ||||||
|  |         line="${line## *}" | ||||||
|  |         [ -z "$line" ] && continue | ||||||
|  |         eval arr=( $line ) | ||||||
|  |         case "${arr[0]}" in | ||||||
|  |             ('u') | ||||||
|  |                 group "${arr[1]}" "${arr[2]}" | ||||||
|  |                 user "${arr[1]}" "${arr[2]}" "${arr[3]}" "${arr[1]}" "${arr[4]}" "${arr[5]}" | ||||||
|  |                 # TODO: user:group support | ||||||
|  |                 ;; | ||||||
|  |             ('g') | ||||||
|  |                 group "${arr[1]}" "${arr[2]}" | ||||||
|  |                 ;; | ||||||
|  |             ('m') | ||||||
|  |                 group "${arr[2]}" "-" | ||||||
|  |                 user "${arr[1]}" "-" "" "${arr[2]}" | ||||||
|  |                 ;; | ||||||
|  |         esac | ||||||
|  |     done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | for fn in "$@"; do | ||||||
|  |     [ -e "$fn" ] || continue | ||||||
|  |     echo "# generated from $(basename $fn)" | ||||||
|  |     parse < "$fn" | ||||||
|  | done | ||||||
							
								
								
									
										28
									
								
								sysusers.prov
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								sysusers.prov
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | parse() { | ||||||
|  |     while read line; do | ||||||
|  |         [ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue | ||||||
|  |         line="${line## *}" | ||||||
|  |         [ -z "$line" ] && continue | ||||||
|  |         set -- $line | ||||||
|  |         case "$1" in | ||||||
|  |             ('u') | ||||||
|  |                 echo "user($2)" | ||||||
|  |                 echo "group($2)" | ||||||
|  |                 # TODO: user:group support | ||||||
|  |                 ;; | ||||||
|  |             ('g') | ||||||
|  |                 echo "group($2)" | ||||||
|  |                 ;; | ||||||
|  |             ('m') | ||||||
|  |                 echo "user($2)" | ||||||
|  |                 echo "group($3)" | ||||||
|  |                 ;; | ||||||
|  |         esac | ||||||
|  |     done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | while read fn; do | ||||||
|  |     parse < "$fn" | ||||||
|  | done | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user