|
58 | 58 | // The chmod mode. |
59 | 59 | set('writable_chmod_mode', '0755'); |
60 | 60 |
|
| 61 | +// List of additional groups to give write permission to. |
| 62 | +set('writable_acl_groups', []); |
| 63 | + |
61 | 64 | desc('Makes writable dirs'); |
62 | 65 | task('deploy:writable', function () { |
63 | 66 | $dirs = join(' ', get('writable_dirs')); |
|
103 | 106 | run("$sudo chmod +a \"$remoteUser allow delete,write,append,file_inherit,directory_inherit\" $dirs"); |
104 | 107 | } elseif (commandExist('setfacl')) { |
105 | 108 | $setFaclUsers = "-m u:\"$httpUser\":rwX"; |
| 109 | + $setFaclGroups = ""; |
| 110 | + foreach (get("writable_acl_groups") as $index => $group) { |
| 111 | + if ($index > 0) { |
| 112 | + $setFaclGroups .= " "; |
| 113 | + } |
| 114 | + $setFaclGroups .= "-m g:\"$group\":rwX"; |
| 115 | + } |
106 | 116 | // Check if remote user exists, before adding it to setfacl |
107 | 117 | $remoteUserExists = test("id -u $remoteUser &>/dev/null 2>&1 || exit 0"); |
108 | 118 | if ($remoteUserExists === true) { |
|
119 | 129 | $hasfacl = run("getfacl -p $dir | grep \"^user:$httpUser:.*w\" | wc -l"); |
120 | 130 | // Set ACL for directory if it has not been set before |
121 | 131 | if (!$hasfacl) { |
122 | | - run("setfacl -L $recursive $setFaclUsers $dir"); |
123 | | - run("setfacl -dL $recursive $setFaclUsers $dir"); |
| 132 | + run("setfacl -L $recursive $setFaclUsers $setFaclGroups $dir"); |
| 133 | + run("setfacl -dL $recursive $setFaclUsers $setFaclGroups $dir"); |
124 | 134 | } |
125 | 135 | } |
126 | 136 | } else { |
127 | | - run("$sudo setfacl -L $recursive $setFaclUsers $dirs"); |
128 | | - run("$sudo setfacl -dL $recursive $setFaclUsers $dirs"); |
| 137 | + run("$sudo setfacl -L $recursive $setFaclUsers $setFaclGroups $dirs"); |
| 138 | + run("$sudo setfacl -dL $recursive $setFaclUsers $setFaclGroups $dirs"); |
129 | 139 | } |
130 | 140 | } else { |
131 | 141 | $alias = currentHost()->getAlias(); |
|
0 commit comments