本文整理汇总了Python中stat.S_ISGID属性的典型用法代码示例。如果您正苦于以下问题:Python stat.S_ISGID属性的具体用法?Python stat.S_ISGID怎么用?Python stat.S_ISGID使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类stat
的用法示例。
在下文中一共展示了stat.S_ISGID属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: special_to_letter
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [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_ISGID [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_ISGID [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_ISGID [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_ISGID [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: test_exist_ok_s_isgid_directory
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [as 别名]
def test_exist_ok_s_isgid_directory(self):
path = os.path.join(support.TESTFN, 'dir1')
S_ISGID = stat.S_ISGID
mode = 0o777
old_mask = os.umask(0o022)
try:
existing_testfn_mode = stat.S_IMODE(
os.lstat(support.TESTFN).st_mode)
try:
os.chmod(support.TESTFN, existing_testfn_mode | S_ISGID)
except PermissionError:
raise unittest.SkipTest('Cannot set S_ISGID for dir.')
if (os.lstat(support.TESTFN).st_mode & S_ISGID != S_ISGID):
raise unittest.SkipTest('No support for S_ISGID dir mode.')
# The os should apply S_ISGID from the parent dir for us, but
# this test need not depend on that behavior. Be explicit.
os.makedirs(path, mode | S_ISGID)
# http://bugs.python.org/issue14992
# Should not fail when the bit is already set.
os.makedirs(path, mode, exist_ok=True)
# remove the bit.
os.chmod(path, stat.S_IMODE(os.lstat(path).st_mode) & ~S_ISGID)
# May work even when the bit is not already set when demanded.
os.makedirs(path, mode | S_ISGID, exist_ok=True)
finally:
os.umask(old_mask)
示例7: _create
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [as 别名]
def _create(self, id_p, name, mode, ctx, rdev=0, size=0):
if name == CTRL_NAME:
log.warning('Attempted to create s3ql control file at %s',
get_path(id_p, self.db, name))
raise FUSEError(errno.EACCES)
now_ns = time_ns()
inode_p = self.inodes[id_p]
if inode_p.locked:
raise FUSEError(errno.EPERM)
if inode_p.refcount == 0:
log.warning('Attempted to create entry %s with unlinked parent %d',
name, id_p)
raise FUSEError(errno.EINVAL)
inode_p.mtime_ns = now_ns
inode_p.ctime_ns = now_ns
if inode_p.mode & stat.S_ISGID:
gid = inode_p.gid
if stat.S_ISDIR(mode):
mode |= stat.S_ISGID
else:
gid = ctx.gid
inode = self.inodes.create_inode(mtime_ns=now_ns, ctime_ns=now_ns, atime_ns=now_ns,
uid=ctx.uid, gid=gid, mode=mode, refcount=1,
rdev=rdev, size=size)
self.db.execute("INSERT INTO contents(name_id, inode, parent_inode) VALUES(?,?,?)",
(self._add_name(name), inode.id, id_p))
return inode
示例8: is_setgid
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [as 别名]
def is_setgid(self):
return True if self.status['st_mode'] & stat.S_ISGID else False
示例9: init_dest
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [as 别名]
def init_dest(self):
if self.coursedir.course_id == '':
self.fail("No course id specified. Re-run with --course flag.")
self.course_path = os.path.join(self.root, self.coursedir.course_id)
self.outbound_feedback_path = os.path.join(self.course_path, 'feedback')
self.dest_path = os.path.join(self.outbound_feedback_path)
# 0755
self.ensure_directory(
self.outbound_feedback_path,
(S_IRUSR | S_IWUSR | S_IXUSR | S_IXGRP | S_IXOTH |
((S_IRGRP|S_IWGRP|S_ISGID) if self.coursedir.groupshared else 0))
)
示例10: evaluate
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [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: makedirs
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [as 别名]
def makedirs(name, mode=0o777, exist_ok=False):
"""makedirs(path [, mode=0o777][, exist_ok=False])
Super-mkdir; create a leaf directory and all intermediate ones.
Works like mkdir, except that any intermediate path segment (not
just the rightmost) will be created if it does not exist. If the
target directory with the same mode as we specified already exists,
raises an OSError if exist_ok is False, otherwise no exception is
raised. This is recursive.
"""
head, tail = path.split(name)
if not tail:
head, tail = path.split(head)
if head and tail and not path.exists(head):
try:
makedirs(head, mode, exist_ok)
except OSError as e:
# be happy if someone already created the path
if e.errno != errno.EEXIST:
raise
cdir = curdir
if isinstance(tail, bytes):
cdir = bytes(curdir, 'ASCII')
if tail == cdir: # xxx/newdir/. exists if xxx/newdir exists
return
try:
mkdir(name, mode)
except OSError as e:
dir_exists = path.isdir(name)
expected_mode = _get_masked_mode(mode)
if dir_exists:
# S_ISGID is automatically copied by the OS from parent to child
# directories on mkdir. Don't consider it being set to be a mode
# mismatch as mkdir does not unset it when not specified in mode.
actual_mode = st.S_IMODE(lstat(name).st_mode) & ~st.S_ISGID
else:
actual_mode = -1
if not (e.errno == errno.EEXIST and exist_ok and dir_exists and
actual_mode == expected_mode):
if dir_exists and actual_mode != expected_mode:
e.strerror += ' (mode %o != expected mode %o)' % (
actual_mode, expected_mode)
raise
示例12: humanUnixAttributes
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [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)
示例13: __str__
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [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)
示例14: __str__
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [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)
示例15: lsLine
# 需要导入模块: import stat [as 别名]
# 或者: from stat import S_ISGID [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