⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme

📁 远程桌面连接工具
💻
字号:
		     A Sample Authorization Protocol for XOverviewThe following note describes a very simple mechanism for providing individualaccess to an X Window System display.  It uses existing core protocol andlibrary hooks for specifying authorization data in the connection setup blockto restrict use of the display to only those clients that show that theyknow a server-specific key called a "magic cookie".  This mechanism is *not*being proposed as an addition to the Xlib standard; among other reasons, aprotocol extension is needed to support more flexible mechanisms.  We haveimplemented this mechanism already; if you have comments, please send themto us.This scheme involves changes to the following parts of the sample release:    o  xdm	-  generate random magic cookie and store in protected file	-  pass name of magic cookie file to server	-  when user logs in, add magic cookie to user's auth file	-  when user logs out, generate a new cookie for server    o  server	-  a new command line option to specify cookie file	-  check client authorization data against magic cookie	-  read in cookie whenever the server resets	-  do not add local machine to host list if magic cookie given    o  Xlib	-  read in authorization data from file	-  find data for appropriate server	-  send authorization data if found    o  xauth [new program to manage user auth file]	-  add entries to user's auth file	-  remove entries from user's auth fileThis mechanism assumes that the superuser and the transport layer between the client and the server is secure.  Organizations that desire strictersecurity are encouraged to look at systems such as Kerberos (at ProjectAthena).DescriptionThe sample implementation will use the xdm Display Manager to set up andcontrol the server's authorization file.  Sites that do not run xdm willneed to build their own mechanisms.  Xdm uses a random key (seeded by the system time and check sum of /dev/kmem)to generate a unique sequence of characters at 16 bytes long.  This sequencewill be written to a file which is made readable only by the server.  Theserver will then be started with a command line option instructing it to usethe contents of the file as the magic cookie for connections that includeauthorization data.  This will also disable the server from adding the localmachine's address to the initial host list.  Note that the actual cookie mustnot be stored on the command line or in an environment variable, to preventit from being publicly obtainable by the "ps" command.If a client presents an authorization name of "MIT-MAGIC-COOKIE-1" andauthorization data that matches the magic cookie, that client is allowedaccess.  If the name or data does not match and the host list is empty,that client will be denied access.  Otherwise, the existing host-based accesscontrol will be used.  Since any client that is making a connection from amachine on the host list will be granted access even if their authorizationdata is incorrect, sites are strongly urged not to set up any default hostsusing the /etc/X*.hosts files.  Granting access to other machines should bedone by the user's session manager instead.Assuming the server is configured with an empty host list, the existence of thecookie is sufficient to ensure there will be no unauthorized access to thedisplay.  However, xdm will (continue to) work to minimize the chances ofspoofing on servers that do not support this authorization mechanism.  Thiswill be done by grabbing the server and the keyboard after opening the display.This action will be surrounded by a timer which will kill the server if thegrabs cannot be done within several seconds.  [This level of security is nowimplemented in patches already sent out.]After the user logs in, xdm will add authorization entries for each of theserver machine's network addresses to the user's authorization file (the formatof which is described below).  This file will usually be named .Xauthority inthe users's home directory; will be owned by the user (as specified by thepw_uid and pw_gid fields in the user's password entry), and will be accessibleonly to the user (no group access).  This file will contain authorization datafor all of the displays opened by the user.When the session terminates, xdm will generate and store a new magic cookiefor the server.  Then, xdm will shutdown its own connection and send aSIGHUP to the server process, which should cause the server to reset.  Theserver will then read in the new magic cookie.To support accesses (both read and write) from multiple machines (for use inenvironments that use distributed file systems), file locking is done usinghard links.  This is done by creat'ing (sic) a lock file and then linking itto another name in the same directory.  If the link-target already exists,the link will fail, indicating failure to obtain the lock.  Linking is usedinstead of just creating the file read-only since link will fail even forthe superuser.Problems and SolutionsThere are a few problems with .Xauthority as described.  If no home directoryexists, or if xdm cannot create a file there (disk full), xdm stores thecookie in a file in a resource-specified back-up directory, and sets anenvironment variable in the user's session (called XAUTHORITY) naming thisfile.  There is also the problem that the locking attempts will need to betimed out, due to a leftover lock.  Xdm, again, creates a file and set anenvironment variable.  Finally, the back-up directory might be full.  Xdm,as a last resort, provides a function key binding that allows a user to login without having the authorization data stored, and with host-based accesscontrol disabled.XlibXOpenDisplay in Xlib was enhanced to allow specification of authorizationinformation.  As implied above, Xlib looks for the data in the.Xauthority file of the home directory, or in the file pointed at by theXAUTHORITY environment variable instead if that is defined.  This requiredno programmatic interface change to Xlib.  In addition, a new Xlib routineis provided to explicitly specify authorization.	XSetAuthorization(name, namelen, data, datalen)		int namelen, datalen;		char *name, *data;There are three types of input:	name NULL, data don't care	- use default authorization mechanism.	name non-NULL, data NULL	- use the named authorization; get					  data from that mechanism's default.	name non-NULL, data non-NULL	- use the given authorization and data.					This interface is used by xdm and might also be used by any otherapplications that wish to explicitly set the authorization information.Authorization FileThe .Xauthority file is a binary file consisting of a sequence of entriesin the following format:	2 bytes		Family value (second byte is as in protocol HOST)	2 bytes		address length (always MSB first)	A bytes		host address (as in protocol HOST)	2 bytes		display "number" length (always MSB first)	S bytes		display "number" string	2 bytes		name length (always MSB first)	N bytes		authorization name string	2 bytes		data length (always MSB first)	D bytes		authorization data stringThe format is binary for easy processing, since authorization informationusually consists of arbitrary data.  Host addresses are used instead ofnames to eliminate potentially time-consuming name resolutions inXOpenDisplay.  Programs, such as xdm, that initialize the user'sauthorization file will have to do the same work as the server in findingaddresses for all network interfaces.  If more than one entry matches thedesired address, the entry that is chosen is implementation-dependent.  Inour implementation, it is always the first in the file.The Family is specified in two bytes to allow out-of-band values(i.e. values not in the Protocol) to be used.  In particular,two new values "FamilyLocal" and "FamilyWild" are defined.  FamilyLocalrefers to any connections using a non-network method of connetion from thelocal machine (Unix domain sockets, shared memory, loopback serial line).In this case the host address is specified by the data returned fromgethostname() and better be unique in a collection of machineswhich share NFS directories.  FamilyWild is currently used onlyby xdm to communicate authorization data to the server.  It matchesany family/host address pair.For FamilyInternet, the host address is the 4 byte internet address, forFamilyDecnet, the host address is the byte decnet address, for FamilyChaosthe address is also two bytes.The Display Number is the ascii representation of the display numberportion of the display name.  It is in ascii to allow future expansionto PseudoRoots or anything else that might happen.A utility called "xauth" will be provided for editing and viewing thecontents of authorization files.  Note that the user's authorization file isnot the same as the server's magic cookie file.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -