�
i��d
� �0 � d dl mZmZmZ G d� dee� Zy)� )�Plugin�IndependentPlugin� PluginOptc �D � e Zd ZdZdZdZ edded�� gZd� Z d � Z
d
� Zy)�SshzSecure shell service�ssh)�services�security�system�identity� userconfsTz5Changes whether module will collect user .ssh configs)�default�val_type�descc � � | j ddd�� ddg}| j |� | j |� | j d� r| j � y y )N�sshd_config�
ssh_config)z/etc/ssh/sshd_config$z/etc/ssh/ssh_config$z/etc/ssh/ssh_configz/etc/ssh/sshd_configr
)�
add_file_tags�
add_copy_spec�included_configs�
get_option�user_ssh_files_permissions)�self�sshcfgss �8/usr/lib/python3/dist-packages/sos/report/plugins/ssh.py�setupz Ssh.setup sg � ����%2�$0�
� �
"�"���
���7�#����g�&� �?�?�;�'��+�+�-� (� c � � |D ]� }|j d� d }t | j |� d� 5 }|D ]v }t |j � � dk( s|j d� r�1|j � j d� s�Q|j � }| j
|d |�� �x d d d � �� y # 1 sw Y ��xY w# t $ r Y y w xY w) N�/����rr �#�include� )�tags)�split�open� path_join�len�
startswith�lowerr � Exception)r r �sshcfg�tag�cfgfile�line�confargs r r zSsh.included_configs0 s� � �
�!�
E���l�l�3�'��+���$�.�.��0�#�6� E�'� '� E���t�z�z�|�,��1�T�_�_�S�5I�$��:�:�<�2�2�9�=�&*�j�j�l�G� �.�.�w�q�z��.�D�E�E� E�
E�E� E�� � �� �s/ �4C
�AB>�
(B>�3
C
�>C �C
�
C�Cc �� � | j d� }|d r5 t | j d� � 5 }|j � }ddd� n|d j
� }D ]X } | j |j d� d d � }| j |� r | j d
j |� � �Z y# 1 sw Y �{xY w# t $ r | j d� Y yw xY w# t $ r Y ��w xY w)z�
Iterate over .ssh folders in user homes to see their permissions.
Bad permissions can prevent SSH from allowing access to given user.
z
getent passwd�statusz/etc/passwdNzCouldn't read /etc/passwd�output�:� z.sshz
ls -laZ {})�exec_cmdr' |