Linux res4.skyhost.pk 4.18.0-553.158.1.el8_10.x86_64 #1 SMP Wed Aug 26 03:18:33 EDT 2026 x86_64
LiteSpeed
Server IP : 65.109.66.33 & Your IP : 216.73.217.126
Domains : 334 Domain
User : supercareproduct
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
sbin /
Delete
Unzip
Name
Size
Permission
Date
Action
NetworkManager
3.41
MB
-rwxr-xr-x
2026-08-24 06:01
accessdb
12.59
KB
-rwxr-xr-x
2021-10-08 13:04
addgnupghome
3
KB
-rwxr-xr-x
2018-12-11 07:44
addpart
24.86
KB
-rwxr-xr-x
2026-02-04 20:18
adduser
148.16
KB
-rwxr-xr-x
2025-12-18 13:51
agetty
62.39
KB
-rwxr-xr-x
2026-02-04 20:18
alternatives
36.66
KB
-rwxr-xr-x
2023-10-14 22:48
anacron
40.99
KB
-rwxr-xr-x
2024-04-06 11:40
apachectl
4.69
KB
-rwxr-xr-x
2026-08-11 22:29
applygnupgdefaults
2.17
KB
-rwxr-xr-x
2017-12-18 12:28
arp
64.71
KB
-rwxr-xr-x
2020-08-30 17:47
arpd
109.52
KB
-rwxr-xr-x
2024-05-23 08:36
arping
28.74
KB
-rwxr-xr-x
2023-10-14 17:19
atd
32.63
KB
-rwxr-xr-x
2022-10-10 10:23
atrun
67
B
-rwxr-xr-x
2022-10-10 10:23
auditctl
45.04
KB
-rwxr-xr-x
2025-07-15 09:41
auditd
151.73
KB
-rwxr-xr-x
2025-07-15 09:41
augenrules
4.04
KB
-rwxr-xr-x
2025-07-15 09:41
aureport
122.35
KB
-rwxr-xr-x
2025-07-15 09:41
ausearch
130.36
KB
-rwxr-xr-x
2025-07-15 09:41
autrace
16.54
KB
-rwxr-x---
2025-07-15 09:41
avcstat
16.4
KB
-rwxr-xr-x
2026-02-10 14:26
badblocks
32.59
KB
-rwxr-xr-x
2025-10-07 07:08
biosdecode
21.45
KB
-rwxr-xr-x
2024-04-06 13:04
biosdevname
46.16
KB
-rwxr-xr-x
2019-10-18 20:07
blkdeactivate
15.97
KB
-r-xr-xr-x
2026-01-23 07:31
blkdiscard
29.05
KB
-rwxr-xr-x
2026-02-04 20:18
blkid
98.66
KB
-rwxr-xr-x
2026-02-04 20:18
blkmapd
53.47
KB
-rwxr-xr-x
2026-07-08 15:02
blkzone
49.75
KB
-rwxr-xr-x
2026-02-04 20:18
blockdev
41.3
KB
-rwxr-xr-x
2026-02-04 20:18
bridge
158.25
KB
-rwxr-xr-x
2024-05-23 08:36
build-locale-archive
841.06
KB
-rwx------
2026-07-21 14:52
capsh
32.45
KB
-rwxr-xr-x
2026-05-04 20:33
cfdisk
98.41
KB
-rwxr-xr-x
2026-02-04 20:18
chcpu
28.83
KB
-rwxr-xr-x
2026-02-04 20:18
chgpasswd
69.69
KB
-rwxr-xr-x
2025-12-18 13:51
chkconfig
45.11
KB
-rwxr-xr-x
2023-10-14 22:48
chpasswd
61.42
KB
-rwxr-xr-x
2025-12-18 13:51
chronyd
375.66
KB
-rwxr-xr-x
2024-11-05 07:47
chroot
41.45
KB
-rwxr-xr-x
2026-07-28 19:49
clock
65.22
KB
-rwxr-xr-x
2026-02-04 20:18
clockdiff
20.43
KB
-rwxr-xr-x
2023-10-14 17:19
consoletype
11.86
KB
-rwxr-xr-x
2025-11-04 09:19
convertquota
78.68
KB
-rwxr-xr-x
2021-10-09 07:08
cracklib-check
13.05
KB
-rwxr-xr-x
2019-10-12 00:47
cracklib-format
251
B
-rwxr-xr-x
2019-10-12 00:47
cracklib-packer
13.05
KB
-rwxr-xr-x
2019-10-12 00:47
cracklib-unpacker
9.03
KB
-rwxr-xr-x
2019-10-12 00:47
create-cracklib-dict
990
B
-rwxr-xr-x
2019-10-12 00:47
crond
73.94
KB
-rwxr-xr-x
2024-04-06 11:40
csf
302.13
KB
-rwx------
2026-08-05 20:52
ctrlaltdel
24.79
KB
-rwxr-xr-x
2026-02-04 20:18
ctstat
25.33
KB
-rwxr-xr-x
2024-05-23 08:36
dcb
155.04
KB
-rwxr-xr-x
2024-05-23 08:36
ddns-confgen
20.46
KB
-rwxr-xr-x
2026-08-13 18:53
debugfs
231.63
KB
-rwxr-xr-x
2025-10-07 07:08
delpart
24.86
KB
-rwxr-xr-x
2026-02-04 20:18
depmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
devlink
215.87
KB
-rwxr-xr-x
2024-05-23 08:36
dmfilemapd
24.55
KB
-r-xr-xr-x
2026-01-23 07:31
dmidecode
141.8
KB
-rwxr-xr-x
2024-04-06 13:04
dmsetup
158.64
KB
-r-xr-xr-x
2026-01-23 07:31
dmstats
158.64
KB
-r-xr-xr-x
2026-01-23 07:31
dnssec-checkds
936
B
-rwxr-xr-x
2026-08-13 18:52
dnssec-coverage
938
B
-rwxr-xr-x
2026-08-13 18:52
dnssec-dsfromkey
60.84
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-importkey
60.84
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-keyfromlabel
64.76
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-keygen
72.84
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-keymgr
934
B
-rwxr-xr-x
2026-08-13 18:52
dnssec-revoke
56.74
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-settime
60.84
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-signzone
117.2
KB
-rwxr-xr-x
2026-08-13 18:53
dnssec-verify
52.84
KB
-rwxr-xr-x
2026-08-13 18:53
dovecot
157.84
KB
-rwxr-xr-x
2026-02-03 19:40
dovecot_cpshutdown
3.27
KB
-rwxr-xr-x
2026-02-03 19:31
dpkg-fsys-usrunmess
12.11
KB
-rwxr-xr-x
2021-12-15 12:46
dumpe2fs
32.52
KB
-rwxr-xr-x
2025-10-07 07:08
e2freefrag
16.42
KB
-rwxr-xr-x
2025-10-07 07:08
e2fsck
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
e2image
36.61
KB
-rwxr-xr-x
2025-10-07 07:08
e2label
110.63
KB
-rwxr-xr-x
2025-10-07 07:08
e2mmpstatus
32.52
KB
-rwxr-xr-x
2025-10-07 07:08
e2undo
20.38
KB
-rwxr-xr-x
2025-10-07 07:08
e4crypt
24.55
KB
-rwxr-xr-x
2025-10-07 07:08
e4defrag
28.49
KB
-rwxr-xr-x
2025-10-07 07:08
ebtables
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ebtables-restore
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ebtables-save
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
edquota
91.24
KB
-rwxr-xr-x
2021-10-09 07:08
ether-wake
73.99
KB
-rwxr-xr-x
2020-08-30 17:47
ethtool
557.79
KB
-rwxr-xr-x
2022-10-08 17:27
exicyclog
11.1
KB
-rwxr-xr-x
2026-02-03 18:25
exigrep
11.44
KB
-rwxr-xr-x
2026-02-03 18:25
exim
1.53
MB
-rwsr-xr-x
2026-02-03 18:25
exim_checkaccess
4.83
KB
-rwxr-xr-x
2026-02-03 18:25
exim_dbmbuild
24.69
KB
-rwxr-xr-x
2026-02-03 18:25
exim_dumpdb
43.56
KB
-rwxr-xr-x
2026-02-03 18:25
exim_fixdb
49.05
KB
-rwxr-xr-x
2026-02-03 18:25
exim_lock
26.59
KB
-rwxr-xr-x
2026-02-03 18:25
exim_tidydb
43.78
KB
-rwxr-xr-x
2026-02-03 18:25
eximstats
149.14
KB
-rwxr-xr-x
2026-02-03 18:25
exinext
8.03
KB
-rwxr-xr-x
2026-02-03 18:25
exiqgrep
6.58
KB
-rwxr-xr-x
2026-02-03 18:25
exiqsumm
6.29
KB
-rwxr-xr-x
2026-02-03 18:25
exiwhat
4.42
KB
-rwxr-xr-x
2026-02-03 18:25
exportfs
82.38
KB
-rwxr-xr-x
2026-07-08 15:02
faillock
20.52
KB
-rwxr-xr-x
2026-08-18 13:12
fcgistarter
17.11
KB
-rwxr-xr-x
2026-08-11 22:33
fdformat
33.17
KB
-rwxr-xr-x
2026-02-04 20:18
fdisk
130.91
KB
-rwxr-xr-x
2026-02-04 20:18
filefrag
16.46
KB
-rwxr-xr-x
2025-10-07 07:08
findfs
12.38
KB
-rwxr-xr-x
2026-02-04 20:18
firewalld
6.92
KB
-rwxr-xr-x
2026-08-18 13:10
fix-info-dir
7.84
KB
-rwxr-xr-x
2022-04-18 17:09
fixfiles
10.48
KB
-rwxr-xr-x
2024-07-02 21:04
fsck
53.47
KB
-rwxr-xr-x
2026-02-04 20:18
fsck.cramfs
41.41
KB
-rwxr-xr-x
2026-02-04 20:18
fsck.ext2
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
fsck.ext3
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
fsck.ext4
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
fsck.minix
98.75
KB
-rwxr-xr-x
2026-02-04 20:18
fsck.xfs
1.92
KB
-rwxr-xr-x
2023-10-15 05:10
fsfreeze
16.38
KB
-rwxr-xr-x
2026-02-04 20:18
fstrim
49.6
KB
-rwxr-xr-x
2026-02-04 20:18
fuse2fs
70.39
KB
-rwxr-xr-x
2025-10-07 07:08
fuser
38.14
KB
-rwxr-xr-x
2020-11-06 14:24
g13-syshelp
189.76
KB
-rwxr-xr-x
2026-01-16 01:48
genhomedircon
29.27
KB
-rwxr-xr-x
2024-07-02 21:04
genhostid
11.86
KB
-rwxr-xr-x
2025-11-04 09:19
genl
121.41
KB
-rwxr-xr-x
2024-05-23 08:36
genrandom
12.38
KB
-rwxr-xr-x
2026-08-13 18:53
getcap
12.35
KB
-rwxr-xr-x
2026-05-04 20:33
getenforce
7.84
KB
-rwxr-xr-x
2026-02-10 14:26
getpcaps
12.27
KB
-rwxr-xr-x
2026-05-04 20:33
getsebool
11.87
KB
-rwxr-xr-x
2026-02-10 14:26
groupadd
95.34
KB
-rwxr-xr-x
2025-12-18 13:51
groupdel
91.09
KB
-rwxr-xr-x
2025-12-18 13:51
groupmems
61.48
KB
-rwxr-xr-x
2025-12-18 13:51
groupmod
99.38
KB
-rwxr-xr-x
2025-12-18 13:51
grpck
61.47
KB
-rwxr-xr-x
2025-12-18 13:51
grpconv
57.27
KB
-rwxr-xr-x
2025-12-18 13:51
grpunconv
57.26
KB
-rwxr-xr-x
2025-12-18 13:51
grub2-bios-setup
1.16
MB
-rwxr-xr-x
2026-08-03 03:56
grub2-get-kernel-settings
2.68
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-install
1.44
MB
-rwxr-xr-x
2026-08-03 03:56
grub2-macbless
1.14
MB
-rwxr-xr-x
2026-08-03 03:56
grub2-mkconfig
8.68
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-ofpathname
246.31
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-probe
1.16
MB
-rwxr-xr-x
2026-08-03 03:56
grub2-reboot
3.99
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-rpm-sort
283.14
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-set-bootflag
16.35
KB
-rwsr-xr-x
2026-08-03 03:56
grub2-set-default
3.45
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-set-password
3.05
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-setpassword
3.05
KB
-rwxr-xr-x
2026-08-03 03:56
grub2-sparc64-setup
1.16
MB
-rwxr-xr-x
2026-08-03 03:56
grub2-switch-to-blscfg
8.6
KB
-rwxr-xr-x
2026-08-03 03:56
grubby
260
B
-rwxr-xr-x
2026-07-28 19:53
gss-server
24.61
KB
-rwxr-xr-x
2026-05-13 06:34
gssproxy
132.08
KB
-rwxr-xr-x
2022-10-08 08:02
halt
218.45
KB
-rwxr-xr-x
2026-06-16 17:17
hardlink
17.09
KB
-rwxr-xr-x
2019-10-15 21:49
hdparm
131.91
KB
-rwxr-xr-x
2021-10-08 19:47
htcacheclean
44.36
KB
-rwxr-xr-x
2026-08-11 22:33
httpd
1.82
KB
-rwxr-xr-x
2026-09-13 19:47
httpd_ls_bak
991.46
KB
-rwxr-xr-x
2026-08-11 22:33
httpd_ls_bak_bak
991.46
KB
-rwxr-xr-x
2026-08-04 22:22
hwclock
65.22
KB
-rwxr-xr-x
2026-02-04 20:18
iconvconfig
33.05
KB
-rwxr-xr-x
2026-07-21 14:52
ifconfig
80.86
KB
-rwxr-xr-x
2020-08-30 17:47
ifdown
2.07
KB
-rwxr-xr-x
2025-09-23 08:27
ifenslave
24.95
KB
-rwxr-xr-x
2023-10-14 17:19
ifstat
117.67
KB
-rwxr-xr-x
2024-05-23 08:36
ifup
5.33
KB
-rwxr-xr-x
2025-09-23 08:27
imunify-notifier
9.82
MB
-rwxr-xr-x
2026-07-07 08:52
init
1.54
MB
-rwxr-xr-x
2026-06-16 17:17
insmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
install-info
50.23
KB
-rwxr-xr-x
2022-04-18 17:09
installkernel
323
B
-rwxr-xr-x
2026-07-28 19:53
intel_sdsi
15.62
KB
-rwxr-xr-x
2026-08-26 07:56
ip
693.3
KB
-rwxr-xr-x
2024-05-23 08:36
ip6tables
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-apply
6.89
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-restore
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-restore-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-save
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ipmaddr
21
KB
-rwxr-xr-x
2020-08-30 17:47
iprconfig
408.03
KB
-rwxr-xr-x
2020-08-30 07:37
iprdbg
137.57
KB
-rwxr-xr-x
2020-08-30 07:37
iprdump
129.3
KB
-rwxr-xr-x
2020-08-30 07:37
iprinit
125.28
KB
-rwxr-xr-x
2020-08-30 07:37
iprsos
2.18
KB
-rwxr-xr-x
2020-05-08 14:19
iprupdate
129.3
KB
-rwxr-xr-x
2020-08-30 07:37
ipset
9.01
KB
-rwxr-xr-x
2019-11-12 14:33
iptables
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-apply
6.89
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-restore
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-restore-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-save
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptunnel
25
KB
-rwxr-xr-x
2020-08-30 17:47
irqbalance
62.28
KB
-rwxr-xr-x
2023-10-14 17:57
irqbalance-ui
41.29
KB
-rwxr-xr-x
2023-10-14 17:57
isc-hmac-fixup
11.86
KB
-rwxr-xr-x
2026-08-13 18:53
kexec
194.98
KB
-rwxr-xr-x
2026-02-10 17:24
key.dns_resolver
24.52
KB
-rwxr-xr-x
2021-10-08 13:50
kpartx
49.05
KB
-rwxr-xr-x
2026-05-05 11:28
lchage
16.41
KB
-rwxr-xr-x
2024-09-24 02:24
ldattach
32.99
KB
-rwxr-xr-x
2026-02-04 20:18
ldconfig
986.1
KB
-rwxr-xr-x
2026-07-21 14:52
lfd
471.95
KB
-rwx------
2026-08-05 20:52
lgroupadd
11.88
KB
-rwxr-xr-x
2024-09-24 02:24
lgroupdel
11.88
KB
-rwxr-xr-x
2024-09-24 02:24
lgroupmod
19.88
KB
-rwxr-xr-x
2024-09-24 02:24
lid
16.27
KB
-rwxr-xr-x
2024-09-24 02:24
lnewusers
19.87
KB
-rwxr-xr-x
2024-09-24 02:24
lnstat
25.33
KB
-rwxr-xr-x
2024-05-23 08:36
load_policy
12.28
KB
-rwxr-xr-x
2024-07-02 21:04
logrotate
93.03
KB
-rwxr-xr-x
2023-04-02 00:29
logsave
16.41
KB
-rwxr-xr-x
2025-10-07 07:08
losetup
90.59
KB
-rwxr-xr-x
2026-02-04 20:18
lpasswd
20.35
KB
-rwxr-xr-x
2024-09-24 02:24
lshw
969.55
KB
-rwxr-xr-x
2025-10-07 08:50
lsmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
luseradd
19.88
KB
-rwxr-xr-x
2024-09-24 02:24
luserdel
15.88
KB
-rwxr-xr-x
2024-09-24 02:24
lusermod
19.88
KB
-rwxr-xr-x
2024-09-24 02:24
lwresd
840.94
KB
-rwxr-xr-x
2026-08-13 18:53
makedumpfile
425.19
KB
-rwxr-xr-x
2026-02-10 17:24
mariadbd
28.22
MB
-rwxr-xr-x
2026-08-19 10:12
matchpathcon
12.37
KB
-rwxr-xr-x
2026-02-10 14:26
mii-diag
25.4
KB
-rwxr-xr-x
2020-08-30 17:47
mii-tool
21.03
KB
-rwxr-xr-x
2020-08-30 17:47
mkdict
251
B
-rwxr-xr-x
2019-10-12 00:47
mkdumprd
12.68
KB
-rwxr-xr-x
2026-02-10 17:24
mke2fs
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfadumprd
2.23
KB
-rwxr-xr-x
2026-02-10 17:24
mkfs
16.48
KB
-rwxr-xr-x
2026-02-04 20:18
mkfs.cramfs
41.27
KB
-rwxr-xr-x
2026-02-04 20:18
mkfs.ext2
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfs.ext3
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfs.ext4
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfs.minix
86.56
KB
-rwxr-xr-x
2026-02-04 20:18
mkfs.xfs
475.98
KB
-rwxr-xr-x
2023-10-15 05:11
mkhomedir_helper
24.44
KB
-rwxr-xr-x
2026-08-18 13:12
mklost+found
11.86
KB
-rwxr-xr-x
2025-10-07 07:08
mksquashfs
186.83
KB
-rwxr-xr-x
2024-04-06 14:17
mkswap
86.48
KB
-rwxr-xr-x
2026-02-04 20:18
modinfo
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
modprobe
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
modsec-sdbm-util
25.83
KB
-rwxr-x---
2026-08-11 22:29
mount.nfs
197.24
KB
-rwsr-xr-x
2026-07-08 15:02
mount.nfs4
197.24
KB
-rwsr-xr-x
2026-07-08 15:02
mountstats
42.22
KB
-rwxr-xr-x
2026-07-08 15:02
mysqld
28.22
MB
-rwxr-xr-x
2026-08-19 10:12
named
840.94
KB
-rwxr-xr-x
2026-08-13 18:53
named-checkconf
40.79
KB
-rwxr-xr-x
2026-08-13 18:53
named-checkzone
36.63
KB
-rwxr-xr-x
2026-08-13 18:53
named-compilezone
36.63
KB
-rwxr-xr-x
2026-08-13 18:53
named-journalprint
11.85
KB
-rwxr-xr-x
2026-08-13 18:53
nameif
16.98
KB
-rwxr-xr-x
2020-08-30 17:47
newusers
107.23
KB
-rwxr-xr-x
2025-12-18 13:51
nfsconf
37.48
KB
-rwxr-xr-x
2026-07-08 15:02
nfsconvert
13.03
KB
-rwxr-xr-x
2026-07-08 15:02
nfsdcld
65.87
KB
-rwxr-xr-x
2026-07-08 15:02
nfsdclddb
10
KB
-rwxr-xr-x
2026-07-08 15:02
nfsdclnts
9.02
KB
-rwxr-xr-x
2026-07-08 15:02
nfsdcltrack
49.78
KB
-rwxr-xr-x
2026-07-08 15:02
nfsidmap
45.36
KB
-rwxr-xr-x
2026-07-08 15:02
nfsiostat
23.36
KB
-rwxr-xr-x
2026-07-08 15:02
nfsref
65.8
KB
-rwxr-xr-x
2026-07-08 15:02
nfsstat
35.52
KB
-rwxr-xr-x
2026-07-08 15:02
nft
24.41
KB
-rwxr-xr-x
2026-08-18 13:03
nginx
2.02
MB
-rwxr-xr-x
2026-08-26 01:21
nginx-debug
2.17
MB
-rwxr-xr-x
2026-08-26 01:21
nologin
11.87
KB
-rwxr-xr-x
2026-02-04 20:18
nscd
156.69
KB
-rwxr-xr-x
2026-07-21 14:52
nsec3hash
12.29
KB
-rwxr-xr-x
2026-08-13 18:53
nstat
113.57
KB
-rwxr-xr-x
2024-05-23 08:36
ownership
12.4
KB
-rwxr-xr-x
2024-04-06 13:04
packer
13.05
KB
-rwxr-xr-x
2019-10-12 00:47
pam_console_apply
45.2
KB
-rwxr-xr-x
2026-08-18 13:12
pam_timestamp_check
11.87
KB
-rwsr-xr-x
2026-08-18 13:12
paperconfig
4.07
KB
-rwxr-xr-x
2019-10-12 20:09
parted
85.6
KB
-rwxr-xr-x
2021-10-08 15:43
partprobe
16.39
KB
-rwxr-xr-x
2021-10-08 15:43
partx
94.5
KB
-rwxr-xr-x
2026-02-04 20:18
pdns_server
6.24
MB
-rwxr-xr-x
2025-08-26 16:36
pidof
16.7
KB
-rwxr-xr-x
2023-10-14 20:31
ping
66.13
KB
-rwxr-xr-x
2023-10-14 17:19
ping6
66.13
KB
-rwxr-xr-x
2023-10-14 17:19
pivot_root
12.38
KB
-rwxr-xr-x
2026-02-04 20:18
plipconfig
12.71
KB
-rwxr-xr-x
2020-08-30 17:47
poweroff
218.45
KB
-rwxr-xr-x
2026-06-16 17:17
pure-authd
19.23
KB
-rwxr-xr-x
2025-06-06 14:16
pure-certd
19.14
KB
-rwxr-xr-x
2025-06-06 14:16
pure-config.pl
4.64
KB
-rwxr-xr-x
2025-06-06 14:14
pure-ftpd
182.07
KB
-rwxr-xr-x
2025-06-06 14:16
pure-ftpwho
26.83
KB
-rwxr-xr-x
2025-06-06 14:16
pure-mrtginfo
11.16
KB
-rwxr-xr-x
2025-06-06 14:16
pure-quotacheck
18.82
KB
-rwxr-xr-x
2025-06-06 14:16
pure-uploadscript
19.08
KB
-rwxr-xr-x
2025-06-06 14:16
pwck
57.27
KB
-rwxr-xr-x
2025-12-18 13:51
pwconv
53.1
KB
-rwxr-xr-x
2025-12-18 13:51
pwhistory_helper
20.43
KB
-rwxr-xr-x
2026-08-18 13:12
pwunconv
53.13
KB
-rwxr-xr-x
2025-12-18 13:51
quot
78.67
KB
-rwxr-xr-x
2021-10-09 07:08
quotacheck
115.75
KB
-rwxr-xr-x
2021-10-09 07:08
quotaoff
83.16
KB
-rwxr-xr-x
2021-10-09 07:08
quotaon
83.16
KB
-rwxr-xr-x
2021-10-09 07:08
quotastats
16.54
KB
-rwxr-xr-x
2021-10-09 07:08
rdisc
24.55
KB
-rwxr-xr-x
2023-10-14 17:19
rdma
187.38
KB
-rwxr-xr-x
2024-05-23 08:36
readprofile
20.55
KB
-rwxr-xr-x
2026-02-04 20:18
reboot
218.45
KB
-rwxr-xr-x
2026-06-16 17:17
repquota
83.24
KB
-rwxr-xr-x
2021-10-09 07:08
request-key
24.38
KB
-rwxr-xr-x
2021-10-08 13:50
resize2fs
64.91
KB
-rwxr-xr-x
2025-10-07 07:08
resizepart
41.57
KB
-rwxr-xr-x
2026-02-04 20:18
resolvconf
195.75
KB
-rwxr-xr-x
2026-06-16 17:17
restorecon
20.53
KB
-rwxr-xr-x
2024-07-02 21:04
restorecon_xattr
16.41
KB
-rwxr-xr-x
2024-07-02 21:04
rfkill
53.46
KB
-rwxr-xr-x
2026-02-04 20:18
rmmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
rndc
36.53
KB
-rwxr-xr-x
2026-08-13 18:53
rndc-confgen
20.45
KB
-rwxr-xr-x
2026-08-13 18:53
rotatelogs
30.51
KB
-rwxr-xr-x
2026-08-11 22:33
route
67.63
KB
-rwxr-xr-x
2020-08-30 17:47
rpc.gssd
106.54
KB
-rwxr-xr-x
2026-07-08 15:02
rpc.idmapd
61.73
KB
-rwxr-xr-x
2026-07-08 15:02
rpc.mountd
163.04
KB
-rwxr-xr-x
2026-07-08 15:02
rpc.nfsd
49.92
KB
-rwxr-xr-x
2026-07-08 15:02
rpc.statd
103.3
KB
-rwxr-xr-x
2026-07-08 15:02
rpcbind
61.55
KB
-rwxr-xr-x
2022-10-12 11:00
rpcctl
9.41
KB
-rwxr-xr-x
2026-07-08 15:02
rpcdebug
19.38
KB
-rwxr-xr-x
2026-07-08 15:02
rpcinfo
32.64
KB
-rwxr-xr-x
2022-10-12 11:00
rsyslogd
724.73
KB
-rwxr-xr-x
2024-11-05 02:34
rtacct
46.94
KB
-rwxr-xr-x
2024-05-23 08:36
rtcwake
49.3
KB
-rwxr-xr-x
2026-02-04 20:18
rtmon
117.27
KB
-rwxr-xr-x
2024-05-23 08:36
rtstat
25.33
KB
-rwxr-xr-x
2024-05-23 08:36
runlevel
218.45
KB
-rwxr-xr-x
2026-06-16 17:17
runq
1.53
MB
-rwsr-xr-x
2026-02-03 18:25
runuser
48.99
KB
-rwxr-xr-x
2026-02-04 20:18
sasldblistusers2
20.77
KB
-rwxr-xr-x
2022-02-23 20:13
saslpasswd2
16.42
KB
-rwxr-xr-x
2022-02-23 20:13
sefcontext_compile
65.35
KB
-rwxr-xr-x
2026-02-10 14:26
selabel_digest
12.28
KB
-rwxr-xr-x
2026-02-10 14:26
selabel_lookup
12.27
KB
-rwxr-xr-x
2026-02-10 14:26
selabel_lookup_best_match
11.89
KB
-rwxr-xr-x
2026-02-10 14:26
selabel_partial_match
11.88
KB
-rwxr-xr-x
2026-02-10 14:26
selinux_check_access
12.36
KB
-rwxr-xr-x
2026-02-10 14:26
selinuxconlist
11.88
KB
-rwxr-xr-x
2026-02-10 14:26
selinuxdefcon
11.88
KB
-rwxr-xr-x
2026-02-10 14:26
selinuxenabled
7.84
KB
-rwxr-xr-x
2026-02-10 14:26
selinuxexeccon
11.86
KB
-rwxr-xr-x
2026-02-10 14:26
semanage
41.18
KB
-rwxr-xr-x
2024-07-02 21:08
semodule
29.27
KB
-rwxr-xr-x
2024-07-02 21:04
sendmail
16.91
KB
-rwxr-sr-x
2026-02-03 18:25
service
3.64
KB
-rwxr-xr-x
2025-09-23 08:27
sestatus
20.41
KB
-rwxr-xr-x
2024-07-02 21:04
setcap
16.27
KB
-rwxr-xr-x
2026-05-04 20:33
setenforce
12.27
KB
-rwxr-xr-x
2026-02-10 14:26
setfiles
20.53
KB
-rwxr-xr-x
2024-07-02 21:04
setquota
91.38
KB
-rwxr-xr-x
2021-10-09 07:08
setsebool
16.38
KB
-rwxr-xr-x
2024-07-02 21:04
sfdisk
118.51
KB
-rwxr-xr-x
2026-02-04 20:18
showmount
21.06
KB
-rwxr-xr-x
2026-07-08 15:02
shutdown
218.45
KB
-rwxr-xr-x
2026-06-16 17:17
sim_server
11.87
KB
-rwxr-xr-x
2026-05-13 06:34
slattach
43.76
KB
-rwxr-xr-x
2020-08-30 17:47
sm-notify
78.13
KB
-rwxr-xr-x
2026-07-08 15:02
smartctl
907.08
KB
-rwxr-xr-x
2024-04-06 14:11
smartd
733.2
KB
-rwxr-xr-x
2024-04-06 14:11
ss
191.3
KB
-rwxr-xr-x
2024-05-23 08:36
sshd
869.7
KB
-rwxr-xr-x
2026-07-29 12:51
sss_cache
61.09
KB
-rwxr-xr-x
2026-07-28 01:54
sssd
73.01
KB
-rwxr-xr-x
2026-07-28 01:54
start-statd
838
B
-rwxr-xr-x
2018-09-06 18:09
start-stop-daemon
45.98
KB
-rwxr-xr-x
2021-12-15 12:46
suexec
25.3
KB
-rwsr-xr-x
2026-08-11 22:33
sulogin
49.24
KB
-rwxr-xr-x
2026-02-04 20:18
sw-engine-fpm
20.12
MB
-rwxr-xr-x
1990-01-01 12:00
swaplabel
16.5
KB
-rwxr-xr-x
2026-02-04 20:18
swapoff
20.75
KB
-rwxr-xr-x
2026-02-04 20:18
swapon
49.41
KB
-rwxr-xr-x
2026-02-04 20:18
switch_root
16.49
KB
-rwxr-xr-x
2026-02-04 20:18
sysctl
28.88
KB
-rwxr-xr-x
2023-10-14 20:31
syspurpose
415
B
-rwxr-xr-x
2025-07-15 09:13
tcsd
309.72
KB
-rwxr-xr-x
2024-04-06 12:42
telinit
218.45
KB
-rwxr-xr-x
2026-06-16 17:17
timedatex
33.43
KB
-rwxr-xr-x
2019-10-16 17:24
tipc
163.07
KB
-rwxr-xr-x
2024-05-23 08:36
tmpwatch
35.47
KB
-rwxr-xr-x
2019-10-12 11:32
tracepath
20.44
KB
-rwxr-xr-x
2023-10-14 17:19
tracepath6
20.44
KB
-rwxr-xr-x
2023-10-14 17:19
tsig-keygen
20.46
KB
-rwxr-xr-x
2026-08-13 18:53
tune2fs
110.63
KB
-rwxr-xr-x
2025-10-07 07:08
tuned
3.88
KB
-rwxr-xr-x
2024-02-22 12:23
tuned-adm
6.5
KB
-rwxr-xr-x
2024-02-22 12:23
udevadm
424.56
KB
-rwxr-xr-x
2026-06-16 17:17
umount.nfs
197.24
KB
-rwsr-xr-x
2026-07-08 15:02
umount.nfs4
197.24
KB
-rwsr-xr-x
2026-07-08 15:02
unbound-anchor
57.34
KB
-rwxr-xr-x
2026-08-17 18:43
unix_chkpwd
36.86
KB
-rwsr-xr-x
2026-08-18 13:12
unix_update
36.86
KB
-rwx------
2026-08-18 13:12
unsquashfs
99.57
KB
-rwxr-xr-x
2024-04-06 14:17
update-alternatives
36.66
KB
-rwxr-xr-x
2023-10-14 22:48
update-smart-drivedb
14.44
KB
-rwxr-xr-x
2024-04-06 14:11
useradd
148.16
KB
-rwxr-xr-x
2025-12-18 13:51
userdel
107.29
KB
-rwxr-xr-x
2025-12-18 13:51
usermod
144.11
KB
-rwxr-xr-x
2025-12-18 13:51
usernetctl
12.41
KB
-rwxr-xr-x
2025-11-04 09:19
uuserver
15.88
KB
-rwxr-xr-x
2026-05-13 06:34
vdpa
118.04
KB
-rwxr-xr-x
2024-05-23 08:36
vigr
68.05
KB
-rwxr-xr-x
2025-12-18 13:51
vipw
68.05
KB
-rwxr-xr-x
2025-12-18 13:51
virt-what
14.22
KB
-rwxr-xr-x
2023-10-14 20:52
visudo
239.28
KB
-rwxr-xr-x
2026-04-29 08:49
vmcore-dmesg
28.58
KB
-rwxr-xr-x
2026-02-10 17:24
vpddecode
16.47
KB
-rwxr-xr-x
2024-04-06 13:04
weak-modules
33.6
KB
-rwxr-xr-x
2024-04-08 09:18
whmapi0
3.38
MB
-rwxr-xr-x
2026-04-21 01:16
whmapi1
3.38
MB
-rwxr-xr-x
2026-04-21 01:16
whmlogin
2.33
KB
-rwxr-xr-x
2022-02-09 18:45
wipefs
41.12
KB
-rwxr-xr-x
2026-02-04 20:18
xfs_admin
1.38
KB
-rwxr-xr-x
2023-10-15 05:10
xfs_bmap
695
B
-rwxr-xr-x
2023-10-15 05:11
xfs_copy
434.59
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_db
760.47
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_estimate
12.39
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_freeze
800
B
-rwxr-xr-x
2023-10-15 05:11
xfs_fsr
53.41
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_growfs
422.48
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_info
1.26
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_io
188.28
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_logprint
454.7
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_mdrestore
410.09
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_metadump
782
B
-rwxr-xr-x
2023-10-15 05:10
xfs_mkfile
1.02
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_ncheck
685
B
-rwxr-xr-x
2023-10-15 05:10
xfs_quota
93.98
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_repair
715.24
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_rtcp
16.38
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_spaceman
45.42
KB
-rwxr-xr-x
2023-10-15 05:11
xqmstats
16.45
KB
-rwxr-xr-x
2021-10-09 07:08
xtables-monitor
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
xtables-nft-multi
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
zabbix_agentd
635.65
KB
-rwxr-xr-x
2025-01-27 10:11
zdump
20.56
KB
-rwxr-xr-x
2026-07-21 14:52
zic
52.83
KB
-rwxr-xr-x
2026-07-21 14:52
zramctl
99.13
KB
-rwxr-xr-x
2026-02-04 20:18
Save
Rename
#!/usr/bin/perl # # dpkg-fsys-usrunmess - Undoes the merged-/usr-via-aliased-dirs mess # # Copyright © 2020-2021 Guillem Jover <guillem@debian.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 2 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 <https://www.gnu.org/licenses/> use strict; use warnings; use feature qw(state); our ($PROGNAME) = $0 =~ m{(?:.*/)?([^/]*)}; our $PROGVERSION = '1.20.9'; our $ADMINDIR = '/var/lib/dpkg'; use POSIX; use Getopt::Long qw(:config posix_default bundling_values no_ignorecase); eval q{ pop @INC if $INC[-1] eq '.'; use File::FcntlLock; }; if ($@) { fatal('missing File::FcntlLock module; please install libfile-fcntllock-perl'); } my $opt_noact = length $ENV{DPKG_USRUNMESS_NOACT} ? 1 : 0; my $opt_prompt = 0; my @options_spec = ( 'help|?' => sub { usage(); exit 0; }, 'version' => sub { version(); exit 0; }, 'dry-run|no-act|n' => \$opt_noact, 'prompt|p' => \$opt_prompt, ); { local $SIG{__WARN__} = sub { usageerr($_[0]) }; GetOptions(@options_spec); } my @aliased_dirs; # # Scan all dirs under / and check whether any are aliased to /usr. # foreach my $path (glob '/*') { debug("checking symlink? $path"); next unless -l $path; debug("checking merged-usr symlink? $path"); my $symlink = readlink $path; next unless $symlink eq "usr$path" or $symlink eq "/usr$path"; debug("merged-usr breakage, queueing $path"); push @aliased_dirs, $path; } if (@aliased_dirs == 0) { print "System is fine, no aliased directories found, congrats!\n"; exit 0; } # # dpkg consistency checks # debug('checking dpkg database consistency'); system(qw(dpkg --audit)) == 0 or fatal("cannot audit the dpkg database: $!"); debug('checking whether dpkg has been interrupted'); if (glob "$ADMINDIR/updates/*") { fatal('dpkg is in an inconsistent state, please fix that'); } my $aliased_regex = '^(' . join('|', @aliased_dirs) . ')/'; # # Get a list of all paths (including diversion) under the aliased dirs. # my @search_args; my %aliased_pathnames; foreach my $dir (@aliased_dirs) { push @search_args, "$dir/*"; } open my $fh_paths, '-|', 'dpkg-query', '--search', @search_args or fatal("cannot execute dpkg-query --search: $!"); while (<$fh_paths>) { if (m/^diversion by [^ ]+ from: .*$/) { # Ignore. } elsif (m/^diversion by [^ ]+ to: (.*)$/) { if (-e $1) { add_pathname($1, 'diverted pathname'); } } elsif (m/^.*: (.*)$/) { add_pathname($1, 'pathname'); } } close $fh_paths; # # Get a list of all update-alternatives under the aliased dirs. # my @selections = qx(update-alternatives --get-selections); foreach my $selection (@selections) { my $name = (split(' ', $selection))[0]; my $slaves = 0; open my $fh_alts, '-|', 'update-alternatives', '--query', $name or fatal("cannot execute update-alternatives --query: $!"); while (<$fh_alts>) { if (m/^\s*$/) { last; } elsif (m/^Link: (.*)$/) { add_pathname($1, 'alternative link'); } elsif (m/^Slaves:\s*$/) { $slaves = 1; } elsif ($slaves and m/^\s\S+\s(\S+)$/) { add_pathname($1, 'alternative slave'); } else { $slaves = 0; } } close $fh_alts; } my $sroot = '/.usrunmess'; my @relabel; # # Create a shadow hierarchy under / for the new unmessed dir: # debug("creating shadow dir = $sroot"); mkdir $sroot or sysfatal("cannot create directory $sroot"); foreach my $dir (@aliased_dirs) { debug("creating shadow dir = $sroot$dir"); mkdir "$sroot$dir" or sysfatal("cannot create directory $sroot$dir"); push @relabel, "$sroot$dir"; } # # Populate the split dirs with hardlinks or copies of the objects from # their counter-parts in /usr. # foreach my $pathname (sort keys %aliased_pathnames) { my (@meta) = lstat $pathname or sysfatal("cannot lstat object $pathname for shadow hierarchy"); if (-d _) { my $mode = $meta[2]; my ($uid, $gid) = @meta[4, 5]; my ($atime, $mtime, $ctime) = @meta[8, 9, 10]; debug("creating shadow dir = $sroot$pathname"); mkdir "$sroot$pathname" or sysfatal("cannot mkdir $sroot$pathname"); chmod $mode, "$sroot$pathname" or sysfatal("cannot chmod $mode $sroot$pathname"); chown $uid, $gid, "$sroot$pathname" or sysfatal("cannot chown $uid $gid $sroot$pathname"); utime $atime, $mtime, "$sroot$pathname" or sysfatal("cannot utime $atime $mtime $sroot$pathname"); push @relabel, "$sroot$pathname"; } elsif (-f _) { debug("creating shadow file = $sroot$pathname"); copy("/usr$pathname", "$sroot$pathname"); } elsif (-l _) { my $target = readlink "/usr$pathname"; debug("creating shadow symlink = $sroot$pathname"); symlink $target, "$sroot$pathname" or sysfatal("cannot symlink $target to $sroot$pathname"); push @relabel, "$sroot$pathname"; } else { fatal("unhandled object type for '$pathname'"); } } # # Prompt at the point of no return, if the user requested it. # if ($opt_prompt) { print "Shadow hierarchy created at '$sroot', ready to proceed (y/N)? "; my $reply = <STDIN>; chomp $reply; if ($reply ne 'y' and $reply ne 'yes') { print "Aborting migration, shadow hierarchy left in place.\n"; exit 0; } } # # Mark all packages as half-configured so that we can force a mass # reconfiguration, to trigger any code in maintainer scripts that might # create files. # # XXX: We do this manually by editing the status file. # XXX: We do this for packages that might not have maintscripts, or might # not involve affected directories. # debug('marking all dpkg packages as half-configured'); if (not $opt_noact) { open my $fh_lock, '>', "$ADMINDIR/lock" or sysfatal('cannot open dpkg database lock file'); my $fs = File::FcntlLock->new(l_type => F_WRLCK); $fs->lock($fh_lock, F_SETLKW) or sysfatal('cannot get a write lock on dpkg database'); my $file_db = "$ADMINDIR/status"; my $file_dbnew = $file_db . '.new'; open my $fh_dbnew, '>', $file_dbnew or sysfatal('cannot open new dpkg database'); open my $fh_db, '<', $file_db or sysfatal('cannot open dpkg database'); while (<$fh_db>) { if (m/^Status: /) { s/ installed$/ half-configured/; } print { $fh_dbnew } $_; } close $fh_db; $fh_dbnew->flush() or sysfatal('cannot flush new dpkg database'); $fh_dbnew->sync() or sysfatal('cannot fsync new dpkg database'); close $fh_dbnew or sysfatal('cannot close new dpkg database'); rename $file_dbnew, $file_db or sysfatal('cannot rename new dpkg database'); } # # Replace things as quickly as possible: # foreach my $dir (@aliased_dirs) { debug("making dir backup = $dir.aliased"); if (not $opt_noact) { rename $dir, "$dir.aliased" or sysfatal("cannot make backup directory $dir.aliased"); } debug("renaming $sroot$dir to $dir"); if (not $opt_noact) { rename "$sroot$dir", $dir or sysfatal("cannot install fixed directory $dir"); } } mac_relabel(); # # Re-configure all packages, so that postinst maintscripts are executed. # debug('reconfigured all packages'); if (not $opt_noact) { local $ENV{DEBIAN_FRONTEND} = 'noninteractive'; system(qw(dpkg --configure --pending)) == 0 or fatal("cannot reconfigure packages: $!"); } # # Cleanup backup directories. # foreach my $dir (@aliased_dirs) { debug("removing backup = $dir.aliased"); if (not $opt_noact) { unlink "$dir.aliased" or sysfatal("cannot cleanup backup directory $dir.aliased"); } } my %deferred_dirnames; # # Cleanup moved objects. # foreach my $pathname (sort keys %aliased_pathnames) { my (@meta) = lstat $pathname or sysfatal("cannot lstat object $pathname for cleanup"); if (-d _) { # Skip directories as this might be shared by a proper path under the # aliased hierearchy. And so that we can remove them in reverse order. debug("deferring merged dir cleanup = /usr$pathname"); $deferred_dirnames{"/usr$pathname"} = 1; } else { debug("cleaning up pathname = /usr$pathname"); next if $opt_noact; unlink "/usr$pathname" or sysfatal("cannot unlink object /usr$pathname"); } } # # Cleanup deferred directories. # debug("cleaning up shadow deferred dir = $sroot"); my $arg_max = POSIX::sysconf(POSIX::_SC_ARG_MAX) // POSIX::_POSIX_ARG_MAX; my @batch_dirs; my $batch_size = 0; foreach my $dir (keys %deferred_dirnames) { my $dir_size = length($dir) + 1; if ($batch_size + $dir_size < $arg_max) { $batch_size += length($dir) + 1; push @batch_dirs, $dir; } else { next; } next if length $batch_size == 0; open my $fh_dirs, '-|', 'dpkg-query', '--search', @batch_dirs or fatal("cannot execute dpkg-query --search: $!"); while (<$fh_dirs>) { if (m/^.*: (.*)$/) { # If the directory is known by its aliased name, it should not be # cleaned up. if (exists $deferred_dirnames{$1}) { delete $deferred_dirnames{$1}; } } } close $fh_dirs; @batch_dirs = (); $batch_size = 0; } if (not $opt_noact) { foreach my $dirname (reverse sort keys %deferred_dirnames) { rmdir $dirname or sysfatal("cannot remove shadow directory $dirname"); } } if (not $opt_noact) { debug("cleaning up shadow root dir = $sroot"); rmdir $sroot or sysfatal("cannot remove shadow directory $sroot"); } print "Done, hierarchy unmessed, congrats!\n"; print "(Note: you might need to run 'hash -r' in your shell.)\n"; 1; ## ## Functions ## sub debug { my $msg = shift; print { \*STDERR } "D: $msg\n"; } sub fatal { my $msg = shift; die "error: $msg\n"; } sub sysfatal { my $msg = shift; fatal("$msg: $!"); } sub copy { my ($src, $dst) = @_; # Try to hardlink first. return if link $src, $dst; # If we are on different filesystems, try a copy. if ($! == POSIX::EXDEV) { # XXX: This will not preserve hardlinks, these would get restored # after the next package upgrade. system('cp', '-a', $src, $dst) == 0 or fatal("cannot copy file $src to $dst: $?"); } else { sysfatal("cannot link file $src to $dst"); } } sub mac_relabel { my $has_cmd = 0; foreach my $path (split /:/, $ENV{PATH}) { if (-x "$path/restorecon") { $has_cmd = 1; last; } } return unless $has_cmd; foreach my $pathname (@relabel) { system('restorecon', $pathname) == 0 or fatal("cannot restore MAC context for $pathname: $?"); } } sub add_pathname { my ($pathname, $origin) = @_; if ($pathname =~ m/$aliased_regex/) { debug("adding $origin = $pathname"); $aliased_pathnames{$pathname} = 1; } } sub version() { printf "Debian %s version %s.\n", $PROGNAME, $PROGVERSION; } sub usage { printf 'Usage: %s [<option>...]' . "\n\n" . 'Options: -p, --prompt prompt before the point of no return. -n, --no-act just check and create the new structure, no switch. --dry-run ditto. -?, --help show this help message. --version show the version.' . "\n", $PROGNAME; } sub usageerr { my $msg = shift; state $printforhelp = 'Use --help for program usage information.'; $msg = sprintf $msg, @_ if @_; warn "$PROGNAME: error: $msg\n"; warn "$printforhelp\n"; exit 2; }