diff --git a/.ansible-lint b/.ansible-lint
index 767e23f..c430e1b 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -1,4 +1,3 @@
 skip_list:
   - '106'  # Role name {} does not match ``^[a-z][a-z0-9_]+$`` pattern'
-  - '208'  # File permissions not mentioned
 
diff --git a/ansible/cleanup_state.yml b/ansible/cleanup_state.yml
index ebab81b..b5979be 100644
--- a/ansible/cleanup_state.yml
+++ b/ansible/cleanup_state.yml
@@ -22,3 +22,4 @@
         # (cannot represent an object).
         content: "{{ new_state.get('result') | to_nice_yaml }}"
         dest: "{{ state_file_path }}"
+        mode: preserve
diff --git a/ansible/hypervisor_setup.yml b/ansible/hypervisor_setup.yml
index 0f3f558..e2ceb2e 100644
--- a/ansible/hypervisor_setup.yml
+++ b/ansible/hypervisor_setup.yml
@@ -24,6 +24,7 @@
   file:
     path: "{{ log_directory }}"
     state: directory
+    mode: 0755
   become: true
   # Don't remove log directory during teardown to preserve historical logs.
   when: cmd != 'teardown'
diff --git a/ansible/roles/ironic-enrolment/tasks/main.yml b/ansible/roles/ironic-enrolment/tasks/main.yml
index 7c7fdfa..cd72c95 100644
--- a/ansible/roles/ironic-enrolment/tasks/main.yml
+++ b/ansible/roles/ironic-enrolment/tasks/main.yml
@@ -18,6 +18,7 @@
   copy:
     src: requirements.txt
     dest: "{{ req_file.path }}"
+    mode: preserve
 
 - name: Ensure Python requirements are installed
   pip:
diff --git a/ansible/roles/wait-for-resources/tasks/main.yml b/ansible/roles/wait-for-resources/tasks/main.yml
index 2f4ef39..25ea9bf 100644
--- a/ansible/roles/wait-for-resources/tasks/main.yml
+++ b/ansible/roles/wait-for-resources/tasks/main.yml
@@ -20,6 +20,7 @@
   copy:
     src: requirements.txt
     dest: "{{ wait_for_resources_python_requirements_path }}"
+    mode: preserve
 
 - name: Install dependencies in supplied venv
   pip:
diff --git a/ansible/schedule.yml b/ansible/schedule.yml
index 7415a80..91e9e31 100644
--- a/ansible/schedule.yml
+++ b/ansible/schedule.yml
@@ -45,3 +45,4 @@
         # (cannot represent an object).
         content: "{{ new_state.get('result') | to_nice_yaml }}"
         dest: "{{ state_file_path }}"
+        mode: preserve