Любой, кто использовал Multipass или AWS, знаком с пользователем ubuntu
, имеющим беспарольный доступ к sudo. Я запускаю несколько виртуальных машин через многопроходный
, каждая со многими пользователями, и я хочу использовать sudo без пароля для их учетных записей по двум причинам
sudo
, если у них его нет sudo apt-get
Я знаю, что могу выполнить команду sudo visudo
и вносят некоторые изменения для обеспечения sudo без пароля, однако это требует вмешательства человека. Я пробовал взломать это с помощью sed ( sudo sed -i "s /% admin \ s * ALL = (ALL) \ s * ALL /% admin ALL = (ALL) NOPASSWD: ALL / g" / etc / sudoers
), но что-то ломается, и я не могу попасть в / etc / sudoers
, даже с пользователем ubuntu
.
Наконец, я попытался посмотреть на группы, в которые входит ubuntu
, и заметил, что он является членом adm
, который, как я полагаю, является администратором, и [вслепую] добавил все учетные записи пользователей в этой группе, но это тоже не сработало.
У меня два вопроса, которые на самом деле являются одним и тем же вопросом.
multipass поддерживает cloud-init, и с его помощью вы можете делать все эти вещи автоматически без какого-либо скрипта.
multipass launch --cloud-init <файл> ...
А в файле cloud-init вы можете указать всех пользователей, которые будут созданы, и дать им беспарольный sudo.
Это будет выглядеть примерно так
package_update: true
package_upgrade: true
packages:
- ...
users:
- name: ubuntu
sudo: ALL=(ALL) NOPASSWD:ALL
home: /home/ubuntu
shell: /bin/bash
groups: [adm, audio, cdrom, dialout, floppy, video, plugdev, dip, netdev, libvirtd]
lock_passwd: True
gecos: Ubuntu
Посмотрите в документации по cloudinit для подробностей.
[Редактировать - добавить проверенный пример]
package_update: true
package_upgrade: true
packages:
users:
- name: user1
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-rsa ...
- name: user2
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-rsa ...
$ multipass launch --cloud-init cloudinit.yaml
Launched: great-dalmatian
$ ssh user1@10.88.17.191
...
user1@great-dalmatian:~$ id
uid=1000(user1) gid=1000(user1) groups=1000(user1)
user1@great-dalmatian:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
$ ssh user2@10.88.17.191 "id; sudo id"
uid=1001(user2) gid=1001(user2) groups=1001(user2)
uid=0(root) gid=0(root) groups=0(root)