80 lines
1.9 KiB
Bash
80 lines
1.9 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Get the current user (not root)
|
|
REALUSER=$(logname)
|
|
HOME_DIR=$(eval echo "~$REALUSER")
|
|
SHARE_DIR="$HOME_DIR/PS2SMB"
|
|
|
|
# Ensure script is run as root
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
echo "Please run this script as root (e.g. with sudo)."
|
|
exit 1
|
|
fi
|
|
|
|
echo "[*] Checking if Samba is installed..."
|
|
if ! pacman -Q samba &>/dev/null; then
|
|
echo "[+] Samba not found. Installing..."
|
|
pacman -Sy --noconfirm samba
|
|
else
|
|
echo "[✓] Samba is already installed."
|
|
fi
|
|
|
|
# Create PS2 user if it doesn't exist
|
|
if ! id "PS2" &>/dev/null; then
|
|
echo "[*] Creating user 'PS2'..."
|
|
useradd -M -s /usr/bin/nologin PS2
|
|
else
|
|
echo "[✓] User 'PS2' already exists."
|
|
fi
|
|
|
|
# Create the shared directory if it doesn't exist
|
|
echo "[*] Creating share directory at $SHARE_DIR..."
|
|
mkdir -p "$SHARE_DIR"
|
|
chown "$REALUSER:$REALUSER" "$SHARE_DIR"
|
|
|
|
# Set ACLs so PS2 has full access
|
|
echo "[*] Setting ACLs for user 'PS2' on $SHARE_DIR..."
|
|
setfacl -R -m u:PS2:rwx "$SHARE_DIR"
|
|
setfacl -R -d -m u:PS2:rwx "$SHARE_DIR"
|
|
|
|
# Backup original smb.conf
|
|
if [ -f /etc/samba/smb.conf ]; then
|
|
echo "[*] Backing up existing /etc/samba/smb.conf to /etc/samba/smb.conf.bak"
|
|
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
|
|
fi
|
|
|
|
# Write the Samba config
|
|
echo "[*] Writing new Samba configuration..."
|
|
cat > /etc/samba/smb.conf <<EOF
|
|
[global]
|
|
workgroup = WORKGROUP
|
|
server string = Arch SMB Server
|
|
security = user
|
|
map to guest = Bad User
|
|
name resolve order = bcast host
|
|
|
|
server min protocol = LANMAN1
|
|
client min protocol = NT1
|
|
client max protocol = NT1
|
|
|
|
ntlm auth = yes
|
|
lanman auth = yes
|
|
client lanman auth = yes
|
|
client plaintext auth = yes
|
|
log level = 3
|
|
|
|
[PS2SMB]
|
|
path = $SHARE_DIR
|
|
browseable = yes
|
|
read only = no
|
|
guest ok = yes
|
|
force user = PS2
|
|
EOF
|
|
|
|
# Enable and start Samba
|
|
echo "[*] Enabling and starting Samba service..."
|
|
systemctl enable smb --now
|
|
|
|
echo "[✓] Done. Samba is running and PS2 has access to $SHARE_DIR"
|