#!/bin/bash
log_file="error_log.txt"
current_user=$(whoami)
# 遍历目录函数
traverse_dir() {
local dir=$1
if [ ! -d "$dir" ]; then
echo "$(date): Directory $dir does not exist" >> "$log_file"
return
fi
for item in "$dir"/*; do
if [ -L "$item" ]; then
# 处理软链接,获取链接目标并处理
target=$(readlink "$item")
if [ -f "$target" ]; then
file_user=$(stat -c "%U" "$target")
file_perm=$(stat -c "%a" "$target")
if [ "$file_user" = "$current_user" ] && [ "$file_perm" != "644" ]; then
if chmod 644 "$target"; then
echo "$(date): Changed permissions of $target to 644"
else
echo "$(date): Permission change failed for $target" >> "$log_file"
fi
fi
else
echo "$(date): Soft link $item points to non - existent file" >> "$log_file"
fi
elif [ -d "$item" ]; then
traverse_dir "$item"
elif [ -f "$item" ]; then
file_user=$(stat -c "%U" "$item")
file_perm=$(stat -c "%a" "$item")
if [ "$file_user" = "$current_user" ] && [ "$file_perm" != "644" ]; then
if chmod 644 "$item"; then
echo "$(date): Changed permissions of $item to 644"
else
echo "$(date): Permission change failed for $item" >> "$log_file"
fi
fi
else
echo "$(date): Unknown file type for $item" >> "$log_file"
fi
done
}
# 开始遍历根目录,可修改为需要遍历的起始目录
traverse_dir "/"