o
    *bÙ  ã                   @   s&   d dl mZmZ G dd„ deeƒZdS )é    )ÚPluginÚIndependentPluginc                   @   s0   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
S )ÚSshzSecure shell serviceZssh)ÚservicesZsecurityÚsystemÚidentityc                 C   s8   |   dddœ¡ ddg}|  |¡ |  |¡ |  ¡  d S )NZsshd_configZ
ssh_config)ú/etc/ssh/sshd_configú/etc/ssh/ssh_configr	   r   )Zadd_file_tagsÚadd_copy_specÚincluded_configsÚuser_ssh_files_permissions)ÚselfÚsshcfgs© r   ú8/usr/lib/python3/dist-packages/sos/report/plugins/ssh.pyÚsetup   s   þþ

z	Ssh.setupc              	   C   s²   zN|D ]H}|  d¡d }t|  |¡dƒ/}|D ]$}t|  ¡ ƒdks&| d¡r'q| ¡  d¡r;|  ¡ }| j|d |d qW d   ƒ n1 sFw   Y  qW d S  tyX   Y d S w )	Nú/éÿÿÿÿÚrr   ú#Zincludeé   )Ztags)ÚsplitÚopenÚ	path_joinÚlenÚ
startswithÚlowerr
   Ú	Exception)r   r   ZsshcfgÚtagZcfgfileÚlineZconfargr   r   r   r   '   s$   €ùÿ€þÿzSsh.included_configsc              	   C   sÌ   |   d¡}|d r6zt|  d¡ƒ}| ¡ }W d  ƒ n1 s w   Y  W n ty5   |  d¡ Y dS w |d  ¡ }|D ]%}z|  | d¡d d	¡}|  |¡rY|  	d
 
|¡¡ W q> tyc   Y q>w dS )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/passwdNzCouldn't read /etc/passwdÚoutputú:é   z.sshz
ls -laZ {})Zexec_cmdr   r   Ú	readlinesr   Z
_log_errorÚ
splitlinesr   Z
path_isdirZadd_cmd_outputÚformatÚ
IndexError)r   Z
users_dataZpasswd_fileZusers_data_linesZusr_lineZhome_dirr   r   r   r   8   s,   

ÿ€
ý
€ÿûzSsh.user_ssh_files_permissionsN)	Ú__name__Ú
__module__Ú__qualname__Z
short_descZplugin_nameZprofilesr   r   r   r   r   r   r   r      s    r   N)Zsos.report.pluginsr   r   r   r   r   r   r   Ú<module>   s   
