当前位置: 首页 > 知识库问答 >
问题:

Ansible:创建具有sudo权限的用户

长孙阳焱
2023-03-14
workstation> ssh deployer@myserver
myserver>  sudo apt-get install git
myserver> exit
workstation>

我试图弄清楚如何使用Ansible(version2.0.2.0和python 2.7.3)创建一个名为“deployer”的用户,并能够使用该id登录服务器,然后进行“apt-get install”之类的操作。我的剧本是这样的:

---
- hosts: example
  become: yes
  tasks:
  - name: Update apt cache
    apt:
      update_cache: yes
      cache_valid_time: 3600

  - group: name=sudo state=present

  - name: Add deployer user and add it to sudo
    user: name=deployer
          state=present
          createhome=yes
    become: yes
    become_method: "sudo"

  - name: Set up authorized keys for the deployer user
    authorized_key: user=deployer key="{{item}}"
    with_file:
      - /home/jaygodse/.ssh/id_rsa.pub

运行这个playbook后,我可以以“deployer”(例如ssh deployer@myserver)的身份ssh进入机器,但是如果我运行sudo命令,它总是要求我输入sudo密码。

我知道“部署者”用户最终必须找到进入visudo users文件的方式,但我无法确定要调用哪些神奇的Ansible咒语,以便我可以以html" target="_blank">部署者的身份ssh进入机器,然后运行一个sudo命令(例如sudo apt-get install git“),而不被提示输入sudo密码。

我已经搜索了很多,但我似乎找不到一个Ansible playbook片段,它将用户“部署者”放入sudo组而不需要密码。这是怎么做到的?

共有1个答案

逄征
2023-03-14

有时是知道该问什么。我不知道,因为我是一个开发人员谁承担了一些DevOps的工作。

显然,'passwordless'或NOPASSWD登录是一个需要放在/etc/sudoers文件中的东西。

我的问题的答案在Ansible:维护sudoers列表的最佳实践中。

- name: Make sure we have a 'wheel' group
  group:
    name: wheel
    state: present

- name: Allow 'wheel' group to have passwordless sudo
  lineinfile:
    dest: /etc/sudoers
    state: present
    regexp: '^%wheel'
    line: '%wheel ALL=(ALL) NOPASSWD: ALL'
    validate: 'visudo -cf %s'

- name: Add sudoers users to wheel group
  user:
    name=deployer
    groups=wheel
    append=yes
    state=present
    createhome=yes

- name: Set up authorized keys for the deployer user
  authorized_key: user=deployer key="{{item}}"
  with_file:
    - /home/railsdev/.ssh/id_rsa.pub
%wheel ALL=(ALL) NOPASSWD: ALL
 类似资料:
  • 问题内容: 我通过以下方式创建了具有最低权限的用户: 效果很好。如果要在我的项目中检查权限,请使用 arda arda 检出:http : _//arda-maps.org:2480_ 。 所以我的问题是这些权利仍然允许诸如 更改顶点名称之类的 事情(因此我将LOVES更改为LOVESd)。但是,这扼杀了整个数据库的结构和功能! 那么,如何才能进一步限制权利呢?这真的很糟糕,因为我想让任何人都可以

  • 问题内容: 我想用不带sudo密码的用户sa1运行ansible: 第一次可以: 第二次失败: 请帮忙! 问题答案: 这不是您的服务器的配置。确保允许sudo的用户使用并且无需密码即可使用。 要登录到服务器 使用以下命令打开sudoers文件 确保您有这样的一行: 用您的用户替换 保存文件 您可以通过运行以下命令从服务器本身进行尝试: 如果这可行,那么它也应该可以正常运行。

  • 连接MySQL操作 mysql -h 主机地址 -u 用户名 -p 用户密码 注:-u与root可以不用加空格,其它参数也一样。 DEMO 打开电脑CMD,输入 mysql -h 127.0.0.1 -u root -p 回车,然后输入密码。就可以连接到本地的MySQL数据库。 创建MySQL用户 CREATE USER 'username'@'host' IDENTIFIED BY 'passw

  • 问题内容: 我正在尝试通过以下命令使用PHP在服务器上创建目录: 但是它不提供完全权限,仅提供以下权限: 问题答案: 该模式是由当前的修改,这是在这种情况下。 工作方式是减法。您获得的初始许可权,然后减去以获得 实际 许可权: 如果您不希望这种情况发生,则需要将您的临时设置为零,以使其无效。您可以使用以下代码段执行此操作: 第一行将更改为零,同时将前一个存储到中。第二行使目录使用所需的权限和(现在

  • 创建目录权限 如果你想创建一个目录并授予777权限,你需要怎么做?查看Go的API文档我们可以这样写。 源文件为mkdir.go。 package main import ( "fmt" "os" ) func main() { err := os.MkdirAll("/tmp/gotest/", 0777) if err != nil { panic(er

  • 我可以使用对实体具有权限的Spring SecurityACL,但我想知道如何测试用户是否具有对类的“创建”(第2位)权限。 比如: 有人能帮我吗? 提前谢谢