u/mcv21/isg_ansible.git
2 years agoUpgrade version of tlscerts app master
Abraham Martin [Wed, 13 Dec 2017 15:38:48 +0000 (15:38 +0000)]
Upgrade version of tlscerts app

3 years agoFix up SML's public keys and give him root access
Jon Warbrick [Fri, 1 Sep 2017 08:48:07 +0000 (09:48 +0100)]
Fix up SML's public keys and give him root access

Public keys (mortal ones and root-access ones) sit in roles/common/pubkeys/.
For people with distinct mortal and root ones the motal one normally
has a _mortal.pub suffix. Root keys are installed from
roles/common/tasks/main.yml; mortal keys (for sawmill aka ravenlogs)
are installed via a list in group_vars/ravenlogs.

SML just had a mortal key, but named as if it were a root one. This
edit renames his mortal key and the refernce in the key list, and adds
a root-access key and installs it.

3 years agoFix ravenstaff removal task; add readonly removal task
Jon Warbrick [Tue, 18 Jul 2017 11:20:23 +0000 (12:20 +0100)]
Fix ravenstaff removal task; add readonly removal task

The task that was supposed to remove people from the
ravenstaff role was missing 'state=absent' so actually
added people. Now fixed.

At the saem time, added a readonly removal task and used
it to remove djb85 and ve100 since they are now in ravenstaff
and don't need to be in both.

3 years agoAdd djb85 and ve100 to the ravenstaff database access role
Jon Warbrick [Tue, 18 Jul 2017 10:55:29 +0000 (11:55 +0100)]
Add djb85 and ve100 to the ravenstaff database access role

It looks like this (rather than readonly) is needed to be
able to update users, clients and ASs to set 'last_atatck'
and friends.

3 years agoRemove remaining MWS configuration
Jon Warbrick [Thu, 6 Jul 2017 16:51:11 +0000 (17:51 +0100)]
Remove remaining MWS configuration

Service Automation have removed the MWS's dependancy on
this copy of the repository (see below) so we can finally
remove all of the remaining MWS-related stuff fom here.

This is a continuation of the work in commit
f8acfd9c2c58441b1985f846ced6764bb0e49c14

--cut--
From: Peter Heiner <ph448@cam.ac.uk>
To: Jon Warbrick <jw35@cam.ac.uk>
CC: Peter Heiner <ph448@hermes.cam.ac.uk>, mws-support@ucs.cam.ac.uk <mws-support@ucs.cam.ac.uk>, Dr Abraham Martin Campillo <amc203@cam.ac.uk>
Subject: Re: I think you are still depending on the u/mcv21/isg_ansible repository
Date: Mon, 3 Jul 2017 16:20:39 +0100

Hi Jon,

You wrote on 2017-06-20 11:34:58:
> > A release of the MWS is scheduled for Wednesday 28th June that, among
> > other things will update the repo URL on the hosts.
>
> Great, ta. I'll re-schedule my next nag for 29 June.

I believe we no longer depend on isg_ansible. We still depend on
Matthew's apt repository at
http://www-uxsup.csx.cam.ac.uk/~mcv21/debian, so please don't make that
disappear before we Kill it with Fire (tm).

p
--cut--

3 years agoDisable the cron job running the user-monitor script
Jon Warbrick [Wed, 5 Jul 2017 07:36:12 +0000 (08:36 +0100)]
Disable the cron job running the user-monitor script

Drop this script at Ashley Culver's request (RT #489530)

3 years agoGive SML access to sawmill
Jon Warbrick [Thu, 29 Jun 2017 16:13:03 +0000 (17:13 +0100)]
Give SML access to sawmill

3 years agoAdd Vin Everitt (ve100) as a read-only users
Jon Warbrick [Thu, 29 Jun 2017 10:09:58 +0000 (11:09 +0100)]
Add Vin Everitt (ve100) as a read-only users

This is part of the campaign to give CERTS staff (and sort-of CERT
staff) direct access to Sawmill.

