Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
[go: Go Back, main page]

samba$B$N%3%s%Q%$%k(B

samba$B$r2~B$$7$F(Bpam$B7PM3$G(Bslapd$B$K%"%/%;%9$7$F(BNTLM$BG'>Z$r$9$k$h$&$K$7$^$9!#(B slapd$B$O(BNTLM$BG'>ZBP1~(B$B$K2~B$$7$F$*$$$F$/$@$5$$!#(B

% apt-get source samba
% cd samba-2.2.3a
% vi source/smbd/password.c
...
($B4X?t(Bpassword_ok)
                /* if 24 bytes long assume it is an encrypted password */
                uchar challenge[8];

                if (!last_challenge(challenge)) {
                        DEBUG(0,("Error: challenge not done for user=%s\n", user));
                        return False;
                }
                if(pwlen==24) {
                        const char b64[]=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                        char pass[6+44+1];
                        int i, e0, e1, e2;
                        char *p;
                        uchar *c;
                        memcpy(pass, "{NTLM}", 6);
                        p= pass+6;
                        c= password;
                        for(i= 0; i<32; i+=3) {
                                if(i==24) c= challenge;
                                e0= c[0];
                                e1= i+1<32?c[1]:0;
                                e2= i+2<32?c[2]:0;
                                *p++= b64[e0>>2];
                                *p++= b64[e0<<4&0x30|e1>>4];
                                *p++= i+1<32?b64[e1<<2&0x3c|e2>>6]:'=';
                                *p++= i+2<32?b64[e2&0x3f]:'=';
                                c+= 3;
                        }
                        *p= 0;
                        ret= pass_check(user, pass, strlen(pass), pwd, NULL);
                        if(ret) return True;
                }

                ret = pass_check_smb(user, global_myworkgroup,
                                      challenge, (uchar *)password, (uchar *)password, pwd);
...
$B=$@5$O$3$l$@$1$G$9!#%3%s%Q%$%k$7$F%$%s%9%H!<%k$7$^$9!#(B
# dpkg-buildpackage
($B$3$N;~$K=P$k%3%s%Q%$%k$KI,MW$J%Q%C%1!<%872$O(Bapt-get install$B$G
$BF~$lBX$($k$N$O(B/usr/sbin/smbd$B$@$1$J$N$G!"$U$D$&$K(Bsamba$B$rF~$l$F$+$i!"(B
# /etc/init.d/samba stop
# cd source/bin
# strip smbd; cp smbd /usr/sbin/smbd
# /etc/init.d/samba start
$B$H$+$7$^$9!#(B $B$$$:$l$K$;$h(Bapt-get upgrade$B$5$l$J$$$h$&$K(Bdselect$BEy$G(B samba$B$r(Bhold-state$B$K$7$F$*$/$+!"(B upgrade$B$,$+$+$C$?$i:G?7$N%=!<%9$G:F%3%s%Q%$%k$7$FF~$lBX$($k$N$rK:$l$:$K!#(B

samba$B$N@_Dj(B

samba$B$O%"%+%&%s%H>pJs$r(Bpam$B7PM3$G # vi /etc/pam.d/samba auth sufficient pam_ldap.so account sufficient pam_ldap.so session sufficient pam_ldap.so password sufficient pam_ldap.so auth required pam_unix.so nullok use_first_pass nodelay account required pam_unix.so session required pam_unix.so password required pam_unix.so try_first_pass
samba$B$O%Q%9%o!<%I$r$$$/$D$+;n$9$N$G!"(B auth$B$N(Bpam_unix.so$B$K(Bnodelay$B$r@_Dj$7$F$*$+$J$$$H%m%0%$%s$d%U%!%$%k%"%/%;%9$K?tIC$N;~4V$,$+$+$k$3$H$K$J$j$^$9!#(B $B$"$k$$$O(Bauth$B$+$i(Bpam_unix$B$=$N$b$N$r $B0J>e$G$9!#(B/etc/samba/smb.conf$B$K(Bsamba$B$N$=$NB>$N@_Dj$r$7$F(B Windows2000$BEy$+$i(Bsamba$B$K@\B3$7$F$_$^$7$g$&!#(B $B$J$*!"(Bpam$B7PM3$G(BNTLM$B$NG'>Z$K<:GT$7$?>l9g$O(B /etc/samba/smbpass$B$N9`L\$,;2>H$5$l$^$9!#(B