Merge branch 'policy-convert'
* policy-convert: Avoid moving old, user-modified qrexec policy to .rpmsave files Convert default qrexec policy to the new format
This commit is contained in:
		
						commit
						7193fad5f5
					
				
							
								
								
									
										39
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								Makefile
									
									
									
									
									
								
							| @ -170,31 +170,11 @@ ifeq ($(BACKEND_VMM),xen) | ||||
| 	# Currently supported only on xen | ||||
| 	cp etc/qmemman.conf $(DESTDIR)/etc/qubes/ | ||||
| endif | ||||
| 	mkdir -p $(DESTDIR)/etc/qubes-rpc/policy | ||||
| 	mkdir -p $(DESTDIR)/etc/qubes-rpc | ||||
| 	mkdir -p $(DESTDIR)/etc/qubes/policy.d | ||||
| 	mkdir -p $(DESTDIR)/usr/libexec/qubes | ||||
| 	cp qubes-rpc-policy/qubes.FeaturesRequest.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.FeaturesRequest | ||||
| 	cp qubes-rpc-policy/qubes.Filecopy.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.Filecopy | ||||
| 	cp qubes-rpc-policy/qubes.OpenInVM.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.OpenInVM | ||||
| 	cp qubes-rpc-policy/qubes.OpenURL.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.OpenURL | ||||
| 	cp qubes-rpc-policy/qubes.VMShell.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMShell | ||||
| 	cp qubes-rpc-policy/qubes.VMRootShell.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMRootShell | ||||
| 	cp qubes-rpc-policy/qubes.VMExec.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMExec | ||||
| 	cp qubes-rpc-policy/qubes.VMExecGUI.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMExecGUI | ||||
| 	cp qubes-rpc-policy/qubes.NotifyUpdates.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyUpdates | ||||
| 	cp qubes-rpc-policy/qubes.NotifyTools.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyTools | ||||
| 	cp qubes-rpc-policy/qubes.GetImageRGBA.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.GetImageRGBA | ||||
| 	cp qubes-rpc-policy/qubes.GetRandomizedTime.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.GetRandomizedTime | ||||
| 	cp qubes-rpc-policy/qubes.NotifyTools.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyTools | ||||
| 	cp qubes-rpc-policy/qubes.NotifyUpdates.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyUpdates | ||||
| 	cp qubes-rpc-policy/qubes.OpenInVM.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.OpenInVM | ||||
| 	cp qubes-rpc-policy/qubes.StartApp.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.StartApp | ||||
| 	cp qubes-rpc-policy/qubes.UpdatesProxy.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.UpdatesProxy | ||||
| 	cp qubes-rpc-policy/qubes.GetDate.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.GetDate | ||||
| 	cp qubes-rpc-policy/qubes.ConnectTCP.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.ConnectTCP | ||||
| 	cp qubes-rpc-policy/admin.vm.Console.policy $(DESTDIR)/etc/qubes-rpc/policy/admin.vm.Console | ||||
| 	cp qubes-rpc-policy/admin.vm.volume.Import.policy $(DESTDIR)/etc/qubes-rpc/policy/admin.vm.volume.Import | ||||
| 	cp qubes-rpc-policy/admin.vm.volume.ImportWithSize.policy $(DESTDIR)/etc/qubes-rpc/policy/admin.vm.volume.ImportWithSize | ||||
| 	cp qubes-rpc-policy/policy.RegisterArgument.policy $(DESTDIR)/etc/qubes-rpc/policy/policy.RegisterArgument | ||||
| 	install -m 0644 qubes-rpc-policy/90-default.policy \
 | ||||