3 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Tue, 27 Jun 2017 17:21:20 +0000 (18:21 +0100)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

3 years agoRe-enable Sawmill access for Dave Bery
Jon Warbrick [Tue, 27 Jun 2017 17:19:46 +0000 (18:19 +0100)]
Re-enable Sawmill access for Dave Bery

We set this up a while ago, but then escinded it pending
official approval for letting CERT staff see the logs.
Since we are (probably) transfering log serach resonsibility
*to* CERT it seems reasonable to re-enable this (and anyway
Steve Riley sai it was OK).

3 years agoUpdate version of TLSCerts app
Abraham Martin [Mon, 19 Jun 2017 16:26:40 +0000 (17:26 +0100)]
Update version of TLSCerts app

3 years agoReplace sudo/sudo_user with become_become_user
Jon Warbrick [Thu, 8 Jun 2017 10:24:17 +0000 (11:24 +0100)]
Replace sudo/sudo_user with become_become_user

sudo/sudo_user is depricated.

3 years agoUpdate oook_backup role for new Oook dump package
Jon Warbrick [Thu, 8 Jun 2017 10:05:14 +0000 (11:05 +0100)]
Update oook_backup role for new Oook dump package

The latest Oook dump package has moved the fslist file to
/etc/oook and changed its format. This edit makes the
coresponding changes to the oook_backup role.

3 years agoInstall pgcli
Jon Warbrick [Thu, 8 Jun 2017 09:30:54 +0000 (10:30 +0100)]
Install pgcli

pgcli is a useful alternative to the psql command with come useful
features sich as usable tab completion.

3 years agoRemove MWS-related hosts from inventory
Jon Warbrick [Wed, 31 May 2017 16:40:46 +0000 (17:40 +0100)]
Remove MWS-related hosts from inventory

The MWS has been transfered to Service Automation. They have a
copy of this repository for managing the MWS. Ideally we'd
drop all of the MWS-related stuff fom here, but the MWS is still
using a checkout of this repository to configure clients.

Until this is fixed, limit ourselves to just removing MWS
hosts from the inventory to at least guard against accidents.

3 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Wed, 31 May 2017 15:16:13 +0000 (16:16 +0100)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

3 years agonew release
Abraham Martin [Mon, 8 May 2017 09:34:55 +0000 (10:34 +0100)]
new release

3 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Mon, 24 Apr 2017 11:31:42 +0000 (12:31 +0100)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

3 years agoAdd defaults for mwspacemaker role.
Ben Harris [Mon, 24 Apr 2017 11:30:25 +0000 (12:30 +0100)]
Add defaults for mwspacemaker role.

3 years agoActually turn off multicast snooping on the production cluster
Jon Warbrick [Mon, 24 Apr 2017 11:13:31 +0000 (12:13 +0100)]
Actually turn off multicast snooping on the production cluster

The production cluster is mwsxencluster2, not mwsxencluster1!

3 years agoOnly run log_stats script 6-18
Jon Warbrick [Mon, 24 Apr 2017 10:58:02 +0000 (11:58 +0100)]
Only run log_stats script 6-18

Running the log-stats script in the early hours of the morning
generates error messages when it clashes with the database rebuild.
Since, apart from the first run each day folowing the database rebuild,
we only ru it to take notice of manual changes to the database it's
OK ust to run it during working hours.

3 years agoTurn off multicast snooping on the production cluster to see if anything breaks.
Jon Warbrick [Mon, 24 Apr 2017 10:56:28 +0000 (11:56 +0100)]
Turn off multicast snooping on the production cluster to see if anything breaks.

3 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Mon, 24 Apr 2017 10:52:54 +0000 (11:52 +0100)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

3 years agoTurn off multicast snooping on the test cluster to see if anything breaks.
Ben Harris [Thu, 20 Apr 2017 17:08:50 +0000 (18:08 +0100)]
Turn off multicast snooping on the test cluster to see if anything breaks.

3 years agomwspacemaker: Allow for turning off multicast snooping in Linux bridge.
Ben Harris [Thu, 20 Apr 2017 15:58:18 +0000 (16:58 +0100)]
mwspacemaker: Allow for turning off multicast snooping in Linux bridge.

There's a suggestion that this is what broke MWS3 the last time we tried
enabling IPv6 multicast on its VLAN.  We don't really need multicast
snooping, since the bridge is only used to connect Xen guests to the
real network.

The "bridge_multicast_snooping" variable in Ansible controls whether
multicast snooping is enabled so that we can disable it gradually.

3 years agoUpdate my SSH keys to match the Platforms repository.
Ben Harris [Wed, 19 Apr 2017 17:23:20 +0000 (18:23 +0100)]
Update my SSH keys to match the Platforms repository.

3 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Tue, 28 Feb 2017 09:52:24 +0000 (09:52 +0000)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

3 years agodeploy master to test
Abraham Martin [Fri, 24 Feb 2017 16:00:53 +0000 (16:00 +0000)]
deploy master to test

3 years agoRun sawmill log_stats script every hour, not once a day
Jon Warbrick [Tue, 14 Feb 2017 10:11:38 +0000 (10:11 +0000)]
Run sawmill log_stats script every hour, not once a day

log_stats checks data in the Raven log database. While the database is
only reloaded once a day, sometimes changes (like marking a user as
known to be compromised) happens during the day so runing the script
more often alows the Nagios state to catch up faster.

3 years agoMove finance run to 06:00 so it's waiting on the first of each monthy
Jon Warbrick [Fri, 27 Jan 2017 12:21:24 +0000 (12:21 +0000)]
Move finance run to 06:00 so it's waiting on the first of each monthy

3 years agoRevert previous - send finance reports monthly
Jon Warbrick [Fri, 27 Jan 2017 11:21:01 +0000 (11:21 +0000)]
Revert previous - send finance reports monthly

The finance report processes reneways as well as initial POs. Running
it weekly would have successfully send any pending initial POs to
finance each week. But it would have also sent all renewals that
fell in the previous month to finance EVERY WEEK, which isn't what
we need.

Further changes to the finance script would be needed to enable weekly
reporting.

3 years agoMove finance reporting to weekly
Jon Warbrick [Fri, 27 Jan 2017 10:22:15 +0000 (10:22 +0000)]
Move finance reporting to weekly

3 years agoAdd mod_authnz_ldap to the list of included Apache modules
Jon Warbrick [Wed, 30 Nov 2016 15:09:58 +0000 (15:09 +0000)]
Add mod_authnz_ldap to the list of included Apache modules

mod_authnz_ldap is needed for the standard 'Authorization via
Lookup' recipie, so include that by default in the same way
that we include mod_ucam_webauth

3 years agomwsclient: collectd df and disk plugins should ignore snapshots
Ben Harris [Tue, 25 Oct 2016 16:39:09 +0000 (17:39 +0100)]
mwsclient: collectd df and disk plugins should ignore snapshots

Without this, collectd emits "df" metrics for all mounted snapshots,
and "disk" emits metrics for all device-mapper devices.  The snapshots
are particularly awkward because their metrics are named after their
mount points, which have dates in them.  This means that they cause
the metrics system to gradually accumulate short-lived metrics, which
eat disk space rather.

3 years agoMerge branch 'master' of ssh://git.csx.cam.ac.uk/u/mcv21/isg_ansible
Ben Harris [Tue, 25 Oct 2016 16:40:51 +0000 (17:40 +0100)]
Merge branch 'master' of ssh://git.csx.cam.ac.uk/u/mcv21/isg_ansible

3 years agoCorrect unbound_check.sh to use the full path to the config file
Jon Warbrick [Tue, 25 Oct 2016 14:59:00 +0000 (15:59 +0100)]
Correct unbound_check.sh to use the full path to the config file

3 years agoRemember to start and enable unbound (so it starts on system restart)
Jon Warbrick [Tue, 25 Oct 2016 14:52:01 +0000 (15:52 +0100)]
Remember to start and enable unbound (so it starts on system restart)

