53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/sh
 | |
| 
 | |
| set -e
 | |
| 
 | |
| Z=$(readlink -f "$0")
 | |
| 
 | |
| RULES_D=/etc/udev/rules.d
 | |
| if ! test -d "$RULES_D"; then
 | |
| 	echo "$RULES_D not found; is udev installed?"
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| RULE=42-logitech-unify-permissions.rules
 | |
| 
 | |
| if test -n "$1"; then
 | |
| 	SOURCE="$1"
 | |
| else
 | |
| 	SOURCE="$(dirname "$Z")/$RULE"
 | |
| 	REALUSER="${SUDO_USER-$USER}"
 | |
| 	if [ -z "$REALUSER" -o "$REALUSER" = "root" ]; then
 | |
| 		: # ignore unknown and root user
 | |
| 	else
 | |
| 		GROUP=plugdev
 | |
| 		TEMP_RULE="$(mktemp --tmpdir "ltudev.XXXXXXXX")"
 | |
| 		sed -e "/^#MODE.*\"plugdev\"/s/^#//" "$SOURCE" > "$TEMP_RULE"
 | |
| 		if ! id -G -n "$REALUSER" | grep -q -F plugdev; then
 | |
| 			GROUP="$(id -g -n "$REALUSER")"
 | |
| 			if getent group plugdev >/dev/null; then
 | |
| 				printf "User '%s' does not belong to the 'plugdev' group, " "$REALUSER"
 | |
| 			else
 | |
| 				printf "Group 'plugdev' does not exist, "
 | |
| 			fi
 | |
| 			echo "will use group '$GROUP' in the udev rule."
 | |
| 			sed -i -e "s/\"plugdev\"/\"$GROUP\"/" "$TEMP_RULE"
 | |
| 		fi
 | |
| 		SOURCE="$TEMP_RULE"
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| if test "$(id -u)" != "0"; then
 | |
| 	echo "Switching to root to install the udev rule."
 | |
| 	test -x /usr/bin/pkexec && exec /usr/bin/pkexec "$Z" "$SOURCE"
 | |
| 	test -x /usr/bin/sudo && exec /usr/bin/sudo -- "$Z" "$SOURCE"
 | |
| 	test -x /bin/su && exec /bin/su -c "\"$Z\" \"$SOURCE\""
 | |
| 	echo "Could not switch to root: none of pkexec, sudo or su were found?"
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| echo "Installing $RULE."
 | |
| install -m 644 "$SOURCE" "$RULES_D/$RULE"
 | |
| 
 | |
| echo "Done. Now remove the Unfiying Receiver and plug it in again."
 |