| 		$(DESTDIR)/etc/qubes/policy.d/90-default.policy | ||||
| 	cp qubes-rpc/qubes.FeaturesRequest $(DESTDIR)/etc/qubes-rpc/ | ||||
| 	cp qubes-rpc/qubes.GetDate $(DESTDIR)/etc/qubes-rpc/ | ||||
| 	cp qubes-rpc/qubes.GetRandomizedTime $(DESTDIR)/etc/qubes-rpc/ | ||||
| @ -214,7 +194,8 @@ endif | ||||
| 	ln -s admin.vm.volume.Import $(DESTDIR)/etc/qubes-rpc/admin.vm.volume.ImportWithSize | ||||
| 	install qubes-rpc/admin.vm.Console $(DESTDIR)/etc/qubes-rpc/ | ||||
| 	PYTHONPATH=.:test-packages qubes-rpc-policy/generate-admin-policy \
 | ||||
| 		--destdir=$(DESTDIR)/etc/qubes-rpc/policy \
 | ||||
| 		--dest=$(DESTDIR)/etc/qubes/policy.d/90-admin-default.policy \
 | ||||
| 		--header=qubes-rpc-policy/90-admin-default.policy.header \
 | ||||
| 		--exclude admin.vm.Create.AdminVM \
 | ||||
| 				  admin.vm.CreateInPool.AdminVM \
 | ||||
| 		          admin.vm.device.testclass.Attach \
 | ||||
| @ -222,16 +203,12 @@ endif | ||||
| 				  admin.vm.device.testclass.List \
 | ||||
| 				  admin.vm.device.testclass.Set.persistent \
 | ||||
| 				  admin.vm.device.testclass.Available | ||||
| 	# sanity check | ||||
| 	for method in $(DESTDIR)/etc/qubes-rpc/policy/admin.*; do \
 | ||||
| 		ls $(DESTDIR)/etc/qubes-rpc/$$(basename $$method) >/dev/null || exit 1; \
 | ||||
| 	done | ||||
| 	install -d $(DESTDIR)/etc/qubes-rpc/policy/include | ||||
| 	install -d $(DESTDIR)/etc/qubes/policy.d/include | ||||
| 	install -m 0644 qubes-rpc-policy/admin-local-ro \
 | ||||
| 		qubes-rpc-policy/admin-local-rwx \
 | ||||
| 		qubes-rpc-policy/admin-global-ro \
 | ||||
| 		qubes-rpc-policy/admin-global-rwx \
 | ||||
| 		$(DESTDIR)/etc/qubes-rpc/policy/include/ | ||||
| 		$(DESTDIR)/etc/qubes/policy.d/include/ | ||||
| 
 | ||||
| 	mkdir -p "$(DESTDIR)$(FILESDIR)" | ||||
| 	cp -r templates "$(DESTDIR)$(FILESDIR)/templates" | ||||
|  | ||||
							
								
								
									
										22
									
								
								qubes-rpc-policy/90-admin-default.policy.header
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								qubes-rpc-policy/90-admin-default.policy.header
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| ## Do not modify this file, create a new policy file with a lower number in the | ||||
| ## filename instead. For example `30-admin-user.policy`. | ||||
| 
 | ||||
| ### | ||||
| ### Default Admin API qrexec policy | ||||
| ### | ||||
| 
 | ||||
| ## WARNING: most qrexec services here allows a qube to control system | ||||
| ## configuration. It should be allowed only to trusted qubes. | ||||
| 
 | ||||
| ## Remember to add "target=dom0" option to any (allow/ask) entry you create. | ||||
| 
 | ||||
| ## For convenience of maintaining this policy, all services include one of: | ||||
| ##  - include/admin-local-rwx (services to modify a specific qube configuration) | ||||
| ##  - include/admin-local-ro (services to read a specific qube configuration) | ||||
| ##  - include/admin-global-rwx (services to modify global parameters) | ||||
| ##  - include/admin-global-ro (services to read global parameters) | ||||
| 
 | ||||
