我正在尝试将我的点文件和一些个人配置文件推送到服务器(我不是root或sudoer)。 Ansible连接为我的用户,以便编辑我的主文件夹中的文件。
我想将我的默认shell设置为usr/bin/fish
。我不允许编辑/etc/passwd
user:
name: shaka
shell: /usr/bin/fish
不会跑。
我还检查了chsh
命令,但是我的密码的可执行提示。
我怎么能在这样的机器上更改我的shell? (Debian 8,Ubuntu 16,Opensuse)
我最终使用了两个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不会更新它(因为锁仍然存在)。您可能希望避免此行为。
Ubuntu 16
在~/.bashrc
添加第一行
/usr/bin/fish && exit