3 years agomwsxenserver: Add Pacemaker location constraint to follow per-node scores.
Ben Harris [Wed, 5 Oct 2016 18:11:28 +0000 (19:11 +0100)]
mwsxenserver: Add Pacemaker location constraint to follow per-node scores.

This allows for a gentler equivalent of "crm node standby" by setting the
per-node "node-score" attribute, which will be added to the score of every
resource when running on that node.  The best idea is probably to set it to a
positive number on one node when you want to migrate VMs off the other, or
something like that.

4 years agoMWS3: Make Pacemaker state available as XML as well as HTML.
Ben Harris [Fri, 30 Sep 2016 14:26:19 +0000 (15:26 +0100)]
MWS3: Make Pacemaker state available as XML as well as HTML.

4 years agoMWS3: arrange that crmmon-html.service is started on boot.
Ben Harris [Fri, 30 Sep 2016 14:02:18 +0000 (15:02 +0100)]
MWS3: arrange that crmmon-html.service is started on boot.

Previously, Ansible would start it, but not enable it for future boots.

4 years agoMWS3: Stop hiding the cluster status behind Raven.
Ben Harris [Fri, 30 Sep 2016 12:06:31 +0000 (13:06 +0100)]
MWS3: Stop hiding the cluster status behind Raven.

Jon and I can't see any reason to do so, and monitoring is simpler if
it doesn't have to authenticate.

4 years agoAdd 'top 10 by memory' and '...by Apache processes' to arch dashboard
Jon Warbrick [Wed, 28 Sep 2016 14:07:12 +0000 (15:07 +0100)]
Add 'top 10 by memory' and '...by Apache processes' to arch dashboard

4 years agoDrop MaxWorkers to 50 (from 75) and set MaxRequestsPerChild to 100
Jon Warbrick [Tue, 27 Sep 2016 11:43:42 +0000 (12:43 +0100)]
Drop MaxWorkers to 50 (from 75) and set MaxRequestsPerChild to 100

Continued fight against mempry exhaustion. Metrics suggests
that MaxWorkers=50 should be sufficient for most sites under normal load.

In addition, set  MaxRequestsPerChild to 100 from unlimited to
avoid processes growing excessivly over their lifetime.

4 years agoSwitch CPU graph to use lines not bars
Jon Warbrick [Tue, 27 Sep 2016 11:40:12 +0000 (12:40 +0100)]
Switch CPU graph to use lines not bars

The bars are close to invisable, probably becasue we only send
data for a subset of the posible datapoints stored by Graphite.

4 years agoAdd process pannel to Grafana scripted dashboard
Jon Warbrick [Mon, 26 Sep 2016 16:56:24 +0000 (17:56 +0100)]
Add process pannel to Grafana scripted dashboard

4 years agoSwitch collectd monitoring of Apache to the processes plugin
Jon Warbrick [Wed, 21 Sep 2016 09:08:02 +0000 (10:08 +0100)]
Switch collectd monitoring of Apache to the processes plugin

The collectd Apache plugin won't currently work becasue the
status endpoint is only avaiable from localhost but attempts to
access it redirect to the primary hostname.

Instead of using that, deploy the collectd processes plugin
configured to gather extra infotrmation on apache processes.
While we are at it, gather data on mysql as well.

4 years agoCorrect source filename for Apache collectd
Jon Warbrick [Tue, 20 Sep 2016 16:02:14 +0000 (17:02 +0100)]
Correct source filename for Apache collectd

4 years agoAdd collectd apache logging to clients
Jon Warbrick [Tue, 20 Sep 2016 15:45:31 +0000 (16:45 +0100)]
Add collectd apache logging to clients

4 years agoMake Apache MPM parameters configurable, and reduce MaxRequestWorkers
Jon Warbrick [Tue, 20 Sep 2016 15:14:11 +0000 (16:14 +0100)]
Make Apache MPM parameters configurable, and reduce MaxRequestWorkers

