Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
105 lines (85 sloc) 2.85 KB
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
testRights.py
This program verifies writable directories with the user who executes in
a scope with a non-limited number of exclusions.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Version: 160531
@author: Joan G. Villaraco
Requirements:
- Be sure there is no file named like FILENAME in the search scope
- Alls params in absolute path
Execution:
- python testRights.py <searchPathScope> [excludedDir1 ... [excludedDirN]]
Results:
Writable directory: /tmp
Writable directory: /dev/shm
Writable directory: /dev/mqueue
Writable directory: /proc/247/cwd
Writable directory: /proc/247/task/247/cwd
Writable directory: /proc/253/cwd
Writable directory: /proc/253/task/253/cwd
Writable directory: /run/lock
Writable directory: /var/lock
Writable directory: /var/tmp
"""
import os
import sys
from os.path import join, getsize
FILENAME = "pepepepepepepepepe.txt"
DEBUG = False
def testDir(path):
try:
f = open(path + '/' + FILENAME, "w")
except IOError as err:
if DEBUG:
# print ("OS Error: {0}".format(err))
print "OS Error: %s", err
except:
print ("Unexpected error:", sys.exc_info()[0])
else:
print "Writable directory: %s" % path
f.close()
os.remove(path + '/' + FILENAME)
def isPathInExcDirs(path, excDirs):
foundInExcDirs = False
for excDir in excDirs:
if DEBUG:
print "(isPath)path: %s, excDir: %s, \
path.startswith(excDir): %s", (
path, excDir, path.startswith(excDir))
if path.startswith(excDir):
foundInExcDirs = True
break
return(foundInExcDirs)
def walkDirs(dir, excDirs):
for root, dirs, files in os.walk(dir):
for dir in dirs:
path = join(root, dir)
if isPathInExcDirs(path, excDirs):
pass
else:
testDir(path)
def main():
if len(sys.argv) == 1:
print "Usage: %s Path [excudedPath]..." % sys.argv[0]
sys.exit(-1)
if DEBUG:
print len(sys.argv)
dirsFile = sys.argv[1]
del sys.argv[0:2]
if DEBUG:
print sys.argv
walkDirs(dirsFile, sys.argv)
if __name__ == '__main__':
main()
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.