Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
lib /
python3 /
dist-packages /
samba /
tests /
[ HOME SHELL ]
Name
Size
Permission
Action
__pycache__
[ DIR ]
drwxr-xr-x
blackbox
[ DIR ]
drwxr-xr-x
dcerpc
[ DIR ]
drwxr-xr-x
dns_forwarder_helpers
[ DIR ]
drwxr-xr-x
emulate
[ DIR ]
drwxr-xr-x
kcc
[ DIR ]
drwxr-xr-x
krb5
[ DIR ]
drwxr-xr-x
samba_tool
[ DIR ]
drwxr-xr-x
__init__.py
22.9
KB
-rw-r--r--
audit_log_base.py
6.98
KB
-rw-r--r--
audit_log_dsdb.py
24.46
KB
-rw-r--r--
audit_log_pass_change.py
12.86
KB
-rw-r--r--
auth.py
4.5
KB
-rw-r--r--
auth_log.py
65.62
KB
-rw-r--r--
auth_log_base.py
5.42
KB
-rw-r--r--
auth_log_ncalrpc.py
4.19
KB
-rw-r--r--
auth_log_netlogon.py
5.22
KB
-rw-r--r--
auth_log_netlogon_bad_creds.py
7.7
KB
-rw-r--r--
auth_log_pass_change.py
12.92
KB
-rw-r--r--
auth_log_samlogon.py
6.68
KB
-rw-r--r--
auth_log_winbind.py
19.13
KB
-rw-r--r--
common.py
3.06
KB
-rw-r--r--
complex_expressions.py
18.37
KB
-rw-r--r--
core.py
2.77
KB
-rw-r--r--
cred_opt.py
1.73
KB
-rw-r--r--
credentials.py
22.13
KB
-rw-r--r--
dckeytab.py
2.11
KB
-rw-r--r--
dns.py
84.34
KB
-rw-r--r--
dns_aging.py
108.76
KB
-rw-r--r--
dns_base.py
14.3
KB
-rw-r--r--
dns_forwarder.py
20.95
KB
-rw-r--r--
dns_invalid.py
2.66
KB
-rw-r--r--
dns_packet.py
7.13
KB
-rw-r--r--
dns_tkey.py
7.11
KB
-rw-r--r--
dns_wildcard.py
12.89
KB
-rw-r--r--
docs.py
18.25
KB
-rw-r--r--
domain_backup.py
26.76
KB
-rw-r--r--
domain_backup_offline.py
10.01
KB
-rw-r--r--
dsdb.py
41.91
KB
-rw-r--r--
dsdb_api.py
1.93
KB
-rw-r--r--
dsdb_dns.py
2.56
KB
-rw-r--r--
dsdb_lock.py
11.63
KB
-rw-r--r--
dsdb_schema_attributes.py
8.9
KB
-rw-r--r--
encrypted_secrets.py
3.02
KB
-rw-r--r--
gensec.py
8.91
KB
-rw-r--r--
get_opt.py
2.47
KB
-rw-r--r--
getdcname.py
18.52
KB
-rw-r--r--
glue.py
3.75
KB
-rw-r--r--
gpo.py
80.28
KB
-rw-r--r--
gpo_member.py
1.69
KB
-rw-r--r--
graph.py
26.45
KB
-rw-r--r--
group_audit.py
16.52
KB
-rw-r--r--
hostconfig.py
2.14
KB
-rw-r--r--
imports.py
1.12
KB
-rw-r--r--
join.py
6.71
KB
-rw-r--r--
krb5_credentials.py
3.8
KB
-rw-r--r--
ldap_raw.py
31.92
KB
-rw-r--r--
ldap_referrals.py
3.13
KB
-rw-r--r--
ldap_spn.py
34.19
KB
-rw-r--r--
ldap_upn_sam_account.py
17.63
KB
-rw-r--r--
libsmb.py
4.26
KB
-rw-r--r--
loadparm.py
3.25
KB
-rw-r--r--
lsa_string.py
2.22
KB
-rw-r--r--
messaging.py
4.97
KB
-rw-r--r--
ndr.py
4.09
KB
-rw-r--r--
net_join.py
2.29
KB
-rw-r--r--
net_join_no_spnego.py
3.46
KB
-rw-r--r--
netbios.py
2.08
KB
-rw-r--r--
netcmd.py
5.32
KB
-rw-r--r--
netlogonsvc.py
2.43
KB
-rw-r--r--
ntacls.py
3.68
KB
-rw-r--r--
ntacls_backup.py
6.58
KB
-rw-r--r--
ntlm_auth.py
13.08
KB
-rw-r--r--
ntlm_auth_base.py
8.5
KB
-rw-r--r--
ntlm_auth_krb5.py
3.63
KB
-rw-r--r--
ntlmdisabled.py
3.01
KB
-rw-r--r--
pam_winbind.py
2.52
KB
-rw-r--r--
pam_winbind_chauthtok.py
1.56
KB
-rw-r--r--
pam_winbind_warn_pwd_expire.py
2.01
KB
-rw-r--r--
param.py
3.58
KB
-rw-r--r--
password_hash.py
12.43
KB
-rw-r--r--
password_hash_fl2003.py
7.34
KB
-rw-r--r--
password_hash_fl2008.py
7.89
KB
-rw-r--r--
password_hash_gpgme.py
11.88
KB
-rw-r--r--
password_hash_ldap.py
4.85
KB
-rw-r--r--
password_quality.py
2.15
KB
-rw-r--r--
password_test.py
1.94
KB
-rw-r--r--
policy.py
1.17
KB
-rw-r--r--
posixacl.py
38.89
KB
-rw-r--r--
prefork_restart.py
16
KB
-rw-r--r--
process_limits.py
2.95
KB
-rw-r--r--
provision.py
6.35
KB
-rw-r--r--
pso.py
11.23
KB
-rw-r--r--
py_credentials.py
14.82
KB
-rw-r--r--
registry.py
2.5
KB
-rw-r--r--
s3_net_join.py
2.63
KB
-rw-r--r--
s3idmapdb.py
1.95
KB
-rw-r--r--
s3param.py
1.75
KB
-rw-r--r--
s3passdb.py
5.66
KB
-rw-r--r--
s3registry.py
1.82
KB
-rw-r--r--
s3windb.py
1.48
KB
-rw-r--r--
samba3sam.py
48.45
KB
-rw-r--r--
samba_upgradedns_lmdb.py
2.56
KB
-rw-r--r--
samdb.py
2.51
KB
-rw-r--r--
samdb_api.py
5.41
KB
-rw-r--r--
sddl.py
8.86
KB
-rw-r--r--
security.py
6.25
KB
-rw-r--r--
segfault.py
7
KB
-rw-r--r--
smb-notify.py
18.85
KB
-rw-r--r--
smb.py
9.47
KB
-rw-r--r--
smbd_base.py
1.76
KB
-rw-r--r--
smbd_fuzztest.py
3.5
KB
-rw-r--r--
source.py
8.74
KB
-rw-r--r--
strings.py
3.89
KB
-rw-r--r--
subunitrun.py
2.33
KB
-rw-r--r--
tdb_util.py
1.76
KB
-rw-r--r--
upgrade.py
1.36
KB
-rw-r--r--
upgradeprovision.py
6.65
KB
-rw-r--r--
upgradeprovisionneeddc.py
7.49
KB
-rw-r--r--
usage.py
12.98
KB
-rw-r--r--
xattr.py
5.27
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : domain_backup_offline.py
# Unix SMB/CIFS implementation. # Copyright (C) Andrew Bartlett <abartlet@samba.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # import tarfile import os import shutil import tempfile from samba.tests import BlackboxTestCase, BlackboxProcessError from samba.netcmd import CommandError from samba.param import LoadParm from samba.join import join_DC from samba.credentials import Credentials from samba.logger import get_samba_logger # The backup tests require that a completely clean LoadParm object gets used # for the restore. Otherwise the same global LP gets re-used, and the LP # settings can bleed from one test case to another. # To do this, these tests should use check_output(), which executes the command # in a separate process (as opposed to runcmd(), runsubcmd()). # So although this is a samba-tool test, we don't inherit from SambaToolCmdTest # so that we never inadvertently use .runcmd() by accident. class DomainBackupOfflineCmp(BlackboxTestCase): def test_domain_backup_offline_nested_tdb(self): self.nested_testcase('tdb') def test_domain_backup_offline_nested_mdb(self): self.nested_testcase('mdb') def nested_testcase(self, backend): self.prov_dir = self.provision(backend) self.extract_dir = None src = os.path.join(self.prov_dir, "private") dst = os.path.join(self.prov_dir, "state", "private") # Move private directory inside state directory shutil.move(src, dst) smbconf = os.path.join(self.prov_dir, "etc", "smb.conf") # Update the conf file lp = LoadParm(filename_for_non_global_lp=smbconf) lp.set("private dir", dst) lp.dump(False, smbconf) backup_file = self.backup(self.prov_dir) # Ensure each file is only present once in the tar file tf = tarfile.open(backup_file) names = tf.getnames() self.assertEqual(len(names), len(set(names))) def test_domain_backup_offline_join_restore_tdb(self): self.join_restore_testcase('tdb') def test_domain_backup_offline_join_restore_mdb(self): self.join_restore_testcase('mdb') def join_restore_testcase(self, backend): self.prov_dir = self.join(backend) self.extract_dir = None try: backup_file = self.backup(self.prov_dir) except BlackboxProcessError as e: self.fail(e) self.extract_dir = self.restore(backup_file) def test_domain_backup_offline_hard_link_tdb(self): self.hard_link_testcase('tdb') def test_domain_backup_offline_hard_link_mdb(self): self.hard_link_testcase('mdb') def hard_link_testcase(self, backend): self.prov_dir = self.provision(backend) self.extract_dir = None # Create hard links in the private and state directories os.link(os.path.join(self.prov_dir, "private", "krb5.conf"), os.path.join(self.prov_dir, "state", "krb5.conf")) backup_file = self.backup(self.prov_dir) # Extract the backup self.extract_dir = tempfile.mkdtemp(dir=self.tempdir) tf = tarfile.open(backup_file) tf.extractall(self.extract_dir) # Ensure that the hard link in the private directory was backed up, # while the one in the state directory was not. self.assertTrue(os.path.exists(os.path.join(self.extract_dir, "private", "krb5.conf"))) self.assertFalse(os.path.exists(os.path.join(self.extract_dir, "statedir", "krb5.conf"))) def test_domain_backup_offline_untar_tdb(self): self.untar_testcase('tdb') def test_domain_backup_offline_untar_mdb(self): self.untar_testcase('mdb') def test_domain_backup_offline_restore_tdb(self): self.restore_testcase('tdb') def test_domain_backup_offline_restore_mdb(self): self.restore_testcase('mdb') def restore_testcase(self, backend): self.prov_dir = self.provision(backend) self.extract_dir = None backup_file = self.backup(self.prov_dir) self.extract_dir = self.restore(backup_file) # attrs that are altered by the restore process ignore_attrs = ["servicePrincipalName", "lastLogonTimestamp", "rIDAllocationPool", "rIDAvailablePool", "rIDUsedPool", "localPolicyFlags", "operatingSystem", "displayName", "dnsRecord", "dNSTombstoned", "msDS-NC-Replica-Locations", "msDS-HasInstantiatedNCs", "interSiteTopologyGenerator"] filter_arg = "--filter=" + ",".join(ignore_attrs) args = ["--two", filter_arg] self.ldapcmp(self.prov_dir, self.extract_dir, args) def untar_testcase(self, backend): self.prov_dir = self.provision(backend) self.extract_dir = None backup_file = self.backup(self.prov_dir) self.extract_dir = tempfile.mkdtemp(dir=self.tempdir) tf = tarfile.open(backup_file) tf.extractall(self.extract_dir) self.ldapcmp(self.prov_dir, self.extract_dir) def ldapcmp(self, prov_dir, ex_dir, args=[]): sam_fn = os.path.join("private", "sam.ldb") url1 = "tdb://" + os.path.join(os.path.realpath(prov_dir), sam_fn) url2 = "tdb://" + os.path.join(os.path.realpath(ex_dir), sam_fn) # Compare the restored sam.ldb with the old one for partition in ["domain", "configuration", "schema", "dnsdomain", "dnsforest"]: cmd = "samba-tool ldapcmp " + " ".join([url1, url2, partition] + args) self.check_output(cmd) # Test the "samba-tool domain backup" command with ldapcmp def provision(self, backend): target = tempfile.mkdtemp(dir=self.tempdir) # Provision domain. Use fake ACLs and store xattrs in tdbs so that # NTACL backup will work inside the testenv. # host-name option must be given because if this test runs on a # system with a very long hostname, it will be shortened in certain # circumstances, causing the ldapcmp to fail. prov_cmd = "samba-tool domain provision " +\ "--domain FOO --realm foo.example.com " +\ "--targetdir {target} " +\ "--backend-store {backend} " +\ "--host-name OLDSERVER "+\ "--option=\"vfs objects=dfs_samba4 acl_xattr fake_acls xattr_tdb\"" prov_cmd = prov_cmd.format(target=target, backend=backend) self.check_output(prov_cmd) return target def join(self, backend): target = tempfile.mkdtemp(dir=self.tempdir) new_dc_name = "offlinebackupdc" join_cmd = "samba-tool domain join {domain} DC " +\ "--server {server} " +\ "--realm {realm} " +\ "--username {username}%{password} " +\ "--targetdir {target} " +\ "--backend-store {backend} " +\ "--option='netbios name = {new_dc_name}' " +\ "--option=\"vfs objects=dfs_samba4 acl_xattr fake_acls xattr_tdb\"" join_cmd = join_cmd.format(server=os.environ["DC_SERVER"], domain=os.environ["DOMAIN"], realm=os.environ["REALM"], username=os.environ["USERNAME"], password=os.environ["PASSWORD"], target=target, backend=backend, new_dc_name=new_dc_name) self.check_output(join_cmd) demote_cmd = "samba-tool domain demote " +\ "--server {server} " +\ "--username {username}%{password} " +\ "--remove-other-dead-server={new_dc_name}" demote_cmd = demote_cmd.format(server=os.environ["DC_SERVER"], username=os.environ["USERNAME"], password=os.environ["PASSWORD"], new_dc_name=new_dc_name) self.check_output(demote_cmd) return target def backup(self, prov_dir): # Run the backup and check we got one backup tar file cmd = ("samba-tool domain backup offline --targetdir={prov_dir} " "--configfile={prov_dir}/etc/smb.conf").format(prov_dir=prov_dir) self.check_output(cmd) tar_files = [fn for fn in os.listdir(prov_dir) if fn.startswith("samba-backup-") and fn.endswith(".tar.bz2")] if len(tar_files) != 1: raise CommandError("expected domain backup to create one tar" + " file but got {0}".format(len(tar_files))) backup_file = os.path.join(prov_dir, tar_files[0]) return backup_file def restore(self, backup_file): # Restore from a backup file extract_dir = tempfile.mkdtemp(dir=self.tempdir) cmd = ("samba-tool domain backup restore --backup-file={f}" " --targetdir={d} " "--newservername=NEWSERVER").format(f=backup_file, d=extract_dir) self.check_output(cmd) return extract_dir def tearDown(self): # Remove temporary directories shutil.rmtree(self.prov_dir) if self.extract_dir: shutil.rmtree(self.extract_dir)
Close