Skip to content

Commit 39429f7

Browse files
committed
support: Fix handling of root-owned /var/lib/support directory
Attempt to fix permissions with sudo before falling back to $HOME, and verify directory is actually writable before proceeding. Signed-off-by: Joachim Wiberg <[email protected]>
1 parent b0dce8a commit 39429f7

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

src/bin/support

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,30 @@ cmd_collect()
114114
# persistent across user sessions). Fall back to $HOME if we can't create/write there
115115
if [ -z "$WORK_DIR" ]; then
116116
if [ -w /var/lib/support ] 2>/dev/null; then
117+
# Already writable, use it
117118
WORK_DIR="/var/lib/support"
118-
elif mkdir -p /var/lib/support 2>/dev/null; then
119-
WORK_DIR="/var/lib/support"
120-
elif [ -n "$SUDO" ] && $SUDO mkdir -p /var/lib/support 2>/dev/null && \
121-
$SUDO chown "$(id -u):$(id -g)" /var/lib/support 2>/dev/null; then
122-
WORK_DIR="/var/lib/support"
123-
else
119+
elif [ ! -e /var/lib/support ]; then
120+
# Doesn't exist, try to create it
121+
if mkdir -p /var/lib/support 2>/dev/null; then
122+
WORK_DIR="/var/lib/support"
123+
elif [ -n "$SUDO" ] && $SUDO mkdir -p /var/lib/support 2>/dev/null && \
124+
$SUDO chown "$(id -u):$(id -g)" /var/lib/support 2>/dev/null; then
125+
WORK_DIR="/var/lib/support"
126+
fi
127+
elif [ -d /var/lib/support ]; then
128+
# Exists but not writable, try to fix permissions with sudo
129+
# Try chmod first (might just be permission issue), then chown if needed
130+
if $SUDO chmod 755 /var/lib/support 2>/dev/null && \
131+
$SUDO chown "$(id -u):$(id -g)" /var/lib/support 2>/dev/null; then
132+
# Verify it's actually writable now
133+
if [ -w /var/lib/support ] 2>/dev/null; then
134+
WORK_DIR="/var/lib/support"
135+
fi
136+
fi
137+
fi
138+
139+
# Fall back to $HOME if we couldn't set up /var/lib/support
140+
if [ -z "$WORK_DIR" ]; then
124141
WORK_DIR="${HOME}"
125142
echo "Warning: Cannot write to /var/lib/support, using home directory instead." >&2
126143
echo " (This may fill up your home directory on systems with limited space)" >&2
@@ -145,7 +162,11 @@ cmd_collect()
145162
trap cleanup EXIT INT TERM
146163

147164
# Create collection directory
148-
mkdir -p "${COLLECT_DIR}"
165+
if ! mkdir -p "${COLLECT_DIR}"; then
166+
echo "Error: Cannot create collection directory: ${COLLECT_DIR}" >&2
167+
echo " Check permissions for ${WORK_DIR}" >&2
168+
exit 1
169+
fi
149170

150171
# Helper function to run commands with output to specific file
151172
collect()

0 commit comments

Comments
 (0)