Ѡg9ddlZddlZddlZddlZddlZddlZddlmZmZGdde Z Gdde Z Gdde Z Gd d e Z d Zgd Zd gZgdZdZdZdZGddZdS)N)S_IRUSRS_IRGRPceZdZdZdS) NoSuchUsercDt|d|ddS)NzNo such user () Exception__init__)selfusers /builddir/build/BUILDROOT/alt-python27-cllib-3.4.22-1.el8.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 NFct|t|t|tjs:tjddtztj s:tjddtztj s:tjddtztj s"tj|dtjs"tj|dtjs"tj|dtjs(tjt"|fztdS) z@ Adds username to sudoers file (for lvemanager) 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_CMDSN)r#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_userEs ##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     rc|t_t|t|tjstjdtjs"tj|dtjs(tjt|fzt dS)z< Adds username to sudoers file (for cagefs) zOCmnd_Alias CAGEFS_CMDS = /usr/sbin/cagefsctl, /bin/ps, /bin/grep, /sbin/service ALL=NOPASSWD: CAGEFS_CMDSN) r#filepathr,r-has_cagefs_aliasr/r0has_cagefs_rightsr:r;r<r=s radd_cagefs_userzClsudo.add_cagefs_user_s '4   T"""& L   & &(K L L L' L   & &$'J'J'J K K K  F   & &':dW'D E E E     rct|t|t|tjs:tjddtztj s:tjddtztj s(tjt|fztj s(tjt|fztdS)zJ Adds group to sudoers file, grants access to LVE Manager r%r&r'N)r#r+ _check_group_get_contents_groupr.r/r0r1r2r5r6r:GROUP_LVECTL_SELECTORhas_group_actionGROUP_DEFAULTS_REQUIRETTYr<) group_namer>s radd_lvemanager_groupzClsudo.add_lvemanager_groupps ##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     rc|t_ ttjd5}|t_dddn #1swxYwYd}d}|t tjkrjtj|}|d|vs t|fz|vr"tj|d}e|dz }|t tjkj|rt dSdS#ttf$r}t|d}~wwxYw) z5 Removes username from sudoers file utf-8encodingNrFz ALL=NOPASSWD:T) r#rBopenread splitlinesr/lenr;remover<IOErrorOSErrorr)r r>fidxremovedlinees r remove_userzClsudo.remove_users ' ,fo888 cmnd_dictis_sudoer_changer[command_string aliase_key aliase_list cmnd_listaliase_cmnd_items rr+zClsudo.update_commands_listsE''//&/::/@1DFF  #,V-@#A#A ) ) C+4??+<+< " "' K//%3%;%;J%K%K%Q%Q%S%SN . 4 4S 9 9I,7""(+9<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_CMDSrdrr!rrrTrcrN)r#r:rJr.r7r5r9rCrDrrrkrlr/rn startswithrrXrYr)rL group_prefix group_action group_patternr[rsrr^s rrHzClsudo._get_contents_group"s""' !$)!%*""'#( ':'' 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<c4 tjtj}d}t j||\}}tj|d}|d tj dz| ttz}tj||t|st nm#t t"f$rY} tj|rtj|n#t($rYnwxYwt+|d}~wwxYw tj|tjdS#t"$r}t+|d}~wwxYw)zX Writes data to temporary file then checks it and rewrites sudoers file lve_sudoers_)prefixdirw N)rgrhrir#rBtempfilemkstempfdopenwriter1r/closerrchmod_is_file_validrXrYexistsunlinkr rrename)rj temp_prefixfd temp_pathfomaskr^s rr<zClsudo._write_contentsUs  -wv77H(K$,KXNNNMB 2s##B HHTYYv233d: ; ; ; HHJJJW$D HY % % %((33   ! - - - 7>>),,)Ii(((    #%%1 ,  - - Ii 1 1 1 1 1 - - -#%%1 , -sNC'C**E<3D0/E0 D=:E<D==EEE99 FFFc ddd|g}tj|tjtjtj5}||jdkr ddddS dddn #1swxYwYdS)Nz/usr/sbin/visudoz-cz-f)stdinstdoutstderrrFT) subprocessPopenDEVNULLPIPESTDOUT communicate returncode)filenamecmdprocs rrzClsudo._is_file_validqs   (    $?$            !##        $               ts!A88A<?A<)rrr__doc__rBr/r:rJr.r3r7r8r5r9rCrD staticmethod SUDOERS_FILEr?rErMr_rar+r,rGrkr-rHr<rrrrr#r#4sHLJINJO$0!!!\!2+7!!!\! 6B!!!\!&'3,,,\,,'3 # # #\ #*6)))\)6**\*11\188\8>,>,\>,@0,0,\0,d--\-6\rr#)rgryr~rrrstatrrr rrrrrr2r4r6r;rIrKr#rrrrs !!!!!!!!;;;;;;;; =====)=== =====y=== ????? ???  IIIRRmmm/G7MMMMMMMMMMr