| !include-service admin.vm.Console       * include/admin-local-rwx | ||||
| !include-service admin.vm.volume.Import * include/admin-local-rwx | ||||
| !include-service admin.vm.volume.ImportWithSize * include/admin-local-rwx | ||||
| 
 | ||||
							
								
								
									
										127
									
								
								qubes-rpc-policy/90-default.policy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								qubes-rpc-policy/90-default.policy
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,127 @@ | ||||
| ## Do not modify this file, create a new policy file with a lower number in the | ||||
| ## filename instead. For example `30-user.policy`. | ||||
| 
 | ||||
| ### | ||||
| ### Default qrexec policy | ||||
| ### | ||||
| 
 | ||||
| ## File format: | ||||
| ## service-name|*       +argument|* source          destination action  [options] | ||||
| 
 | ||||
| ## Note that policy parsing stops at the first match. | ||||
| 
 | ||||
| # policy.RegisterArgument should be allowed only for specific arguments. | ||||
| policy.RegisterArgument *           @anyvm          dom0        deny | ||||
| 
 | ||||
| # WARNING: The qubes.ConnectTCP service is dangerous and allows any | ||||
| # qube to access any other qube TCP port. It should be restricted | ||||
| # only to restricted qubes. This is why the default policy is 'deny' | ||||
| 
 | ||||
| # Example of policy: qubes.ConnectTCP +22 mytcp-client @default allow,target=mytcp-server | ||||
| qubes.ConnectTCP        *           @anyvm          @anyvm      deny | ||||
| 
 | ||||
| # VM advertise its supported features | ||||
| qubes.FeaturesRequest   *           @anyvm	        dom0	    allow | ||||
| 
 | ||||
| # Windows VM advertise installed Qubes Windows Tools | ||||
| qubes.NotifyTools       *           @anyvm          dom0        allow | ||||
| 
 | ||||
| # File copy/move | ||||
| qubes.Filecopy          *           @anyvm          @anyvm      ask | ||||
| 
 | ||||
| # Get current date/time | ||||
| qubes.GetDate           *           @tag:anon-vm    @anyvm      deny | ||||
| qubes.GetDate           *           @anyvm          @anyvm      allow target=dom0 | ||||
| 
 | ||||
| # Get slightly randomized date/time | ||||
| qubes.GetRandomizedTime *           @anyvm          dom0        allow | ||||
| 
 | ||||
| # Convert image to a safe format, also, allows to get an image (icon) file from a VM | ||||
| qubes.GetImageRGBA      *           @anyvm          @dispvm     allow | ||||
| qubes.GetImageRGBA      *           @anyvm          @anyvm      ask | ||||
| 
 | ||||
| # Notify about available updates | ||||
| qubes.NotifyUpdates     *           @anyvm          dom0        allow | ||||
| 
 | ||||
| # Open a file in a VM | ||||
| qubes.OpenInVM          *           @anyvm          @dispvm     allow | ||||
| qubes.OpenInVM          *           @anyvm          @anyvm      ask | ||||
| 
 | ||||
| # Open URL in a VM | ||||
| qubes.OpenURL           *           @anyvm          @dispvm     allow | ||||
| qubes.OpenURL           *           @anyvm          @anyvm      ask | ||||
| 
 | ||||
| # Start application using its menu entry (only applications with menu entries | ||||
| # are allowed, no arbitrary command). Argument is an application name (in case | ||||
| # of Linux, basename of .desktop file from /usr/share/applications or similar | ||||
| # location). | ||||
| qubes.StartApp          *           @anyvm          @dispvm     allow | ||||
| qubes.StartApp          *           @anyvm          @anyvm      ask | ||||
| 
 | ||||
