Linux server.thearyasamaj.org 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
Apache
: 103.90.241.146 | : 216.73.216.222
Cant Read [ /etc/named.conf ]
5.6.40
ftpuser@mantra.thearyasamaj.org
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 /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
NetworkManager
3.41
MB
-rwxr-xr-x
a3mnt
832
B
-rwxr-xr-x
aakore
481
B
-rwxr-xr-x
accessdb
12.59
KB
-rwxr-xr-x
accton
13.69
KB
-rwxr-xr-x
acp-update-controller
820
B
-rwxr-xr-x
acrocmd
822
B
-rwxr-xr-x
acronis_encrypt
818
B
-rwxr-xr-x
acronis_mms
1.29
KB
-rwxr-xr-x
acronis_schedinfo
435
B
-rwxr-xr-x
acronis_schedule
818
B
-rwxr-xr-x
acropsh
804
B
-rwxr-xr-x
adcli
171.08
KB
-rwxr-xr-x
addgnupghome
3
KB
-rwxr-xr-x
addpart
24.85
KB
-rwxr-xr-x
adduser
148.13
KB
-rwxr-xr-x
agetty
62.38
KB
-rwxr-xr-x
alternatives
36.62
KB
-rwxr-xr-x
anacron
40.98
KB
-rwxr-xr-x
apachectl
4.19
KB
-rwxr-xr-x
applygnupgdefaults
2.17
KB
-rwxr-xr-x
arp
64.71
KB
-rwxr-xr-x
arpd
87.1
KB
-rwxr-xr-x
arping
28.74
KB
-rwxr-xr-x
atd
32.63
KB
-rwxr-xr-x
atrun
67
B
-rwxr-xr-x
auditctl
45.04
KB
-rwxr-xr-x
auditd
155.78
KB
-rwxr-xr-x
augenrules
3.7
KB
-rwxr-xr-x
aureport
122.34
KB
-rwxr-xr-x
ausearch
130.37
KB
-rwxr-xr-x
autrace
16.53
KB
-rwxr-x---
avcstat
16.39
KB
-rwxr-xr-x
badblocks
32.57
KB
-rwxr-xr-x
biosdecode
25.45
KB
-rwxr-xr-x
biosdevname
46.16
KB
-rwxr-xr-x
blkdeactivate
15.97
KB
-r-xr-xr-x
blkdiscard
29.05
KB
-rwxr-xr-x
blkid
98.66
KB
-rwxr-xr-x
blkzone
49.73
KB
-rwxr-xr-x
blockdev
41.3
KB
-rwxr-xr-x
bpftool
2.77
MB
-rwxr-xr-x
bridge
150.15
KB
-rwxr-xr-x
build-locale-archive
812.27
KB
-rwx------
cache_check
1.43
MB
-rwxr-xr-x
cache_dump
1.43
MB
-rwxr-xr-x
cache_metadata_size
1.43
MB
-rwxr-xr-x
cache_repair
1.43
MB
-rwxr-xr-x
cache_restore
1.43
MB
-rwxr-xr-x
cache_writeback
1.43
MB
-rwxr-xr-x
capsh
32.44
KB
-rwxr-xr-x
cfdisk
98.39
KB
-rwxr-xr-x
chcpu
28.82
KB
-rwxr-xr-x
chgpasswd
69.67
KB
-rwxr-xr-x
chkconfig
45.16
KB
-rwxr-xr-x
chpasswd
61.42
KB
-rwxr-xr-x
chronyd
351.16
KB
-rwxr-xr-x
chroot
41.44
KB
-rwxr-xr-x
clock
65.26
KB
-rwxr-xr-x
clockdiff
20.42
KB
-rwxr-xr-x
consoletype
11.85
KB
-rwxr-xr-x
convertquota
78.68
KB
-rwxr-xr-x
cracklib-check
13.05
KB
-rwxr-xr-x
cracklib-format
251
B
-rwxr-xr-x
cracklib-packer
13.05
KB
-rwxr-xr-x
cracklib-unpacker
9.03
KB
-rwxr-xr-x
create-cracklib-dict
990
B
-rwxr-xr-x
crond
73.94
KB
-rwxr-xr-x
cryptsetup
143.43
KB
-rwxr-xr-x
csf
245.08
KB
-rwx------
ctrlaltdel
20.77
KB
-rwxr-xr-x
ctstat
25.32
KB
-rwxr-xr-x
dcb
146.85
KB
-rwxr-xr-x
ddns-confgen
20.45
KB
-rwxr-xr-x
debugfs
231.63
KB
-rwxr-xr-x
delpart
24.85
KB
-rwxr-xr-x
depmod
159.46
KB
-rwxr-xr-x
devlink
185.22
KB
-rwxr-xr-x
dhclient
453.64
KB
-rwxr-xr-x
dhclient-script
32.86
KB
-rwxr-xr-x
dkms
117.1
KB
-rwxr-xr-x
dmeventd
45.02
KB
-r-xr-xr-x
dmfilemapd
24.53
KB
-r-xr-xr-x
dmidecode
125.68
KB
-rwxr-xr-x
dmsetup
158.63
KB
-r-xr-xr-x
dmstats
158.63
KB
-r-xr-xr-x
dnssec-checkds
936
B
-rwxr-xr-x
dnssec-coverage
938
B
-rwxr-xr-x
dnssec-dsfromkey
60.84
KB
-rwxr-xr-x
dnssec-importkey
60.83
KB
-rwxr-xr-x
dnssec-keyfromlabel
64.74
KB
-rwxr-xr-x
dnssec-keygen
72.83
KB
-rwxr-xr-x
dnssec-keymgr
934
B
-rwxr-xr-x
dnssec-revoke
56.73
KB
-rwxr-xr-x
dnssec-settime
60.83
KB
-rwxr-xr-x
dnssec-signzone
117.19
KB
-rwxr-xr-x
dnssec-verify
52.84
KB
-rwxr-xr-x
dosfsck
65.13
KB
-rwxr-xr-x
dosfslabel
61.1
KB
-rwxr-xr-x
dovecot
93.86
KB
-rwxr-xr-x
dump-acct
29.15
KB
-rwxr-xr-x
dump-utmp
25.02
KB
-rwxr-xr-x
dumpe2fs
32.51
KB
-rwxr-xr-x
e2freefrag
16.41
KB
-rwxr-xr-x
e2fsck
328.51
KB
-rwxr-xr-x
e2image
36.59
KB
-rwxr-xr-x
e2label
110.63
KB
-rwxr-xr-x
e2mmpstatus
32.51
KB
-rwxr-xr-x
e2undo
20.37
KB
-rwxr-xr-x
e4crypt
24.54
KB
-rwxr-xr-x
e4defrag
28.48
KB
-rwxr-xr-x
ebtables
216.6
KB
-rwxr-xr-x
ebtables-restore
216.6
KB
-rwxr-xr-x
ebtables-save
216.6
KB
-rwxr-xr-x
edquota
91.24
KB
-rwxr-xr-x
era_check
1.43
MB
-rwxr-xr-x
era_dump
1.43
MB
-rwxr-xr-x
era_invalidate
1.43
MB
-rwxr-xr-x
era_restore
1.43
MB
-rwxr-xr-x
ether-wake
73.99
KB
-rwxr-xr-x
ethtool
557.79
KB
-rwxr-xr-x
faillock
20.52
KB
-rwxr-xr-x
fatlabel
61.1
KB
-rwxr-xr-x
fcgistarter
12.48
KB
-rwxr-xr-x
fdformat
33.16
KB
-rwxr-xr-x
fdisk
130.9
KB
-rwxr-xr-x
filefrag
16.45
KB
-rwxr-xr-x
findfs
12.36
KB
-rwxr-xr-x
firewalld
6.92
KB
-rwxr-xr-x
fix-info-dir
7.84
KB
-rwxr-xr-x
fixfiles
10.48
KB
-rwxr-xr-x
fsadm
24
KB
-r-xr-xr-x
fsck
53.47
KB
-rwxr-xr-x
fsck.cramfs
41.41
KB
-rwxr-xr-x
fsck.ext2
328.51
KB
-rwxr-xr-x
fsck.ext3
328.51
KB
-rwxr-xr-x
fsck.ext4
328.51
KB
-rwxr-xr-x
fsck.fat
65.13
KB
-rwxr-xr-x
fsck.minix
98.73
KB
-rwxr-xr-x
fsck.msdos
65.13
KB
-rwxr-xr-x
fsck.vfat
65.13
KB
-rwxr-xr-x
fsck.xfs
1.92
KB
-rwxr-xr-x
fsfreeze
16.38
KB
-rwxr-xr-x
fstrim
45.61
KB
-rwxr-xr-x
ftpscrub
17.87
KB
-rwxr-xr-x
ftpshut
12.36
KB
-rwxr-xr-x
fuse2fs
70.38
KB
-rwxr-xr-x
fuser
38.14
KB
-rwxr-xr-x
g13-syshelp
189.71
KB
-rwxr-xr-x
genhomedircon
29.27
KB
-rwxr-xr-x
genhostid
11.85
KB
-rwxr-xr-x
genl
94.95
KB
-rwxr-xr-x
genrandom
12.37
KB
-rwxr-xr-x
getcap
12.34
KB
-rwxr-xr-x
getenforce
7.83
KB
-rwxr-xr-x
getpcaps
12.27
KB
-rwxr-xr-x
getsebool
11.86
KB
-rwxr-xr-x
groupadd
95.34
KB
-rwxr-xr-x
groupdel
91.09
KB
-rwxr-xr-x
groupmems
61.48
KB
-rwxr-xr-x
groupmod
99.37
KB
-rwxr-xr-x
grpck
61.48
KB
-rwxr-xr-x
grpconv
57.26
KB
-rwxr-xr-x
grpunconv
57.24
KB
-rwxr-xr-x
grub2-bios-setup
1.14
MB
-rwxr-xr-x
grub2-get-kernel-settings
2.34
KB
-rwxr-xr-x
grub2-install
1.43
MB
-rwxr-xr-x
grub2-macbless
1.12
MB
-rwxr-xr-x
grub2-mkconfig
8.68
KB
-rwxr-xr-x
grub2-ofpathname
242.19
KB
-rwxr-xr-x
grub2-probe
1.14
MB
-rwxr-xr-x
grub2-reboot
3.99
KB
-rwxr-xr-x
grub2-rpm-sort
279.02
KB
-rwxr-xr-x
grub2-set-bootflag
11.87
KB
-rwsr-xr-x
grub2-set-default
3.45
KB
-rwxr-xr-x
grub2-set-password
3.05
KB
-rwxr-xr-x
grub2-setpassword
3.05
KB
-rwxr-xr-x
grub2-sparc64-setup
1.14
MB
-rwxr-xr-x
grub2-switch-to-blscfg
8.6
KB
-rwxr-xr-x
grubby
260
B
-rwxr-xr-x
gss-server
24.59
KB
-rwxr-xr-x
halt
218.45
KB
-rwxr-xr-x
hardlink
17.09
KB
-rwxr-xr-x
hdparm
131.91
KB
-rwxr-xr-x
htcacheclean
32.63
KB
-rwxr-xr-x
httpd
570.3
KB
-rwxr-xr-x
hwclock
65.26
KB
-rwxr-xr-x
iconvconfig
33.04
KB
-rwxr-xr-x
ifconfig
80.86
KB
-rwxr-xr-x
ifdown
1.07
KB
-rwxr-xr-x
ifenslave
24.94
KB
-rwxr-xr-x
ifstat
91.22
KB
-rwxr-xr-x
iftop
75.42
KB
-rwxr-xr-x
ifup
1.04
KB
-rwxr-xr-x
in.proftpd
1.17
MB
-rwxr-xr-x
init
1.53
MB
-rwxr-xr-x
insmod
159.46
KB
-rwxr-xr-x
install-info
50.23
KB
-rwxr-xr-x
installkernel
323
B
-rwxr-xr-x
intel_sdsi
15.61
KB
-rwxr-xr-x
iotop
511
B
-rwxr-xr-x
ip
664.43
KB
-rwxr-xr-x
ip6tables
216.6
KB
-rwxr-xr-x
ip6tables-restore
216.6
KB
-rwxr-xr-x
ip6tables-restore-translate
216.6
KB
-rwxr-xr-x
ip6tables-save
216.6
KB
-rwxr-xr-x
ip6tables-translate
216.6
KB
-rwxr-xr-x
ipmaddr
21
KB
-rwxr-xr-x
iprconfig
408.03
KB
-rwxr-xr-x
iprdbg
137.57
KB
-rwxr-xr-x
iprdump
129.3
KB
-rwxr-xr-x
iprinit
125.28
KB
-rwxr-xr-x
iprsos
2.18
KB
-rwxr-xr-x
iprupdate
129.3
KB
-rwxr-xr-x
ipset
9.01
KB
-rwxr-xr-x
iptables
216.6
KB
-rwxr-xr-x
iptables-apply
3.43
KB
-rwxr-xr-x
iptables-restore
216.6
KB
-rwxr-xr-x
iptables-restore-translate
216.6
KB
-rwxr-xr-x
iptables-save
216.6
KB
-rwxr-xr-x
iptables-translate
216.6
KB
-rwxr-xr-x
iptstate
92.05
KB
-rwxr-xr-x
iptunnel
25
KB
-rwxr-xr-x
irqbalance
62.22
KB
-rwxr-xr-x
irqbalance-ui
37.22
KB
-rwxr-xr-x
isc-hmac-fixup
11.85
KB
-rwxr-xr-x
jk_check
11.2
KB
-rwxr-xr-x
jk_chrootlaunch
20.77
KB
-rwxr-xr-x
jk_chrootsh
32.73
KB
-rwsr-xr-x
jk_cp
4.12
KB
-rwxr-xr-x
jk_init
9.68
KB
-rwxr-xr-x
jk_jailuser
11.81
KB
-rwxr-xr-x
jk_list
4.93
KB
-rwxr-xr-x
jk_lsh
24.66
KB
-rwxr-xr-x
jk_socketd
29.05
KB
-rwxr-xr-x
jk_update
9.11
KB
-rwxr-xr-x
kexec
194.97
KB
-rwxr-xr-x
kpartx
49.05
KB
-rwxr-xr-x
lchage
16.38
KB
-rwxr-xr-x
ldattach
32.98
KB
-rwxr-xr-x
ldconfig
941.15
KB
-rwxr-xr-x
ledctl
92.25
KB
-rwxr-xr-x
ledmon
96.32
KB
-rwxr-xr-x
lfd
382.43
KB
-rwx------
lgroupadd
12
KB
-rwxr-xr-x
lgroupdel
11.99
KB
-rwxr-xr-x
lgroupmod
19.99
KB
-rwxr-xr-x
lid
16.26
KB
-rwxr-xr-x
lnewusers
19.99
KB
-rwxr-xr-x
lnstat
25.32
KB
-rwxr-xr-x
load_policy
12.27
KB
-rwxr-xr-x
logrotate
93.09
KB
-rwxr-xr-x
logsave
16.4
KB
-rwxr-xr-x
losetup
90.59
KB
-rwxr-xr-x
lpasswd
20.34
KB
-rwxr-xr-x
lshw
966.2
KB
-rwxr-xr-x
lsmod
159.46
KB
-rwxr-xr-x
lspci
94.78
KB
-rwxr-xr-x
luseradd
19.99
KB
-rwxr-xr-x
luserdel
16
KB
-rwxr-xr-x
lusermod
20
KB
-rwxr-xr-x
lvchange
2.6
MB
-r-xr-xr-x
lvconvert
2.6
MB
-r-xr-xr-x
lvcreate
2.6
MB
-r-xr-xr-x
lvdisplay
2.6
MB
-r-xr-xr-x
lvextend
2.6
MB
-r-xr-xr-x
lvm
2.6
MB
-r-xr-xr-x
lvm_import_vdo
13.14
KB
-r-xr-xr-x
lvmconfig
2.6
MB
-r-xr-xr-x
lvmdevices
2.6
MB
-r-xr-xr-x
lvmdiskscan
2.6
MB
-r-xr-xr-x
lvmdump
10.12
KB
-r-xr-xr-x
lvmpolld
200.66
KB
-r-xr-xr-x
lvmsadc
2.6
MB
-r-xr-xr-x
lvmsar
2.6
MB
-r-xr-xr-x
lvreduce
2.6
MB
-r-xr-xr-x
lvremove
2.6
MB
-r-xr-xr-x
lvrename
2.6
MB
-r-xr-xr-x
lvresize
2.6
MB
-r-xr-xr-x
lvs
2.6
MB
-r-xr-xr-x
lvscan
2.6
MB
-r-xr-xr-x
lwresd
840.73
KB
-rwxr-xr-x
makedumpfile
425.19
KB
-rwxr-xr-x
matchpathcon
12.36
KB
-rwxr-xr-x
mcelog
181.47
KB
-rwxr-xr-x
mdadm
611.59
KB
-rwxr-xr-x
mdmon
341.71
KB
-rwxr-xr-x
mediabuilder
826
B
-rwxr-xr-x
mii-diag
25.4
KB
-rwxr-xr-x
mii-tool
21.03
KB
-rwxr-xr-x
milter-greylist
336.08
KB
-rwxr-xr-x
mkdict
251
B
-rwxr-xr-x
mkdosfs
39.07
KB
-rwxr-xr-x
mkdumprd
12.54
KB
-rwxr-xr-x
mke2fs
138.45
KB
-rwxr-xr-x
mkfadumprd
2.23
KB
-rwxr-xr-x
mkfs
16.47
KB
-rwxr-xr-x
mkfs.cramfs
41.26
KB
-rwxr-xr-x
mkfs.ext2
138.45
KB
-rwxr-xr-x
mkfs.ext3
138.45
KB
-rwxr-xr-x
mkfs.ext4
138.45
KB
-rwxr-xr-x
mkfs.fat
39.07
KB
-rwxr-xr-x
mkfs.minix
86.54
KB
-rwxr-xr-x
mkfs.msdos
39.07
KB
-rwxr-xr-x
mkfs.vfat
39.07
KB
-rwxr-xr-x
mkfs.xfs
474.59
KB
-rwxr-xr-x
mkhomedir_helper
24.42
KB
-rwxr-xr-x
mklost+found
11.85
KB
-rwxr-xr-x
mksquashfs
186.84
KB
-rwxr-xr-x
mkswap
86.46
KB
-rwxr-xr-x
modinfo
159.46
KB
-rwxr-xr-x
modprobe
159.46
KB
-rwxr-xr-x
mtr
110.92
KB
-rwxr-xr-x
mtr-packet
58.3
KB
-rwxr-xr-x
mysqld
62.52
MB
-rwxr-xr-x
named
840.73
KB
-rwxr-xr-x
named-checkconf
36.77
KB
-rwxr-xr-x
named-checkzone
36.63
KB
-rwxr-xr-x
named-compilezone
36.63
KB
-rwxr-xr-x
named-journalprint
11.84
KB
-rwxr-xr-x
nameif
16.98
KB
-rwxr-xr-x
newusers
107.21
KB
-rwxr-xr-x
nft
20.4
KB
-rwxr-xr-x
nologin
11.87
KB
-rwxr-xr-x
nsec3hash
12.28
KB
-rwxr-xr-x
nstat
87.14
KB
-rwxr-xr-x
opendkim
222.52
KB
-rwxr-xr-x
opendkim-default-keygen
1.4
KB
-rwxr-xr-x
opendkim-reportstats
14.16
KB
-rwxr-xr-x
ownership
16.43
KB
-rwxr-xr-x
packer
13.05
KB
-rwxr-xr-x
pam_console_apply
45.18
KB
-rwxr-xr-x
pam_timestamp_check
11.86
KB
-rwsr-xr-x
paperconfig
4.07
KB
-rwxr-xr-x
parted
85.6
KB
-rwxr-xr-x
partprobe
16.39
KB
-rwxr-xr-x
partx
94.48
KB
-rwxr-xr-x
pdata_tools
1.43
MB
-rwxr-xr-x
php-fpm
4.8
MB
-rwxr-xr-x
pidof
16.55
KB
-rwxr-xr-x
ping
66.08
KB
-rwxr-xr-x
ping6
66.08
KB
-rwxr-xr-x
pivot_root
12.37
KB
-rwxr-xr-x
plipconfig
12.71
KB
-rwxr-xr-x
pluginviewer
20.57
KB
-rwxr-xr-x
postalias
20.39
KB
-rwxr-xr-x
postcat
20.06
KB
-rwxr-xr-x
postconf
191.06
KB
-rwxr-xr-x
postdrop
20.42
KB
-rwxr-sr-x
postfix
16.27
KB
-rwxr-xr-x
postgrey
37.94
KB
-rwxr-xr-x
postgreyreport
23.8
KB
-rwxr-xr-x
postkick
11.97
KB
-rwxr-xr-x
postlock
12.26
KB
-rwxr-xr-x
postlog
12.14
KB
-rwxr-xr-x
postmap
24.41
KB
-rwxr-xr-x
postmulti
28.91
KB
-rwxr-xr-x
postqueue
24.59
KB
-rwxr-sr-x
postsuper
28.81
KB
-rwxr-xr-x
posttls-finger
44.79
KB
-rwxr-xr-x
poweroff
218.45
KB
-rwxr-xr-x
proftpd
1.17
MB
-rwxr-xr-x
pvchange
2.6
MB
-r-xr-xr-x
pvck
2.6
MB
-r-xr-xr-x
pvcreate
2.6
MB
-r-xr-xr-x
pvdisplay
2.6
MB
-r-xr-xr-x
pvmove
2.6
MB
-r-xr-xr-x
pvremove
2.6
MB
-r-xr-xr-x
pvresize
2.6
MB
-r-xr-xr-x
pvs
2.6
MB
-r-xr-xr-x
pvscan
2.6
MB
-r-xr-xr-x
pwck
57.26
KB
-rwxr-xr-x
pwconv
53.09
KB
-rwxr-xr-x
pwhistory_helper
20.42
KB
-rwxr-xr-x
pwunconv
53.12
KB
-rwxr-xr-x
quot
78.67
KB
-rwxr-xr-x
quotacheck
115.75
KB
-rwxr-xr-x
quotaoff
83.16
KB
-rwxr-xr-x
quotaon
83.16
KB
-rwxr-xr-x
quotastats
16.54
KB
-rwxr-xr-x
raid-check
3.7
KB
-rwxr-xr-x
rdisc
24.55
KB
-rwxr-xr-x
rdma
160.91
KB
-rwxr-xr-x
rdma-ndd
15.95
KB
-rwxr-xr-x
readprofile
20.54
KB
-rwxr-xr-x
realm
144.32
KB
-rwxr-xr-x
reboot
218.45
KB
-rwxr-xr-x
repquota
83.24
KB
-rwxr-xr-x
resize2fs
64.9
KB
-rwxr-xr-x
resizepart
41.56
KB
-rwxr-xr-x
resolvconf
195.74
KB
-rwxr-xr-x
restorecon
20.52
KB
-rwxr-xr-x
restorecon_xattr
16.41
KB
-rwxr-xr-x
rfkill
53.48
KB
-rwxr-xr-x
rmmod
159.46
KB
-rwxr-xr-x
rndc
36.52
KB
-rwxr-xr-x
rndc-confgen
20.44
KB
-rwxr-xr-x
rngd
104.84
KB
-rwxr-xr-x
rotatelogs
24.54
KB
-rwxr-xr-x
route
67.63
KB
-rwxr-xr-x
rsyslogd
724.33
KB
-rwxr-xr-x
rtacct
46.93
KB
-rwxr-xr-x
rtcwake
49.34
KB
-rwxr-xr-x
rtmon
90.81
KB
-rwxr-xr-x
rtstat
25.32
KB
-rwxr-xr-x
runlevel
218.45
KB
-rwxr-xr-x
runuser
48.98
KB
-rwxr-xr-x
sa
46.62
KB
-rwxr-xr-x
saslauthd
94.42
KB
-rwxr-xr-x
sasldblistusers2
20.77
KB
-rwxr-xr-x
saslpasswd2
16.42
KB
-rwxr-xr-x
schedmgr
818
B
-rwxr-xr-x
sedispatch
20.52
KB
-rwxr-xr-x
sefcontext_compile
65.34
KB
-rwxr-xr-x
selabel_digest
12.27
KB
-rwxr-xr-x
selabel_lookup
12.27
KB
-rwxr-xr-x
selabel_lookup_best_match
11.88
KB
-rwxr-xr-x
selabel_partial_match
11.88
KB
-rwxr-xr-x
selinux_check_access
12.35
KB
-rwxr-xr-x
selinuxconlist
11.87
KB
-rwxr-xr-x
selinuxdefcon
11.87
KB
-rwxr-xr-x
selinuxenabled
7.83
KB
-rwxr-xr-x
selinuxexeccon
11.85
KB
-rwxr-xr-x
semanage
41.18
KB
-rwxr-xr-x
semodule
29.27
KB
-rwxr-xr-x
sendmail
28.48
KB
-rwxr-xr-x
sendmail.postfix
28.48
KB
-rwxr-xr-x
service
3.64
KB
-rwxr-xr-x
sestatus
20.41
KB
-rwxr-xr-x
setcap
16.26
KB
-rwxr-xr-x
setenforce
12.26
KB
-rwxr-xr-x
setfiles
20.52
KB
-rwxr-xr-x
setpci
28.49
KB
-rwxr-xr-x
setquota
91.38
KB
-rwxr-xr-x
setroubleshootd
3.34
KB
-rwxr-xr-x
setsebool
16.36
KB
-rwxr-xr-x
sfdisk
118.5
KB
-rwxr-xr-x
shutdown
218.45
KB
-rwxr-xr-x
sim_server
11.86
KB
-rwxr-xr-x
slattach
43.76
KB
-rwxr-xr-x
smartctl
883.59
KB
-rwxr-xr-x
smartd
705.66
KB
-rwxr-xr-x
smtp-sink
33.7
KB
-rwxr-xr-x
smtp-source
28.61
KB
-rwxr-xr-x
sos
611
B
-rwxr-xr-x
sos-collector
1.05
KB
-rwxr-xr-x
sosreport
1.05
KB
-rwxr-xr-x
ss
191.24
KB
-rwxr-xr-x
sshd
869.56
KB
-rwxr-xr-x
sss_cache
61.03
KB
-rwxr-xr-x
sssd
81.59
KB
-rwxr-xr-x
suexec
20.4
KB
-r-x--x---
sulogin
49.23
KB
-rwxr-xr-x
swaplabel
16.49
KB
-rwxr-xr-x
swapoff
20.74
KB
-rwxr-xr-x
swapon
49.39
KB
-rwxr-xr-x
switch_root
16.48
KB
-rwxr-xr-x
sysctl
28.74
KB
-rwxr-xr-x
syspurpose
415
B
-rwxr-xr-x
t1libconfig
3.83
KB
-rwxr-xr-x
tcsd
309.68
KB
-rwxr-xr-x
telinit
218.45
KB
-rwxr-xr-x
testsaslauthd
16.66
KB
-rwxr-xr-x
thin_check
1.43
MB
-rwxr-xr-x
thin_delta
1.43
MB
-rwxr-xr-x
thin_dump
1.43
MB
-rwxr-xr-x
thin_ls
1.43
MB
-rwxr-xr-x
thin_metadata_pack
907.47
KB
-rwxr-xr-x
thin_metadata_size
1.43
MB
-rwxr-xr-x
thin_metadata_unpack
895.45
KB
-rwxr-xr-x
thin_repair
1.43
MB
-rwxr-xr-x
thin_restore
1.43
MB
-rwxr-xr-x
thin_rmap
1.43
MB
-rwxr-xr-x
thin_trim
1.43
MB
-rwxr-xr-x
tibxread
828
B
-rwxr-xr-x
timedatex
33.43
KB
-rwxr-xr-x
tipc
136.65
KB
-rwxr-xr-x
tracepath
20.44
KB
-rwxr-xr-x
tracepath6
20.44
KB
-rwxr-xr-x
trueimagemnt
850
B
-rwxr-xr-x
tsig-keygen
20.45
KB
-rwxr-xr-x
tune2fs
110.63
KB
-rwxr-xr-x
tuned
3.3
KB
-rwxr-xr-x
tuned-adm
5.23
KB
-rwxr-xr-x
udevadm
424.55
KB
-rwxr-xr-x
unbound-anchor
57.33
KB
-rwxr-xr-x
unix_chkpwd
36.85
KB
-rwsr-xr-x
unix_update
36.84
KB
-rwx------
unsquashfs
99.51
KB
-rwxr-xr-x
update-alternatives
36.62
KB
-rwxr-xr-x
update-pciids
1.71
KB
-rwxr-xr-x
update-smart-drivedb
14.44
KB
-rwxr-xr-x
useradd
148.13
KB
-rwxr-xr-x
userdel
107.3
KB
-rwxr-xr-x
usermod
144.08
KB
-rwxr-xr-x
uuserver
15.87
KB
-rwxr-xr-x
vdpa
91.5
KB
-rwxr-xr-x
vgcfgbackup
2.6
MB
-r-xr-xr-x
vgcfgrestore
2.6
MB
-r-xr-xr-x
vgchange
2.6
MB
-r-xr-xr-x
vgck
2.6
MB
-r-xr-xr-x
vgconvert
2.6
MB
-r-xr-xr-x
vgcreate
2.6
MB
-r-xr-xr-x
vgdisplay
2.6
MB
-r-xr-xr-x
vgexport
2.6
MB
-r-xr-xr-x
vgextend
2.6
MB
-r-xr-xr-x
vgimport
2.6
MB
-r-xr-xr-x
vgimportclone
2.6
MB
-r-xr-xr-x
vgimportdevices
2.6
MB
-r-xr-xr-x
vgmerge
2.6
MB
-r-xr-xr-x
vgmknodes
2.6
MB
-r-xr-xr-x
vgreduce
2.6
MB
-r-xr-xr-x
vgremove
2.6
MB
-r-xr-xr-x
vgrename
2.6
MB
-r-xr-xr-x
vgs
2.6
MB
-r-xr-xr-x
vgscan
2.6
MB
-r-xr-xr-x
vgsplit
2.6
MB
-r-xr-xr-x
vigr
68.05
KB
-rwxr-xr-x
vipw
68.05
KB
-rwxr-xr-x
virt-what
13.65
KB
-rwxr-xr-x
virtualmin
1.37
KB
-rwxr-xr-x
visudo
218.98
KB
-rwxr-xr-x
vmcore-dmesg
28.56
KB
-rwxr-xr-x
vnstatd
117.09
KB
-rwxr-xr-x
vpddecode
16.47
KB
-rwxr-xr-x
weak-modules
33.56
KB
-rwxr-xr-x
wipefs
41.1
KB
-rwxr-xr-x
xfs_admin
1.38
KB
-rwxr-xr-x
xfs_bmap
695
B
-rwxr-xr-x
xfs_copy
434.59
KB
-rwxr-xr-x
xfs_db
760.54
KB
-rwxr-xr-x
xfs_estimate
12.39
KB
-rwxr-xr-x
xfs_freeze
800
B
-rwxr-xr-x
xfs_fsr
49.47
KB
-rwxr-xr-x
xfs_growfs
422.57
KB
-rwxr-xr-x
xfs_info
1.26
KB
-rwxr-xr-x
xfs_io
188.34
KB
-rwxr-xr-x
xfs_logprint
454.77
KB
-rwxr-xr-x
xfs_mdrestore
410.16
KB
-rwxr-xr-x
xfs_metadump
782
B
-rwxr-xr-x
xfs_mkfile
1.02
KB
-rwxr-xr-x
xfs_ncheck
685
B
-rwxr-xr-x
xfs_quota
94.04
KB
-rwxr-xr-x
xfs_repair
715.23
KB
-rwxr-xr-x
xfs_rtcp
16.38
KB
-rwxr-xr-x
xfs_spaceman
45.51
KB
-rwxr-xr-x
xfsdump
308.22
KB
-rwxr-xr-x
xfsinvutil
67.05
KB
-rwxr-xr-x
xfsrestore
369.6
KB
-rwxr-xr-x
xqmstats
16.45
KB
-rwxr-xr-x
xtables-monitor
216.6
KB
-rwxr-xr-x
xtables-nft-multi
216.6
KB
-rwxr-xr-x
zabbix_agentd
726.99
KB
-rwxr-xr-x
zdump
20.55
KB
-rwxr-xr-x
zic
52.8
KB
-rwxr-xr-x
zramctl
99.09
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : semanage
#! /usr/libexec/platform-python -Es # Copyright (C) 2012-2013 Red Hat # AUTHOR: Miroslav Grepl <mgrepl@redhat.com> # AUTHOR: David Quigley <selinux@davequigley.com> # see file 'COPYING' for use and warranty information # # semanage is a tool for managing SELinux configuration files # # 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, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA # # import argparse import os import re import sys import traceback PROGNAME = "selinux-python" try: import gettext kwargs = {} if sys.version_info < (3,): kwargs['unicode'] = True gettext.install(PROGNAME, localedir="/usr/share/locale", codeset='utf-8', **kwargs) except: try: import builtins builtins.__dict__['_'] = str except ImportError: import __builtin__ __builtin__.__dict__['_'] = unicode # define custom usages for selected main actions usage_login = "semanage login [-h] [-n] [-N] [-S STORE] [" usage_login_dict = {' --add': ('-s SEUSER', '-r RANGE', 'LOGIN',), ' --modify': ('-s SEUSER', '-r RANGE', 'LOGIN',), ' --delete': ('LOGIN',), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_fcontext = "semanage fcontext [-h] [-n] [-N] [-S STORE] [" usage_fcontext_dict = {' --add': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --delete': ('(', '-t TYPE', '-f FTYPE', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --modify': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --list': ('[-C]',), ' --extract': ('',), ' --deleteall': ('',)} usage_user = "semanage user [-h] [-n] [-N] [-S STORE] [" usage_user_dict = {' --add': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', 'SEUSER', ')'), ' --delete': ('SEUSER',), ' --modify': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', '-s SEUSER', 'SEUSER', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_port = "semanage port [-h] [-n] [-N] [-S STORE] [" usage_port_dict = {' --add': ('-t TYPE', '-p PROTOCOL', '-r RANGE', '(', 'port_name', '|', 'port_range', ')'), ' --modify': ('-t TYPE', '-p PROTOCOL', '-r RANGE', '(', 'port_name', '|', 'port_range', ')'), ' --delete': ('-p PROTOCOL', '(', 'port_name', '|', 'port_range', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_ibpkey = "semanage ibpkey [-h] [-n] [-N] [-s STORE] [" usage_ibpkey_dict = {' --add': ('-t TYPE', '-x SUBNET_PREFIX', '-r RANGE', '(', 'ibpkey_name', '|', 'pkey_range', ')'), ' --modify': ('-t TYPE', '-x SUBNET_PREFIX', '-r RANGE', '(', 'ibpkey_name', '|', 'pkey_range', ')'), ' --delete': ('-x SUBNET_PREFIX', '(', 'ibpkey_name', '|', 'pkey_range', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_ibendport = "semanage ibendport [-h] [-n] [-N] [-s STORE] [" usage_ibendport_dict = {' --add': ('-t TYPE', '-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --modify': ('-t TYPE', '-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --delete': ('-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_node = "semanage node [-h] [-n] [-N] [-S STORE] [" usage_node_dict = {' --add': ('-M NETMASK', '-p PROTOCOL', '-t TYPE', '-r RANGE', 'node'), ' --modify': ('-M NETMASK', '-p PROTOCOL', '-t TYPE', '-r RANGE', 'node'), ' --delete': ('-M NETMASK', '-p PROTOCOL', 'node'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_interface = "semanage interface [-h] [-n] [-N] [-S STORE] [" usage_interface_dict = {' --add': ('-t TYPE', '-r RANGE', 'interface'), ' --modify': ('-t TYPE', '-r RANGE', 'interface'), ' --delete': ('interface',), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_boolean = "semanage boolean [-h] [-n] [-N] [-S STORE] [" usage_boolean_dict = {' --modify': ('(', '--on', '|', '--off', ')', 'boolean'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} class CheckRole(argparse.Action): def __call__(self, parser, namespace, value, option_string=None): newval = getattr(namespace, self.dest) if not newval: newval = [] try: # sepolicy tries to load the SELinux policy and raises ValueError if it fails. import sepolicy roles = sepolicy.get_all_roles() except ValueError: roles = [] for v in value.split(): if v not in roles: raise ValueError("%s must be an SELinux role:\nValid roles: %s" % (v, ", ".join(roles))) newval.append(v) setattr(namespace, self.dest, newval) class seParser(argparse.ArgumentParser): def error(self, message): if len(sys.argv) == 2: self.print_help() else: self.print_usage() self.exit(2, ('%s: error: %s\n') % (self.prog, message)) class SetExportFile(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): if values: if values != "-": try: sys.stdout = open(values, 'w') except: sys.stderr.write(traceback.format_exc()) sys.exit(1) setattr(namespace, self.dest, values) class SetImportFile(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): if values and values != "-": try: sys.stdin = open(values, 'r') except IOError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) sys.exit(1) setattr(namespace, self.dest, values) def generate_custom_usage(usage_text, usage_dict): # generate custom usage from given text and dictonary sorted_keys = [] for i in usage_dict.keys(): sorted_keys.append(i) sorted_keys.sort() for k in sorted_keys: usage_text += "%s %s |" % (k, (" ".join(usage_dict[k]))) usage_text = usage_text[:-1] + "]" usage_text = _(usage_text) return usage_text def handle_opts(args, dict, target_key): # handle conflict and required options for given dictonary # {action:[conflict_opts,require_opts]} # first we need to catch conflicts for k in args.__dict__.keys(): try: if k in dict[target_key][0] and args.__dict__[k]: print("%s option can not be used with --%s" % (target_key, k)) sys.exit(2) except KeyError: continue for k in args.__dict__.keys(): try: if k in dict[target_key][1] and not args.__dict__[k]: print("%s option is needed for %s" % (k, target_key)) sys.exit(2) except KeyError: continue def handleLogin(args): # {action:[conflict_opts,require_opts]} login_args = {'list': [('login', 'seuser'), ('')], 'add': [('locallist'), ('seuser', 'login')], 'modify': [('locallist'), ('login')], 'delete': [('locallist'), ('login')], 'extract': [('locallist', 'login', 'seuser'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, login_args, args.action) OBJECT = object_dict['login'](args) if args.action == "add": OBJECT.add(args.login, args.seuser, args.range) if args.action == "modify": OBJECT.modify(args.login, args.seuser, args.range) if args.action == "delete": OBJECT.delete(args.login) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("login %s" % (str(i))) def parser_add_store(parser, name): parser.add_argument('-S', '--store', default='', help=_("Select an alternate SELinux Policy Store to manage")) def parser_add_priority(parser, name): parser.add_argument('-P', '--priority', type=int, default=400, help=_("Select a priority for module operations")) def parser_add_noheading(parser, name): parser.add_argument('-n', '--noheading', action='store_false', default=True, help=_("Do not print heading when listing %s object types") % name) def parser_add_noreload(parser, name): parser.add_argument('-N', '--noreload', action='store_true', default=False, help=_('Do not reload policy after commit')) def parser_add_locallist(parser, name): parser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List %s local customizations") % name) def parser_add_add(parser, name): parser.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_("Add a record of the %s object type") % name) def parser_add_type(parser, name): parser.add_argument('-t', '--type', help=_('SELinux Type for the object')) def parser_add_level(parser, name): parser.add_argument('-L', '--level', default='s0', help=_('Default SELinux Level for SELinux user, s0 Default. (MLS/MCS Systems only)')) def parser_add_range(parser, name): parser.add_argument('-r', '--range', default='', help=_(''' MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux login mapping defaults to the SELinux user record range. SELinux Range for SELinux user defaults to s0. ''')) def parser_add_proto(parser, name): parser.add_argument('-p', '--proto', help=_(''' Protocol for the specified port (tcp|udp) or internet protocol version for the specified node (ipv4|ipv6). ''')) def parser_add_subnet_prefix(parser, name): parser.add_argument('-x', '--subnet_prefix', help=_(''' Subnet prefix for the specified infiniband ibpkey. ''')) def parser_add_ibdev_name(parser, name): parser.add_argument('-z', '--ibdev_name', help=_(''' Name for the specified infiniband end port. ''')) def parser_add_modify(parser, name): parser.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_("Modify a record of the %s object type") % name) def parser_add_list(parser, name): parser.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_("List records of the %s object type") % name) def parser_add_delete(parser, name): parser.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_("Delete a record of the %s object type") % name) def parser_add_extract(parser, name): parser.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_("Extract customizable commands, for use within a transaction")) def parser_add_deleteall(parser, name): parser.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all %s objects local customizations') % name) def parser_add_seuser(parser, name): parser.add_argument('-s', '--seuser', default="", help=_("SELinux user name")) def setupLoginParser(subparsers): generated_usage = generate_custom_usage(usage_login, usage_login_dict) loginParser = subparsers.add_parser('login', usage=generated_usage, help=_("Manage login mappings between linux users and SELinux confined users")) parser_add_locallist(loginParser, "login") parser_add_noheading(loginParser, "login") parser_add_noreload(loginParser, "login") parser_add_store(loginParser, "login") parser_add_range(loginParser, "login") login_action = loginParser.add_mutually_exclusive_group(required=True) parser_add_add(login_action, "login") parser_add_delete(login_action, "login") parser_add_modify(login_action, "login") parser_add_list(login_action, "login") parser_add_extract(login_action, "login") parser_add_deleteall(login_action, "login") parser_add_seuser(loginParser, "login") loginParser.add_argument('login', nargs='?', default=None, help=_("login_name | %%groupname")) loginParser.set_defaults(func=handleLogin) def handleFcontext(args): fcontext_args = {'list': [('equal', 'ftype', 'seuser', 'type'), ('')], 'add': [('locallist'), ('type', 'file_spec')], 'modify': [('locallist'), ('type', 'file_spec')], 'delete': [('locallist'), ('file_spec')], 'extract': [('locallist', 'equal', 'ftype', 'seuser', 'type'), ('')], 'deleteall': [('locallist'), ('')]} # we can not use mutually for equal because we can define some actions together with equal fcontext_equal_args = {'equal': [('list', 'locallist', 'type', 'ftype', 'seuser', 'deleteall', 'extract'), ()]} if args.action and args.equal: handle_opts(args, fcontext_equal_args, "equal") else: handle_opts(args, fcontext_args, args.action) OBJECT = object_dict['fcontext'](args) if args.action == "add": if args.equal: OBJECT.add_equal(args.file_spec, args.equal) else: OBJECT.add(args.file_spec, args.type, args.ftype, args.range, args.seuser) if args.action == "modify": if args.equal: OBJECT.add_equal(args.file_spec, args.equal) else: OBJECT.modify(args.file_spec, args.type, args.ftype, args.range, args.seuser) if args.action == "delete": if args.equal: OBJECT.delete(args.file_spec, args.equal) else: OBJECT.delete(args.file_spec, args.ftype) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("fcontext %s" % str(i)) def setupFcontextParser(subparsers): ftype_help = ''' File Type. This is used with fcontext. Requires a file type as shown in the mode field by ls, e.g. use d to match only directories or f to match only regular files. The following file type options can be passed: f (regular file),d (directory),c (character device), b (block device),s (socket),l (symbolic link),p (named pipe) If you do not specify a file type, the file type will default to "all files". ''' generate_usage = generate_custom_usage(usage_fcontext, usage_fcontext_dict) fcontextParser = subparsers.add_parser('fcontext', usage=generate_usage, help=_("Manage file context mapping definitions")) parser_add_locallist(fcontextParser, "fcontext") parser_add_noheading(fcontextParser, "fcontext") parser_add_noreload(fcontextParser, "fcontext") parser_add_store(fcontextParser, "fcontext") fcontext_action = fcontextParser.add_mutually_exclusive_group(required=True) parser_add_add(fcontext_action, "fcontext") parser_add_delete(fcontext_action, "fcontext") parser_add_modify(fcontext_action, "fcontext") parser_add_list(fcontext_action, "fcontext") parser_add_extract(fcontext_action, "fcontext") parser_add_deleteall(fcontext_action, "fcontext") fcontextParser.add_argument('-e', '--equal', help=_('''Substitute target path with sourcepath when generating default label. This is used with fcontext. Requires source and target path arguments. The context labeling for the target subtree is made equivalent to that defined for the source.''')) fcontextParser.add_argument('-f', '--ftype', default="", choices=["a", "f", "d", "c", "b", "s", "l", "p"], help=_(ftype_help)) parser_add_seuser(fcontextParser, "fcontext") parser_add_type(fcontextParser, "fcontext") parser_add_range(fcontextParser, "fcontext") fcontextParser.add_argument('file_spec', nargs='?', default=None, help=_('Path to be labeled (may be in the form of a Perl compatible regular expression)')) fcontextParser.set_defaults(func=handleFcontext) def handleUser(args): user_args = {'list': [('selinux_name', 'seuser', 'roles'), ('')], 'add': [('locallist'), ('roles', 'selinux_name')], 'modify': [('locallist'), ('selinux_name')], 'delete': [('locallist'), ('selinux_name')], 'extract': [('locallist', 'selinux_name', 'seuser', 'role'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, user_args, args.action) OBJECT = object_dict['user'](args) if args.action == "add": OBJECT.add(args.selinux_name, args.roles, args.level, args.range, args.prefix) if args.action == "modify": OBJECT.modify(args.selinux_name, args.roles, args.level, args.range, args.prefix) if args.action == "delete": OBJECT.delete(args.selinux_name) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("user %s" % str(i)) def setupUserParser(subparsers): generated_usage = generate_custom_usage(usage_user, usage_user_dict) userParser = subparsers.add_parser('user', usage=generated_usage, help=_('Manage SELinux confined users (Roles and levels for an SELinux user)')) parser_add_locallist(userParser, "user") parser_add_noheading(userParser, "user") parser_add_noreload(userParser, "user") parser_add_store(userParser, "user") user_action = userParser.add_mutually_exclusive_group(required=True) parser_add_add(user_action, "user") parser_add_delete(user_action, "user") parser_add_modify(user_action, "user") parser_add_list(user_action, "user") parser_add_extract(user_action, "user") parser_add_deleteall(user_action, "user") parser_add_level(userParser, "user") parser_add_range(userParser, "user") userParser.add_argument('-R', '--roles', default=[], action=CheckRole, help=_(''' SELinux Roles. You must enclose multiple roles within quotes, separate by spaces. Or specify -R multiple times. ''')) userParser.add_argument('-P', '--prefix', default="user", help=argparse.SUPPRESS) userParser.add_argument('selinux_name', nargs='?', default=None, help=_('selinux_name')) userParser.set_defaults(func=handleUser) def handlePort(args): port_args = {'list': [('port', 'type', 'proto'), ('')], 'add': [('locallist'), ('type', 'port', 'proto')], 'modify': [('localist'), ('port', 'proto')], 'delete': [('locallist'), ('port', 'proto')], 'extract': [('locallist', 'port', 'type', 'proto'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, port_args, args.action) OBJECT = object_dict['port'](args) if args.action == "add": OBJECT.add(args.port, args.proto, args.range, args.type) if args.action == "modify": OBJECT.modify(args.port, args.proto, args.range, args.type) if args.action == "delete": OBJECT.delete(args.port, args.proto) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("port %s" % str(i)) def setupPortParser(subparsers): generated_usage = generate_custom_usage(usage_port, usage_port_dict) portParser = subparsers.add_parser('port', usage=generated_usage, help=_('Manage network port type definitions')) parser_add_locallist(portParser, "port") parser_add_noheading(portParser, "port") parser_add_noreload(portParser, "port") parser_add_store(portParser, "port") port_action = portParser.add_mutually_exclusive_group(required=True) parser_add_add(port_action, "port") parser_add_delete(port_action, "port") parser_add_modify(port_action, "port") parser_add_list(port_action, "port") parser_add_extract(port_action, "port") parser_add_deleteall(port_action, "port") parser_add_type(portParser, "port") parser_add_range(portParser, "port") parser_add_proto(portParser, "port") portParser.add_argument('port', nargs='?', default=None, help=_('port | port_range')) portParser.set_defaults(func=handlePort) def handlePkey(args): ibpkey_args = {'list': [('ibpkey', 'type', 'subnet_prefix'), ('')], 'add': [('locallist'), ('type', 'ibpkey', 'subnet_prefix')], 'modify': [('localist'), ('ibpkey', 'subnet_prefix')], 'delete': [('locallist'), ('ibpkey', 'subnet_prefix')], 'extract': [('locallist', 'ibpkey', 'type', 'subnet prefix'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, ibpkey_args, args.action) OBJECT = object_dict['ibpkey'](args) if args.action == "add": OBJECT.add(args.ibpkey, args.subnet_prefix, args.range, args.type) if args.action == "modify": OBJECT.modify(args.ibpkey, args.subnet_prefix, args.range, args.type) if args.action == "delete": OBJECT.delete(args.ibpkey, args.subnet_prefix) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("ibpkey %s" % str(i)) def setupPkeyParser(subparsers): generated_usage = generate_custom_usage(usage_ibpkey, usage_ibpkey_dict) ibpkeyParser = subparsers.add_parser('ibpkey', usage=generated_usage, help=_('Manage infiniband ibpkey type definitions')) parser_add_locallist(ibpkeyParser, "ibpkey") parser_add_noheading(ibpkeyParser, "ibpkey") parser_add_noreload(ibpkeyParser, "ibpkey") parser_add_store(ibpkeyParser, "ibpkey") ibpkey_action = ibpkeyParser.add_mutually_exclusive_group(required=True) parser_add_add(ibpkey_action, "ibpkey") parser_add_delete(ibpkey_action, "ibpkey") parser_add_modify(ibpkey_action, "ibpkey") parser_add_list(ibpkey_action, "ibpkey") parser_add_extract(ibpkey_action, "ibpkey") parser_add_deleteall(ibpkey_action, "ibpkey") parser_add_type(ibpkeyParser, "ibpkey") parser_add_range(ibpkeyParser, "ibpkey") parser_add_subnet_prefix(ibpkeyParser, "ibpkey") ibpkeyParser.add_argument('ibpkey', nargs='?', default=None, help=_('pkey | pkey_range')) ibpkeyParser.set_defaults(func=handlePkey) def handleIbendport(args): ibendport_args = {'list': [('ibendport', 'type', 'ibdev_name'), ('')], 'add': [('locallist'), ('type', 'ibendport', 'ibdev_name'), ('')], 'modify': [('localist'), ('ibendport', 'ibdev_name')], 'delete': [('locallist'), ('ibendport', 'ibdev_name')], 'extract': [('locallist', 'ibendport', 'type', 'ibdev_name'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, ibendport_args, args.action) OBJECT = object_dict['ibendport'](args) if args.action == "add": OBJECT.add(args.ibendport, args.ibdev_name, args.range, args.type) if args.action == "modify": OBJECT.modify(args.ibendport, args.ibdev_name, args.range, args.type) if args.action == "delete": OBJECT.delete(args.ibendport, args.ibdev_name) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("ibendport %s" % str(i)) def setupIbendportParser(subparsers): generated_usage = generate_custom_usage(usage_ibendport, usage_ibendport_dict) ibendportParser = subparsers.add_parser('ibendport', usage=generated_usage, help=_('Manage infiniband end port type definitions')) parser_add_locallist(ibendportParser, "ibendport") parser_add_noheading(ibendportParser, "ibendport") parser_add_noreload(ibendportParser, "ibendport") parser_add_store(ibendportParser, "ibendport") ibendport_action = ibendportParser.add_mutually_exclusive_group(required=True) parser_add_add(ibendport_action, "ibendport") parser_add_delete(ibendport_action, "ibendport") parser_add_modify(ibendport_action, "ibendport") parser_add_list(ibendport_action, "ibendport") parser_add_extract(ibendport_action, "ibendport") parser_add_deleteall(ibendport_action, "ibendport") parser_add_type(ibendportParser, "ibendport") parser_add_range(ibendportParser, "ibendport") parser_add_ibdev_name(ibendportParser, "ibendport") ibendportParser.add_argument('ibendport', nargs='?', default=None, help=_('ibendport')) ibendportParser.set_defaults(func=handleIbendport) def handleInterface(args): interface_args = {'list': [('interface'), ('')], 'add': [('locallist'), ('type', 'interface')], 'modify': [('locallist'), ('type', 'interface')], 'delete': [('locallist'), ('interface')], 'extract': [('locallist', 'interface', 'type'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, interface_args, args.action) OBJECT = object_dict['interface'](args) if args.action == "add": OBJECT.add(args.interface, args.range, args.type) if args.action == "modify": OBJECT.modify(args.interface, args.range, args.type) if args.action == "delete": OBJECT.delete(args.interface) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("interface %s" % str(i)) def setupInterfaceParser(subparsers): generated_usage = generate_custom_usage(usage_interface, usage_interface_dict) interfaceParser = subparsers.add_parser('interface', usage=generated_usage, help=_('Manage network interface type definitions')) parser_add_locallist(interfaceParser, "interface") parser_add_noheading(interfaceParser, "interface") parser_add_noreload(interfaceParser, "interface") parser_add_store(interfaceParser, "interface") parser_add_type(interfaceParser, "interface") parser_add_range(interfaceParser, "interface") interface_action = interfaceParser.add_mutually_exclusive_group(required=True) parser_add_add(interface_action, "interface") parser_add_delete(interface_action, "interface") parser_add_modify(interface_action, "interface") parser_add_list(interface_action, "interface") parser_add_extract(interface_action, "interface") parser_add_deleteall(interface_action, "interface") interfaceParser.add_argument('interface', nargs='?', default=None, help=_('interface_spec')) interfaceParser.set_defaults(func=handleInterface) def handleModule(args): import seobject OBJECT = seobject.moduleRecords(args) if args.action_add: OBJECT.add(args.action_add[0], args.priority) if args.action_enable: OBJECT.set_enabled(" ".join(args.action_enable), True) if args.action_disable: OBJECT.set_enabled(" ".join(args.action_disable), False) if args.action_remove: OBJECT.delete(" ".join(args.action_remove), args.priority) if args.action == "deleteall": OBJECT.deleteall() if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "extract": for i in OBJECT.customized(): print("module %s" % str(i)) def setupModuleParser(subparsers): moduleParser = subparsers.add_parser('module', help=_('Manage SELinux policy modules')) parser_add_noheading(moduleParser, "module") parser_add_noreload(moduleParser, "module") parser_add_store(moduleParser, "module") parser_add_locallist(moduleParser, "module") parser_add_priority(moduleParser, "module") mgroup = moduleParser.add_mutually_exclusive_group(required=True) parser_add_list(mgroup, "module") parser_add_extract(mgroup, "module") parser_add_deleteall(mgroup, "module") mgroup.add_argument('-a', '--add', dest='action_add', action='store', nargs=1, metavar='module_name', help=_("Add a module")) mgroup.add_argument('-r', '--remove', dest='action_remove', action='store', nargs='+', metavar='module_name', help=_("Remove a module")) mgroup.add_argument('-d', '--disable', dest='action_disable', action='store', nargs='+', metavar='module_name', help=_("Disable a module")) mgroup.add_argument('-e', '--enable', dest='action_enable', action='store', nargs='+', metavar='module_name', help=_("Enable a module")) moduleParser.set_defaults(func=handleModule) def handleNode(args): node_args = {'list': [('node', 'type', 'proto', 'netmask'), ('')], 'add': [('locallist'), ('type', 'node', 'proto', 'netmask')], 'modify': [('locallist'), ('node', 'netmask', 'proto')], 'delete': [('locallist'), ('node', 'netmask', 'prototype')], 'extract': [('locallist', 'node', 'type', 'proto', 'netmask'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, node_args, args.action) OBJECT = object_dict['node'](args) if args.action == "add": OBJECT.add(args.node, args.netmask, args.proto, args.range, args.type) if args.action == "modify": OBJECT.modify(args.node, args.netmask, args.proto, args.range, args.type) if args.action == "delete": OBJECT.delete(args.node, args.netmask, args.proto) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("node %s" % str(i)) def setupNodeParser(subparsers): generated_usage = generate_custom_usage(usage_node, usage_node_dict) nodeParser = subparsers.add_parser('node', usage=generated_usage, help=_('Manage network node type definitions')) parser_add_locallist(nodeParser, "node") parser_add_noheading(nodeParser, "node") parser_add_noreload(nodeParser, "node") parser_add_store(nodeParser, "node") node_action = nodeParser.add_mutually_exclusive_group(required=True) parser_add_add(node_action, "node") parser_add_delete(node_action, "node") parser_add_modify(node_action, "node") parser_add_list(node_action, "node") parser_add_extract(node_action, "node") parser_add_deleteall(node_action, "node") nodeParser.add_argument('-M', '--netmask', help=_('Network Mask')) parser_add_type(nodeParser, "node") parser_add_range(nodeParser, "node") parser_add_proto(nodeParser, "node") nodeParser.add_argument('node', nargs='?', default=None, help=_('node')) nodeParser.set_defaults(func=handleNode) def handleBoolean(args): boolean_args = {'list': [('state', 'boolean'), ('')], 'modify': [('localist'), ('boolean', 'state')], 'extract': [('locallist', 'state', 'boolean'), ('')], 'deleteall': [('locallist'), ('')], 'state': [('locallist', 'list', 'extract', 'deleteall'), ('modify')]} handle_opts(args, boolean_args, args.action) OBJECT = object_dict['boolean'](args) if args.action == "modify": if args.boolean: OBJECT.modify(args.boolean, args.state, False) if args.action == "list": OBJECT.list(args.noheading, args.locallist) if args.action == "deleteall": OBJECT.deleteall() if args.action == "extract": for i in OBJECT.customized(): print("boolean %s" % str(i)) def setupBooleanParser(subparsers): generated_usage = generate_custom_usage(usage_boolean, usage_boolean_dict) booleanParser = subparsers.add_parser('boolean', usage=generated_usage, help=_('Manage booleans to selectively enable functionality')) parser_add_locallist(booleanParser, "boolean") parser_add_noheading(booleanParser, "boolean") parser_add_noreload(booleanParser, "boolean") parser_add_store(booleanParser, "boolean") booleanParser.add_argument('boolean', nargs="?", default=None, help=_('boolean')) boolean_action = booleanParser.add_mutually_exclusive_group(required=True) #add_add(boolean_action) parser_add_modify(boolean_action, "boolean") parser_add_list(boolean_action, "boolean") parser_add_extract(boolean_action, "boolean") parser_add_deleteall(boolean_action, "boolean") booleanGroup = booleanParser.add_mutually_exclusive_group(required=False) booleanGroup.add_argument('-1', '--on', dest='state', action='store_const', const='on', help=_('Enable the boolean')) booleanGroup.add_argument('-0', '--off', dest='state', action='store_const', const='off', help=_('Disable the boolean')) booleanParser.set_defaults(func=handleBoolean) def handlePermissive(args): OBJECT = object_dict['permissive'](args) if args.action == "list": OBJECT.list(args.noheading) elif args.action == "deleteall": OBJECT.deleteall() elif args.action == "extract": for i in OBJECT.customized(): print("permissive %s" % str(i)) elif args.type is not None: if args.action == "add": OBJECT.add(args.type) if args.action == "delete": OBJECT.delete(args.type) else: args.parser.error(message=_('semanage permissive: error: the following argument is required: type\n')) def setupPermissiveParser(subparsers): permissiveParser = subparsers.add_parser('permissive', help=_('Manage process type enforcement mode')) pgroup = permissiveParser.add_mutually_exclusive_group(required=True) parser_add_add(pgroup, "permissive") parser_add_delete(pgroup, "permissive") parser_add_deleteall(pgroup, "permissive") parser_add_extract(pgroup, "permissive") parser_add_list(pgroup, "permissive") parser_add_noheading(permissiveParser, "permissive") parser_add_noreload(permissiveParser, "permissive") parser_add_store(permissiveParser, "permissive") permissiveParser.add_argument('type', nargs='?', default=None, help=_('type')) permissiveParser.set_defaults(func=handlePermissive) permissiveParser.set_defaults(parser=permissiveParser) def handleDontaudit(args): OBJECT = object_dict['dontaudit'](args) OBJECT.toggle(args.action) def setupDontauditParser(subparsers): dontauditParser = subparsers.add_parser('dontaudit', help=_('Disable/Enable dontaudit rules in policy')) parser_add_noreload(dontauditParser, "dontaudit") parser_add_store(dontauditParser, "dontaudit") dontauditParser.add_argument('action', choices=["on", "off"]) dontauditParser.set_defaults(func=handleDontaudit) def handleExport(args): manageditems = ["boolean", "login", "interface", "user", "port", "node", "fcontext", "module", "ibendport", "ibpkey", "permissive"] for i in manageditems: print("%s -D" % i) for i in manageditems: OBJECT = object_dict[i](args) for c in OBJECT.customized(): print("%s %s" % (i, str(c))) sys.exit(0) def setupExportParser(subparsers): exportParser = subparsers.add_parser('export', help=_('Output local customizations')) parser_add_store(exportParser, "export") exportParser.add_argument('-f', '--output_file', dest='output_file', action=SetExportFile, help=_('Output file')) exportParser.set_defaults(func=handleExport) def mkargv(line): dquote = "\"" squote = "\'" l = line.split() ret = [] i = 0 while i < len(l): cnt = len(re.findall(dquote, l[i])) if cnt > 1: ret.append(l[i].strip(dquote)) i = i + 1 continue if cnt == 1: quote = [l[i].strip(dquote)] i = i + 1 while i < len(l) and dquote not in l[i]: quote.append(l[i]) i = i + 1 quote.append(l[i].strip(dquote)) ret.append(" ".join(quote)) i = i + 1 continue cnt = len(re.findall(squote, l[i])) if cnt > 1: ret.append(l[i].strip(squote)) i = i + 1 continue if cnt == 1: quote = [l[i].strip(squote)] i = i + 1 while i < len(l) and squote not in l[i]: quote.append(l[i]) i = i + 1 quote.append(l[i].strip(squote)) ret.append(" ".join(quote)) i = i + 1 continue ret.append(l[i]) i = i + 1 return ret def handleImport(args): import seobject trans = seobject.semanageRecords(args) trans.start() deleteCommands = [] commands = [] # separate commands for deletion from the rest so they can be # applied in a separate transaction for l in sys.stdin.readlines(): if len(l.strip()) == 0: continue if "-d" in l or "-D" in l: deleteCommands.append(l) else: commands.append(l) if deleteCommands: importHelper(deleteCommands) trans.finish() trans.start() importHelper(commands) trans.finish() def importHelper(commands): for l in commands: try: commandParser = createCommandParser() args = commandParser.parse_args(mkargv(l)) args.func(args) except ValueError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) sys.exit(1) except IOError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) sys.exit(1) except KeyboardInterrupt: sys.exit(0) def setupImportParser(subparsers): importParser = subparsers.add_parser('import', help=_('Import local customizations')) parser_add_noreload(importParser, "import") parser_add_store(importParser, "import") importParser.add_argument('-f', '--input_file', dest='input_file', action=SetImportFile, help=_('Input file')) importParser.set_defaults(func=handleImport) def createCommandParser(): commandParser = seParser(prog='semanage', formatter_class=argparse.ArgumentDefaultsHelpFormatter, description='''semanage is used to configure certain elements of SELinux policy with-out requiring modification to or recompilation from policy source.''') #To add a new subcommand define the parser for it in a function above and call it here. subparsers = commandParser.add_subparsers(dest='subcommand') subparsers.required = True import seobject # define dictonary for seobject OBEJCTS global object_dict object_dict = { 'login': seobject.loginRecords, 'user': seobject.seluserRecords, 'port': seobject.portRecords, 'module': seobject.moduleRecords, 'interface': seobject.interfaceRecords, 'node': seobject.nodeRecords, 'fcontext': seobject.fcontextRecords, 'boolean': seobject.booleanRecords, 'permissive': seobject.permissiveRecords, 'dontaudit': seobject.dontauditClass, 'ibpkey': seobject.ibpkeyRecords, 'ibendport': seobject.ibendportRecords } setupImportParser(subparsers) setupExportParser(subparsers) setupLoginParser(subparsers) setupUserParser(subparsers) setupPortParser(subparsers) setupPkeyParser(subparsers) setupIbendportParser(subparsers) setupInterfaceParser(subparsers) setupModuleParser(subparsers) setupNodeParser(subparsers) setupFcontextParser(subparsers) setupBooleanParser(subparsers) setupPermissiveParser(subparsers) setupDontauditParser(subparsers) return commandParser def make_io_args(args): # import/export backward compability args_origin = ["-S", "-o", "-i", "targeted", "minimum", "mls"] args_file = [] args_ie = [] args_subcommand = [] for i in args: if i == "-o": args_subcommand = ["export"] continue if i == "-i": args_subcommand = ["import"] continue if i not in args_origin: args_file = ["-f", i] continue args_ie.append(i) return args_subcommand + args_ie + args_file def make_args(sys_args): args = [] if "-o" in sys_args[1:] or "-i" in sys_args[1:]: args = make_io_args(sys_args[1:]) else: args = sys_args[1:] return args def do_parser(): try: commandParser = createCommandParser() args = commandParser.parse_args(make_args(sys.argv)) args.func(args) sys.exit(0) except BrokenPipeError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) # Python flushes standard streams on exit; redirect remaining output # to devnull to avoid another BrokenPipeError at shutdown devnull = os.open(os.devnull, os.O_WRONLY) os.dup2(devnull, sys.stdout.fileno()) sys.exit(1) except IOError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) sys.exit(1) except KeyboardInterrupt: sys.exit(0) except ValueError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, e.args[0])) sys.exit(1) except KeyError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, e.args[0])) sys.exit(1) except OSError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, e.args[1])) sys.exit(1) except RuntimeError as e: sys.stderr.write("%s: %s\n" % (e.__class__.__name__, e.args[0])) sys.exit(1) if __name__ == '__main__': do_parser()
Close