summarylogtreecommitdiffstats
path: root/1password.install
blob: e752514a5c668ecbe39521440ddad85600633407 (plain)
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
# Do not add your user, or any others, to this group.
GROUP_NAME="onepassword"

app_group_exists() {
    if [ $(getent group "${GROUP_NAME}") ]; then
        true
    else
        false
    fi
}

set_chromesandbox_permissions() {
    # chrome-sandbox requires the setuid bit to be specifically set.
    # See https://github.com/electron/electron/issues/17972
    chmod 4755 /opt/1Password/chrome-sandbox
}

setup_browser_helper() {
    # Setup the Core App Integration helper binary with the correct permissions and group
    HELPER_PATH="/opt/1Password/1Password-KeyringHelper"
    BROWSER_SUPPORT_PATH="/opt/1Password/1Password-BrowserSupport"

    chgrp "${GROUP_NAME}" $BROWSER_SUPPORT_PATH
    chmod g+s $BROWSER_SUPPORT_PATH

    chgrp "${GROUP_NAME}" $HELPER_PATH
    # The binary requires setuid so it may interact with the Kernel keyring facilities
    chmod u+s $HELPER_PATH
    chmod g+s $HELPER_PATH
}

pre_install() {
    if app_group_exists; then
        : # Do nothing
    else
        groupadd "${GROUP_NAME}"
    fi
}

pre_upgrade() {
    if app_group_exists; then
        : # Do nothing
    else
        groupadd "${GROUP_NAME}"
    fi
}

post_install() {
    set_chromesandbox_permissions
    setup_browser_helper
}

post_upgrade() {
    set_chromesandbox_permissions
    setup_browser_helper
}

post_remove() {
    if app_group_exists; then
        groupdel "${GROUP_NAME}"
    fi
}