It looks like the Debian default of 150 MPM workers is more than
MWS clients can support. This update adds mpm_prefork.conf to
the files managed by Ansible ad reduces MaxRequestWorkers to 75.

4 years agoEnsure that monitor_pool gets started on reboot
Jon Warbrick [Mon, 19 Sep 2016 16:53:29 +0000 (17:53 +0100)]
Ensure that monitor_pool gets started on reboot

monitor_pool was never enabled, only restarted after installation.
As a result it didn't restart after guests were restarted.

Further, the monitor_pool.service unit file wasn't actually set up
to be installable.

4 years agobugfix
Abraham Martin [Tue, 13 Sep 2016 11:40:17 +0000 (12:40 +0100)]
bugfix

4 years agoRevise TLS API to eliminate untrusted data on the command line
Jon Warbrick [Sat, 10 Sep 2016 14:41:51 +0000 (15:41 +0100)]
Revise TLS API to eliminate untrusted data on the command line

The previous version of the TLS API exposed untrusted data on the
shell command line. This version avoids that, mainly by passing the
CSR on stdin all the way to tls_api.py. Requires v1.4 of the Django
app in which tls_api.py expects the CRS in stdin.

Also gave up extracting nthe CSR subject with openssl becasue it's hard
to securely log the subject from BAsh (passing it to logger on loggers
command line isn't a good idea).

4 years agoBump the version ot the TLScerts app installed to 1.3
Jon Warbrick [Fri, 9 Sep 2016 13:21:04 +0000 (14:21 +0100)]
Bump the version ot the TLScerts app installed to 1.3

4 years agoAdd support for the TLS API over ssh
Jon Warbrick [Fri, 9 Sep 2016 13:06:53 +0000 (14:06 +0100)]
Add support for the TLS API over ssh

Add a userv-mediated service alowing suitably-authorised users to
inject CSR's into the TLS Certificate service, bypassing the web form.

More details at
  https://wiki.cam.ac.uk/ucs/TLS_Certificates_administration_site

4 years agoFix up unbound process monitoring
Jon Warbrick [Tue, 6 Sep 2016 14:48:07 +0000 (15:48 +0100)]
Fix up unbound process monitoring

1) Setup a configuration file, and point send_nsca at it
2) Bodge the sending hostname to match that created by hostgen
   in the Nagios configuration

4 years ago...add the remainder of the files that refered to mcv21
Jon Warbrick [Wed, 31 Aug 2016 15:43:08 +0000 (16:43 +0100)]
...add the remainder of the files that refered to mcv21

4 years agoRemove (most of?) MCV's access
Jon Warbrick [Wed, 31 Aug 2016 15:33:03 +0000 (16:33 +0100)]
Remove (most of?) MCV's access

4 years agoAdd metrics logging support to sawmill
Jon Warbrick [Fri, 19 Aug 2016 13:21:31 +0000 (14:21 +0100)]
Add metrics logging support to sawmill

Add various packages to enable statsd/collectd logging, mainly in
support of automated Raven intruder detection.

4 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Sun, 14 Aug 2016 18:42:02 +0000 (19:42 +0100)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

4 years agodmw37's hack to work around broken metrics service
Matthew Vernon [Thu, 11 Aug 2016 09:24:35 +0000 (10:24 +0100)]
dmw37's hack to work around broken metrics service

Platforms' metrics system is broken, and they can't seem to fix their
rabbitmq. In the mean time, dwm37 suggested a work-around where we
send metrics directly to the graphite cluster, in
Message-ID: <1470742483.29570.7.camel@cam.ac.uk>

This deploys that work-around. Caveats:
* no fault-tolerance
* layering violation
* may stop working at 0 notice

Hopefully once rabbitmq is fixed, this commit can be reverted

4 years agoRemove bjh21's mortal key from mwsclient
J M Wilkins [Wed, 10 Aug 2016 10:53:08 +0000 (11:53 +0100)]
Remove bjh21's mortal key from mwsclient

Renames bjh21's previous key as bjh21_mortal.pub as have added new key in roles/common.
Copied revoke old pubkeys task from roles/common to remove the old key from mwsclients.

4 years agoAdd Ben's key to common access list
J M Wilkins [Wed, 10 Aug 2016 10:42:35 +0000 (11:42 +0100)]
Add Ben's key to common access list

4 years agolaunch branch P23
Matthew Vernon [Mon, 25 Jul 2016 09:07:35 +0000 (10:07 +0100)]
launch branch P23

This isn't done with our usual deployrelease.sh, as we've had to
deploy a null change to the webapp (P23 is a branch off P22 there);
that's a management decision (by jw35) not to push the webapp changes
as there is concern about availability of new disk to support the
larger guest sizes :(

4 years agoinstall fail2ban on guests
Matthew Vernon [Thu, 21 Jul 2016 11:28:24 +0000 (12:28 +0100)]
install fail2ban on guests

The default is ssh-checking - max 6 retries in 10 minutes, resulting
in a 10-minute ban.

This seems a sensible default.

4 years agoAdd a wholecluster tag to task needing facts from every machine
Matthew Vernon [Tue, 19 Jul 2016 15:44:03 +0000 (16:44 +0100)]
Add a wholecluster tag to task needing facts from every machine

This means you can do ansible-playbook --skip-tags=wholecluster if you
want to run ansible against a single machine.

4 years agoHTML cluster status on quorum server
Matthew Vernon [Tue, 19 Jul 2016 15:36:55 +0000 (16:36 +0100)]
HTML cluster status on quorum server

The quorum server now runs apache, and crm_mon in its html-output mode
to provide a raven-protected cluster status page.

4 years agowork around lvs ordering-by-time bug (Debian #831686)
Matthew Vernon [Mon, 18 Jul 2016 15:12:15 +0000 (16:12 +0100)]
work around lvs ordering-by-time bug (Debian #831686)

lvs -Olv_name doesn't work (see the debian bug report for more
details), so we were getting output sorted by little-endian comparison
of the creation timestamp.

Instead, sort by name, which gets our daily snapshots correct (because
they have the date encoded in their name), but not the users'
snapshots. We only delete user snapshots in extremis, so that's an
acceptable result.

Hopefully, Debian will fix that bug (if not, the next release has a
newer upstream which doesn't have this issue any more), at which point
this can (and should) be reverted

4 years agoremove debugging print that got left behind
Matthew Vernon [Thu, 14 Jul 2016 15:51:39 +0000 (16:51 +0100)]
remove debugging print that got left behind

4 years agoActive monitoring of thin pool usage
Matthew Vernon [Thu, 14 Jul 2016 15:40:14 +0000 (16:40 +0100)]
Active monitoring of thin pool usage

We now have a shell script (run by systemd) that checks the thin-pool
usage every 30s and if it's over 90% runs managesnapshots.py which
removes snapshots to get us below the limit again.

This commit includes the script, the systemd service file, ansible
jobs to install them, and a handler that restarts the script if the
service file or script change.

4 years agocorrect typo
Matthew Vernon [Thu, 14 Jul 2016 15:18:42 +0000 (16:18 +0100)]
correct typo

4 years agoMake use of extra disk in creating new VMs
Matthew Vernon [Thu, 14 Jul 2016 10:01:39 +0000 (11:01 +0100)]
Make use of extra disk in creating new VMs

Previously, we always allocated 20G to the thin pool, and 10G to
/replicated

Now we allocate all the disk not used by / and swap (4.5G and 0.5G) to
the thin pool, and allocate half of that to /replicated.

We replace -L 20G (absolute size) with -l 100%FREE (relative size),
but there is no equivalent replacement for -V 10G (absolute size);
instead we arrange to pass an extra argument to the mwsclient
xen-tools role that tells it how much space to allocate for
/replicated.

4 years agoExit after running real-crontab
Matthew Vernon [Mon, 11 Jul 2016 09:52:58 +0000 (10:52 +0100)]
Exit after running real-crontab

The logic error was that when mws-cron was run as root, it would do
the right thing (run real-crontab) but then go on and try to run the
userv service (which would fail).

4 years agouse fixperms.py for changing permissions of docroot (asana MW320)
Matthew Vernon [Fri, 8 Jul 2016 10:27:11 +0000 (11:27 +0100)]
use fixperms.py for changing permissions of docroot (asana MW320)

Previously, this code did chgrp -R www-data to "enable" writability,
then chgrp -R site-admin to "disable" this. That meant that any
complex group settings would be lost.

fixperms.py now preserves those permissions and ownerships, and so
"disable" puts them back as they were.

4 years agochdir to directory in USERV_CWD
Matthew Vernon [Thu, 7 Jul 2016 17:38:12 +0000 (18:38 +0100)]
chdir to directory in USERV_CWD

This means that relative paths the user specifies will work properly.

4 years agoInstall fixperms.py and associated userv service and wrappers
Matthew Vernon [Thu, 7 Jul 2016 17:21:14 +0000 (18:21 +0100)]
Install fixperms.py and associated userv service and wrappers

4 years agouserv service for fixperms and wrapper scripts for the user
Matthew Vernon [Thu, 7 Jul 2016 17:15:28 +0000 (18:15 +0100)]
userv service for fixperms and wrapper scripts for the user

4 years agoDon't print "." after list of paths
Matthew Vernon [Thu, 7 Jul 2016 17:03:54 +0000 (18:03 +0100)]
Don't print "." after list of paths

. might reasonably be a path, so that's just confusing

4 years agoadd cli for chmod
Matthew Vernon [Thu, 7 Jul 2016 17:02:31 +0000 (18:02 +0100)]
add cli for chmod

4 years agochgrp as user fixes - set supplementary groups, don't store perms
Matthew Vernon [Thu, 7 Jul 2016 16:36:43 +0000 (17:36 +0100)]
chgrp as user fixes - set supplementary groups, don't store perms

Two fixes here:

i) set the supplementary groups list before seteuid; otherwise chmod
will fail as we have dropped root priviledges without becoming a
member of the groups the target user is a member of

ii) use getperms (which just reads permissions) rather than
loadstoredperms (which is for where we've previously stored the file
permissions

4 years agoAdd a getgrouplist function
Matthew Vernon [Thu, 7 Jul 2016 16:35:26 +0000 (17:35 +0100)]
Add a getgrouplist function

In order to successfully chgrp-as-user we need to not only become that
user, but also set up our supplementary groups list to be the same as
for that user. This function makes that easier, but providing the
relevant list.

4 years agoCheck we're only trying to change things underdocroot
Matthew Vernon [Thu, 7 Jul 2016 14:30:57 +0000 (15:30 +0100)]
Check we're only trying to change things underdocroot

4 years agoUI for running chgrp as owning user
Matthew Vernon [Thu, 7 Jul 2016 14:22:34 +0000 (15:22 +0100)]
UI for running chgrp as owning user

4 years agowww_chgrp CLI
Matthew Vernon [Thu, 7 Jul 2016 14:01:19 +0000 (15:01 +0100)]
www_chgrp CLI

4 years agomain function (basic UI wrapper)
Matthew Vernon [Thu, 7 Jul 2016 14:00:57 +0000 (15:00 +0100)]
main function (basic UI wrapper)

4 years agocheck path exists before trying to get permissions in it
Matthew Vernon [Thu, 7 Jul 2016 14:00:18 +0000 (15:00 +0100)]
check path exists before trying to get permissions in it

4 years agooctal mode changes for files
Matthew Vernon [Tue, 28 Jun 2016 15:10:00 +0000 (16:10 +0100)]
octal mode changes for files

4 years agoCode to test chmod-handling
Matthew Vernon [Mon, 27 Jun 2016 16:51:57 +0000 (17:51 +0100)]
Code to test chmod-handling

4 years agochange prototype to match argument order in calling code
Matthew Vernon [Mon, 27 Jun 2016 16:51:09 +0000 (17:51 +0100)]
change prototype to match argument order in calling code

4 years agoCode to use perm-parsing etc. to actually chmod (as owner of paths)
Matthew Vernon [Mon, 27 Jun 2016 15:59:50 +0000 (16:59 +0100)]
Code to use perm-parsing etc. to actually chmod (as owner of paths)

This uses the previous-developed code to check each mode change in
turn, and if appropriate, become the owner of the file/directory and
make that change. It behaves as chmod(1), with the following
restrictions:

* no root-owned files/dirs will be adjusted
* no setuid/setgid files will be adjusted
* no setuid/setgid bits will be changed

It talks to stderr about files it refuses to change

4 years agoFix typo
Matthew Vernon [Mon, 27 Jun 2016 14:53:42 +0000 (15:53 +0100)]
Fix typo

4 years agohandle setting symbolic modes correctly wrt directories
Matthew Vernon [Mon, 27 Jun 2016 10:50:51 +0000 (11:50 +0100)]
handle setting symbolic modes correctly wrt directories

The previous code handled '=' incorrectly - it needed to only affect
the specified bits (e.g. u=rw should leave g/o alone) and for
directories it needed to not affect setsid/gid unless mentioned
(e.g. u=rw should leave setuid alone on directories).

This code does this correctly, using similar logic to the copy code
above.

4 years agomode copy operations now correct
Matthew Vernon [Mon, 27 Jun 2016 10:23:25 +0000 (11:23 +0100)]
mode copy operations now correct

mode copy operations are [aguo][+-=][ugo] i.e. take the
user/group/owner permissions of the target and apply them
(add/remove/set) to some of the other bits. This operation never
adjust setuid/gid bits, even on files.

The change here is to get "=" correct (we mask out the target bits and
then OR the result with the desired set of bits) and to make sure we
don't affect setuid/gid with the +/- operation.

4 years agoOctal modes must be at least 5 digits to clear setuid/gid on dirs
Matthew Vernon [Mon, 27 Jun 2016 08:49:31 +0000 (09:49 +0100)]
Octal modes must be at least 5 digits to clear setuid/gid on dirs

This is the behaviour of chmod(1) in GNU coreutils - to clear setgid
or setuid on a directory by specifying a simple octal mode that mode
must be at least five digits long. So:

chmod 0755 D #does not affect setuid/gid on directory D
chmod 00755 D #does clear those bits

4 years agoMerge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible
Jon Warbrick [Wed, 15 Jun 2016 07:59:24 +0000 (08:59 +0100)]
Merge branch 'master' of git.csx.cam.ac.uk:/u/mcv21/isg_ansible

4 years agoApply proposed changes
Matthew Vernon [Thu, 9 Jun 2016 17:21:19 +0000 (18:21 +0100)]
Apply proposed changes

Code to take the set of mode-change operations, and apply them.

We still need to handle the fact that if the operation is = and the
target is a directory, then we should not touch set(uid/gid) unless
they are explicitly mentioned.

4 years agoCheck for None return value of check_octal
Matthew Vernon [Thu, 9 Jun 2016 15:57:40 +0000 (16:57 +0100)]
Check for None return value of check_octal

check_octal might legitimately return 0, so we need to check for not
None rather than (implicitly) True (since 0 evaluates as False).

4 years agoCorrect a couple of typos
Matthew Vernon [Thu, 9 Jun 2016 15:49:54 +0000 (16:49 +0100)]
Correct a couple of typos

4 years agofirst attempt at parsing chmod mode specs
Matthew Vernon [Thu, 9 Jun 2016 15:41:19 +0000 (16:41 +0100)]
first attempt at parsing chmod mode specs

4 years agocode for calling chgrp as file owner
Matthew Vernon [Thu, 9 Jun 2016 15:40:02 +0000 (16:40 +0100)]
code for calling chgrp as file owner

4 years agobug fix P22
Abraham Martin [Wed, 8 Jun 2016 15:02:54 +0000 (16:02 +0100)]
bug fix