JddlZddlZddlZddlZddlZddlZddlZddlmZm Z ej e Z Gdde ZGdde ZGdde ZGd d e Zd Zgd Zd gZgdZdZdZdZGddZdS)N)S_IRUSRS_IRGRPceZdZdZdS) NoSuchUsercDt|d|ddS)NzNo such user () Exception__init__)selfusers /builddir/build/BUILDROOT/alt-python27-cllib-3.4.40-1.el9.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clsudo.pyr zNoSuchUser.__init__s*4!9$!9!9!9:::::N__name__ __module__ __qualname__r rrrrs#;;;;;rrceZdZdZdS) NoSuchGroupcDt|d|ddS)NzNo such group (rr )r groups rr zNoSuchGroup.__init__s*4!;5!;!;!;<<<<>>>>rNrrrrrr#s#?????rrz /etc/sudoers)z/bin/psz /bin/grepz /sbin/servicez%/usr/bin/getcontrolpaneluserspackagesz/usr/sbin/lvectlz>/usr/local/directadmin/plugins/new_lvemanager/admin/GetDomainsz0/usr/share/l.v.e-manager/utils/cloudlinux-cli.pyz5/usr/share/l.v.e-manager/utils/cloudlinux-cli-user.py)/usr/bin/cl-selectorz/usr/bin/pinisetz/usr/sbin/lvepsz/usr/bin/selectorctlzDefaults:%s !requirettyz-%%%s ALL=NOPASSWD: LVECTL_CMDS, SELECTOR_CMDSzDefaults:%%%s !requirettycxeZdZdZdZgZdZdZdZdZ dZ dZ dZ dZ dZdZeefdZeefdZeefdZeefdZeefdZeefd Zed Zed Zed Zed ZedZedZedZdS)Clsudoz/ Adds CloudLinux users to sudoers file NFctd||tjtjt |t |t |t j s:t j dd tzt js:t j dd tzt js:t j dd t"zt js"t j |dt js"t j |dt js"t j |dt js(t j t,|fzt td ||d S) z@ Adds username to sudoers file (for lvemanager) z@add_user: adding user '%s' to sudoers file '%s' (uid=%d, pid=%d)Cmnd_Alias LVECTL_CMDS = , zCmnd_Alias LVECTL_USER_CMDS = Cmnd_Alias SELECTOR_CMDS =  ALL=NOPASSWD: LVECTL_CMDS% ALL=(ALL) NOPASSWD: LVECTL_USER_CMDS ALL=NOPASSWD: SELECTOR_CMDSz.add_user: successfully added user '%s' to '%s'N)loggerinfoosgetuidgetpidr#update_commands_list _check_user _get_contents has_alias sudoers_listappendjoinALIAS_LVECTL_CMDShas_user_aliasALIAS_LVECTL_USER_CMDShas_selector_aliasALIAS_SELECTOR_CMDS has_rightshas_user_rightshas_selector_rights has_actionDEFAULTS_REQUIRETTY_write_contentsr sudoers_files radd_userzClsudo.add_userHs  ()-|Y[[")++ / / / ##L1114   T""" c   & &'BTYYO`EaEa'a b b b$ m   & &'G$))TjJkJk'k l l l( g   & &'DtyyQdGeGe'e f f f  L   & &$'J'J'J K K K% W   & &$'U'U'U V V V) N   & &$'L'L'L M M M  F   & &':dW'D E E E    D< ) ) ) ) )rctd||tjtj|t _t |t |t j st j dt j s"t j |dt j s(t j t|fzt td||dS)z< Adds username to sudoers file (for cagefs) zGadd_cagefs_user: adding user '%s' to sudoers file '%s' (uid=%d, pid=%d)zOCmnd_Alias CAGEFS_CMDS = /usr/sbin/cagefsctl, /bin/ps, /bin/grep, /sbin/service ALL=NOPASSWD: CAGEFS_CMDSz5add_cagefs_user: successfully added user '%s' to '%s'N)r+r,r-r.r/r#filepathr1r2has_cagefs_aliasr4r5has_cagefs_rightsr?r@rArBs radd_cagefs_userzClsudo.add_cagefs_usergs'  ()-|Y[[")++ / / /'4   T"""& L   & &(K L L L' L   & &$'J'J'J K K K  F   & &':dW'D E E E    K< ) ) ) ) )rcttd||tjtjt |t |t |t j s:t j dd tzt js:t j dd tzt js(t j t"|fzt js(t j t&|fzt td||dS)zJ Adds group to sudoers file, grants access to LVE Manager zMadd_lvemanager_group: adding group '%s' to sudoers file '%s' (uid=%d, pid=%d)r%r&r'z;add_lvemanager_group: successfully added group '%s' to '%s'N)r+r,r-r.r/r#r0 _check_group_get_contents_groupr3r4r5r6r7r:r;r?GROUP_LVECTL_SELECTORhas_group_actionGROUP_DEFAULTS_REQUIRETTYrA) group_namerCs radd_lvemanager_groupzClsudo.add_lvemanager_group}so  ()3\Y[[")++ / / / ##L111J'''"":... c   & &'BTYYO`EaEa'a b b b( g   & &'DtyyQdGeGe'e f f f  N   & &'< }'L M M M& R   & &'@J='P Q Q Q    Q / / / / /rctd||tjtj|t _ tt jd5}| t _ dddn #1swxYwYd}d}|tt j krt j |}|d|vs t|fz|vr>td||t j |d }|d z }|tt j k|r7t td ||dStd ||dS#tt f$r}t#|d}~wwxYw) z5 Removes username from sudoers file zGremove_user: removing user '%s' from sudoers file '%s' (uid=%d, pid=%d)utf-8encodingNrFz ALL=NOPASSWD:z4remove_user: removing sudoers rule for user '%s': %sTz5remove_user: successfully removed user '%s' from '%s'z1remove_user: no rules found for user '%s' in '%s')r+r,r-r.r/r#rGopenread splitlinesr4lenr@removerAIOErrorOSErrorr)r rCfidxremovedlinees r remove_userzClsudo.remove_users  ()-|Y[[")++ / / /' ,fo888 rHrIrecompilerorpr4searchrrr]r^r)r require_tty_patternr`rw pattern_matchrcs rr2zClsudo._get_contentssQ""'  %!!&$)!%*""'#(  j)M)M)M)MNN, ,  " " "'01D'E'E' ' #^+~=='+F$0NBB,0F)+~==.2F+666.HH(,F%AAA^SS-1F*666.HH/3F,>11$7$>$>~$N$NM$1,0)-?? 663A3I3I2D44+C0n443A3I3IDU44+C015F-888NJJ15F.KK' ' P! , , ,"$$! + ,sEGG>*G99G>c~dt_dt_dt_dt_dt_dt_dt_dt_d|}d|}tj |d} t ttj D]\}}d|vr[d|vr#|ddtj |<d |vr#|dd tj |<d t_dd |vr d t_ud |vr d t_||r#||}|r d t_||r d t_dS#t"t$f$r}t'|d}~wwxYw)zS Reads file into list of strings @param group_name: string F%z Defaults:%z/\s*ALL=NOPASSWD:\s*LVECTL_CMDS,\s*SELECTOR_CMDSrirr!rrrTrhrN)r#r?rOr3r<r:r>rHrIrrrorpr4rr startswithrr]r^r)rQ group_prefix group_action group_patternr`rwrrcs rrMzClsudo._get_contents_groupDs""' !$)!%*""'#( ':'' 0J00  z#b#b#bcc  ,  " " "'01D'E'E 3 3#^-?? 663A3I3I2D44+C0n443A3I3IDU44+C015F-+~=='+F$+~==.2F+!,,\::1$1$8$8$H$HM$1,0)!,,\::3.2F+3 3 34! , , ,"$$! + ,sDFF<(F77F<cX tjtj}d}t j||\}}tj|d}|d tj dz| ttz}tj||t|st n#t t"f$r}t$dtjtjtj tj|rtj|n#t0$rYnwxYwt3|d}~wwxYw tj|tjdS#t"$r]}t$dtjtjtjt3|d}~wwxYw)zX Writes data to temporary file then checks it and rewrites sudoers file lve_sudoers_)prefixdirw zC_write_contents: failed to write sudoers file '%s' (uid=%d, pid=%d)NzD_write_contents: failed to rename temp file to '%s' (uid=%d, pid=%d))r-rlrmr#rGtempfilemkstempfdopenwriter6r4closerrchmod_is_file_validr]r^r+warningr.r/existsunlinkr rrename)rn temp_prefixfd temp_pathfomaskrcs rrAzClsudo._write_contentsws  -wv77H(K$,KXNNNMB 2s##B HHTYYv233d: ; ; ; HHJJJW$D HY % % %((33   ! - - - NN./59;;  5 5 5 7>>),,)Ii(((    #%%1 , - - Ii 1 1 1 1 1 - - - NN./59;;  5 5 5$%%1 ,  -sVC'C**F;A F3E98F9 FFFFF!G H) AH$$H)c ddd|g}tj|tjtjtj5}||jdkr ddddS dddn #1swxYwYdS)Nz/usr/sbin/visudoz-cz-f)stdinstdoutstderrrFT) subprocessPopenDEVNULLPIPESTDOUT communicate returncode)filenamecmdprocs rrzClsudo._is_file_valids   (    $?$            !##        $               ts!A88A<?A<)rrr__doc__rGr4r?rOr3r8r<r=r:r>rHrI staticmethod SUDOERS_FILErDrJrRrdrfr0r1rLror2rMrArrrrr#r#7sHLJINJO$0)))\)<+7)))\)*6B///\/0'3,,,\,@'3###\#"*6)))\)<**\*11\188\8>,>,\>,@0,0,\0,d--\-B\rr#)loggingr-r}rrrrstatrr getLoggerrr+r rrrrrr7r9r;r@rNrPr#rrrrs !!!!!!!!  8 $ $;;;;;;;; =====)=== =====y=== ????? ???  IIIRRmmm/G7rrrrrrrrrrr