** Description changed:

  === Begin SRU Template ===
  [Impact]
  The only way to assign a hashed password to a user is to use passwd within a
  users entry like this:
   users:
     - name: root
       passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
  
  But, if that user is already present on the system, cloud-init would skip
  setting the password.  The change was to add support for providing
  encrypted passwords to 'chpasswd' as:
  
   chpasswd:
     list: |
       user:$5$eriogqzq$Dg7PxHsKGzziuEGkZgkLvacjuEFeljJ.rLf.hZqKQLA
  
  [Test Case]
  There is an integration test in cloud-init that runs though this code.
  To run that:
  
  $ git clone https://git.launchpad.net/cloud-init
  $ cd cloud-init
  
  # download the appropriate deb for cloud-init from -proposed
- # to
  $ rel=xenial
- $ 
http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.9-48-g1c795b9-0ubuntu1~16.04.1_all.deb
- $ pver=$(rmadison --url=ubuntu --suite=$rel-proposed cloud-init |
-        awk '{print $3}')
+ $ pver=$(rmadison --url=ubuntu --suite=$rel-proposed cloud-init | awk '{print 
$3}')
  $ fname="cloud-init_${pver}_all.deb"
  $ wget "http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/$fname";
  $ ln -sf $fname cloud-init_all.$rel.deb
  $ tox -e citest -- run -v -n $rel --deb=cloud-init_all.$rel.deb \
-    -t tests/cloud_tests/testcases/modules/set_password_list_string.py \
-    -t tests/cloud_tests/testcases/modules/set_password_list.py
- 
+    -t tests/cloud_tests/testcases/modules/set_password_list_string.py \
+    -t tests/cloud_tests/testcases/modules/set_password_list.py
  That will install the new cloud-init into a container and run
  with user data to excercise this new feature.
  
  [Regression Potential]
  Some user passwords provided via chpasswd and starting with '$'
  may be interpreted as hashed passwords.
  Specifically, those matching: r'\$[1,2a,2y,5,6](\$.+){2}'
  
  In english, that regex is:
-   - starts with a '$'
-   - followed by '1', '2a', '2y', '5', '6'
-   - followed by a $
-   - followed by 1 or more characters
-   - followed by another $
-   - followed by 1 or more characters
+   - starts with a '$'
+   - followed by '1', '2a', '2y', '5', '6'
+   - followed by a $
+   - followed by 1 or more characters
+   - followed by another $
+   - followed by 1 or more characters
  
  So a total of 3 '$' and starting with one of those specific 3 or 4
  character strings.  That could definitely happen, but it is low odds, and 
also fairly low risk.  If a user hits this, they'd be unable to reach a new 
instance.
  
  [Other Info]
+ Upstream commit:
+  https://git.launchpad.net/cloud-init/commit/?id=21632972df034
+ 
  
  === End SRU Template ===
  
  The only way to assign a hashed password to a user is to use passwd within a 
users entry like this:
  users:
     - name: root
       passwd: $6$Cl....Hy$IEJciQZLxQLzkST......g.bzqf3lUl.
  
  But, if that user is already present on the system, cloud-init will skip 
setting the password:
  journal: [CLOUDINIT] __init__.py[INFO]: User root already exists, skipping.
  
  You can change password with chpasswd, but that only supports clear-text
  password.
  
  Requesting that chpasswd get support for setting a hashed password to
  users.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1570325

Title:
  RFE: chpasswd in cloud-init should support hashed passwords

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1570325/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to