diff --git a/files/scripts/fix-home-fedora-ownerships.sh b/files/scripts/fix-home-fedora-ownerships.sh new file mode 100755 index 0000000000..ff84c85e37 --- /dev/null +++ b/files/scripts/fix-home-fedora-ownerships.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +for dname in */; do + dname="${dname%%/}" + downer="$(stat --format %U "$dname")" + # skip directories owned by root + if [ "$downer" = "root" ]; then + continue + fi + # verify that the directory actually is the home directory of the same-named user + IFS=":" read -r _ _ _ _ _ homedir _ < <(getent passwd "$dname") + if [ "$homedir" != "/home/fedora/$dname" ]; then + continue + fi + echo "fixing ownership: $dname" + chown -R "$dname:" "$dname" +done diff --git a/playbooks/manual/noggin-deployment/fix-home-fedora-ownerships.yml b/playbooks/manual/noggin-deployment/fix-home-fedora-ownerships.yml index 55e704cb66..8f9eae765c 100644 --- a/playbooks/manual/noggin-deployment/fix-home-fedora-ownerships.yml +++ b/playbooks/manual/noggin-deployment/fix-home-fedora-ownerships.yml @@ -15,26 +15,24 @@ follow: yes register: home_fedora_res + - name: Copy the script to the host + copy: + src: scripts/fix-home-fedora-ownerships.sh + dest: /usr/local/sbin/fix-home-fedora-ownerships.sh + mode: 0755 + when: home_fedora_res.stat.isdir + - name: Fix ownership of home directories in /home/fedora # assumes that directory name == user name shell: chdir: /home/fedora - # skip directories owned by root and verify that the directory actually is the home directory - # of the same-named user - cmd: >- - for dname in */; do - dname="${dname%%/}"; - downer="$(stat --format %U "$dname")"; - if [ "$downer" = "root" ]; then - continue - fi; - IFS=":" read -r _ _ _ _ _ homedir _ < <(getent passwd "$dname"); - if [ "$homedir" != "/home/fedora/$dname" ]; then - continue - fi; - echo "fixing ownership: $dname"; - chown -R "$dname:" "$dname"; - done + cmd: /usr/local/sbin/fix-home-fedora-ownerships.sh register: chown_res changed_when: "'fixing ownership:' in chown_res.stdout" when: home_fedora_res.stat.isdir + + - name: Delete the script from the host + file: + path: /usr/local/sbin/fix-home-fedora-ownerships.sh + state: absent + when: home_fedora_res.stat.isdir