| # HTTP proxy for downloading updates | ||||
| # Upgrade all TemplateVMs through sys-whonix. | ||||
| #qubes.UpdatesProxy * @type:TemplateVM @default allow,target=sys-whonix | ||||
| # Upgrade Whonix TemplateVMs through sys-whonix. | ||||
| qubes.UpdatesProxy      *   @tag:whonix-updatevm    @default    allow target=sys-whonix | ||||
| # Deny Whonix TemplateVMs using UpdatesProxy of any other VM. | ||||
| qubes.UpdatesProxy      *   @tag:whonix-updatevm    @anyvm      deny | ||||
| # Default rule for all TemplateVMs - direct the connection to sys-net | ||||
| qubes.UpdatesProxy      *   @type:TemplateVM        @default    allow target=sys-net | ||||
| qubes.UpdatesProxy      *   @anyvm                  @anyvm      deny | ||||
| 
 | ||||
| # WARNING: The qubes.VMShell service is dangerous and there are really few | ||||
| # cases when it could be safely used. Especially when policy set to "ask" you | ||||
| # have no way to know for sure what command(s) will be called. Compromissed | ||||
| # source VM can substitute the command. Allowing one VM to execute | ||||
| # qubes.VMShell over the other VM allows the former to TAKE FULL CONTROL over | ||||
| # the later. In most cases this is not what we want! | ||||
| # | ||||
| # Instead we should be using task-specific qrexec services which provide | ||||
| # assurance as to what program will be responding to the (untrusted) VM | ||||
| # requests. | ||||
| # | ||||
| # It is, however, safe, in most cases, to allow ultimate control of the | ||||
| # creating AppVM over the DisposableVM it creates as part of the qrexec service | ||||
| # invocation. That's why by default we have "@anyvm  @dispvm allow" rule. Note | ||||
| # that it does _not_ allow any AppVM to execute qubes.VMShell service over any | ||||
| # DispVM created in the system -- that would obviously be wrong. It only allows | ||||
| # qubes.VMShell service access to the AppVM which creates the DispVM as part of | ||||
| # this very service invocation. | ||||
| # | ||||
| # See e.g. this thread for some discussion: | ||||
| # https://groups.google.com/d/msg/qubes-users/xnAByaL_bjI/3PjYdiTDW-0J | ||||
| qubes.VMShell           *           @anyvm          @dispvm     allow | ||||
| qubes.VMShell           *           @anyvm          @anyvm      deny | ||||
| 
 | ||||
| # WARNING: qubes.VMRootShell has similar risks as qubes.VMExec | ||||
| # Add "user=root" option to any ask or allow rules. | ||||
| qubes.VMRootShell       *           @anyvm          @anyvm      deny | ||||
| 
 | ||||
| # WARNING: The qubes.VMExec service is dangerous and there are really few | ||||
| # cases when it could be safely used. Contrary to qubes.VMShell, when policy is | ||||
| # set to "ask", the command to be executed is visible in the confirmation | ||||
| # prompt. But once allowed, the source VM have full control over the command | ||||
| # standard input/output. Allowing one VM to execute qubes.VMExec over the | ||||
| # other VM allows the former to TAKE FULL CONTROL over the later. In most cases | ||||
| # this is not what we want! | ||||
| # | ||||
| # Instead we should be using task-specific qrexec services which provide | ||||
| # assurance as to what program will be responding to the (untrusted) VM | ||||
| # requests. | ||||
| # | ||||
| # It is, however, safe, in most cases, to allow ultimate control of the | ||||
| # creating AppVM over the DisposableVM it creates as part of the qrexec service | ||||
| # invocation. That's why by default we have "@anyvm  @dispvm allow" rule. Note | ||||
| # that it does _not_ allow any AppVM to execute qubes.VMExec service over any | ||||
| # DispVM created in the system -- that would obviously be wrong. It only allows | ||||
| # qubes.VMExec service access to the AppVM which creates the DispVM as part of | ||||
| # this very service invocation. | ||||
| # | ||||
| # See e.g. this thread for some discussion: | ||||
| # https://groups.google.com/d/msg/qubes-users/xnAByaL_bjI/3PjYdiTDW-0J | ||||
| qubes.VMExec            *           @anyvm          @dispvm     allow | ||||
| qubes.VMExec            *           @anyvm          @anyvm      deny | ||||
| 
 | ||||
