X7ROOT File Manager
Current Path:
/usr/sbin
usr
/
sbin
/
📁
..
📄
NetworkManager
(3.41 MB)
📄
accessdb
(12.59 KB)
📄
accton
(13.69 KB)
📄
adcli
(179.27 KB)
📄
addgnupghome
(3 KB)
📄
addpart
(24.86 KB)
📄
adduser
(148.17 KB)
📄
agetty
(62.38 KB)
📄
alternatives
(36.66 KB)
📄
anacron
(40.99 KB)
📄
apachectl
(4.52 KB)
📄
applygnupgdefaults
(2.17 KB)
📄
arp
(64.71 KB)
📄
arpd
(109.52 KB)
📄
arping
(28.74 KB)
📄
atd
(32.63 KB)
📄
atopacctd
(25.29 KB)
📄
atrun
(67 B)
📄
auditctl
(45.04 KB)
📄
auditd
(151.73 KB)
📄
augenrules
(4.04 KB)
📄
aureport
(122.35 KB)
📄
ausearch
(130.36 KB)
📄
authconfig
(21.54 KB)
📄
autrace
(16.54 KB)
📄
avcstat
(16.4 KB)
📄
badblocks
(32.59 KB)
📄
biosdecode
(21.45 KB)
📄
biosdevname
(46.16 KB)
📄
blkdeactivate
(15.97 KB)
📄
blkdiscard
(29.05 KB)
📄
blkid
(98.66 KB)
📄
blkmapd
(53.47 KB)
📄
blkzone
(49.74 KB)
📄
blockdev
(41.3 KB)
📄
bpftool
(2.74 MB)
📄
bridge
(158.25 KB)
📄
build-locale-archive
(841.02 KB)
📄
cache_check
(1.43 MB)
📄
cache_dump
(1.43 MB)
📄
cache_metadata_size
(1.43 MB)
📄
cache_repair
(1.43 MB)
📄
cache_restore
(1.43 MB)
📄
cache_writeback
(1.43 MB)
📄
capsh
(32.44 KB)
📄
cfdisk
(98.4 KB)
📄
chcpu
(28.84 KB)
📄
chgpasswd
(69.69 KB)
📄
chkconfig
(45.11 KB)
📄
chpasswd
(61.42 KB)
📄
chronyd
(375.66 KB)
📄
chroot
(41.52 KB)
📄
clock
(65.22 KB)
📄
clockdiff
(20.43 KB)
📄
consoletype
(11.85 KB)
📄
convertquota
(78.68 KB)
📄
cracklib-check
(13.05 KB)
📄
cracklib-format
(251 B)
📄
cracklib-packer
(13.05 KB)
📄
cracklib-unpacker
(9.03 KB)
📄
create-cracklib-dict
(990 B)
📄
crond
(73.94 KB)
📄
cryptsetup
(147.42 KB)
📄
csf
(245.1 KB)
📄
ctrlaltdel
(24.79 KB)
📄
ctstat
(25.33 KB)
📄
dcb
(155.04 KB)
📄
ddns-confgen
(20.46 KB)
📄
debugfs
(231.63 KB)
📄
delpart
(24.86 KB)
📄
depmod
(159.95 KB)
📄
devlink
(215.87 KB)
📄
dhclient
(453.68 KB)
📄
dhclient-script
(32.86 KB)
📄
dmeventd
(45.08 KB)
📄
dmfilemapd
(24.55 KB)
📄
dmidecode
(141.8 KB)
📄
dmsetup
(158.64 KB)
📄
dmstats
(158.64 KB)
📄
dnssec-checkds
(936 B)
📄
dnssec-coverage
(938 B)
📄
dnssec-dsfromkey
(60.84 KB)
📄
dnssec-importkey
(60.84 KB)
📄
dnssec-keyfromlabel
(64.76 KB)
📄
dnssec-keygen
(72.84 KB)
📄
dnssec-keymgr
(934 B)
📄
dnssec-revoke
(56.74 KB)
📄
dnssec-settime
(60.84 KB)
📄
dnssec-signzone
(117.2 KB)
📄
dnssec-verify
(52.84 KB)
📄
dosfsck
(65.13 KB)
📄
dosfslabel
(61.1 KB)
📄
dovecot
(137.48 KB)
📄
dovecot_cpshutdown
(3.27 KB)
📄
dpkg-fsys-usrunmess
(12.11 KB)
📄
dump-acct
(29.15 KB)
📄
dump-utmp
(25.02 KB)
📄
dumpe2fs
(32.52 KB)
📄
e2freefrag
(16.42 KB)
📄
e2fsck
(328.52 KB)
📄
e2image
(36.61 KB)
📄
e2label
(110.63 KB)
📄
e2mmpstatus
(32.52 KB)
📄
e2undo
(20.38 KB)
📄
e4crypt
(24.55 KB)
📄
e4defrag
(28.49 KB)
📄
ebtables
(220.8 KB)
📄
ebtables-restore
(220.8 KB)
📄
ebtables-save
(220.8 KB)
📄
edquota
(91.24 KB)
📄
era_check
(1.43 MB)
📄
era_dump
(1.43 MB)
📄
era_invalidate
(1.43 MB)
📄
era_restore
(1.43 MB)
📄
ether-wake
(73.99 KB)
📄
ethtool
(557.79 KB)
📄
exicyclog
(11.1 KB)
📄
exigrep
(10.52 KB)
📄
exim
(1.49 MB)
📄
exim_checkaccess
(4.83 KB)
📄
exim_dbmbuild
(23.23 KB)
📄
exim_dumpdb
(38.02 KB)
📄
exim_fixdb
(47.56 KB)
📄
exim_lock
(26.59 KB)
📄
exim_tidydb
(42.35 KB)
📄
eximstats
(148.26 KB)
📄
exinext
(7.14 KB)
📄
exiqgrep
(5.66 KB)
📄
exiqsumm
(5.32 KB)
📄
exiwhat
(4.42 KB)
📄
exportfs
(82.38 KB)
📄
faillock
(20.52 KB)
📄
fatlabel
(61.1 KB)
📄
fcgistarter
(17.11 KB)
📄
fdformat
(33.17 KB)
📄
fdisk
(130.92 KB)
📄
filefrag
(16.47 KB)
📄
findfs
(12.37 KB)
📄
firewalld
(6.92 KB)
📄
fix-info-dir
(7.84 KB)
📄
fixfiles
(10.48 KB)
📄
fsadm
(24 KB)
📄
fsck
(53.47 KB)
📄
fsck.cramfs
(41.4 KB)
📄
fsck.ext2
(328.52 KB)
📄
fsck.ext3
(328.52 KB)
📄
fsck.ext4
(328.52 KB)
📄
fsck.fat
(65.13 KB)
📄
fsck.minix
(98.74 KB)
📄
fsck.msdos
(65.13 KB)
📄
fsck.vfat
(65.13 KB)
📄
fsck.xfs
(1.92 KB)
📄
fsfreeze
(16.38 KB)
📄
fstrim
(49.6 KB)
📄
fuse2fs
(70.39 KB)
📄
fuser
(38.14 KB)
📄
g13-syshelp
(189.71 KB)
📄
genhomedircon
(29.27 KB)
📄
genhostid
(11.85 KB)
📄
genl
(121.41 KB)
📄
genrandom
(12.38 KB)
📄
getcap
(12.34 KB)
📄
getenforce
(7.84 KB)
📄
getpcaps
(12.27 KB)
📄
getsebool
(11.88 KB)
📄
groupadd
(95.34 KB)
📄
groupdel
(91.09 KB)
📄
groupmems
(61.48 KB)
📄
groupmod
(99.37 KB)
📄
grpck
(61.48 KB)
📄
grpconv
(57.26 KB)
📄
grpunconv
(57.25 KB)
📄
grub2-bios-setup
(1.16 MB)
📄
grub2-get-kernel-settings
(2.68 KB)
📄
grub2-install
(1.44 MB)
📄
grub2-macbless
(1.14 MB)
📄
grub2-mkconfig
(8.68 KB)
📄
grub2-ofpathname
(242.26 KB)
📄
grub2-probe
(1.16 MB)
📄
grub2-reboot
(3.99 KB)
📄
grub2-rpm-sort
(279.16 KB)
📄
grub2-set-bootflag
(16.34 KB)
📄
grub2-set-default
(3.45 KB)
📄
grub2-set-password
(3.05 KB)
📄
grub2-setpassword
(3.05 KB)
📄
grub2-sparc64-setup
(1.16 MB)
📄
grub2-switch-to-blscfg
(8.6 KB)
📄
grubby
(260 B)
📄
gss-server
(24.62 KB)
📄
gssproxy
(132.08 KB)
📄
halt
(218.45 KB)
📄
hardlink
(17.09 KB)
📄
hdparm
(131.91 KB)
📄
htcacheclean
(44.36 KB)
📄
httpd
(990.57 KB)
📄
hwclock
(65.22 KB)
📄
iconvconfig
(33.05 KB)
📄
ifconfig
(80.86 KB)
📄
ifdown
(2.07 KB)
📄
ifenslave
(24.95 KB)
📄
ifstat
(117.67 KB)
📄
iftop
(75.42 KB)
📄
ifup
(5.33 KB)
📄
imunify-notifier
(9.82 MB)
📄
init
(1.53 MB)
📄
insmod
(159.95 KB)
📄
install-info
(50.23 KB)
📄
installkernel
(323 B)
📄
intel_sdsi
(15.62 KB)
📄
iotop
(511 B)
📄
ip
(693.3 KB)
📄
ip6tables
(220.8 KB)
📄
ip6tables-apply
(6.89 KB)
📄
ip6tables-restore
(220.8 KB)
📄
ip6tables-restore-translate
(220.8 KB)
📄
ip6tables-save
(220.8 KB)
📄
ip6tables-translate
(220.8 KB)
📄
ipmaddr
(21 KB)
📄
iprconfig
(408.03 KB)
📄
iprdbg
(137.57 KB)
📄
iprdump
(129.3 KB)
📄
iprinit
(125.28 KB)
📄
iprsos
(2.18 KB)
📄
iprupdate
(129.3 KB)
📄
ipset
(9.01 KB)
📄
iptables
(220.8 KB)
📄
iptables-apply
(6.89 KB)
📄
iptables-restore
(220.8 KB)
📄
iptables-restore-translate
(220.8 KB)
📄
iptables-save
(220.8 KB)
📄
iptables-translate
(220.8 KB)
📄
iptstate
(92.05 KB)
📄
iptunnel
(25 KB)
📄
irqbalance
(62.28 KB)
📄
irqbalance-ui
(41.29 KB)
📄
isc-hmac-fixup
(11.85 KB)
📄
iscsi-iname
(16.42 KB)
📄
iscsiadm
(406.38 KB)
📄
iscsid
(419.23 KB)
📄
iscsistart
(374.54 KB)
📄
iscsiuio
(183.51 KB)
📄
kexec
(194.98 KB)
📄
key.dns_resolver
(24.52 KB)
📄
kpartx
(49.05 KB)
📄
kpatch
(16.59 KB)
📄
lchage
(16.41 KB)
📄
ldattach
(32.99 KB)
📄
ldconfig
(986.02 KB)
📄
ledctl
(101.16 KB)
📄
ledmon
(101.11 KB)
📄
lfd
(382.45 KB)
📄
lgroupadd
(11.88 KB)
📄
lgroupdel
(11.88 KB)
📄
lgroupmod
(19.88 KB)
📄
lid
(16.27 KB)
📄
lnewusers
(19.87 KB)
📄
lnstat
(25.33 KB)
📄
load_policy
(12.28 KB)
📄
logrotate
(93.03 KB)
📄
logsave
(16.41 KB)
📄
losetup
(90.59 KB)
📄
lpasswd
(20.35 KB)
📄
lshw
(966.2 KB)
📄
lsmod
(159.95 KB)
📄
lspci
(94.85 KB)
📄
luseradd
(19.88 KB)
📄
luserdel
(15.88 KB)
📄
lusermod
(19.88 KB)
📄
lvchange
(2.61 MB)
📄
lvconvert
(2.61 MB)
📄
lvcreate
(2.61 MB)
📄
lvdisplay
(2.61 MB)
📄
lvextend
(2.61 MB)
📄
lvm
(2.61 MB)
📄
lvm_import_vdo
(23.14 KB)
📄
lvmconfig
(2.61 MB)
📄
lvmdevices
(2.61 MB)
📄
lvmdiskscan
(2.61 MB)
📄
lvmdump
(10.12 KB)
📄
lvmpolld
(200.69 KB)
📄
lvmsadc
(2.61 MB)
📄
lvmsar
(2.61 MB)
📄
lvreduce
(2.61 MB)
📄
lvremove
(2.61 MB)
📄
lvrename
(2.61 MB)
📄
lvresize
(2.61 MB)
📄
lvs
(2.61 MB)
📄
lvscan
(2.61 MB)
📄
lwresd
(840.86 KB)
📄
makedumpfile
(425.19 KB)
📄
mariadbd
(24.3 MB)
📄
matchpathcon
(12.37 KB)
📄
mcelog
(206.3 KB)
📄
mdadm
(620.63 KB)
📄
mdmon
(375.48 KB)
📄
mii-diag
(25.4 KB)
📄
mii-tool
(21.03 KB)
📄
mkdict
(251 B)
📄
mkdosfs
(39.07 KB)
📄
mkdumprd
(12.68 KB)
📄
mke2fs
(138.45 KB)
📄
mkfadumprd
(2.23 KB)
📄
mkfs
(16.47 KB)
📄
mkfs.cramfs
(41.26 KB)
📄
mkfs.ext2
(138.45 KB)
📄
mkfs.ext3
(138.45 KB)
📄
mkfs.ext4
(138.45 KB)
📄
mkfs.fat
(39.07 KB)
📄
mkfs.minix
(86.55 KB)
📄
mkfs.msdos
(39.07 KB)
📄
mkfs.vfat
(39.07 KB)
📄
mkfs.xfs
(475.98 KB)
📄
mkhomedir_helper
(24.43 KB)
📄
mklost+found
(11.86 KB)
📄
mksquashfs
(186.83 KB)
📄
mkswap
(86.47 KB)
📄
modinfo
(159.95 KB)
📄
modprobe
(159.95 KB)
📄
modsec-sdbm-util
(25.83 KB)
📄
mount.nfs
(197.24 KB)
📄
mount.nfs4
(197.24 KB)
📄
mountstats
(42.22 KB)
📄
mpathconf
(16.17 KB)
📄
mpathpersist
(29.34 KB)
📄
mtr
(110.92 KB)
📄
mtr-packet
(58.3 KB)
📄
multipath
(32.61 KB)
📄
multipathd
(134.76 KB)
📄
mysqld
(24.3 MB)
📄
named
(840.86 KB)
📄
named-checkconf
(36.77 KB)
📄
named-checkzone
(36.63 KB)
📄
named-compilezone
(36.63 KB)
📄
named-journalprint
(11.85 KB)
📄
nameif
(16.98 KB)
📄
newusers
(107.23 KB)
📄
nfsconf
(37.48 KB)
📄
nfsconvert
(13.03 KB)
📄
nfsdcld
(65.87 KB)
📄
nfsdclddb
(10 KB)
📄
nfsdclnts
(9.02 KB)
📄
nfsdcltrack
(49.78 KB)
📄
nfsidmap
(45.36 KB)
📄
nfsiostat
(23.36 KB)
📄
nfsref
(65.8 KB)
📄
nfsstat
(35.52 KB)
📄
nft
(24.41 KB)
📄
nginx
(1.85 MB)
📄
nginx-debug
(1.98 MB)
📄
nologin
(11.87 KB)
📄
nrpe
(76.13 KB)
📄
nscd
(160.68 KB)
📄
nsec3hash
(12.29 KB)
📄
nstat
(113.57 KB)
📄
nvme
(721.45 KB)
📄
oddjobd
(77.63 KB)
📄
ownership
(12.4 KB)
📄
packer
(13.05 KB)
📄
pam_console_apply
(45.2 KB)
📄
pam_timestamp_check
(11.87 KB)
📄
paperconfig
(4.07 KB)
📄
parted
(85.6 KB)
📄
partprobe
(16.39 KB)
📄
partx
(94.5 KB)
📄
pdata_tools
(1.43 MB)
📄
pidof
(16.7 KB)
📄
ping
(66.13 KB)
📄
ping6
(66.13 KB)
📄
pivot_root
(12.38 KB)
📄
plipconfig
(12.71 KB)
📄
plymouth-set-default-theme
(6.05 KB)
📄
plymouthd
(141.97 KB)
📄
poweroff
(218.45 KB)
📄
pure-authd
(19.23 KB)
📄
pure-certd
(19.13 KB)
📄
pure-config.pl
(4.64 KB)
📄
pure-ftpd
(182.06 KB)
📄
pure-ftpwho
(26.82 KB)
📄
pure-mrtginfo
(11.16 KB)
📄
pure-quotacheck
(18.81 KB)
📄
pure-uploadscript
(19.07 KB)
📄
pvchange
(2.61 MB)
📄
pvck
(2.61 MB)
📄
pvcreate
(2.61 MB)
📄
pvdisplay
(2.61 MB)
📄
pvmove
(2.61 MB)
📄
pvremove
(2.61 MB)
📄
pvresize
(2.61 MB)
📄
pvs
(2.61 MB)
📄
pvscan
(2.61 MB)
📄
pwck
(57.27 KB)
📄
pwconv
(53.1 KB)
📄
pwhistory_helper
(20.43 KB)
📄
pwunconv
(53.13 KB)
📄
quot
(78.67 KB)
📄
quotacheck
(115.75 KB)
📄
quotaoff
(83.16 KB)
📄
quotaon
(83.16 KB)
📄
quotastats
(16.54 KB)
📄
raid-check
(3.7 KB)
📄
rcmysql
(0 B)
📄
rdisc
(24.55 KB)
📄
rdma
(187.38 KB)
📄
readprofile
(20.55 KB)
📄
realm
(144.26 KB)
📄
reboot
(218.45 KB)
📄
repquota
(83.24 KB)
📄
request-key
(24.38 KB)
📄
resize2fs
(64.91 KB)
📄
resizepart
(41.56 KB)
📄
resolvconf
(195.74 KB)
📄
restorecon
(20.53 KB)
📄
restorecon_xattr
(16.41 KB)
📄
rfkill
(53.46 KB)
📄
rmmod
(159.95 KB)
📄
rndc
(36.53 KB)
📄
rndc-confgen
(20.45 KB)
📄
rotatelogs
(30.51 KB)
📄
route
(67.63 KB)
📄
rpc.gssd
(106.55 KB)
📄
rpc.idmapd
(61.73 KB)
📄
rpc.mountd
(158.92 KB)
📄
rpc.nfsd
(49.91 KB)
📄
rpc.statd
(103.29 KB)
📄
rpcbind
(61.55 KB)
📄
rpcctl
(9.41 KB)
📄
rpcdebug
(19.38 KB)
📄
rpcinfo
(32.64 KB)
📄
rsyslogd
(724.73 KB)
📄
rtacct
(46.94 KB)
📄
rtcwake
(49.31 KB)
📄
rtmon
(117.27 KB)
📄
rtstat
(25.33 KB)
📄
runlevel
(218.45 KB)
📄
runq
(1.49 MB)
📄
runuser
(48.99 KB)
📄
sa
(46.62 KB)
📄
sasldblistusers2
(20.77 KB)
📄
saslpasswd2
(16.42 KB)
📄
sefcontext_compile
(65.35 KB)
📄
selabel_digest
(12.28 KB)
📄
selabel_lookup
(12.27 KB)
📄
selabel_lookup_best_match
(11.89 KB)
📄
selabel_partial_match
(11.88 KB)
📄
selinux_check_access
(12.36 KB)
📄
selinuxconlist
(11.88 KB)
📄
selinuxdefcon
(11.88 KB)
📄
selinuxenabled
(7.84 KB)
📄
selinuxexeccon
(11.86 KB)
📄
semodule
(29.27 KB)
📄
sendmail
(16.91 KB)
📄
service
(3.64 KB)
📄
sestatus
(20.41 KB)
📄
setcap
(16.27 KB)
📄
setenforce
(12.27 KB)
📄
setfiles
(20.53 KB)
📄
setpci
(28.56 KB)
📄
setquota
(91.38 KB)
📄
setsebool
(16.38 KB)
📄
sfdisk
(118.5 KB)
📄
showmount
(21.06 KB)
📄
shutdown
(218.45 KB)
📄
sim_server
(11.87 KB)
📄
slattach
(43.76 KB)
📄
sm-notify
(78.14 KB)
📄
smartctl
(907.08 KB)
📄
smartd
(733.2 KB)
📄
snmpd
(32.45 KB)
📄
snmptrapd
(32.6 KB)
📄
sos
(627 B)
📄
sos-collector
(139 B)
📄
sosreport
(132 B)
📄
ss
(191.3 KB)
📄
sshd
(869.77 KB)
📄
sss_cache
(61.09 KB)
📄
sssd
(73.01 KB)
📄
start-statd
(838 B)
📄
start-stop-daemon
(45.98 KB)
📄
suexec
(25.3 KB)
📄
sulogin
(49.24 KB)
📄
suphp
(6.56 MB)
📄
swaplabel
(16.5 KB)
📄
swapoff
(20.74 KB)
📄
swapon
(49.4 KB)
📄
switch_root
(16.49 KB)
📄
sysctl
(28.88 KB)
📄
syspurpose
(415 B)
📄
tcpdump
(1.01 MB)
📄
tcpslice
(32.63 KB)
📄
tcsd
(309.72 KB)
📄
telinit
(218.45 KB)
📄
thin_check
(1.43 MB)
📄
thin_delta
(1.43 MB)
📄
thin_dump
(1.43 MB)
📄
thin_ls
(1.43 MB)
📄
thin_metadata_pack
(907.47 KB)
📄
thin_metadata_size
(1.43 MB)
📄
thin_metadata_unpack
(895.45 KB)
📄
thin_repair
(1.43 MB)
📄
thin_restore
(1.43 MB)
📄
thin_rmap
(1.43 MB)
📄
thin_trim
(1.43 MB)
📄
timedatex
(33.43 KB)
📄
tipc
(163.07 KB)
📄
tmpwatch
(35.47 KB)
📄
tracepath
(20.44 KB)
📄
tracepath6
(20.44 KB)
📄
tsig-keygen
(20.46 KB)
📄
tune2fs
(110.63 KB)
📄
tuned
(3.88 KB)
📄
tuned-adm
(6.5 KB)
📄
udevadm
(424.59 KB)
📄
umount.nfs
(197.24 KB)
📄
umount.nfs4
(197.24 KB)
📄
unbound-anchor
(57.34 KB)
📄
unix_chkpwd
(36.86 KB)
📄
unix_update
(36.87 KB)
📄
unsquashfs
(99.57 KB)
📄
update-alternatives
(36.66 KB)
📄
update-pciids
(1.71 KB)
📄
update-smart-drivedb
(14.44 KB)
📄
useradd
(148.17 KB)
📄
userdel
(107.29 KB)
📄
usermod
(144.07 KB)
📄
usernetctl
(12.4 KB)
📄
uuserver
(15.88 KB)
📄
vdpa
(118.04 KB)
📄
vgcfgbackup
(2.61 MB)
📄
vgcfgrestore
(2.61 MB)
📄
vgchange
(2.61 MB)
📄
vgck
(2.61 MB)
📄
vgconvert
(2.61 MB)
📄
vgcreate
(2.61 MB)
📄
vgdisplay
(2.61 MB)
📄
vgexport
(2.61 MB)
📄
vgextend
(2.61 MB)
📄
vgimport
(2.61 MB)
📄
vgimportclone
(2.61 MB)
📄
vgimportdevices
(2.61 MB)
📄
vgmerge
(2.61 MB)
📄
vgmknodes
(2.61 MB)
📄
vgreduce
(2.61 MB)
📄
vgremove
(2.61 MB)
📄
vgrename
(2.61 MB)
📄
vgs
(2.61 MB)
📄
vgscan
(2.61 MB)
📄
vgsplit
(2.61 MB)
📄
vigr
(68.05 KB)
📄
vipw
(68.05 KB)
📄
virt-what
(14.22 KB)
📄
visudo
(239.22 KB)
📄
vmcore-dmesg
(28.58 KB)
📄
vpddecode
(16.47 KB)
📄
weak-modules
(33.6 KB)
📄
whmapi0
(3.18 MB)
📄
whmapi1
(3.18 MB)
📄
whmlogin
(2.33 KB)
📄
wipefs
(41.11 KB)
📄
xfs_admin
(1.38 KB)
📄
xfs_bmap
(695 B)
📄
xfs_copy
(434.59 KB)
📄
xfs_db
(760.47 KB)
📄
xfs_estimate
(12.39 KB)
📄
xfs_freeze
(800 B)
📄
xfs_fsr
(53.41 KB)
📄
xfs_growfs
(422.48 KB)
📄
xfs_info
(1.26 KB)
📄
xfs_io
(188.28 KB)
📄
xfs_logprint
(454.7 KB)
📄
xfs_mdrestore
(410.09 KB)
📄
xfs_metadump
(782 B)
📄
xfs_mkfile
(1.02 KB)
📄
xfs_ncheck
(685 B)
📄
xfs_quota
(93.98 KB)
📄
xfs_repair
(715.24 KB)
📄
xfs_rtcp
(16.38 KB)
📄
xfs_spaceman
(45.42 KB)
📄
xfsdump
(308.02 KB)
📄
xfsinvutil
(66.91 KB)
📄
xfsrestore
(369.39 KB)
📄
xqmstats
(16.45 KB)
📄
xtables-monitor
(220.8 KB)
📄
xtables-nft-multi
(220.8 KB)
📄
zdump
(20.57 KB)
📄
zic
(52.83 KB)
📄
zramctl
(99.09 KB)
Editing: dpkg-fsys-usrunmess
#!/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; }
Upload File
Create Folder