This repository has been archived by the owner on Apr 22, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsnapdSB.sh
77 lines (62 loc) · 1.81 KB
/
snapdSB.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/env bash
SCRIPT_FOLDER=/opt/snapdSB/
bindnotok=0
symlinknok=0
#_____________________________________________________#
# check if bind mount in /home is already applied
checkbindmount(){
if [ -d '/home' ] && [ ! -L '/home' ]
then echo "bindmout of /home ok"
else bindnotok=1 && echo "bindmout of /home not ok"
fi
}
# replace symlink in /home with bind mount
bindmounthome(){
if [ -L '/home' ]
then echo "symlink /home will be replaced with bind mount from /var/home"
else echo "bind mount will be created from /var/home to /home"
fi
sudo rm -f /home | systemd-cat -t snapdSB.service -p info
sudo mkdir -p /home
sudo mount --bind /var/home /home
}
#_____________________________________________________#
# replace /var/home to /home in /etc/passwd
passwdhome(){
if grep -Fq ':/var/home' /etc/passwd
then
sudo cp /etc/passwd /etc/passwd.backup
echo "backup of /etc/passwd created"
sudo sed -i 's|:/var/home|:/home|' /etc/passwd
echo "/etc/passwd edited: /var/home replaced with /home"
else
echo "/etc/passwd ok"
fi
}
#_____________________________________________________#
# check if symlink in /snap exists
checksymlink(){
if [[ $(readlink "/snap") == "/var/lib/snapd/snap" ]]
then echo 'snap symlink ok'
else symlinknok=1 && echo 'snap symlink not ok'
fi
}
# create symlink in /snap
symlinksnap(){
echo "creating /var/lib/snapd/snap symlink in /snap"
sudo ln -sf '/var/lib/snapd/snap' '/snap' | systemd-cat -t snapdSB.service -p info
checksymlink
}
#_____________________________________________________#
#if comment, steps bellow will not be checked and applied
#checkbindmount
checksymlink
passwdhome
# only unlock / if it's needed
if (( $bindnotok + $symlinknok ))
then
sudo chattr -i /
if (( ${bindnotok} )); then bindmounthome; fi
if (( ${symlinknok} )); then symlinksnap; fi
sudo chattr +i /
fi