File: common.sh.in

package info (click to toggle)
oar 2.5.4-2
  • links: PTS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 11,064 kB
  • sloc: perl: 28,891; ruby: 5,813; sh: 5,208; ml: 3,408; sql: 3,255; cpp: 2,277; ansic: 702; makefile: 389; php: 99; exp: 23
file content (160 lines) | stat: -rw-r--r-- 4,904 bytes parent folder | download | duplicates (2)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
create_oar_group() {
    if ! getent group | grep -q "^${OAROWNERGROUP}:"; then 
        echo -n "Adding group ${OAROWNERGROUP}.."
        case "$TARGET_DIST" in
            "debian")
                addgroup --quiet --system ${OAROWNERGROUP} 2>/dev/null || true
                ;;
            *)
                groupadd --system ${OAROWNERGROUP} 2>/dev/null  >/dev/null || true
                ;;
        esac
        echo "..done"
    fi
}

create_oar_home() {
    test -d "${OARHOMEDIR}" || mkdir -p ${OARHOMEDIR}
}

create_oar_user() {    
    # Create oar user
    if ! getent passwd | grep -q "^${OAROWNER}:"; then
        echo -n "Adding system user ${OAROWNER}.."
        case "$TARGET_DIST" in
            "debian")
                adduser --quiet \
                        --system \
                        --ingroup ${OAROWNERGROUP} \
                        --shell /bin/bash \
                        --no-create-home \
                        --disabled-password \
                        ${OAROWNER} 2>/dev/null || true
                ;;
            *)
                useradd --system \
                        --gid ${OAROWNERGROUP} \
                        --shell /bin/bash \
                        --password "*" \
                        ${OAROWNER} >/dev/null 2>&1
                passwd -u ${OAROWNER} >/dev/null 2>&1 ||true
                ;;
        esac
        echo "..done"
    fi

    # Adjust the password entry
    usermod -d ${OARHOMEDIR} \
            -g ${OAROWNERGROUP} \
               ${OAROWNER}

    # Adjust the file and directory permissions
    case "$SETUP_TYPE" in
        "deb")
            if ! dpkg-statoverride --list ${OARHOMEDIR} >/dev/null; then
                chown $OAROWNER:$OAROWNERGROUP $OARHOMEDIR
                chmod u=rwx,g=rxs,o= $OARHOMEDIR
            fi
            ;;
        *)
            chown $OAROWNER:$OAROWNERGROUP $OARHOMEDIR
            chmod u=rwx,g=rxs,o= $OARHOMEDIR
            ;;
    esac

    # set OAR shell
    if [ "`getent passwd ${OAROWNER} |cut -f7 -d:`" != "${OARDIR}/oarsh_shell" ]; then 
        chsh -s ${OARDIR}/oarsh_shell ${OAROWNER} 
    fi 

    # Fix the bash profile
    cat > ${OARHOMEDIR}/.bash_oar <<EOF
#
# OAR bash environnement file for the oar user
#
# /!\ This file is automatically created at update installation/upgrade. 
#     Do not modify this file.
#

bash_oar() {
    # Prevent to be executed twice or more
    [ -n "\$OAR_BASHRC" ] && return

    export PATH="%%OARDIR%%/oardodo:\$PATH"
    OAR_BASHRC=yes
}

bash_oar
EOF
    # Default bash sourced file in a batch job (BASH_ENV)
    [ ! -f "${OARHOMEDIR}/.batch_job_bashrc" ] && cat > ${OARHOMEDIR}/.batch_job_bashrc <<EOF
#
# OAR bash environnement file for only the batch job users
#

source ~/.bashrc

EOF
    touch ${OARHOMEDIR}/.bash_profile
    touch ${OARHOMEDIR}/.bashrc
    if ! grep -q "${OARHOMEDIR}/.bash_oar" ${OARHOMEDIR}/.bash_profile 2> /dev/null; then
        echo '' >> ${OARHOMEDIR}/.bash_profile
        echo "[ -f ${OARHOMEDIR}/.bash_oar ] && . ${OARHOMEDIR}/.bash_oar" >> ${OARHOMEDIR}/.bash_profile
    fi
    if ! grep -q "${OARHOMEDIR}/.bash_oar" ${OARHOMEDIR}/.bashrc 2> /dev/null; then
        echo '' >> ${OARHOMEDIR}/.bashrc
        echo "[ -f ${OARHOMEDIR}/.bash_oar ] && . ${OARHOMEDIR}/.bash_oar" >> ${OARHOMEDIR}/.bashrc
    fi

    set_rights ${OARHOMEDIR} 0755 ${OARUSER} ${OAROWNERGROUP}
    chown ${OAROWNER}:${OAROWNERGROUP} ${OARHOMEDIR}/.bash_oar
    chown ${OAROWNER}:${OAROWNERGROUP} ${OARHOMEDIR}/.bash_profile
    chown ${OAROWNER}:${OAROWNERGROUP} ${OARHOMEDIR}/.bashrc
}

install_run_dir() {
    # Install run dir
    install -o ${OAROWNER} -m 755 -d ${RUNDIR}/oar
}

create_log_file() {
    # Log file
    touch ${LOGDIR}/oar.log && chown ${OAROWNER}:${ROOTGROUP} ${LOGDIR}/oar.log && chmod 0644 ${LOGDIR}/oar.log || true
}

common_setup() {

    # Update before 2.5.2: Fix a bug causing an empty ${OARHOMEDIR}/.bash_oar
    if [ -e ${OARHOMEDIR}/.bash_oar ] && [ -z "$(cat ${OARHOMEDIR}/.bash_oar)" ]; then
        rm -f ${OARHOMEDIR}/.bash_oar
    fi

    create_oar_group
    create_oar_home
    create_oar_user
    install_run_dir
    create_log_file

    mkdir -p ${OARCONFDIR}/

    install_conffile \
        ${SHAREDIR}/oar.conf \
        ${OARCONFDIR}/oar.conf \
        0600 ${OAROWNER}:${ROOTGROUP}

    install_conffile \
        ${SHAREDIR}/oarnodesetting_ssh \
        ${OARCONFDIR}/oarnodesetting_ssh \
        0755

    install_conffile \
        ${SHAREDIR}/update_cpuset_id.sh \
        ${OARCONFDIR}/update_cpuset_id.sh \
        0755

    set_rights ${OARDIR}/oarsh_oardo     6755 ${OARDO_DEFAULTUSER} ${OARDO_DEFAULTGROUP}
    set_rights ${SBINDIR}/oarnodesetting 6750 ${OARDO_DEFAULTUSER} ${OARDO_DEFAULTGROUP}

    set_rights ${OARDIR}/oardodo/oardodo 6750 ${ROOTUSER} ${OAROWNERGROUP}
    set_rights ${OARDIR}/oardodo         0755 ${ROOTUSER} ${OAROWNERGROUP}
}