Open lfchris opened 7 months ago
When creating a cifs mount with credentials, I noticed that if you have an & (ampersand) in your password, it will be converted to \046. This happens in the entire string that you give to the opts field.
&
\046
opts
mount
ansible [core 2.16.1] config file = /Users/chris/git/ansinv/ansible.cfg configured module search path = ['/Users/chris/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/Cellar/ansible/9.1.0/libexec/lib/python3.12/site-packages/ansible ansible collection location = /Users/chris/.ansible/collections:/usr/share/ansible/collections executable location = /usr/local/bin/ansible python version = 3.12.0 (main, Oct 2 2023, 12:03:24) [Clang 15.0.0 (clang-1500.0.40.1)] (/usr/local/Cellar/ansible/9.1.0/libexec/bin/python) jinja version = 3.1.2 libyaml = True
# /Users/chris/.ansible/collections/ansible_collections Collection Version ------------- ------- ansible.posix 1.4.0 # /usr/local/Cellar/ansible/9.1.0/libexec/lib/python3.12/site-packages/ansible_collections Collection Version ------------- ------- ansible.posix 1.5.4
ANSIBLE_NOCOWS(/Users/chris/git/ansinv/ansible.cfg) = True CACHE_PLUGIN(/Users/chris/git/ansinv/ansible.cfg) = jsonfile CACHE_PLUGIN_CONNECTION(/Users/chris/git/ansinv/ansible.cfg) = ~/.ansible_cache CACHE_PLUGIN_TIMEOUT(/Users/chris/git/ansinv/ansible.cfg) = 86400 CALLBACKS_ENABLED(/Users/chris/git/ansinv/ansible.cfg) = ['profile_tasks'] CONFIG_FILE() = /Users/chris/git/ansinv/ansible.cfg DEFAULT_FORKS(/Users/chris/git/ansinv/ansible.cfg) = 30 DEFAULT_GATHERING(/Users/chris/git/ansinv/ansible.cfg) = smart DEFAULT_HOST_LIST(/Users/chris/git/ansinv/ansible.cfg) = ['/Users/chris/git/ansinv/hosts'] DEFAULT_LOG_PATH(/Users/chris/git/ansinv/ansible.cfg) = /Users/chris/.ansible/ansible.log DEFAULT_MANAGED_STR(/Users/chris/git/ansinv/ansible.cfg) = This file is managed by Ansible - do not edit DEFAULT_ROLES_PATH(/Users/chris/git/ansinv/ansible.cfg) = ['/Users/chris/git/roles'] DEFAULT_STDOUT_CALLBACK(/Users/chris/git/ansinv/ansible.cfg) = yaml DEFAULT_TIMEOUT(/Users/chris/git/ansinv/ansible.cfg) = 15 HOST_KEY_CHECKING(/Users/chris/git/ansinv/ansible.cfg) = False INVENTORY_IGNORE_EXTS(/Users/chris/git/ansinv/ansible.cfg) = ['~', '.orig', '.bak', '.ini', '.cfg', '.retry', '.pyc', '.pyo', '.csv'] INVENTORY_IGNORE_PATTERNS(/Users/chris/git/ansinv/ansible.cfg) = ['(host|group)_files'] PAGER(env: PAGER) = less RETRY_FILES_ENABLED(/Users/chris/git/ansinv/ansible.cfg) = False
Rocky8
ansible-playbook --inventory hosts.yml mount --limit log01 --diff -vvv
This string in /etc/fstab:
/etc/fstab
//192.168.1.24/Backups/log01 /mnt/backup cifs username=log01,password=92KShS&!G5a2E^s,vers=2.0,rw 0 0
//192.168.1.24/Backups/log01 /mnt/backup cifs username=log01,password=92KShS\046!G5a2E^s,vers=2.0,rw 0 0
changed: [log01] => (item={'path': '/mnt/backup', 'fstype': 'cifs', 'src': '//192.168.1.24/Backups/log01', 'opts': "username=log01,password=92KShS&!G5a2E^s,vers=2.0,rw", 'state': 'present'}) => changed=true ansible_loop_var: item backup_file: '' boot: 'yes' dump: '0' fstab: /etc/fstab fstype: cifs invocation: module_args: backup: false boot: true dump: '0' fstab: null fstype: cifs opts: username=log01,password=92KShS&!G5a2E^s,vers=2.0,rw passno: '0' path: /mnt/backup src: //192.168.1.24/Backups/log01 state: present item: fstype: cifs opts: username=log01,password=92KShS&!G5a2E^s,vers=2.0,rw path: /mnt/backup src: //192.168.1.24/Backups/log01 state: present name: /mnt/backup opts: username=log01,password=92KShS&!G5a2E^s,vers=2.0,rw passno: '0' src: //192.168.1.24/Backups/log01
SUMMARY
When creating a cifs mount with credentials, I noticed that if you have an
&
(ampersand) in your password, it will be converted to\046
. This happens in the entire string that you give to theopts
field.ISSUE TYPE
COMPONENT NAME
mount
ANSIBLE VERSION
COLLECTION VERSION
CONFIGURATION
OS / ENVIRONMENT
Rocky8
EXPECTED RESULTS
This string in
/etc/fstab
:ACTUAL RESULTS
This string in
/etc/fstab
: