使用ansible编辑当前用户的shell

问题描述 投票:0回答:2

我正在尝试将我的点文件和一些个人配置文件推送到服务器(我不是root或sudoer)。 Ansible连接为我的用户,以便编辑我的主文件夹中的文件。

我想将我的默认shell设置为usr/bin/fish。我不允许编辑/etc/passwd

user:
  name: shaka
  shell: /usr/bin/fish

不会跑。

我还检查了chsh命令,但是我的密码的可执行提示。

我怎么能在这样的机器上更改我的shell? (Debian 8,Ubuntu 16,Opensuse)

linux bash shell ansible sysadmin
2个回答
1
投票

我最终使用了两个ansible模块:

  • 安慰期待
  • 安全提示

首先我用提示记录我的密码:

vars_prompt:
  - name: "my_password"
    prompt: "Enter password"
    private: yes

然后我使用模块expect将密码发送到chsh命令:

tasks:
  - name: Case insensitve password string match
    expect:
      command: "chsh -s /usr/bin/fish"
      responses:
        (?i)password: "{{ my_password }}"
      creates: ".shell_is_fish"

creates设置一个锁定文件,避免再次触发此任务。这可能是危险的,因为shell可以在之后更改,并且ansible不会更新它(因为锁仍然存在)。您可能希望避免此行为。


-2
投票

Ubuntu 16

~/.bashrc添加第一行

/usr/bin/fish && exit

© www.soinside.com 2019 - 2024. All rights reserved.