| # WARNING: qubes.VMExecGUI has similar risks as qubes.VMExec | ||||
| qubes.VMExecGUI         *           @anyvm          @dispvm     allow | ||||
| qubes.VMExecGUI         *           @anyvm          @anyvm      deny | ||||
| @ -2,12 +2,12 @@ | ||||
| ## _in default configuration_. To allow only specific action, | ||||
| ## edit specific policy file. | ||||
| 
 | ||||
| ## Note that policy parsing stops at the first match, | ||||
| ## Note that policy parsing stops at the first match. | ||||
| 
 | ||||
| ## Please use a single # to start your custom comments | ||||
| 
 | ||||
| ## Include all already having write access | ||||
| $include:include/admin-global-rwx | ||||
| !include include/admin-global-rwx | ||||
| 
 | ||||
| ## Add your entries here, make sure to append ",target=dom0" to all allow/ask actions | ||||
| ## Add your entries here, make sure to append "target=dom0" to all allow/ask actions | ||||
| 
 | ||||
|  | ||||
| @ -2,10 +2,9 @@ | ||||
| ## _in default configuration_. To allow only specific action, | ||||
| ## edit specific policy file. | ||||
| 
 | ||||
| ## Note that policy parsing stops at the first match, | ||||
| ## so adding anything below "$anyvm $anyvm action" line will have no effect | ||||
| ## Note that policy parsing stops at the first match. | ||||
| 
 | ||||
| ## Please use a single # to start your custom comments | ||||
| 
 | ||||
| ## Add your entries here, make sure to append ",target=dom0" to all allow/ask actions | ||||
| ## Add your entries here, make sure to append "target=dom0" to all allow/ask actions | ||||
| 
 | ||||
|  | ||||
| @ -2,13 +2,12 @@ | ||||
| ## _in default configuration_. To allow only specific action, | ||||
| ## edit specific policy file. | ||||
| 
 | ||||
| ## Note that policy parsing stops at the first match, | ||||
| ## so adding anything below "$anyvm $anyvm action" line will have no effect | ||||
| ## Note that policy parsing stops at the first match. | ||||
| 
 | ||||
| ## Please use a single # to start your custom comments | ||||
| 
 | ||||
| ## Include all already having write access | ||||
| $include:include/admin-local-rwx | ||||
| !include include/admin-local-rwx | ||||
| 
 | ||||
| ## Add your entries here, make sure to append ",target=dom0" to all allow/ask actions | ||||
| ## Add your entries here, make sure to append "target=dom0" to all allow/ask actions | ||||
| 
 | ||||
|  | ||||
| @ -2,10 +2,9 @@ | ||||
| ## _in default configuration_. To allow only specific action, | ||||
| ## edit specific policy file. | ||||
| 
 | ||||
| ## Note that policy parsing stops at the first match, | ||||
| ## so adding anything below "$anyvm $anyvm action" line will have no effect | ||||
| ## Note that policy parsing stops at the first match. | ||||
| 
 | ||||
| ## Please use a single # to start your custom comments | ||||
| 
 | ||||
| ## Add your entries here, make sure to append ",target=dom0" to all allow/ask actions | ||||
| ## Add your entries here, make sure to append "target=dom0" to all allow/ask actions | ||||
| 
 | ||||
