fix ansible-lint errors

This commit is contained in:
Sergey Malyuk
2025-12-16 18:15:47 +03:00
parent fbd36ee3fc
commit 8d3b9618f6
5 changed files with 24 additions and 24 deletions

View File

@@ -1,2 +1,2 @@
--- ---
sftp_permissions: "open,close,read,write,lstat,fstat,opendir,readdir,remove,mkdir,rmdir,realpath,rename" sftp_share_permissions: "open,close,read,write,lstat,fstat,opendir,readdir,remove,mkdir,rmdir,realpath,rename"

View File

@@ -31,9 +31,9 @@
group: root group: root
roles: roles:
- role: genlab.sftp_share - role: genlab.common.sftp_share
sftp_username: "testusr" sftp_username: "testusr"
sftp_pubkey: "{{ lookup('file', 'ssh/id_ed25519.pub') }}" sftp_pubkey: "{{ lookup('file', 'ssh/id_ed25519.pub') }}"
sftp_root: "/primary/data" sftp_root: "/primary/data"
sftp_transfers_groupname: "testgrp" sftp_transfers_groupname: "testgrp"
sftp_permissions: "open,close,read,lstat,fstat,opendir,readdir,realpath,stat" # read-only sftp_share_permissions: "open,close,read,lstat,fstat,opendir,readdir,realpath,stat" # read-only

View File

@@ -13,67 +13,67 @@
- name: Gather user SFTP directory info - name: Gather user SFTP directory info
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ sftp_root }}/{{ sftp_username }}-uploads" path: "{{ sftp_root }}/{{ sftp_username }}-uploads"
register: sftp_root_stat register: sftp_share_permissions
- name: Assert that user SFTP directory has correct owner - name: Assert that user SFTP directory has correct owner
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- sftp_root_stat.stat.pw_name == "root" - sftp_share_permissions.stat.pw_name == "root"
- sftp_root_stat.stat.gr_name == "root" - sftp_share_permissions.stat.gr_name == "root"
success_msg: "SFTP directory {{ sftp_root }}/{{ sftp_username }}-uploads has correct owner root:root" success_msg: "SFTP directory {{ sftp_root }}/{{ sftp_username }}-uploads has correct owner root:root"
fail_msg: | fail_msg: |
"SFTP directory {{ sftp_root }}/{{ sftp_username }}-uploads does not have correct owner root:root, "SFTP directory {{ sftp_root }}/{{ sftp_username }}-uploads does not have correct owner root:root,
actual owner is {{ sftp_root_stat.stat.pw_name }}:{{ sftp_root_stat.stat.gr_name }}" actual owner is {{ sftp_share_permissions.stat.pw_name }}:{{ sftp_share_permissions.stat.gr_name }}"
- name: Gather transfers directory info - name: Gather transfers directory info
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ sftp_root }}/{{ sftp_username }}-uploads/transfers" path: "{{ sftp_root }}/{{ sftp_username }}-uploads/transfers"
register: transfers_stat register: sftp_share_transfers_stat
- name: Assert that transfers directory has correct owner - name: Assert that transfers directory has correct owner
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- transfers_stat.stat.pw_name == sftp_username - sftp_share_transfers_stat.stat.pw_name == sftp_username
- transfers_stat.stat.gr_name == sftp_transfers_groupname - sftp_share_transfers_stat.stat.gr_name == sftp_transfers_groupname
success_msg: "Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers has correct owner {{ sftp_username }}:{{ sftp_transfers_groupname }}" success_msg: "Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers has correct owner {{ sftp_username }}:{{ sftp_transfers_groupname }}"
fail_msg: | fail_msg: |
"Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers does not have correct owner {{ sftp_username }}:{{ sftp_transfers_groupname }}, "Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers does not have correct owner {{ sftp_username }}:{{ sftp_transfers_groupname }},
actual owner is {{ transfers_stat.stat.pw_name }}:{{ transfers_stat.stat.gr_name }}" actual owner is {{ sftp_share_transfers_stat.stat.pw_name }}:{{ sftp_share_transfers_stat.stat.gr_name }}"
- name: Assert that transfers directory has correct permissions - name: Assert that transfers directory has correct permissions
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- transfers_stat.stat.mode == "2770" - sftp_share_transfers_stat.stat.mode == "2770"
success_msg: "Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers has correct permissions 2770" success_msg: "Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers has correct permissions 2770"
fail_msg: | fail_msg: |
"Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers does not have correct permissions 2770, "Directory {{ sftp_root }}/{{ sftp_username }}-uploads/transfers does not have correct permissions 2770,
actual permissions are {{ sftp_root_stat.stat.mode }}" actual permissions are {{ sftp_share_permissions.stat.mode }}"
- name: Get user info - name: Get user info
ansible.builtin.getent: ansible.builtin.getent:
database: passwd database: passwd
key: "{{ sftp_username }}" key: "{{ sftp_username }}"
register: user_info register: sftp_share_user_info
- name: Check user exists - name: Check user exists
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- user_info is defined - sftp_share_user_info is defined
success_msg: "User {{ sftp_username }} exists" success_msg: "User {{ sftp_username }} exists"
fail_msg: "User {{ sftp_username }} does not exist" fail_msg: "User {{ sftp_username }} does not exist"
- name: Check that sshd refuses non-SFTP connection attempts - name: Check that sshd refuses non-SFTP connection attempts
changed_when: false changed_when: false
failed_when: ssh.stdout != expected failed_when: sftp_share_ssh.stdout != expected
register: ssh register: sftp_share_ssh
vars: vars:
expected: "This service allows sftp connections only." expected: "This service allows sftp connections only."
ansible.builtin.command: "ssh -l {{ sftp_username }} 127.0.0.1 -o StrictHostKeyChecking=no exit" ansible.builtin.command: "ssh -l {{ sftp_username }} 127.0.0.1 -o StrictHostKeyChecking=no exit"
- name: Check that sFTP chroots into /transfers - name: Check that sFTP chroots into /transfers
changed_when: false changed_when: false
register: sftp register: sftp_share_sftp
failed_when: sftp.stdout != expected failed_when: sftp_share_sftp.stdout != expected
vars: vars:
expected: "sftp> pwd\nRemote working directory: /transfers" expected: "sftp> pwd\nRemote working directory: /transfers"
ansible.builtin.shell: ansible.builtin.shell:
@@ -82,8 +82,8 @@
- name: Check that non-whitelisted sFTP permissions are denied - name: Check that non-whitelisted sFTP permissions are denied
changed_when: false changed_when: false
register: sftp_mkdir register: sftp_share_mkdir
failed_when: sftp_mkdir.stderr != expected failed_when: sftp_share_mkdir.stderr != expected
vars: vars:
expected: 'remote mkdir "/transfers/foo": Permission denied' expected: 'remote mkdir "/transfers/foo": Permission denied'
ansible.builtin.shell: ansible.builtin.shell:

View File

@@ -1,5 +1,5 @@
Match User {{ sftp_username }} Match User {{ sftp_username }}
ChrootDirectory /primary/data/{{ sftp_username }}-uploads ChrootDirectory /primary/data/{{ sftp_username }}-uploads
ForceCommand internal-sftp -u 007 -p {{ sftp_permissions }} -d /transfers ForceCommand internal-sftp -u 007 -p {{ sftp_share_permissions }} -d /transfers
AllowTcpForwarding no AllowTcpForwarding no
X11Forwarding no X11Forwarding no