Systemd: 비대화형으로 homectl에 비밀번호 제공

Systemd: 비대화형으로 homectl에 비밀번호 제공

ansible을 통해 systemd-homed 홈 디렉토리를 활성화하고 싶습니다. 프로그래밍 방식으로 systemd 비밀번호 에이전트에 비밀번호를 제공하려면 어떻게 해야 합니까?

homectl activate에 직접 비밀번호를 전달할 수없는 것 같습니다 ...

$ echo $PASSWORD | homectl activate $USER

Broadcast message from root@...:

Password entry required for 'Please enter password for user user:' (PID 1319).
Please enter password with the systemd-tty-ask-password-agent tool.

답변1

나는 ansible에 비밀번호를 전달할 방법을 찾지 못했지만 homectl unlockansible은 비밀번호를 제공하여 pam을 호출하도록 하는 옵션을 su제공하여 시스템 홈의 잠금을 해제할 수 있습니다.--loginsu

유사한 구성은 cat "${passwordfile}" | sudo -Siu "${user}" COMMANDansible을 사용하지 않을 때에도 비슷하게 작동해야 합니다.

내 Ansible 플레이북에서는 불필요한 제거 및 재설치를 방지하기 위해 홈 디렉터리에 잠금을 설정하도록 선택했습니다. 또한 su 로그인 셸에서 사용자의 홈 디렉터리에 대해 실행되는 모든 명령을 실행하기로 결정했습니다.

- name: act in users homedir
  become: true
  become_user: "{{user.name}}"
  become_method: su
  become_flags: '--login'
  vars:
    ansible_become_pass: "{{user.password}}"
  block:
  - name: lock user dir to prevent home unmount
    command: "flock -x -w 10 \"/home/{{user}}\" -c 'sleep 600'"
# ...
  always:
    - name: Release the lock
      command: "killall -u {{user}} flock"
      ignore_errors: true

시스템 홈 디렉토리에서 작업을 수행하는 사용자가 되고 싶지 않다면 다음이 대안이 될 수 있습니다.

# Note: The user directory will unmount automatically after 600s.
# Change to 'sleep infinity' if this bothers you.
- name: act in users homedir
  block:
  - name: lock user dir to prevent home unmount
    command: "flock -x -w 10 \"/home/{{user}}\" -c 'sleep 600'"
    become: true
    become_user: "{{user.name}}"
    become_method: su
    become_flags: '--login'
    vars:
      ansible_become_pass: "{{user.password}}"
# ...
  always:
    - name: Release the lock
      command: "killall -u {{user}} flock"
      ignore_errors: true

답변2

수동 제어...find --identity... stdin의 비밀번호는 허용되지 않지만 json 파일의 해시는 허용됩니다.

관련 정보