|  | ||||
| @ -30,9 +30,12 @@ parser = argparse.ArgumentParser( | ||||
| parser.add_argument('--include-base', action='store', | ||||
|     default='include', | ||||
|     help='Base path for included paths (default: %(default)s)') | ||||
| parser.add_argument('--destdir', action='store', | ||||
|     default='/etc/qubes-rpc/policy', | ||||
|     help='Directory where write output files to (default: %(default)s)') | ||||
| parser.add_argument('--dest', action='store', | ||||
|     default='/etc/qubes/policy.d/90-admin-default.policy', | ||||
|     help='Path where write output file to (default: %(default)s)') | ||||
| parser.add_argument('--header', action='store', | ||||
|     default='90-admin-default.policy.header', | ||||
|     help='File to prepend to the policy (default: %(default)s)') | ||||
| parser.add_argument('--verbose', action='store_true', default=False, | ||||
|     help='Be verbose') | ||||
| parser.add_argument('--exclude', action='store', nargs='*', | ||||
| @ -40,22 +43,7 @@ parser.add_argument('--exclude', action='store', nargs='*', | ||||
| parser.add_argument('service', nargs='*', action='store', | ||||
|     help='Generate policy for those services (default: all)') | ||||
| 
 | ||||
| default_policy_header = '''\ | ||||
| ## Note that policy parsing stops at the first match. | ||||
| ## Anything not specifically allowed here (or in included file) will be denied. | ||||
| 
 | ||||
| ## Please use a single # to start your custom comments | ||||
| 
 | ||||
| ## Add your entries here, make sure to append ",target=dom0" to all allow/ask actions | ||||
| 
 | ||||
| ## Include a common file for all admin.* methods to ease setting up | ||||
| ## Management VM. | ||||
| ## To allow only specific actions, edit specific policy file, like this one. To | ||||
| ## allow all of them, edit appropriate /etc/qubes-rpc/include/admin-*. | ||||
| 
 | ||||
| ''' | ||||
| 
 | ||||
| def write_default_policy(args, apiname, clasifiers): | ||||
| def write_default_policy(args, apiname, clasifiers, f): | ||||
|     ''' Write single default policy for given API call ''' | ||||
|     assert 'scope' in clasifiers, \ | ||||
|         'Method {} lack scope classifier'.format(apiname) | ||||
| @ -73,9 +61,8 @@ def write_default_policy(args, apiname, clasifiers): | ||||
|     if args.verbose: | ||||
|         print('Service {}: include {}'.format(apiname, file_to_include), | ||||
|             file=sys.stderr) | ||||
|     with open(os.path.join(args.destdir, apiname), 'w') as f: | ||||
|         f.write(default_policy_header) | ||||
|         f.write('$include:{}\n'.format( | ||||
|     f.write('!include-service {} * {}\n'.format( | ||||
|         apiname, | ||||
|         os.path.join(args.include_base, file_to_include))) | ||||
| 
 | ||||
| 
 | ||||
| @ -83,12 +70,15 @@ def main(args=None): | ||||
|     ''' Main function of default-admin-policy tool''' | ||||
|     args = parser.parse_args(args) | ||||
| 
 | ||||
|     with open(os.path.join(args.dest), 'w') as f: | ||||
|         with open(args.header) as header_f: | ||||
|             f.write(header_f.read()) | ||||
|         for func, apiname, _ in qubes.api.admin.QubesAdminAPI.list_methods(): | ||||
|             if args.service and apiname not in args.service: | ||||
|                 continue | ||||
|             if args.exclude and apiname in args.exclude: | ||||
|                 continue | ||||
|         write_default_policy(args, apiname, func.classifiers) | ||||
|             write_default_policy(args, apiname, func.classifiers, f) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|  | ||||
| @ -190,6 +190,148 @@ if [ "$1" = 0 ] ; then | ||||
|     groupdel qubes | ||||
| fi | ||||
| 
 | ||||
| %posttrans | ||||
| 
 | ||||
| # Preserve user-modified legacy policy at original location, revert rpm adding | ||||
| # .rpmsave suffix. This needs to be done in %%posttrans, to be run after | ||||
| # uninstalling the old package. | ||||
| 
 | ||||
| # List policy files explicitly, to not touch files from other packages. | ||||
| SERVICES=" | ||||
| admin.Events | ||||
| admin.backup.Cancel | ||||
| admin.backup.Execute | ||||
| admin.backup.Info | ||||
| admin.deviceclass.List | ||||
| admin.label.Create | ||||
| admin.label.Get | ||||
| admin.label.Index | ||||
| admin.label.List | ||||
| admin.label.Remove | ||||
| admin.pool.Add | ||||
| admin.pool.Info | ||||
| admin.pool.List | ||||
| admin.pool.ListDrivers | ||||
| admin.pool.Remove | ||||
| admin.pool.Set.revisions_to_keep | ||||
| admin.pool.UsageDetails | ||||
| admin.pool.volume.List | ||||
| admin.property.Get | ||||
| admin.property.GetAll | ||||
| admin.property.GetDefault | ||||
| admin.property.Help | ||||
| admin.property.List | ||||
| admin.property.Reset | ||||
| admin.property.Set | ||||
| admin.vm.Console | ||||
| admin.vm.Create.AppVM | ||||
| admin.vm.Create.DispVM | ||||
| admin.vm.Create.StandaloneVM | ||||
| admin.vm.Create.TemplateVM | ||||
| admin.vm.CreateDisposable | ||||
| admin.vm.CreateInPool.AppVM | ||||
| admin.vm.CreateInPool.DispVM | ||||
| admin.vm.CreateInPool.StandaloneVM | ||||
| admin.vm.CreateInPool.TemplateVM | ||||
| admin.vm.CurrentState | ||||
| admin.vm.Kill | ||||
| admin.vm.List | ||||
| admin.vm.Pause | ||||
| admin.vm.Remove | ||||
| admin.vm.Shutdown | ||||
| admin.vm.Start | ||||
| admin.vm.Stats | ||||
| admin.vm.Unpause | ||||
| admin.vm.device.block.Attach | ||||
| admin.vm.device.block.Available | ||||
| admin.vm.device.block.Detach | ||||
| admin.vm.device.block.List | ||||
| admin.vm.device.block.Set.persistent | ||||
| admin.vm.device.pci.Attach | ||||
| admin.vm.device.pci.Available | ||||
| admin.vm.device.pci.Detach | ||||
| admin.vm.device.pci.List | ||||
| admin.vm.device.pci.Set.persistent | ||||
| admin.vm.feature.CheckWithAdminVM | ||||
| admin.vm.feature.CheckWithNetvm | ||||
| admin.vm.feature.CheckWithTemplate | ||||
| admin.vm.feature.CheckWithTemplateAndAdminVM | ||||
| admin.vm.feature.Get | ||||
| admin.vm.feature.List | ||||
| admin.vm.feature.Remove | ||||
| admin.vm.feature.Set | ||||
| admin.vm.firewall.Get | ||||
| admin.vm.firewall.Reload | ||||
| admin.vm.firewall.Set | ||||
| admin.vm.property.Get | ||||
| admin.vm.property.GetAll | ||||
| admin.vm.property.GetDefault | ||||
| admin.vm.property.Help | ||||
| admin.vm.property.List | ||||
| admin.vm.property.Reset | ||||
| admin.vm.property.Set | ||||
| admin.vm.tag.Get | ||||
| admin.vm.tag.List | ||||
| admin.vm.tag.Remove | ||||
| admin.vm.tag.Set | ||||
| admin.vm.volume.CloneFrom | ||||
| admin.vm.volume.CloneTo | ||||
| admin.vm.volume.Import | ||||
| admin.vm.volume.ImportWithSize | ||||
| admin.vm.volume.Info | ||||
| admin.vm.volume.List | ||||
| admin.vm.volume.ListSnapshots | ||||
| admin.vm.volume.Resize | ||||
| admin.vm.volume.Revert | ||||
| admin.vm.volume.Set.revisions_to_keep | ||||
| admin.vm.volume.Set.rw | ||||
| admin.vmclass.List | ||||
| include/admin-global-ro | ||||
| include/admin-global-rwx | ||||
| include/admin-local-ro | ||||
| include/admin-local-rwx | ||||
| policy.RegisterArgument | ||||
| qubes.ConnectTCP | ||||
| qubes.FeaturesRequest | ||||
| qubes.Filecopy | ||||
| qubes.GetDate | ||||
| qubes.GetImageRGBA | ||||
| qubes.GetRandomizedTime | ||||
| qubes.NotifyTools | ||||
| qubes.NotifyUpdates | ||||
| qubes.OpenInVM | ||||
| qubes.OpenURL | ||||
| qubes.StartApp | ||||
| qubes.UpdatesProxy | ||||
| qubes.VMExec | ||||
| qubes.VMExecGUI | ||||
| qubes.VMRootShell | ||||
| qubes.VMShell | ||||
| " | ||||
| 
 | ||||
| for service in $SERVICES; do | ||||
|     if [ -f "/etc/qubes-rpc/policy/$service.rpmsave" ] && \ | ||||
|             ! [ -e "/etc/qubes-rpc/policy/$service" ]; then | ||||
|         mv -n "/etc/qubes-rpc/policy/$service.rpmsave" \ | ||||
|             "/etc/qubes-rpc/policy/$service" | ||||
|     fi | ||||
| done | ||||
| 
 | ||||
| # Take extra care about policy files in include/ - if any of them is gone | ||||
| # (because unmodified) but user still reference them anywhere, the policy | ||||
| # loading will be broken. Check for this case, and avoid the issue by creating | ||||
| # a symlink to the new policy. | ||||
| 
 | ||||
| INCLUDES="admin-global-ro admin-global-rwx admin-local-ro admin-local-rwx" | ||||
| 
 | ||||
| for include in $INCLUDES; do | ||||
|     if grep -qr "include/$include" /etc/qubes-rpc && \ | ||||
|             ! [ -e "/etc/qubes-rpc/policy/include/$include" ]; then | ||||
|         ln -s "../../../qubes/policy.d/include/$include" \ | ||||
|             "/etc/qubes-rpc/policy/include/$include" | ||||
|     fi | ||||
| done | ||||
| 
 | ||||
| %files | ||||
| %defattr(-,root,root,-) | ||||
| %config(noreplace) %attr(0664,root,qubes) %{_sysconfdir}/qubes/qmemman.conf | ||||
| @ -383,29 +525,12 @@ fi | ||||
| /etc/xen/scripts/block-snapshot | ||||
| /etc/xen/scripts/block-origin | ||||
| /etc/xen/scripts/vif-route-qubes | ||||
| %attr(2775,root,qubes) %dir /etc/qubes-rpc/policy | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/admin.* | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/include/admin-local-ro | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/include/admin-local-rwx | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/include/admin-global-ro | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/include/admin-global-rwx | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.ConnectTCP | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.FeaturesRequest | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.Filecopy | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.GetImageRGBA | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.GetRandomizedTime | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.NotifyTools | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.NotifyUpdates | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.OpenInVM | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.OpenURL | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.StartApp | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.VMShell | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.VMRootShell | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.VMExec | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.VMExecGUI | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.UpdatesProxy | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/qubes.GetDate | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes-rpc/policy/policy.RegisterArgument | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes/policy.d/90-admin-default.policy | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes/policy.d/90-default.policy | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes/policy.d/include/admin-global-ro | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes/policy.d/include/admin-global-rwx | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes/policy.d/include/admin-local-ro | ||||
| %attr(0664,root,qubes) %config(noreplace) /etc/qubes/policy.d/include/admin-local-rwx | ||||
| /etc/qubes-rpc/admin.* | ||||
| /etc/qubes-rpc/qubes.FeaturesRequest | ||||
| /etc/qubes-rpc/qubes.GetDate | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski-Górecki
						Marek Marczykowski-Górecki