[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.17.166.233: ~ $
/*
 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * See the COPYRIGHT file distributed with this work for additional
 * information regarding copyright ownership.
 */


#ifndef ISC_FSACCESS_H
#define ISC_FSACCESS_H 1

/*! \file isc/fsaccess.h
 * \brief The ISC filesystem access module encapsulates the setting of file
 * and directory access permissions into one API that is meant to be
 * portable to multiple operating systems.
 *
 * The two primary operating system flavors that are initially accommodated
 * are POSIX and Windows NT 4.0 and later.  The Windows NT access model is
 * considerable more flexible than POSIX's model (as much as I am loathe to
 * admit it), and so the ISC API has a higher degree of complexity than would
 * be needed to simply address POSIX's needs.
 *
 * The full breadth of NT's flexibility is not available either, for the
 * present time.  Much of it is to provide compatibility with what Unix
 * programmers are expecting.  This is also due to not yet really needing all
 * of the functionality of an NT system (or, for that matter, a POSIX system)
 * in BIND9, and so resolving how to handle the various incompatibilities has
 * been a purely theoretical exercise with no operational experience to
 * indicate how flawed the thinking may be.
 *
 * Some of the more notable dumbing down of NT for this API includes:
 *
 *\li   Each of FILE_READ_DATA and FILE_READ_EA are set with #ISC_FSACCESS_READ.
 *
 * \li  All of FILE_WRITE_DATA, FILE_WRITE_EA and FILE_APPEND_DATA are
 *     set with #ISC_FSACCESS_WRITE.  FILE_WRITE_ATTRIBUTES is not set
 *     so as to be consistent with Unix, where only the owner of the file
 *     or the superuser can change the attributes/mode of a file.
 *
 * \li  Both of FILE_ADD_FILE and FILE_ADD_SUBDIRECTORY are set with
 *     #ISC_FSACCESS_CREATECHILD.  This is similar to setting the WRITE
 *     permission on a Unix directory.
 *
 * \li  SYNCHRONIZE is always set for files and directories, unless someone
 *     can give me a reason why this is a bad idea.
 *
 * \li  READ_CONTROL and FILE_READ_ATTRIBUTES are always set; this is
 *     consistent with Unix, where any file or directory can be stat()'d
 *     unless the directory path disallows complete access somewhere along
 *     the way.
 *
 * \li  WRITE_DAC is only set for the owner.  This too is consistent with
 *     Unix, and is tighter security than allowing anyone else to be
 *     able to set permissions.
 *
 * \li  DELETE is only set for the owner.  On Unix the ability to delete
 *     a file is controlled by the directory permissions, but it isn't
 *     currently clear to me what happens on NT if the directory has
 *     FILE_DELETE_CHILD set but a file within it does not have DELETE
 *     set.  Always setting DELETE on the file/directory for the owner
 *     gives maximum flexibility to the owner without exposing the
 *     file to deletion by others.
 *
 * \li  WRITE_OWNER is never set.  This too is consistent with Unix,
 *     and is also tighter security than allowing anyone to change the
 *     ownership of the file apart from the superu..ahem, Administrator.
 *
 * \li  Inheritance is set to NO_INHERITANCE.
 *
 * Unix's dumbing down includes:
 *
 * \li  The sticky bit cannot be set.
 *
 * \li  setuid and setgid cannot be set.
 *
 * \li  Only regular files and directories can be set.
 *
 * The rest of this comment discusses a few of the incompatibilities
 * between the two systems that need more thought if this API is to
 * be extended to accommodate them.
 *
 * The Windows standard access right "DELETE" doesn't have a direct
 * equivalent in the Unix world, so it isn't clear what should be done
 * with it.
 *
 * The Unix sticky bit is not supported.  While NT does have a concept
 * of allowing users to create files in a directory but not delete or
 * rename them, it does not have a concept of allowing them to be deleted
 * if they are owned by the user trying to delete/rename.  While it is
 * probable that something could be cobbled together in NT 5 with inheritance,
 * it can't really be done in NT 4 as a single property that you could
 * set on a directory.  You'd need to coordinate something with file creation
 * so that every file created had DELETE set for the owner but noone else.
 *
 * On Unix systems, setting #ISC_FSACCESS_LISTDIRECTORY sets READ.
 * ... setting either #ISC_FSACCESS_CREATECHILD or #ISC_FSACCESS_DELETECHILD
 *      sets WRITE.
 * ... setting #ISC_FSACCESS_ACCESSCHILD sets EXECUTE.
 *
 * On NT systems, setting #ISC_FSACCESS_LISTDIRECTORY sets FILE_LIST_DIRECTORY.
 * ... setting #ISC_FSACCESS_CREATECHILD sets FILE_CREATE_CHILD independently.
 * ... setting #ISC_FSACCESS_DELETECHILD sets FILE_DELETE_CHILD independently.
 * ... setting #ISC_FSACCESS_ACCESSCHILD sets FILE_TRAVERSE.
 *
 * Unresolved:							XXXDCL
 * \li  What NT access right controls the ability to rename a file?
 * \li  How does DELETE work?  If a directory has FILE_DELETE_CHILD but a
 *      file or directory within it does not have DELETE, is that file
 *	or directory deletable?
 * \li  To implement isc_fsaccess_get(), mapping an existing Unix permission
 * 	mode_t back to an isc_fsaccess_t is pretty trivial; however, mapping
 *	an NT DACL could be impossible to do in a responsible way.
 * \li  Similarly, trying to implement the functionality of being able to
 *	say "add group writability to whatever permissions already exist"
 *	could be tricky on NT because of the order-of-entry issue combined
 *	with possibly having one or more matching ACEs already explicitly
 *	granting or denying access.  Because this functionality is
 *	not yet needed by the ISC, no code has been written to try to
 * 	solve this problem.
 */

#include <isc/lang.h>
#include <isc/types.h>

/*
 * Trustees.
 */
#define ISC_FSACCESS_OWNER	0x1 /*%< User account. */
#define ISC_FSACCESS_GROUP	0x2 /*%< Primary group owner. */
#define ISC_FSACCESS_OTHER	0x4 /*%< Not the owner or the group owner. */
#define ISC_FSACCESS_WORLD	0x7 /*%< User, Group, Other. */

/*
 * Types of permission.
 */
#define ISC_FSACCESS_READ		0x00000001 /*%< File only. */
#define ISC_FSACCESS_WRITE		0x00000002 /*%< File only. */
#define ISC_FSACCESS_EXECUTE		0x00000004 /*%< File only. */
#define ISC_FSACCESS_CREATECHILD	0x00000008 /*%< Dir only. */
#define ISC_FSACCESS_DELETECHILD	0x00000010 /*%< Dir only. */
#define ISC_FSACCESS_LISTDIRECTORY	0x00000020 /*%< Dir only. */
#define ISC_FSACCESS_ACCESSCHILD	0x00000040 /*%< Dir only. */

/*%
 * Adding any permission bits beyond 0x200 would mean typedef'ing
 * isc_fsaccess_t as isc_uint64_t, and redefining this value to
 * reflect the new range of permission types, Probably to 21 for
 * maximum flexibility.  The number of bits has to accommodate all of
 * the permission types, and three full sets of them have to fit
 * within an isc_fsaccess_t.
 */
#define ISC__FSACCESS_PERMISSIONBITS 10

ISC_LANG_BEGINDECLS

void
isc_fsaccess_add(int trustee, int permission, isc_fsaccess_t *access);

void
isc_fsaccess_remove(int trustee, int permission, isc_fsaccess_t *access);

isc_result_t
isc_fsaccess_set(const char *path, isc_fsaccess_t access);

ISC_LANG_ENDDECLS

#endif /* ISC_FSACCESS_H */

Filemanager

Name Type Size Permission Actions
aes.h File 1.05 KB 0644
app.h File 10.23 KB 0644
assertions.h File 2.78 KB 0644
atomic.h File 4.15 KB 0644
backtrace.h File 3.8 KB 0644
base32.h File 3.94 KB 0644
base64.h File 2.39 KB 0644
bind9.h File 849 B 0644
boolean.h File 746 B 0644
buffer.h File 25.69 KB 0644
bufferlist.h File 1.42 KB 0644
commandline.h File 1.69 KB 0644
condition.h File 1.44 KB 0644
counter.h File 1.88 KB 0644
crc64.h File 986 B 0644
deprecated.h File 622 B 0644
dir.h File 1.96 KB 0644
entropy.h File 8.76 KB 0644
errno.h File 658 B 0644
errno2result.h File 893 B 0644
error.h File 1.4 KB 0644
event.h File 2.98 KB 0644
eventclass.h File 1.35 KB 0644
file.h File 11.43 KB 0644
formatcheck.h File 892 B 0644
fsaccess.h File 7.25 KB 0644
hash.h File 7.52 KB 0644
heap.h File 5.14 KB 0644
hex.h File 2.33 KB 0644
hmacmd5.h File 1.75 KB 0644
hmacsha.h File 4.44 KB 0644
ht.h File 4.29 KB 0644
httpd.h File 2.26 KB 0644
int.h File 1.37 KB 0644
interfaceiter.h File 3.03 KB 0644
iterated_hash.h File 1.02 KB 0644
json.h File 1.42 KB 0644
keyboard.h File 976 B 0644
lang.h File 636 B 0644
lex.h File 9.42 KB 0644
lfsr.h File 2.88 KB 0644
lib.h File 1.04 KB 0644
likely.h File 718 B 0644
list.h File 5.65 KB 0644
log.h File 28.06 KB 0644
magic.h File 993 B 0644
md5.h File 2.34 KB 0644
mem.h File 20.63 KB 0644
meminfo.h File 690 B 0644
msgcat.h File 2.66 KB 0644
msgs.h File 8.22 KB 0644
mutex.h File 3.44 KB 0644
mutexblock.h File 1.34 KB 0644
net.h File 10.32 KB 0644
netaddr.h File 4.56 KB 0644
netdb.h File 862 B 0644
netscope.h File 947 B 0644
offset.h File 699 B 0644
once.h File 981 B 0644
ondestroy.h File 2.79 KB 0644
os.h File 670 B 0644
parseint.h File 1.49 KB 0644
platform.h File 9.31 KB 0644
pool.h File 3.42 KB 0644
portset.h File 3.21 KB 0644
print.h File 2.49 KB 0644
queue.h File 4.66 KB 0644
quota.h File 2.29 KB 0644
radix.h File 6.37 KB 0644
random.h File 2.99 KB 0644
ratelimiter.h File 3.38 KB 0644
refcount.h File 7.89 KB 0644
regex.h File 766 B 0644
region.h File 1.99 KB 0644
resource.h File 2.8 KB 0644
result.h File 4.62 KB 0644
resultclass.h File 1.56 KB 0644
rwlock.h File 3.6 KB 0644
safe.h File 1.21 KB 0644
serial.h File 1.4 KB 0644
sha1.h File 1.52 KB 0644
sha2.h File 5.65 KB 0644
sockaddr.h File 6 KB 0644
socket.h File 35.81 KB 0644
stat.h File 805 B 0644
stats.h File 3.02 KB 0644
stdio.h File 1.74 KB 0644
stdlib.h File 703 B 0644
stdtime.h File 1.3 KB 0644
strerror.h File 776 B 0644
string.h File 5.94 KB 0644
symtab.h File 4.21 KB 0644
syslog.h File 843 B 0644
task.h File 21.08 KB 0644
taskpool.h File 3.61 KB 0644
thread.h File 1.47 KB 0644
time.h File 8.66 KB 0644
timer.h File 10.54 KB 0644
tm.h File 894 B 0644
types.h File 5.54 KB 0644
util.h File 7.49 KB 0644
version.h File 688 B 0644
xml.h File 1.07 KB 0644