ubuntu - 用puppet创建用户, 无法指定密码
PHP中文网
PHP中文网 2017-04-21 10:55:18
0
1
439

已经试过在ubuntu上安装 puppet libshadow-ruby1.8

class users {
  package { "libshadow-ruby1.8":
    ensure => latest,
    require => Exec['apt-get update']
  }
  user { "ubuntu":
    ensure  => present,
    uid     => '1001',
    gid     => 'admin',
    shell   => '/bin/bash',
    password => sha1('ubuntu'),
    managehome => true,
    require => Package['libshadow-ruby1.8']
  }
}

include users

这么写用户名是创建了, 但是密码还是没有

ps: 其实我是在用vagrant, vagrant是默认用户名想换成ubuntu

PHP中文网
PHP中文网

认证0级讲师

membalas semua(1)
刘奇

Apabila anda menyebut "masih tiada kata laluan", adakah anda bermaksud pengesahan gagal apabila anda memasukkan kata laluan "ubuntu"? Atau adakah tiada rekod ubuntu dalam fail bayangan sama sekali?

Saya rasa ini yang pertama (pengesahan gagal). Kata laluan dalam fail bayangan nampaknya tidak dijana oleh sha1(.

Penyelesaian yang saya fikirkan ialah:

Gunakan kata laluan yang disalin daripada fail bayangan dalam kelas boneka

Mula-mula buat pengguna dalam terminal menggunakan useradd, passswd dan tetapkan kata laluan kepada ubuntu, seperti yang ditunjukkan dalam angka:

Pergi ke fail bayangan dan salin kata laluan yang disulitkan, dan gunakan kod boneka ini untuk mencipta pengguna:

  user { "ubuntu":
    ensure  => present,
    uid     => '1001',
    gid     => 'admin',
    shell   => '/bin/bash',
    password => '$mEUouB2K$zCgsWNuI0KhUvHbTcv6bV1UV2gx/VFB390zVOZ37lukr2PI7b4RKNkvpHaMRoG4zCqLvP0dN4p6uIi0xEZeRJ0',
    managehome => true,
    require => Package['libshadow-ruby1.8']
  }
Tulis skrip bash dan gunakan arahan expect dan passwd untuk menetapkan kata laluan untuk pengguna baharu

Memandangkan arahan passwd menerima kata laluan terus daripada stdin, ia tidak boleh melepasi baris arahan parameter seperti passwd ubuntu ubuntu Untuk menetapkan kata laluan, penyelesaiannya ialah dengan menulis shell bash sendiri (dengan mengandaikan ia dipanggil set_passwd.sh Skrip shell ini menerima kata laluan teks biasa daripada baris arahan, dan kemudian menggunakan expect untuk menghantarnya kepada). arahan passwd
Dengan cara ini, skrip boneka anda adalah seperti berikut:

  user { "ubuntu":
    ensure  => present,
    uid     => '1001',
    gid     => 'admin',
    shell   => '/bin/bash',
    managehome => true,
    require => Package['libshadow-ruby1.8'],
    notify  => Exec['change_pass']
  }
  
  exec {'change_pass':
      command => '/bin/sh /root/set_passwd.sh ubuntu[用户名] ubuntu[密码]',
      require => File['/root/set_passwd.sh']
  }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan