本文整理匯總了Python中stat.S_ISUID屬性的典型用法代碼示例。如果您正苦於以下問題:Python stat.S_ISUID屬性的具體用法?Python stat.S_ISUID怎麽用?Python stat.S_ISUID使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類stat
的用法示例。
在下文中一共展示了stat.S_ISUID屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: special_to_letter
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def special_to_letter(mode):
l = ''
ALL_R = (stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
ALL_W = (stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH)
if mode & stat.S_ISGID:
l += 'G'
if mode & stat.S_ISUID:
l += 'U'
if mode & stat.S_ISVTX:
l += 'T'
if mode & (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH):
l += 'E'
if ( mode & ALL_R ) == ALL_R:
l += 'R'
if ( mode & ALL_W ) == ALL_W:
l += 'W'
return l
示例2: testStatDirectory_filePermissions
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def testStatDirectory_filePermissions(self):
should_have = (
('some_file', stat.S_IWUSR), # Owner can write.
('tmp', stat.S_IXOTH), # Others can execute.
('tmp', stat.S_ISVTX), # Has sticky bit.
('my_cmd', stat.S_ISGID), # Has set-group-ID bit.
('silly', stat.S_ISUID), # Has set UID bit.
)
should_not_have = (
('some_file', stat.S_IWOTH), # Others can't write.
('block_dev', stat.S_IRGRP), # Group can't read.
('silly', stat.S_IXUSR), # Owner can't execute.
)
entries = self.getStatEntries()
for filename, bit in should_have:
self.assertTrue(entries[filename]['st_mode'] & bit)
for filename, bit in should_not_have:
self.assertFalse(entries[filename]['st_mode'] & bit)
示例3: is_suid_sgid
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def is_suid_sgid(self, file_name):
results = []
try:
f = stat(file_name)
mode = f.st_mode
except:
return [None, None]
if (mode & S_ISUID) == 2048:
print("SUID: " + file_name)
results.append(file_name)
else:
results.append(None)
if (mode & S_ISGID) == 1024:
print("SGIG: " + file_name)
results.append(file_name)
else:
results.append(None)
return results
示例4: _is_suid_sgid
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def _is_suid_sgid(self, file_name):
results = []
try:
f = os.stat(file_name)
mode = f.st_mode
except:
return [None, None]
if (mode & stat.S_ISUID) == 2048:
results.append(file_name)
else:
results.append(None)
if (mode & stat.S_ISGID) == 1024:
results.append(file_name)
else:
results.append(None)
return results
示例5: render_python_value
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def render_python_value(value):
if not isinstance(value, int):
return
if value & stat.S_IFDIR:
perm = 'd'
else:
perm = '-'
perm += 'r' if value & stat.S_IRUSR else '-'
perm += 'w' if value & stat.S_IWUSR else '-'
if value & stat.S_ISUID:
perm += 's' if value & stat.S_IXUSR else 'S'
else:
perm += 'x' if value & stat.S_IXUSR else '-'
perm += 'r' if value & stat.S_IRGRP else '-'
perm += 'w' if value & stat.S_IWGRP else '-'
if value & stat.S_ISGID:
perm += 's' if value & stat.S_IXGRP else 'S'
else:
perm += 'x' if value & stat.S_IXGRP else '-'
perm += 'r' if value & stat.S_IROTH else '-'
perm += 'w' if value & stat.S_IWOTH else '-'
perm += 'x' if value & stat.S_IXOTH else '-'
return perm
示例6: perm_check
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def perm_check():
"""In our environment the redir program must be suid with root owner. It
needs to open privileged ports. Returns True if permissions are ok, False
otherwise."""
import os, stat
if os.getuid() == 0:
return 1 # we are already running as root...
st = os.stat(REDIR)
return st.st_uid == 0 and (stat.S_IMODE(st.st_mode) & stat.S_ISUID)
示例7: _is_setuid
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def _is_setuid(path):
return (os.path.isfile(path) and
os.access(path, os.X_OK) and
os.stat(path).st_mode & stat.S_ISUID == stat.S_ISUID)
示例8: skip_if_no_fusermount
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def skip_if_no_fusermount():
'''Raise SkipTest if fusermount is not available'''
with subprocess.Popen(['which', 'fusermount'], stdout=subprocess.PIPE,
universal_newlines=True) as which:
fusermount_path = which.communicate()[0].strip()
if not fusermount_path or which.returncode != 0:
pytest.skip("Can't find fusermount executable")
if not os.path.exists('/dev/fuse'):
pytest.skip("FUSE kernel module does not seem to be loaded")
if os.getuid() == 0:
return
mode = os.stat(fusermount_path).st_mode
if mode & stat.S_ISUID == 0:
pytest.skip('fusermount executable not setuid, and we are not root.')
try:
fd = os.open('/dev/fuse', os.O_RDWR)
except OSError as exc:
pytest.skip('Unable to open /dev/fuse: %s' % exc.strerror)
else:
os.close(fd)
示例9: is_setuid
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def is_setuid(self):
return True if self.status['st_mode'] & stat.S_ISUID else False
示例10: evaluate
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def evaluate(self, image_obj, context):
if not image_obj.fs:
return
files = image_obj.fs.files
if not files:
return
found = [x for x in list(files.items()) if int(x[1].get('mode', 0)) & (stat.S_ISUID | stat.S_ISGID)]
for path, entry in found:
self._fire(msg='SUID or SGID found set on file {}. Mode: {}'.format(path, oct(entry.get('mode'))))
示例11: humanUnixAttributes
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def humanUnixAttributes(mode):
"""
Convert a Unix file attributes (or "file mode") to an unicode string.
Original source code:
http://cvs.savannah.gnu.org/viewcvs/coreutils/lib/filemode.c?root=coreutils
>>> humanUnixAttributes(0644)
u'-rw-r--r-- (644)'
>>> humanUnixAttributes(02755)
u'-rwxr-sr-x (2755)'
"""
def ftypelet(mode):
if stat.S_ISREG (mode) or not stat.S_IFMT(mode):
return '-'
if stat.S_ISBLK (mode): return 'b'
if stat.S_ISCHR (mode): return 'c'
if stat.S_ISDIR (mode): return 'd'
if stat.S_ISFIFO(mode): return 'p'
if stat.S_ISLNK (mode): return 'l'
if stat.S_ISSOCK(mode): return 's'
return '?'
chars = [ ftypelet(mode), 'r', 'w', 'x', 'r', 'w', 'x', 'r', 'w', 'x' ]
for i in xrange(1, 10):
if not mode & 1 << 9 - i:
chars[i] = '-'
if mode & stat.S_ISUID:
if chars[3] != 'x':
chars[3] = 'S'
else:
chars[3] = 's'
if mode & stat.S_ISGID:
if chars[6] != 'x':
chars[6] = 'S'
else:
chars[6] = 's'
if mode & stat.S_ISVTX:
if chars[9] != 'x':
chars[9] = 'T'
else:
chars[9] = 't'
return u"%s (%o)" % (''.join(chars), mode)
示例12: __str__
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def __str__(self):
"create a unix-style long description of the file (like ls -l)"
if self.st_mode is not None:
kind = stat.S_IFMT(self.st_mode)
if kind == stat.S_IFIFO:
ks = 'p'
elif kind == stat.S_IFCHR:
ks = 'c'
elif kind == stat.S_IFDIR:
ks = 'd'
elif kind == stat.S_IFBLK:
ks = 'b'
elif kind == stat.S_IFREG:
ks = '-'
elif kind == stat.S_IFLNK:
ks = 'l'
elif kind == stat.S_IFSOCK:
ks = 's'
else:
ks = '?'
ks += self._rwx((self.st_mode & 0700) >> 6, self.st_mode & stat.S_ISUID)
ks += self._rwx((self.st_mode & 070) >> 3, self.st_mode & stat.S_ISGID)
ks += self._rwx(self.st_mode & 7, self.st_mode & stat.S_ISVTX, True)
else:
ks = '?---------'
# compute display date
if (self.st_mtime is None) or (self.st_mtime == 0xffffffffL):
# shouldn't really happen
datestr = '(unknown date)'
else:
if abs(time.time() - self.st_mtime) > 15552000:
# (15552000 = 6 months)
datestr = time.strftime('%d %b %Y', time.localtime(self.st_mtime))
else:
datestr = time.strftime('%d %b %H:%M', time.localtime(self.st_mtime))
filename = getattr(self, 'filename', '?')
# not all servers support uid/gid
uid = self.st_uid
gid = self.st_gid
if uid is None:
uid = 0
if gid is None:
gid = 0
return '%s 1 %-8d %-8d %8d %-12s %s' % (ks, uid, gid, self.st_size, datestr, filename)
示例13: __str__
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def __str__(self):
"""create a unix-style long description of the file (like ls -l)"""
if self.st_mode is not None:
kind = stat.S_IFMT(self.st_mode)
if kind == stat.S_IFIFO:
ks = 'p'
elif kind == stat.S_IFCHR:
ks = 'c'
elif kind == stat.S_IFDIR:
ks = 'd'
elif kind == stat.S_IFBLK:
ks = 'b'
elif kind == stat.S_IFREG:
ks = '-'
elif kind == stat.S_IFLNK:
ks = 'l'
elif kind == stat.S_IFSOCK:
ks = 's'
else:
ks = '?'
ks += self._rwx((self.st_mode & o700) >> 6, self.st_mode & stat.S_ISUID)
ks += self._rwx((self.st_mode & o70) >> 3, self.st_mode & stat.S_ISGID)
ks += self._rwx(self.st_mode & 7, self.st_mode & stat.S_ISVTX, True)
else:
ks = '?---------'
# compute display date
if (self.st_mtime is None) or (self.st_mtime == xffffffff):
# shouldn't really happen
datestr = '(unknown date)'
else:
if abs(time.time() - self.st_mtime) > 15552000:
# (15552000 = 6 months)
datestr = time.strftime('%d %b %Y', time.localtime(self.st_mtime))
else:
datestr = time.strftime('%d %b %H:%M', time.localtime(self.st_mtime))
filename = getattr(self, 'filename', '?')
# not all servers support uid/gid
uid = self.st_uid
gid = self.st_gid
size = self.st_size
if uid is None:
uid = 0
if gid is None:
gid = 0
if size is None:
size = 0
return '%s 1 %-8d %-8d %8d %-12s %s' % (ks, uid, gid, size, datestr, filename)
示例14: lsLine
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def lsLine(name, s):
mode = s.st_mode
perms = array.array('c', '-'*10)
ft = stat.S_IFMT(mode)
if stat.S_ISDIR(ft): perms[0] = 'd'
elif stat.S_ISCHR(ft): perms[0] = 'c'
elif stat.S_ISBLK(ft): perms[0] = 'b'
elif stat.S_ISREG(ft): perms[0] = '-'
elif stat.S_ISFIFO(ft): perms[0] = 'f'
elif stat.S_ISLNK(ft): perms[0] = 'l'
elif stat.S_ISSOCK(ft): perms[0] = 's'
else: perms[0] = '!'
# user
if mode&stat.S_IRUSR:perms[1] = 'r'
if mode&stat.S_IWUSR:perms[2] = 'w'
if mode&stat.S_IXUSR:perms[3] = 'x'
# group
if mode&stat.S_IRGRP:perms[4] = 'r'
if mode&stat.S_IWGRP:perms[5] = 'w'
if mode&stat.S_IXGRP:perms[6] = 'x'
# other
if mode&stat.S_IROTH:perms[7] = 'r'
if mode&stat.S_IWOTH:perms[8] = 'w'
if mode&stat.S_IXOTH:perms[9] = 'x'
# suid/sgid
if mode&stat.S_ISUID:
if perms[3] == 'x': perms[3] = 's'
else: perms[3] = 'S'
if mode&stat.S_ISGID:
if perms[6] == 'x': perms[6] = 's'
else: perms[6] = 'S'
l = perms.tostring()
l += str(s.st_nlink).rjust(5) + ' '
un = str(s.st_uid)
l += un.ljust(9)
gr = str(s.st_gid)
l += gr.ljust(9)
sz = str(s.st_size)
l += sz.rjust(8)
l += ' '
sixmo = 60 * 60 * 24 * 7 * 26
if s.st_mtime + sixmo < time(): # last edited more than 6mo ago
l += strftime("%b %d %Y ", localtime(s.st_mtime))
else:
l += strftime("%b %d %H:%M ", localtime(s.st_mtime))
l += name
return l
示例15: lsLine
# 需要導入模塊: import stat [as 別名]
# 或者: from stat import S_ISUID [as 別名]
def lsLine(name, s):
mode = s.st_mode
perms = array.array('c', '-'*10)
ft = stat.S_IFMT(mode)
if stat.S_ISDIR(ft): perms[0] = 'd'
elif stat.S_ISCHR(ft): perms[0] = 'c'
elif stat.S_ISBLK(ft): perms[0] = 'b'
elif stat.S_ISREG(ft): perms[0] = '-'
elif stat.S_ISFIFO(ft): perms[0] = 'f'
elif stat.S_ISLNK(ft): perms[0] = 'l'
elif stat.S_ISSOCK(ft): perms[0] = 's'
else: perms[0] = '!'
# user
if mode&stat.S_IRUSR:perms[1] = 'r'
if mode&stat.S_IWUSR:perms[2] = 'w'
if mode&stat.S_IXUSR:perms[3] = 'x'
# group
if mode&stat.S_IRGRP:perms[4] = 'r'
if mode&stat.S_IWGRP:perms[5] = 'w'
if mode&stat.S_IXGRP:perms[6] = 'x'
# other
if mode&stat.S_IROTH:perms[7] = 'r'
if mode&stat.S_IWOTH:perms[8] = 'w'
if mode&stat.S_IXOTH:perms[9] = 'x'
# suid/sgid
if mode&stat.S_ISUID:
if perms[3] == 'x': perms[3] = 's'
else: perms[3] = 'S'
if mode&stat.S_ISGID:
if perms[6] == 'x': perms[6] = 's'
else: perms[6] = 'S'
l = perms.tostring()
l += str(s.st_nlink).rjust(5) + ' '
un = str(s.st_uid)
l += un.ljust(9)
gr = str(s.st_gid)
l += gr.ljust(9)
sz = str(s.st_size)
l += sz.rjust(8)
l += ' '
sixmo = 60 * 60 * 24 * 7 * 26
if s.st_mtime + sixmo < time.time(): # last edited more than 6mo ago
l += time.strftime("%b %2d %Y ", time.localtime(s.st_mtime))
else:
l += time.strftime("%b %2d %H:%S ", time.localtime(s.st_mtime))
l += name
return l