polkit: vendor upstream client libraries (libpolkit-gobject-1 + agent-1)

kf6-kauth deliberately uses the real polkit backend (KAUTH_BACKEND_NAME=
POLKITQT6-1), and PolkitQt6-1 links the upstream polkit CLIENT libraries, which
nothing provided (redbear-polkit is only the org.freedesktop.PolicyKit1 daemon).
This makes the KDE authorization mechanism actually work, not just compile.

- New recipe local/recipes/libs/polkit (vendored polkit 124, full-fork path=source)
  built with -Dlibs-only=true so polkitd + the JS rules engine are skipped
  (redbear-polkit is the authority daemon). glib/gio/expat deps already exist.
- src/meson.build: build src/polkitagent even under libs-only — libpolkit-agent-1
  + its PAM auth helper are client-side, needed by PolkitQt6-1, and depend only on
  libpolkit-gobject-1 + glib + PAM (pam-redbear, the same PAM SDDM uses). Only the
  daemon/backend/programs stay gated off.
- pam-redbear: add the standard PAM_MAX_MSG_SIZE/PAM_MAX_RESP_SIZE constants its
  header was missing (polkit-agent-helper-1 needs them).
- polkit-qt6: depend on polkit; it now finds polkit-gobject-1 + polkit-agent-1
  (v124) and builds. Auth prompts verify passwords via pam-redbear; authorization
  decisions come from the redbear-polkit daemon over D-Bus.
This commit is contained in:
2026-08-01 16:23:40 +03:00
parent 31468d273b
commit a7ada11442
225 changed files with 46133 additions and 0 deletions
@@ -64,6 +64,9 @@ typedef int pam_item_type;
#define PAM_CHANGE_EXPIRED_AUTHTOK 0x0020
#define PAM_MAX_NUM_MSG 32
/* Standard Linux-PAM size limits (values from Linux-PAM's _pam_types.h). */
#define PAM_MAX_MSG_SIZE 512
#define PAM_MAX_RESP_SIZE 512
#define PAM_PROMPT_ECHO_OFF 1
#define PAM_PROMPT_ECHO_ON 2
@@ -20,6 +20,7 @@ template = "custom"
dependencies = [
"qtbase",
"redbear-polkit",
"polkit", # libpolkit-gobject-1 client lib to link against
]
script = """
DYNAMIC_INIT
+56
View File
@@ -0,0 +1,56 @@
# polkit — PolicyKit authorization framework (client libraries only).
#
# Red Bear OS uses its own org.freedesktop.PolicyKit1 D-Bus daemon
# (local/recipes/system/redbear-polkit, a Rust reimplementation). But the KDE
# stack (kf6-kauth -> PolkitQt6-1) links the upstream *client* library
# libpolkit-gobject-1, which speaks the standard org.freedesktop.PolicyKit1
# D-Bus interface to whatever daemon owns that bus name — i.e. redbear-polkit.
#
# So this recipe builds ONLY the polkit libraries (libpolkit-gobject-1,
# libpolkit-agent-1) via upstream's `-Dlibs-only=true`, which skips polkitd
# entirely (no JS rules engine, no PAM). The libraries are glib/gio based; the
# actual authorization decisions are made by the redbear-polkit daemon.
#
# upstream: https://gitlab.freedesktop.org/polkit/polkit (tag 124)
[source]
# Vendored full-fork model: committed source/ tree (offline, reproducible).
path = "source"
[build]
template = "custom"
dependencies = [
"glib",
"expat",
"dbus",
# libpolkit-agent-1 authenticates via PAM (same pam-redbear shim SDDM uses),
# so polkit's auth prompts verify passwords the same way as login.
"pam-redbear",
]
script = """
DYNAMIC_INIT
export PKG_CONFIG="${COOKBOOK_PKG_CONFIG:-x86_64-unknown-redox-pkg-config}"
export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}"
export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/share/pkgconfig"
export CC="x86_64-unknown-redox-gcc"
export CXX="x86_64-unknown-redox-g++"
export AR="x86_64-unknown-redox-ar"
export STRIP="x86_64-unknown-redox-strip"
export RANLIB="x86_64-unknown-redox-ranlib"
export CFLAGS="-I${COOKBOOK_SYSROOT}/usr/include --sysroot=${COOKBOOK_SYSROOT} -Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration"
export LDFLAGS="--sysroot=${COOKBOOK_SYSROOT}"
cookbook_meson \\
-Dlibs-only=true \\
-Dintrospection=false \\
-Dexamples=false \\
-Dtests=false \\
-Dman=false \\
-Dgtk_doc=false \\
-Dsession_tracking=ConsoleKit
"""
[package]
version = "124"
description = "polkit 124 client libraries (libpolkit-gobject-1, libpolkit-agent-1) for Red Bear OS. Built with -Dlibs-only (no polkitd/JS/PAM); the authorization daemon is redbear-polkit. Provides the polkit-gobject-1 pkg-config module that PolkitQt6-1 / kf6-kauth link against."
@@ -0,0 +1 @@
((c-mode . ((indent-tabs-mode . nil)))))
@@ -0,0 +1,77 @@
image: fedora:latest
variables:
DEPENDENCIES: gcc
gcc-c++
libtool
autoconf
automake
gettext
gettext-devel
gtk-doc
gobject-introspection-devel
make
libxslt
pkgconfig(gio-2.0)
pkgconfig(mozjs-91)
pkgconfig(duktape)
expat-devel
pkgconfig(libsystemd)
pkgconfig(systemd)
pam-devel
python3-dbusmock
meson
git
dbus-devel
before_script:
- dnf upgrade -y --nogpgcheck fedora-release fedora-repos*
- dnf update -y && dnf install -y $DEPENDENCIES
build_stable:
stage: test
script:
- meson setup
-D authfw=pam
-D examples=true
-D gtk_doc=true
-D introspection=true
-D man=true
-D session_tracking=libsystemd-login
-D tests=true
-D cpp_args="-D_FORTIFY_SOURCE=2"
builddir
- meson compile -C builddir
- meson test -C builddir
- meson install -C builddir
- DESTDIR=$(pwd)/DESTDIR meson install -C builddir
artifacts:
name: 'test logs'
when: 'always'
paths:
- 'builddir/meson-logs/*.txt'
pages:
stage: deploy
script:
- meson setup
-D gtk_doc=true
-D man=true
builddir
- meson compile -C builddir polkit-1-doc:custom
- rm -rf public && mkdir public
- cp -r builddir/docs/polkit/html/* public
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_TAG
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_PIPELINE_SOURCE == 'push'
@@ -0,0 +1,17 @@
## Current behaviour, description of the problem
[State what seems to be the biggest issue here]: #
## Desired behaviour
[What polkit should do, but doesn't]: #
## Reproducer
[What are the steps to reproduce the issue. This will help us to find the root cause faster.]: #
## Detailed description
[Please try to be as descriptive, yet concise here]: #
[Version of polkit]: #
[Version of OS]: #
[Anything else related to the issue]: #
@@ -0,0 +1,7 @@
## Summary
[short description of the problem and the change]: #
## Detailed description and/or reproducer
[Please be more descriptive yet concise here. This text will help us with testing, urgency and severity assessment.]: #
@@ -0,0 +1,30 @@
# See the documentation for more information:
# https://packit.dev/docs/configuration/
specfile_path: polkit.spec
# add or remove files that should be synced
files_to_sync:
- polkit.spec
- .packit.yaml
# name in upstream package repository or registry (e.g. in PyPI)
upstream_package_name: polkit
# downstream (Fedora) RPM package name
downstream_package_name: polkit
srpm_build_deps:
- wget
- sed
actions:
post-upstream-clone:
- "wget https://src.fedoraproject.org/rpms/polkit/raw/rawhide/f/polkit.spec -O polkit.spec"
- "wget https://src.fedoraproject.org/rpms/polkit/raw/rawhide/f/polkit.sysusers -O polkit.sysusers"
- "sed -ri '/^Patch[0-9]+/d' polkit.spec"
jobs:
- job: copr_build
trigger: pull_request
targets:
- fedora-all
+482
View File
@@ -0,0 +1,482 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307 USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
+108
View File
@@ -0,0 +1,108 @@
SCM
===
- anonymous checkouts
`$ git clone git://git.freedesktop.org/git/PolicyKit.git`
- checkouts if you got an ssh account on fd.o (username@ is optional)
`$ git clone ssh://[username@]git.freedesktop.org/git/PolicyKit.git`
- commit to local repository
`$ git commit -a`
- push local repository to master repository at fd.o (remember most patches
requires review at the mailing list)
`$ git push`
- pull changes from master repository at fd.o
`$ git pull`
- diff of working tree versus local repository
`$ git diff`
- diff of local repository vs. master repository at fd.o
synchronize with upstream repo:
`$ git pull`
(possibly merge changes)
generate the diff:
`$ git diff origin HEAD`
- influential environment variables (set these in e.g. .bash_profile)
```bash
export GIT_AUTHOR_NAME='Your Full Name'
export GIT_COMMITTER_NAME='Your Full Name'
export GIT_COMMITTER_EMAIL=youremail@domain.net
export GIT_AUTHOR_EMAIL=youremail@domain.net
```
- see also
http://www.kernel.org/pub/software/scm/git/docs/
Committing code
===
- Commit messages should be of the form (the five lines between the
lines starting with ===)
> === **begin example commit** ===
> short explanation of the commit
>
>
>
> Longer explanation explaining exactly what's changed, whether any
> external or private interfaces changed, what bugs were fixed (with bug
> tracker reference if applicable) and so forth. Be concise but not too brief.
> === **end example commit** ===
- Always add a brief description of the commit to the _first_ line of
the commit and terminate by two newlines (it will work without the
second newline, but that is not nice for the interfaces).
- First line (the brief description) must only be one sentence and
must not start with a capital letter. Don't use a trailing period
either.
- The main description (the body) is normal prose and should use normal
punctuation and capital letters where appropriate. Normally, for patches
sent to a mailing list it's copied from there.
- When committing code on behalf of others use the --author option, e.g.
```bash
git commit -a --author "Joe Coder <joe@coder.org>"
Coding Style
===
- Please follow the coding style already used.
- Write docs for all functions and structs and so on. We use gtkdoc format.
- All external interfaces (network protocols, file formats, etc.)
should have documented specifications sufficient to allow an
alternative implementation to be written. Our implementation should
be strict about specification compliance (should not for example
heuristically parse a file and accept not-well-formed
data). Avoiding heuristics is also important for security reasons;
if it looks funny, ignore it (or exit, or disconnect).
Code of Conduct
===
As with other projects hosted on freedesktop.org, Polkit follows its
Code of Conduct, based on the Contributor Covenant. Please conduct
yourself in a respectful and civilized manner when using the above
mailing lists, bug trackers, etc:
`https://www.freedesktop.org/wiki/CodeOfConduct`
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,90 @@
OVERVIEW
========
polkit is a toolkit for defining and handling authorizations. It is
used for allowing unprivileged processes to speak to privileged
processes.
DOCUMENTATION
=============
Latest documentation, reference manual and API description of polkit can be found
on project's Gitlab Pages
https://polkit.pages.freedesktop.org/polkit
Old reference can be found at
https://www.freedesktop.org/software/polkit/docs/latest/
RELEASES
========
Latest releases are available at polkit's Gitlab Releases page:
https://gitlab.freedesktop.org/polkit/polkit/-/releases
Older releases are still available as tarballs at
https://www.freedesktop.org/software/polkit/releases/
To verify the authenticity of the compressed tarball, use this command
``` bash
$ gpg --verify polkit-$(VERSION).tar.gz.sign polkit-$(VERSION).tar.gz
$ gpg: Signature made Tue 23 Apr 2019 04:19:29 PM CEST using RSA key ID FFDCE258
$ gpg: Good signature from "Jan Rybar (Red Hat) <jrybar@redhat.com>"
```
Public key available at
https://keys.openpgp.org/vks/v1/by-fingerprint/7FFB7D6BD83147D74284E3178CEB3030FFDCE258
BUGS and DEVELOPMENT
====================
Please report non-security bugs via the polkit's freedesktop.org GitLab at
https://gitlab.freedesktop.org/polkit/polkit/issues
The other way, in case of **non**-security issues, is to contact developers via official polkit's FreeDesktop.org mailing list at
polkit-devel@lists.freedesktop.org
SECURITY ISSUES
===============
Please report any security issues not yet known to public
by creating new issue and checking the ***This issue is confidential*** checkbox.
https://gitlab.freedesktop.org/polkit/polkit/issues
BUILD INSTRUCTIONS
==================
**polkit** uses [meson build system](https://mesonbuild.com/) for configuration with *ninja* as backend and *gcc* as compiler.
To configure and compile your copy of polkit tarball, simply follow meson build instructions in the following manner:
```
$ meson setup [[-D option]...] target_directory
$ meson compile -C target_directory
...
# meson install -C target_directory
```
List of available configuration options can be obtained with `meson configure` command.
I WANT TO CONTRIBUTE
====================
Your merge requests and patch suggestions are welcome! If you want to contribute, a merge request on this Gitlab instance is a preferred way, yet not the only one. Please consult other options with this upsteam's maintainers.
Should you already have a freedesktop.org Gitlab account, please file your merge request. In this case, please **don't force-push any further changes** into the merge request and add a new commit into the MR instead.
Please note that there are restrictions in effect on FreeDesktop.org's instance of Gitlab, therefore new users need to take action before contributing directly via their own fork:
https://gitlab.freedesktop.org/freedesktop/freedesktop/-/wikis/home#warning-restrictions-due-to-spam-warning
Thank you in advance.
@@ -0,0 +1,10 @@
policy = 'org.freedesktop.policykit.policy'
i18n.merge_file(
input: policy + '.in',
output: '@BASENAME@',
po_dir: po_dir,
data_dirs: its_dir,
install: true,
install_dir: pk_pkgactiondir,
)
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
<!-- Policy definitions for core polkit actions. Copyright (c) 2008-2012 Red Hat, Inc. -->
<policyconfig>
<vendor>The polkit project</vendor>
<vendor_url>http://www.freedesktop.org/wiki/Software/polkit/</vendor_url>
<action id="org.freedesktop.policykit.exec">
<description>Run a program as another user</description>
<message>Authentication is required to run a program as another user</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
</action>
</policyconfig>
@@ -0,0 +1,54 @@
service_conf = {
'libprivdir': pk_prefix / pk_libprivdir,
'polkitd_user': polkitd_user,
'polkitd_uid': polkitd_uid,
}
configure_file(
input: 'org.freedesktop.PolicyKit1.service.in',
output: '@BASENAME@',
configuration: service_conf,
install: true,
install_dir: dbus_system_bus_services_dir,
)
configure_file(
input: 'org.freedesktop.PolicyKit1.conf.in',
output: '@BASENAME@',
configuration: {'polkitd_user': polkitd_user},
install: true,
install_dir: dbus_policydir,
)
if enable_pam
configure_file(
input: 'polkit-1.in',
output: '@BASENAME@',
configuration: pam_conf,
install: true,
install_dir: pam_prefix,
)
endif
if session_tracking == 'libsystemd-login'
configure_file(
input: 'polkit.service.in',
output: '@BASENAME@',
configuration: service_conf,
install: true,
install_dir: systemd_systemdsystemunitdir,
)
configure_file(
input: 'polkit.conf.in',
output: '@BASENAME@',
configuration: service_conf,
install: true,
install_dir: systemd_sysusers_dir,
)
endif
install_data(
'policyconfig-1.dtd',
install_dir: pk_datadir / 'polkit-1'
)
@@ -0,0 +1,61 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/">
<interface name="org.freedesktop.PolicyKit1.AuthenticationAgent">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Authentication Agent Interface"/>
<annotation name="org.gtk.EggDBus.DocString" value="<para>This D-Bus interface is used for communication between the system-wide PolicyKit daemon and one or more authentication agents each running in a user session.</para><para>An authentication agent must implement this interface and register (passing the object path of the object implementing the interface) using the org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent() and org.freedesktop.PolicyKit1.Authority.UnregisterAuthenticationAgent() methods on the #org.freedesktop.PolicyKit1.Authority interface of the PolicyKit daemon.</para>"/>
<method name="BeginAuthentication">
<annotation name="org.gtk.EggDBus.DocString" value="<para>Called
by the PolicyKit daemon when the authentication agent needs the
user to authenticate as one of the identities in @identities for
the action with the identifier @action_id.</para><para>This
authentication is normally achieved via the
PolkitAgentSession API, which invokes a private
setuid helper process to verify the authentication. When
successful, it calls the
org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2()
method on the #org.freedesktop.PolicyKit1.Authority interface of
the PolicyKit daemon before returning. If the user dismisses the
authentication dialog, the authentication agent should return an
error.</para>"/>
<arg name="action_id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The identifier for the action that the user is authentication for."/>
</arg>
<arg name="message" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The message to display to the user. This is translated into the locale passed when registering the authentication agent using org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent()."/>
</arg>
<arg name="icon_name" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The themed icon describing the action or the empty string if no icon is set."/>
</arg>
<arg name="details" direction="in" type="a{ss}">
<annotation name="org.gtk.EggDBus.DocString" value="Details about the authentication request. This is a dictionary of key/value pairs where both key and value are strings. These strings are translated into the locale passed when registering the authentication agent using org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent()."/>
</arg>
<arg name="cookie" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="A cookie identifying the authentication request."/>
</arg>
<arg name="identities" direction="in" type="a(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Array<Identity>"/>
<annotation name="org.gtk.EggDBus.DocString" value="An array of #Identity structs that the user can use for authentication."/>
</arg>
</method>
<method name="CancelAuthentication">
<annotation name="org.gtk.EggDBus.DocString" value="Called by the PolicyKit daemon if the authentication agent needs to cancel an authentication dialog."/>
<arg name="cookie" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The cookie identifying the authentication request."/>
</arg>
</method>
</interface>
</node>
@@ -0,0 +1,438 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="org.freedesktop.PolicyKit1.Authority">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Authority Interface"/>
<annotation name="org.gtk.EggDBus.DocString" value="This D-Bus interface is implemented by the <literal>/org/freedesktop/PoliycKit1/Authority</literal> object on the well-known name <literal>org.freedesktop.PolicyKit1</literal> on the system message bus."/>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- Subject struct -->
<annotation name="org.gtk.EggDBus.DeclareStruct" value="Subject">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Subjects"/>
<annotation name="org.gtk.EggDBus.DocString" value="<para>This struct describes subjects such as UNIX processes. It is typically used to check if a given process is authorized for an action.</para><para>The following kinds of subjects are known:</para>
<formalpara><title>Unix Process</title><para><literal>subject_kind</literal> should be set to <literal>unix-process</literal> with keys <literal>pidfd</literal> (of type <literal>int32</literal>) and <literal>uid</literal> (of type <literal>int32</literal>) (if the operating system supports ProcessID File Descriptors), or alternatively with keys <literal>pid</literal> (of type <literal>uint32</literal>), <literal>uid</literal> (of type <literal>int32</literal>) and <literal>start-time</literal> (of type <literal>uint64</literal>).</para></formalpara>
<formalpara><title>Unix Session</title><para><literal>subject_kind</literal> should be set to <literal>unix-session</literal> with the key <literal>session-id</literal> (of type <literal>string</literal>).</para></formalpara>
<formalpara><title>System Bus Name</title><para><literal>subject_kind</literal> should be set to <literal>system-bus-name</literal> with the key <literal>name</literal> (of type <literal>string</literal>).</para></formalpara>"/>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:subject_kind">
<annotation name="org.gtk.EggDBus.DocString" value="The type of the subject."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Dict<String,Variant>:subject_details">
<annotation name="org.gtk.EggDBus.DocString" value="Details about the subject. Depending of the value of @subject_kind, a set of well-defined key/value pairs are guaranteed to be available."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- Identity struct -->
<annotation name="org.gtk.EggDBus.DeclareStruct" value="Identity">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Identities"/>
<annotation name="org.gtk.EggDBus.DocString" value="<para>This struct describes identities such as UNIX users and UNIX groups. It is typically used to check if a given process is authorized for an action.</para><para>The following kinds of identities are known:</para>
<formalpara><title>Unix User</title><para><literal>identity_kind</literal> should be set to <literal>unix-user</literal> with key <literal>uid</literal> (of type <literal>uint32</literal>).</para></formalpara>
<formalpara><title>Unix Group</title><para><literal>identity_kind</literal> should be set to <literal>unix-group</literal> with key <literal>gid</literal> (of type <literal>uint32</literal>).</para></formalpara>
"/>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:identity_kind">
<annotation name="org.gtk.EggDBus.DocString" value="Type of identity."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Dict<String,Variant>:identity_details">
<annotation name="org.gtk.EggDBus.DocString" value="Details about the identity. Depending of the value of @identity_kind, a set of well-defined key/value pairs are guaranteed to be available."/>
</annotation>
<!-- TODO: document values in hash map for each identity type-->
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- ActionDescription struct -->
<annotation name="org.gtk.EggDBus.DeclareStruct" value="ActionDescription">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Actions"/>
<annotation name="org.gtk.EggDBus.DocString" value="This struct describes actions registered with the PolicyKit daemon."/>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:action_id">
<annotation name="org.gtk.EggDBus.DocString" value="Action Identifier."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:description">
<annotation name="org.gtk.EggDBus.DocString" value="Localized description of the action."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:message">
<annotation name="org.gtk.EggDBus.DocString" value="Localized message to be displayed when making the user authenticate for an action."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:vendor_name">
<annotation name="org.gtk.EggDBus.DocString" value="Name of the provider of the action or the empty string."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:vendor_url">
<annotation name="org.gtk.EggDBus.DocString" value="A URL pointing to a place with more information about the action or the empty string."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:icon_name">
<annotation name="org.gtk.EggDBus.DocString" value="The themed icon describing the action or the empty string if no icon is set."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="ImplicitAuthorization:implicit_any">
<annotation name="org.gtk.EggDBus.Type" value="ImplicitAuthorization"/>
<annotation name="org.gtk.EggDBus.DocString" value="A value from the #ImplicitAuthorization enumeration for implicit authorizations that apply to any #Subject."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="ImplicitAuthorization:implicit_inactive">
<annotation name="org.gtk.EggDBus.Type" value="ImplicitAuthorization"/>
<annotation name="org.gtk.EggDBus.DocString" value="A value from the #ImplicitAuthorization enumeration for implicit authorizations that apply any #Subject in an inactive user session on the local console."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="ImplicitAuthorization:implicit_active">
<annotation name="org.gtk.EggDBus.Type" value="ImplicitAuthorization"/>
<annotation name="org.gtk.EggDBus.DocString" value="A value from the #ImplicitAuthorization enumeration for implicit authorizations that apply any #Subject in an active user session on the local console."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Dict<String,String>:annotations">
<annotation name="org.gtk.EggDBus.DocString" value="Annotations for the action."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- Flags used for checking authorizations -->
<annotation name="org.gtk.EggDBus.DeclareFlags" value="CheckAuthorizationFlags">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Flags used when checking authorizations"/>
<annotation name="org.gtk.EggDBus.DocString" value="Flags used in the org.freedesktop.PolicyKit1.Authority.CheckAuthorization() method."/>
<annotation name="org.gtk.EggDBus.Flags.Member" value="AllowUserInteraction">
<annotation name="org.gtk.EggDBus.DocString" value="If the #Subject can obtain the authorization through authentication, and an authentication agent is available, then attempt to do so. Note, this means that the org.freedesktop.PolicyKit1.Authority.CheckAuthorization() method will block while the user is being asked to authenticate."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- An structure containing the results of an authorization check -->
<annotation name="org.gtk.EggDBus.DeclareStruct" value="AuthorizationResult">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Authorization Results"/>
<annotation name="org.gtk.EggDBus.DocString" value="Describes the result of calling org.freedesktop.PolicyKit1.Authority.CheckAuthorization()."/>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Boolean:is_authorized">
<annotation name="org.gtk.EggDBus.DocString" value="TRUE if the given #Subject is authorized for the given action."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Boolean:is_challenge">
<annotation name="org.gtk.EggDBus.DocString" value="TRUE if the given #Subject could be authorized if more information was provided, and %CheckAuthorizationFlags.AllowUserInteraction wasn't passed or no suitable authentication agent was available."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Dict<String,String>:details">
<annotation name="org.gtk.EggDBus.DocString" value="Details for the result or empty if not authorized. Known key/value-pairs include <literal>polkit.temporary_authorization_id</literal> (if the authorization is temporary, this is set to the opaque temporary authorization id), <literal>polkit.retains_authorization_after_challenge</literal> (Set to a non-empty string if the authorization will be retained after authentication (if is_challenge is TRUE)) and <literal>polkit.lockdown</literal> (set to a non-empty string if the action is locked down)."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- An enumeration for implicit authorizations -->
<annotation name="org.gtk.EggDBus.DeclareEnum" value="ImplicitAuthorization">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Implicit authorizations"/>
<annotation name="org.gtk.EggDBus.DocString" value="An enumeration for granting implicit authorizations."/>
<annotation name="org.gtk.EggDBus.Enum.Member" value="NotAuthorized">
<annotation name="org.gtk.EggDBus.DocString" value="The #Subject is not authorized."/>
</annotation>
<annotation name="org.gtk.EggDBus.Enum.Member" value="AuthenticationRequired">
<annotation name="org.gtk.EggDBus.DocString" value="Authentication is required."/>
</annotation>
<annotation name="org.gtk.EggDBus.Enum.Member" value="AdministratorAuthenticationRequired">
<annotation name="org.gtk.EggDBus.DocString" value="Authentication as an administrator is required."/>
</annotation>
<annotation name="org.gtk.EggDBus.Enum.Member" value="AuthenticationRequiredRetained">
<annotation name="org.gtk.EggDBus.DocString" value="Authentication is required. If the authorization is obtained, it is retained."/>
</annotation>
<annotation name="org.gtk.EggDBus.Enum.Member" value="AdministratorAuthenticationRequiredRetained">
<annotation name="org.gtk.EggDBus.DocString" value="Authentication as an administrator is required. If the authorization is obtained, it is retained."/>
</annotation>
<annotation name="org.gtk.EggDBus.Enum.Member" value="Authorized">
<annotation name="org.gtk.EggDBus.DocString" value="The subject is authorized."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- The error domain used for reporting errors -->
<annotation name="org.gtk.EggDBus.DeclareErrorDomain" value="Error">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Errors"/>
<annotation name="org.gtk.EggDBus.DocString" value="Errors that can be returned by various method calls."/>
<annotation name="org.gtk.EggDBus.ErrorDomain.Member" value="org.freedesktop.PolicyKit1.Error.Failed">
<annotation name="org.gtk.EggDBus.DocString" value="The operation failed."/>
</annotation>
<annotation name="org.gtk.EggDBus.ErrorDomain.Member" value="org.freedesktop.PolicyKit1.Error.Cancelled">
<annotation name="org.gtk.EggDBus.DocString" value="The operation was cancelled."/>
</annotation>
<annotation name="org.gtk.EggDBus.ErrorDomain.Member" value="org.freedesktop.PolicyKit1.Error.NotSupported">
<annotation name="org.gtk.EggDBus.DocString" value="The operation is not supported."/>
</annotation>
<annotation name="org.gtk.EggDBus.ErrorDomain.Member" value="org.freedesktop.PolicyKit1.Error.NotAuthorized">
<annotation name="org.gtk.EggDBus.DocString" value="You are not authorized to perform the requested operation."/>
</annotation>
<!-- errors not exposed in GObject library follows here -->
<annotation name="org.gtk.EggDBus.ErrorDomain.Member" value="org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique">
<annotation name="org.gtk.EggDBus.ErrorDomain.Member.Value" value="1000"/>
<annotation name="org.gtk.EggDBus.DocString" value="The passed @cancellation_id is already in use."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- Flags describing what features the Authority implementation supports -->
<annotation name="org.gtk.EggDBus.DeclareFlags" value="AuthorityFeatures">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Authority Features"/>
<annotation name="org.gtk.EggDBus.DocString" value="Flags describing features supported by the Authority implementation."/>
<annotation name="org.gtk.EggDBus.Flags.Member" value="TemporaryAuthorization">
<annotation name="org.gtk.EggDBus.DocString" value="The authority supports temporary authorizations that can be obtained through authentication."/>
</annotation>
<annotation name="org.gtk.EggDBus.Flags.Member" value="Lockdown">
<annotation name="org.gtk.EggDBus.DocString" value="The authority supports the org.freedesktop.PolicyKit1.Authority.AddLockdownForAction() and org.freedesktop.PolicyKit1.Authority.RemoveLockdownForAction() methods."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<property name="BackendName" type="s" access="read">
<annotation name="org.gtk.EggDBus.DocString" value="The name of the currently used Authority backend."/>
</property>
<property name="BackendVersion" type="s" access="read">
<annotation name="org.gtk.EggDBus.DocString" value="The version of the currently used Authority backend."/>
</property>
<property name="BackendFeatures" type="u" access="read">
<annotation name="org.gtk.EggDBus.Type" value="AuthorityFeatures"/>
<annotation name="org.gtk.EggDBus.DocString" value="The features supported by the currently used Authority backend."/>
</property>
<!-- ---------------------------------------------------------------------------------------------------- -->
<method name="EnumerateActions">
<annotation name="org.gtk.EggDBus.DocString" value="Enumerates all registered PolicyKit actions."/>
<arg name="locale" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The locale to get descriptions in or the blank string to use the system locale."/>
</arg>
<arg name="action_descriptions" direction="out" type="a(ssssssuuua{ss})">
<annotation name="org.gtk.EggDBus.Type" value="Array<ActionDescription>"/>
<annotation name="org.gtk.EggDBus.DocString" value="An array of #ActionDescription structs."/>
</arg>
</method>
<!-- ---------------------------------------------------------------------------------------------------- -->
<method name="CheckAuthorization">
<annotation name="org.gtk.EggDBus.DocString" value="<para>Checks if @subject is authorized to perform the action with identifier @action_id.</para><para>If @cancellation_id is non-empty and already in use for the caller, the %org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique error is returned.</para><para>Note that %CheckAuthorizationFlags.AllowUserInteraction SHOULD be passed ONLY if the event that triggered the authorization check is stemming from an user action, e.g. the user pressing a button or attaching a device.</para>"/>
<arg name="subject" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.DocString" value="A #Subject struct."/>
<annotation name="org.gtk.EggDBus.Type" value="Subject"/>
</arg>
<arg name="action_id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="Identifier for the action that @subject is attempting to do."/>
</arg>
<arg name="details" direction="in" type="a{ss}">
<annotation name="org.gtk.EggDBus.DocString" value="Details describing the action. Keys starting with <literal>polkit.</literal> are reserved for internal use and cannot be used."/>
</arg>
<arg name="flags" direction="in" type="u">
<annotation name="org.gtk.EggDBus.Type" value="CheckAuthorizationFlags"/>
<annotation name="org.gtk.EggDBus.DocString" value="A set of #CheckAuthorizationFlags."/>
</arg>
<arg name="cancellation_id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="A unique id used to cancel the the authentication check via org.freedesktop.PolicyKit1.Authority.CancelCheckAuthorization() or the empty string if cancellation is not needed."/>
</arg>
<arg name="result" direction="out" type="(bba{ss})">
<annotation name="org.gtk.EggDBus.Type" value="AuthorizationResult"/>
<annotation name="org.gtk.EggDBus.DocString" value="An #AuthorizationResult structure."/>
</arg>
</method>
<method name="CancelCheckAuthorization">
<annotation name="org.gtk.EggDBus.DocString" value="Cancels an authorization check."/>
<arg name="cancellation_id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The @cancellation_id passed to org.freedesktop.PolicyKit1.Authority.CheckAuthorization()."/>
</arg>
</method>
<!-- ---------------------------------------------------------------------------------------------------- -->
<method name="RegisterAuthenticationAgent">
<annotation name="org.gtk.EggDBus.DocString" value="<para>Register an authentication agent.</para><para>Note that this should be called by the same effective UID which will be passed to org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2().</para>"/>
<arg name="subject" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Subject"/>
<annotation name="org.gtk.EggDBus.DocString" value="The subject to register the authentication agent for, typically a session subject."/>
</arg>
<arg name="locale" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The locale of the authentication agent."/>
</arg>
<arg name="object_path" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The object path of authentication agent object on the unique name of the caller."/>
</arg>
</method>
<method name="UnregisterAuthenticationAgent">
<annotation name="org.gtk.EggDBus.DocString" value="Unregister an authentication agent."/>
<arg name="subject" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Subject"/>
<annotation name="org.gtk.EggDBus.DocString" value="The @subject passed to org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent()."/>
</arg>
<arg name="object_path" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The @object_path passed to org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent()."/>
</arg>
</method>
<method name="AuthenticationAgentResponse">
<annotation name="org.gtk.EggDBus.DocString" value="Method for authentication agents to invoke on successful
authentication, intended only for use by a privileged helper process
internal to polkit. This method will fail unless a sufficiently privileged
caller invokes it. Deprecated in favor of org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2."/>
<arg name="cookie" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The cookie identifying the authentication request that was passed to the authentication agent."/>
</arg>
<arg name="identity" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Identity"/>
<annotation name="org.gtk.EggDBus.DocString" value="A #Identity struct describing what identity was authenticated."/>
</arg>
</method>
<method name="AuthenticationAgentResponse2">
<annotation name="org.gtk.EggDBus.DocString" value="Method for authentication agents to invoke on successful
authentication, intended only for use by a privileged helper process
internal to polkit. This method will fail unless a sufficiently privileged
caller invokes it. Note this method was added in 0.114, and should be preferred over org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse()
as it fixes a security issue."/>
<arg name="uid" direction="in" type="u">
<annotation name="org.gtk.EggDBus.DocString" value="The real uid of the agent. Normally set by the setuid helper program.
Must match the effective UID of the caller of org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent()."/>
</arg>
<arg name="cookie" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The cookie identifying the authentication request that was passed to the authentication agent."/>
</arg>
<arg name="identity" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Identity"/>
<annotation name="org.gtk.EggDBus.DocString" value="A #Identity struct describing what identity was authenticated."/>
</arg>
</method>
<!-- ---------------------------------------------------------------------------------------------------- -->
<!-- TemporaryAuthorization struct -->
<annotation name="org.gtk.EggDBus.DeclareStruct" value="TemporaryAuthorization">
<annotation name="org.gtk.EggDBus.DocString.Summary" value="Temporary Authorizations"/>
<annotation name="org.gtk.EggDBus.DocString" value="This struct describes a temporary authorization."/>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:id">
<annotation name="org.gtk.EggDBus.DocString" value="An opaque identifier for the temporary authorization."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="String:action_id">
<annotation name="org.gtk.EggDBus.DocString" value="The action the temporary authorization is for."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Subject:subject">
<annotation name="org.gtk.EggDBus.Type" value="Subject"/>
<annotation name="org.gtk.EggDBus.DocString" value="The subject the temporary authorization is for."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="UInt64:time_obtained">
<annotation name="org.gtk.EggDBus.DocString" value="When the temporary authorization was obtained, in seconds since the Epoch Jan 1, 1970 0:00 UTC."/>
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="UInt64:time_expires">
<annotation name="org.gtk.EggDBus.DocString" value="When the temporary authorization is set to expire, in seconds since the Epoch Jan 1, 1970 0:00 UTC."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
<method name="EnumerateTemporaryAuthorizations">
<annotation name="org.gtk.EggDBus.DocString" value="Retrieves all temporary authorizations that applies to @subject."/>
<arg name="subject" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Subject"/>
<annotation name="org.gtk.EggDBus.DocString" value="The subject to get temporary authorizations for."/>
</arg>
<arg name="temporary_authorizations" direction="out" type="a(ss(sa{sv})tt)">
<annotation name="org.gtk.EggDBus.Type" value="Array<TemporaryAuthorization>"/>
<annotation name="org.gtk.EggDBus.DocString" value="An array of #TemporaryAuthorization structs."/>
</arg>
</method>
<method name="RevokeTemporaryAuthorizations">
<annotation name="org.gtk.EggDBus.DocString" value="Revokes all temporary authorizations that applies to @subject."/>
<arg name="subject" direction="in" type="(sa{sv})">
<annotation name="org.gtk.EggDBus.Type" value="Subject"/>
<annotation name="org.gtk.EggDBus.DocString" value="The subject to revoke temporary authorizations from."/>
</arg>
</method>
<method name="RevokeTemporaryAuthorizationById">
<annotation name="org.gtk.EggDBus.DocString" value="Revokes all temporary authorizations that applies to @subject."/>
<arg name="id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="The opaque identifier of the temporary authorization."/>
</arg>
</method>
<!-- ---------------------------------------------------------------------------------------------------- -->
<method name="AddLockdownForAction">
<annotation name="org.gtk.EggDBus.DocString" value="Locks down an action so administrator authentication is always needed to obtain a temporary authorization for the action."/>
<arg name="action_id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="Identifier for the action."/>
</arg>
</method>
<method name="RemoveLockdownForAction">
<annotation name="org.gtk.EggDBus.DocString" value="Removes the effect of a previous org.freedesktop.PolicyKit1.Authority.AddLockdownForAction() call."/>
<arg name="action_id" direction="in" type="s">
<annotation name="org.gtk.EggDBus.DocString" value="Identifier for the action."/>
</arg>
</method>
<!-- ---------------------------------------------------------------------------------------------------- -->
<signal name="Changed">
<annotation name="org.gtk.EggDBus.DocString" value="This signal is emitted when actions and/or authorizations change"/>
</signal>
</interface>
</node>
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="@polkitd_user@">
<allow own="org.freedesktop.PolicyKit1"/>
</policy>
<policy context="default">
<allow send_destination="org.freedesktop.PolicyKit1"/>
</policy>
<!-- Allow uid 0 to send messages on the org.freedesktop.PolicyKit1.AuthenticationAgent interface -->
<policy user="@polkitd_user@">
<allow send_interface="org.freedesktop.PolicyKit1.AuthenticationAgent"/>
</policy>
</busconfig>
@@ -0,0 +1,5 @@
[D-BUS Service]
Name=org.freedesktop.PolicyKit1
Exec=@libprivdir@/polkitd --no-debug
User=root
SystemdService=polkit.service
@@ -0,0 +1,26 @@
<!ELEMENT policyconfig (vendor?, vendor_url?, icon_name?, action+)>
<!ELEMENT vendor (#PCDATA)>
<!ELEMENT vendor_url (#PCDATA)>
<!ELEMENT icon_name (#PCDATA)>
<!ELEMENT action (vendor?, vendor_url?, description+, message+, icon_name?, defaults, annotate*)>
<!ATTLIST action id CDATA #REQUIRED>
<!ELEMENT description (#PCDATA)>
<!ATTLIST description gettext-domain CDATA #IMPLIED>
<!ATTLIST description xml:lang CDATA #IMPLIED>
<!ELEMENT message (#PCDATA)>
<!ATTLIST message gettext-domain CDATA #IMPLIED>
<!ATTLIST message xml:lang CDATA #IMPLIED>
<!ELEMENT defaults (allow_any|allow_inactive|allow_active)*>
<!-- CDATA must be one of no, auth_self, auth_admin, auth_self_keep, auth_admin_keep, yes -->
<!ELEMENT allow_any (#PCDATA)>
<!ELEMENT allow_inactive (#PCDATA)>
<!ELEMENT allow_active (#PCDATA)>
<!ELEMENT annotate (#PCDATA)>
<!ATTLIST annotate key CDATA #REQUIRED>
@@ -0,0 +1,6 @@
#%PAM-1.0
auth include @PAM_FILE_INCLUDE_AUTH@
account include @PAM_FILE_INCLUDE_ACCOUNT@
password include @PAM_FILE_INCLUDE_PASSWORD@
session include @PAM_FILE_INCLUDE_SESSION@
@@ -0,0 +1,11 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: polkit-agent-1
Description: PolicyKit Authentication Agent API
Version: @VERSION@
Libs: -L${libdir} -lpolkit-agent-1
Cflags: -I${includedir}/polkit-1
Requires: polkit-gobject-1
@@ -0,0 +1,17 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
rulesdir=@datarootdir@/polkit-1/rules.d/
policydir=@datarootdir@/polkit-1/actions/
actiondir=@datarootdir@/polkit-1/actions/
Name: polkit-gobject-1
Description: PolicyKit Authorization API
Version: @VERSION@
Libs: -L${libdir} -lpolkit-gobject-1
Cflags: -I${includedir}/polkit-1
Requires: gio-2.0 >= 2.18 glib-2.0 >= 2.18
# Programs using pkcheck can use this to determine
# whether or not it can be passed a uid.
pkcheck_supports_uid=true
@@ -0,0 +1 @@
u @polkitd_user@ @polkitd_uid@ "User for polkitd"
@@ -0,0 +1,35 @@
[Unit]
Description=Authorization Manager
Documentation=man:polkit(8)
[Service]
Type=dbus
BusName=org.freedesktop.PolicyKit1
CapabilityBoundingSet=CAP_SETUID CAP_SETGID
DeviceAllow=/dev/null rw
DevicePolicy=strict
ExecStart=@libprivdir@/polkitd --no-debug
User=@polkitd_user@
LimitMEMLOCK=0
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
PrivateDevices=yes
PrivateNetwork=yes
PrivateTmp=yes
ProtectControlGroups=yes
ProtectHome=yes
ProtectKernelModules=yes
ProtectKernelLogs=yes
ProtectKernelTunables=yes
ProtectSystem=strict
ProtectClock=yes
ProtectHostname=yes
RemoveIPC=yes
RestrictAddressFamilies=AF_UNIX
RestrictNamespaces=yes
RestrictRealtime=yes
RestrictSUIDSGID=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
UMask=0077
@@ -0,0 +1,44 @@
PolicyKit to polkit1 migration notes (DRAFT)
Build files:
• Replace polkit-dbus and polkit-grant with polkit-gobject-1 >= 0.91
• There's no polkit-policy-file-validate in 0.91 yet.
• The install directory for *.policy files is now $datadir/polkit-1/actions
not $datadir/PolicyKit/policy
Policy files:
• There's no more auth_admin_keep_always authorisation. Use auth_admin_keep
instead, and rethink what you're trying to achieve.
auth_admin_keep is kept for the lifetime of the PolkitSubject.
• If you're getting messages about "action foo is not registered" then check
the polkitd-1 daemon output -- it'll print the reason why the policy format
is invalid to stdout.
Source files:
• Don't include <polkit-dbus/polkit-dbus.h>, only include <polkit/polkit.h>
• No kit_* OOM handling in the new library
• polkit_sysdeps_get_exe_for_pid() doesn't exist anymore, just read contents
of /proc/<pid>/cmdline
• PolKitContext is now PolkitAuthority
• PolKitError is now GError
• polkit_bool_t is now gboolean
• PolKitCaller is now PolkitSubject and a lot less powerful, but much quicker
to create
• polkit_caller_new_from_dbus_name() to polkit_system_bus_name_new()
• PolKitAction is no more, just use the action_id everywhere.
• polkit_context_is_caller_authorized() to
polkit_authority_check_authorization_sync()
• No need to do polkit_context_set_io_watch_functions() and icky
g_io_add_watch() stuff to get changes from Polkit
• polkit_context_new() to polkit_authority_get(), and polkit_context_unref() to
g_object_unref() as expected
• polkit_caller_get_pid() no longer exists, use
http://cgit.freedesktop.org/PolicyKit/tree/src/polkit-dbus/polkit-dbus.c?id=POLICY_KIT_0_9#n417
• polkit_caller_get_uid() no longer exists, use dbus_bus_get_unix_user() as in
http://cgit.freedesktop.org/PolicyKit/tree/src/polkit-dbus/polkit-dbus.c?id=POLICY_KIT_0_9#n411
• If you want data about the session from the PolKitContext, you have to ask
ConsoleKit directly as in http://cgit.freedesktop.org/PolicyKit/tree/src/polkit-dbus/polkit-dbus.c?id=POLICY_KIT_0_9#n467
@@ -0,0 +1,20 @@
Needed for 1.0
--------------
- check that all public but unstable API is properly guard off with
I_KNOW_THIS_API_IS_SUBJECT_TO_CHANGE_ETC
- man page review / section review
- make sure library API is reasonably MT-safe
- avoid watching all name owner changes in PolkitBackendAuthority and
PolkitBackendServer; remove the name-owner-changed vfunc
GNOME Authentication Agent
--------------------------
- maybe expand on the notification icon so it is more detailed
what temporary authorizations the session has - and maybe a way
to only drop some of them
@@ -0,0 +1 @@
@libdir@/polkit-1/extensions
@@ -0,0 +1,36 @@
xsltproc = find_program('xsltproc', required: false)
assert(xsltproc.found(), 'xsltproc is required for man pages generation')
xsltproc_cmd = [
xsltproc,
'--output', '@OUTPUT@',
'--nonet',
'--stringparam', 'man.base.url.for.relative.links', pk_api_docpath + '/',
'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
'@INPUT@',
]
mans = [
['polkit', '8'],
['polkitd', '8'],
['pkexec', '1'],
['pkcheck', '1'],
['pkaction', '1'],
['pkttyagent', '1'],
]
foreach man: mans
xml = files(man[0] + '.xml')
content_files += xml
output = '@0@.@1@'.format(man[0], man[1])
custom_target(
output,
input: xml,
output: output,
command: xsltproc_cmd,
install: true,
install_dir: pk_mandir / ('man' + man[1]),
)
endforeach
@@ -0,0 +1,102 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
]>
<refentry id="pkaction.1" xmlns:xi="http://www.w3.org/2003/XInclude">
<refentryinfo>
<title>pkaction</title>
<date>May 2009</date>
<productname>polkit</productname>
</refentryinfo>
<refmeta>
<refentrytitle>pkaction</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="version"></refmiscinfo>
</refmeta>
<refnamediv>
<refname>pkaction</refname>
<refpurpose>Get details about a registered action</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>pkaction</command>
<arg><option>--version</option></arg>
<arg><option>--help</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>pkaction</command>
<group>
<arg choice="plain">
<option>--verbose</option>
</arg>
</group>
</cmdsynopsis>
<cmdsynopsis>
<command>pkaction</command>
<arg choice="plain">
<option>--action-id</option>
<replaceable>action</replaceable>
</arg>
<group>
<arg choice="plain">
<option>--verbose</option>
</arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="pkaction-description">
<title>DESCRIPTION</title>
<para>
<command>pkaction</command> is used to obtain information about registered
polkit actions. If called without <option>--action-id</option> then all
actions are displayed. Otherwise the action <replaceable>action</replaceable>.
If called without the <option>--verbose</option> option only the name
of the action is shown. Otherwise details about the actions are shown.
</para>
</refsect1>
<refsect1 id="pkaction-return-values">
<title>RETURN VALUE</title>
<para>
On success <command>pkaction</command> returns 0. Otherwise a
non-zero value is returned and a diagnostic message is printed
on standard error.
</para>
</refsect1>
<refsect1 id="pkaction-author"><title>AUTHOR</title>
<para>
Written by David Zeuthen <email>davidz@redhat.com</email> with
a lot of help from many others.
</para>
</refsect1>
<refsect1 id="pkaction-bugs">
<title>BUGS</title>
<para>
Please send bug reports to either the distribution or the
polkit-devel mailing list,
see the link <ulink url="https://gitlab.freedesktop.org/polkit/polkit/-/issues/"/>
on how to subscribe.
</para>
</refsect1>
<refsect1 id="pkaction-see-also">
<title>SEE ALSO</title>
<para>
<link linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="polkitd.8"><citerefentry><refentrytitle>polkitd</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="pkcheck.1"><citerefentry><refentrytitle>pkcheck</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkexec.1"><citerefentry><refentrytitle>pkexec</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkttyagent.1"><citerefentry><refentrytitle>pkttyagent</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>
</para>
</refsect1>
</refentry>
@@ -0,0 +1,224 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
]>
<refentry id="pkcheck.1" xmlns:xi="http://www.w3.org/2003/XInclude">
<refentryinfo>
<title>pkcheck</title>
<date>May 2009</date>
<productname>polkit</productname>
</refentryinfo>
<refmeta>
<refentrytitle>pkcheck</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="version"></refmiscinfo>
</refmeta>
<refnamediv>
<refname>pkcheck</refname>
<refpurpose>Check whether a process is authorized</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>pkcheck</command>
<arg><option>--version</option></arg>
<arg><option>--help|-h</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>pkcheck</command>
<arg><option>--list-temp</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>pkcheck</command>
<arg><option>--revoke-temp</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>pkcheck</command>
<arg choice="plain">
<option>--action-id|-a</option>
<replaceable>action</replaceable>
</arg>
<group choice="req">
<arg choice="plain">
<option>--process|-p</option>
<group choice="req">
<arg choice="plain">
<replaceable>pid</replaceable>
</arg>
<arg choice="plain">
<replaceable>pid,pid-start-time</replaceable>
</arg>
<arg choice="plain">
<replaceable>pid,pid-start-time,uid</replaceable>
</arg>
</group>
</arg>
<arg choice="plain">
<option>--system-bus-name|-s</option>
<replaceable>busname</replaceable>
</arg>
</group>
<group>
<arg choice="plain">
<option>--allow-user-interaction|-u</option>
</arg>
</group>
<group>
<arg choice="plain">
<option>--enable-internal-agent</option>
</arg>
</group>
<group rep="repeat">
<arg choice="plain">
<option>--detail|-d</option>
<replaceable>key</replaceable>
<replaceable>value</replaceable>
</arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="pkcheck-descsription">
<title>DESCRIPTION</title>
<para>
<command>pkcheck</command> is used to check whether a process, specified by
either <option>--process</option> (see below) or <option>--system-bus-name</option>,
is authorized for <replaceable>action</replaceable>. The <option>--detail</option>
option can be used zero or more times to pass details about <replaceable>action</replaceable>.
If <option>--allow-user-interaction</option> is passed, <command>pkcheck</command> blocks
while waiting for authentication.
</para>
<para>
The invocation <command>pkcheck --list-temp</command> will list
all temporary authorizations for the current session and
<command>pkcheck --revoke-temp</command> will revoke all
temporary authorizations for the current session.
</para>
<para>
This command is a simple wrapper around the polkit D-Bus interface; see the
D-Bus interface documentation for details.
</para>
</refsect1>
<refsect1 id="pkcheck-return-value">
<title>RETURN VALUE</title>
<para>
If the specified process is
authorized, <command>pkcheck</command> exits with a return value
of 0. If the authorization result contains any details, these
are printed on standard output as key/value pairs using
environment style reporting, e.g. first the key followed by a an equal sign, then the
value followed by a newline.
<programlisting>
KEY1=VALUE1
KEY2=VALUE2
KEY3=VALUE3
...</programlisting>
Octets that are not in [a-zA-Z0-9_] are escaped using octal codes prefixed
with <emphasis>\</emphasis>.
For example, the UTF-8 string <emphasis>føl,你好</emphasis> will be printed
as <emphasis>f\303\270l\54\344\275\240\345\245\275</emphasis>.
</para>
<para>
If the specified process is not
authorized, <command>pkcheck</command> exits with a return value
of 1 and a diagnostic message is printed on standard error. Details
are printed on standard output.
</para>
<para>
If the specified process is not
authorized because no suitable authentication agent is available or if the
<option>--allow-user-interaction</option> wasn't passed, <command>pkcheck</command>
exits with a return value of 2 and a diagnostic message is printed on standard error.
Details are printed on standard output.
</para>
<para>
If the specified process is not authorized because the
authentication dialog / request was dismissed by the user,
<command>pkcheck</command> exits with a return value of 3 and a
diagnostic message is printed on standard error. Details are
printed on standard output.
</para>
<para>
If an error occurred while checking for authorization, <command>pkcheck</command> exits
with a return value of 127 with a diagnostic message printed on standard error.
</para>
<para>
If one or more of the options passed are malformed, <command>pkcheck</command> exits
with a return value of 126. If stdin is a tty, then this manual page is also shown.
</para>
</refsect1>
<refsect1 id="pkcheck-notes">
<title>NOTES</title>
<para>
Do not use either the bare <replaceable>pid</replaceable> or
<replaceable>pid,start-time</replaceable> syntax forms for
<option>--process</option>. There are race conditions in both.
New code should always use
<replaceable>pid,pid-start-time,uid</replaceable>. The value of
<replaceable>start-time</replaceable> can be determined by
consulting e.g. the
<citerefentry><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>
file system depending on the operating system. If fewer than 3
arguments are passed, <command>pkcheck</command> will attempt to
look up them up internally, but note that this may be racy.
</para>
<para>
If your program is a daemon with e.g. a custom Unix domain
socket, you should determine the <replaceable>uid</replaceable>
parameter via operating system mechanisms such as
<literal>PEERCRED</literal>.
</para>
</refsect1>
<refsect1 id="pkcheck-auth-agent"><title>AUTHENTICATION AGENT</title>
<para>
<command>pkcheck</command>, like any other polkit
application, will use the authentication agent registered for
the process in question. However, if no authentication agent is
available, then <command>pkcheck</command> can register its own
textual authentication agent if the option
<option>--enable-internal-agent</option> is passed.
</para>
</refsect1>
<refsect1 id="pkcheck-author"><title>AUTHOR</title>
<para>
Written by David Zeuthen <email>davidz@redhat.com</email> with
a lot of help from many others.
</para>
</refsect1>
<refsect1 id="pkcheck-bugs">
<title>BUGS</title>
<para>
Please send bug reports to either the distribution or the
polkit-devel mailing list,
see the link <ulink url="https://gitlab.freedesktop.org/polkit/polkit/-/issues/"/>
on how to subscribe.
</para>
</refsect1>
<refsect1 id="pkcheck-see-also">
<title>SEE ALSO</title>
<para>
<link linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="polkitd.8"><citerefentry><refentrytitle>polkitd</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="pkaction.1"><citerefentry><refentrytitle>pkaction</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkexec.1"><citerefentry><refentrytitle>pkexec</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkttyagent.1"><citerefentry><refentrytitle>pkttyagent</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>
</para>
</refsect1>
</refentry>
@@ -0,0 +1,284 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
]>
<refentry id="pkexec.1" xmlns:xi="http://www.w3.org/2003/XInclude">
<refentryinfo>
<title>pkexec</title>
<date>May 2009</date>
<productname>polkit</productname>
</refentryinfo>
<refmeta>
<refentrytitle>pkexec</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="version"></refmiscinfo>
</refmeta>
<refnamediv>
<refname>pkexec</refname>
<refpurpose>Execute a command as another user</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>pkexec</command>
<arg><option>--version</option></arg>
<arg><option>--disable-internal-agent</option></arg>
<arg><option>--help</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>pkexec</command>
<arg choise="plain">
<option>--keep-cwd</option>
</arg>
<group>
<arg choice="plain">
<option>--user</option>
<replaceable>username</replaceable>
</arg>
</group>
<arg choice="plain"><replaceable>PROGRAM</replaceable></arg>
<group rep="repeat">
<arg choice="plain"><replaceable>ARGUMENTS</replaceable></arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="pkexec-description"><title>DESCRIPTION</title>
<para>
<command>pkexec</command> allows an authorized user to execute
<replaceable>PROGRAM</replaceable> as another user. If
<replaceable>PROGRAM</replaceable> is not specified, the default
shell will be run. If <replaceable>username</replaceable> is
not specified, then the program will be executed as the
administrative super user, <emphasis>root</emphasis>.
</para>
</refsect1>
<refsect1 id="pkexec-return-value"><title>RETURN VALUE</title>
<para>
Upon successful completion, the return value is the return value
of <replaceable>PROGRAM</replaceable>. If the calling process is
not authorized or an authorization could not be obtained through
authentication or an error occured, <command>pkexec</command>
exits with a return value of 127. If the authorization could not
be obtained because the user dismissed the authentication
dialog, <command>pkexec</command> exits with a return value of
126.
</para>
</refsect1>
<refsect1 id="pkexec-auth-agent"><title>AUTHENTICATION AGENT</title>
<para>
<command>pkexec</command>, like any other polkit application,
will use the authentication agent registered for the calling
process or session. However, if no authentication agent is
available, then <command>pkexec</command> will register its own
textual authentication agent. This behavior can be turned off by
passing the <option>--disable-internal-agent</option> option.
</para>
</refsect1>
<refsect1 id="pkexec-security-notes"><title>SECURITY NOTES</title>
<para>
Executing a program as another user is a privileged
operation. By default the action to check for (see
<xref linkend="pkexec-action"/>) requires administrator
authentication. In addition, the authentication dialog presented
to the user will display the full path to the program to be
executed so the user is aware of what will happen.
</para>
<para>
The environment that <replaceable>PROGRAM</replaceable> will run
it, will be set to a minimal known and safe environment in order
to avoid injecting code
through <literal>LD_LIBRARY_PATH</literal> or similar
mechanisms. In addition the <literal>PKEXEC_UID</literal>
environment variable is set to the user id of the process
invoking <command>pkexec</command>. As a
result, <command>pkexec</command> will not by default allow you to run
X11 applications as another user since
the <literal>$DISPLAY</literal> and <literal>$XAUTHORITY</literal>
environment variables are not set. These two variables will be retained
if the <emphasis>org.freedesktop.policykit.exec.allow_gui</emphasis> annotation
on an action is set to a nonempty value; this is discouraged, though, and
should only be used for legacy programs.
</para>
<para>
<command>pkexec</command> will run <replaceable>PROGRAM</replaceable>
in <replaceable>username</replaceable>'s home directory, unless
<option>--keep-cwd</option> is used to override this behavior
</para>
<para>
Note that <command>pkexec</command> does no validation of
the <replaceable>ARGUMENTS</replaceable> passed
to <replaceable>PROGRAM</replaceable>. In the normal case (where
administrator authentication is required every
time <command>pkexec</command> is used), this is not a problem
since if the user is an administrator he might as well just
run <command>pkexec bash</command> to get root.
</para>
<para>
However, if an action is used for which the user can retain
authorization (or if the user is implicitly authorized) this
could be a security hole. Therefore, as a rule of thumb,
programs for which the default required authorization is
changed, should <emphasis role='strong'>never</emphasis> implicitly trust user input (e.g. like any
other well-written <emphasis>suid</emphasis> program).
</para>
</refsect1>
<refsect1 id="pkexec-action"><title>ACTION AND AUTHORIZATIONS</title>
<para>
By default, the
<emphasis>org.freedesktop.policykit.exec</emphasis> action is
used. To use another action, use the
<emphasis>org.freedesktop.policykit.exec.path</emphasis>
annotation on an action with the value set to the full path of
the program. In addition to specifying the program, the
authentication message, description, icon and defaults can be
specified. If the <emphasis>org.freedesktop.policykit.exec.argv1</emphasis>
annotation is present, the action will only be picked if the
first argument to the program matches the value of the annotation.
</para>
<para>
Note that authentication messages may reference variables (see
<xref linkend="pkexec-variables"/>), for example
<literal>$(user)</literal> will be expanded to the value of the
<literal>user</literal> variable.
</para>
</refsect1>
<refsect1 id="pkexec-wrapper"><title>WRAPPER USAGE</title>
<para>
To avoid modifying existing software to prefix their
command-line invocations with <command>pkexec</command>,
it's possible to use <command>pkexec</command> in a
<ulink url="http://en.wikipedia.org/wiki/Shebang_(Unix)">she-bang wrapper</ulink>
like this:
</para>
<programlisting><![CDATA[
#!/usr/bin/pkexec /usr/bin/python
import os
import sys
print "Hello, I'm running as uid %d"%(os.getuid())
for n in range(len(sys.argv)):
print "arg[%d]=`%s'"%(n, sys.argv[n])
]]></programlisting>
<para>
If this script is installed into <filename>/usr/bin/my-pk-test</filename>,
then the following annotations
</para>
<programlisting><![CDATA[
[...]
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/python</annotate>
<annotate key="org.freedesktop.policykit.exec.argv1">/usr/bin/my-pk-test</annotate>
[...]
]]></programlisting>
<para>
can be used to select the appropriate polkit action. Be careful
to get the latter annotation right, otherwise it will match any
<command>pkexec</command> invocation of
<filename>/usr/bin/python</filename> scripts.
</para>
</refsect1>
<refsect1 id="pkexec-variables"><title>VARIABLES</title>
<para>
The following variables are set by
<command>pkexec</command>. They can be used in authorization
rules and messages shown in authentication dialogs:
</para>
<variablelist>
<varlistentry>
<term><emphasis>program</emphasis></term>
<listitem>
<para>
Fully qualified path to the program to be executed.
Example: <quote>/bin/cat</quote>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>command_line</emphasis></term>
<listitem>
<para>
The requested command-line (do not use this for any
security checks, it is not secure).
Example: <quote>cat /srv/xyz/foobar</quote>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>user</emphasis></term>
<listitem>
<para>
The user name of the user to execute the program as.
Example: <quote>davidz</quote>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>user.gecos</emphasis></term>
<listitem>
<para>
The full name of the user to execute the program as.
Example: <quote>David Zeuthen</quote>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>user.display</emphasis></term>
<listitem>
<para>
A representation of the user to execute the program as
that is suitable for display in an authentication dialog.
Is typically set to a combination of the user name and the
full name.
Example: <quote>David Zeuthen (davidz)</quote>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="pkexec-author"><title>AUTHOR</title>
<para>
Written by David Zeuthen <email>davidz@redhat.com</email> with
a lot of help from many others.
</para>
</refsect1>
<refsect1 id="pkexec-bugs">
<title>BUGS</title>
<para>
Please send bug reports to either the distribution or the
polkit-devel mailing list,
see the link <ulink url="https://gitlab.freedesktop.org/polkit/polkit/-/issues/"/>
on how to subscribe.
</para>
</refsect1>
<refsect1 id="pkexec-see-also">
<title>SEE ALSO</title>
<para>
<link linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="polkitd.8"><citerefentry><refentrytitle>polkitd</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="pkaction.1"><citerefentry><refentrytitle>pkaction</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkcheck.1"><citerefentry><refentrytitle>pkcheck</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkttyagent.1"><citerefentry><refentrytitle>pkttyagent</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>
</para>
</refsect1>
</refentry>
@@ -0,0 +1,156 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
]>
<refentry id="pkttyagent.1" xmlns:xi="http://www.w3.org/2003/XInclude">
<refentryinfo>
<title>pkttyagent</title>
<date>May 2009</date>
<productname>polkit</productname>
</refentryinfo>
<refmeta>
<refentrytitle>pkttyagent</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="version"></refmiscinfo>
</refmeta>
<refnamediv>
<refname>pkttyagent</refname>
<refpurpose>Textual authentication helper</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>pkttyagent</command>
<arg><option>--version</option></arg>
<arg><option>--help</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>pkttyagent</command>
<group>
<arg choice="plain">
<option>--process</option>
<group choice="req">
<arg choice="plain">
<replaceable>pid</replaceable>
</arg>
<arg choice="plain">
<replaceable>pid,pid-start-time</replaceable>
</arg>
</group>
</arg>
<arg choice="plain">
<option>--system-bus-name</option>
<replaceable>busname</replaceable>
</arg>
</group>
<group>
<arg choice="plain">
<option>--notify-fd</option>
<replaceable>fd</replaceable>
</arg>
</group>
<group>
<arg choice="plain">
<option>--fallback</option>
</arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="pkttyagent-descsription">
<title>DESCRIPTION</title>
<para>
<command>pkttyagent</command> is used to start a textual
authentication agent for the subject specified by either
<option>--process</option> or
<option>--system-bus-name</option>. If neither of these options
are given, the parent process is used.
</para>
<para>
To get notified when the authentication agent has been
registered either listen to the <link
linkend="eggdbus-signal-org.freedesktop.PolicyKit1.Authority::Changed">Changed</link>
D-Bus signal or use <option>--notify-fd</option> to pass the
number of a file descriptor that has been passed to the
program. This file descriptor will then be closed when the
authentication agent has been successfully registered.
</para>
<para>
If <option>--fallback</option> is used, the textual
authentication agent will not replace an existing authentication
agent.
</para>
</refsect1>
<refsect1 id="pkttyagent-return-value">
<title>RETURN VALUE</title>
<para>
If the authentication agent could not be registered,
<command>pkttyagent</command> exits with an exit code of
127. Diagnostic messages are printed on standard error.
</para>
<para>
If one or more of the options passed are malformed,
<command>pkttyagent</command> exits with an exit code of 126. If
stdin is a tty, then this manual page is also shown.
</para>
<para>
If the authentication agent was successfully registered,
<command>pkttyagent</command> will keep running, interacting
with the user as needed. When its services are no longer needed,
the process can be killed.
</para>
</refsect1>
<refsect1 id="pkttyagent-notes">
<title>NOTES</title>
<para>
Since process identifiers can be recycled, the caller should
always use <replaceable>pid,pid-start-time</replaceable> when
using the <option>--process</option> option. The value of
<replaceable>pid-start-time</replaceable> can be determined by
consulting e.g. the
<citerefentry><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>
file system depending on the operating system. If only <replaceable>pid</replaceable>
is passed to the <option>--process</option> option, then <command>pkttyagent</command>
will look up the start time itself but note that this may be racy.
</para>
</refsect1>
<refsect1 id="pkttyagent-author"><title>AUTHOR</title>
<para>
Written by David Zeuthen <email>davidz@redhat.com</email> with
a lot of help from many others.
</para>
</refsect1>
<refsect1 id="pkttyagent-bugs">
<title>BUGS</title>
<para>
Please send bug reports to either the distribution or the
polkit-devel mailing list,
see the link <ulink url="https://gitlab.freedesktop.org/polkit/polkit/-/issues/"/>
on how to subscribe.
</para>
</refsect1>
<refsect1 id="pkttyagent-see-also">
<title>SEE ALSO</title>
<para>
<link linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="polkitd.8"><citerefentry><refentrytitle>polkitd</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="pkaction.1"><citerefentry><refentrytitle>pkaction</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkcheck.1"><citerefentry><refentrytitle>pkcheck</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkexec.1"><citerefentry><refentrytitle>pkexec</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>
</para>
</refsect1>
</refentry>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,86 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
]>
<refentry id="polkitd.8">
<refentryinfo>
<title>polkitd</title>
<date>May 2009</date>
<productname>polkit</productname>
</refentryinfo>
<refmeta>
<refentrytitle>polkitd</refentrytitle>
<manvolnum>8</manvolnum>
<refmiscinfo class="version"></refmiscinfo>
</refmeta>
<refnamediv>
<refname>polkitd</refname>
<refpurpose>The polkit system daemon</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>polkitd</command>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="polkitd-description"><title>DESCRIPTION</title>
<para>
<command>polkitd</command> provides
the <emphasis>org.freedesktop.PolicyKit1</emphasis> D-Bus
service on the system message bus. Users or administrators
should never need to start this daemon as it will be
automatically started by
<citerefentry><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>
or
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
whenever an application calls into the service.
</para>
<para>
<command>polkitd</command> must be started with superuser
privileges but drops privileges early by switching to the
unprivileged <emphasis>polkitd</emphasis> system user.
</para>
<para>
See the <link
linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>
man page for more information.
</para>
</refsect1>
<refsect1 id="polkitd-author"><title>AUTHOR</title>
<para>
Written by David Zeuthen <email>davidz@redhat.com</email> with
a lot of help from many others.
</para>
</refsect1>
<refsect1 id="polkitd-bugs">
<title>BUGS</title>
<para>
Please send bug reports to either the distribution or the
polkit-devel mailing list,
see the link <ulink url="https://gitlab.freedesktop.org/polkit/polkit/-/issues/"/>
on how to subscribe.
</para>
</refsect1>
<refsect1 id="polkitd-see-also">
<title>SEE ALSO</title>
<para>
<link linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>,
<link linkend="pkaction.1"><citerefentry><refentrytitle>pkaction</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkcheck.1"><citerefentry><refentrytitle>pkcheck</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkexec.1"><citerefentry><refentrytitle>pkexec</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<link linkend="pkttyagent.1"><citerefentry><refentrytitle>pkttyagent</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>,
<citerefentry><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>
@@ -0,0 +1,23 @@
pk_api_docpath = pk_prefix / gnome.gtkdoc_html_dir(pk_api_name)
enable_man = get_option('man')
if enable_man
subdir('man')
endif
enable_gtk_doc = get_option('gtk_doc')
if enable_gtk_doc
content_files += configure_file(
input: 'extensiondir.xml.in',
output: '@BASENAME@',
configuration: {'libdir': pk_prefix / pk_libdir},
)
content_files += configure_file(
input: 'version.xml.in',
output: '@BASENAME@',
configuration: {'VERSION': pk_version},
)
subdir('polkit')
endif
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

@@ -0,0 +1,141 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2 //EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id="eggdbus-interface-org.freedesktop.PolicyKit1.AuthenticationAgent">
<refmeta>
<refentrytitle role="top_of_page">org.freedesktop.PolicyKit1.AuthenticationAgent Interface</refentrytitle>
</refmeta>
<refnamediv>
<refname>org.freedesktop.PolicyKit1.AuthenticationAgent Interface</refname>
<refpurpose>Authentication Agent Interface</refpurpose>
</refnamediv>
<refsynopsisdiv role="synopsis">
<title role="synopsis.title">Methods</title>
<synopsis>
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.AuthenticationAgent.BeginAuthentication">BeginAuthentication</link> (IN String action_id,
IN String message,
IN String icon_name,
IN Dict&lt;String,String&gt; details,
IN String cookie,
IN Array&lt;<link linkend="eggdbus-struct-Identity">Identity</link>&gt; identities)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.AuthenticationAgent.CancelAuthentication">CancelAuthentication</link> (IN String cookie)
</synopsis>
</refsynopsisdiv>
<refsect1 role="desc" id="eggdbus-if-description-org.freedesktop.PolicyKit1.AuthenticationAgent">
<title role="desc.title">Description</title>
<para>
<para>This D-Bus interface is used for communication between the system-wide PolicyKit daemon and one or more authentication agents each running in a user session.</para><para>An authentication agent must implement this interface and register (passing the object path of the object implementing the interface) using the <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link> and <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.UnregisterAuthenticationAgent">UnregisterAuthenticationAgent()</link> methods on the <link linkend="eggdbus-interface-org.freedesktop.PolicyKit1.Authority">org.freedesktop.PolicyKit1.Authority</link> interface of the PolicyKit daemon.</para>
</para>
</refsect1>
<refsect1 role="details" id="eggdbus-if-method-details-org.freedesktop.PolicyKit1.AuthenticationAgent">
<title role="details.title">Method Details</title>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.AuthenticationAgent.BeginAuthentication">
<title>BeginAuthentication ()</title>
<programlisting>
BeginAuthentication (IN String action_id,
IN String message,
IN String icon_name,
IN Dict&lt;String,String&gt; details,
IN String cookie,
IN Array&lt;<link linkend="eggdbus-struct-Identity">Identity</link>&gt; identities)
</programlisting>
<para>
<para>
Called by the PolicyKit daemon when the authentication agent
needs the user to authenticate as one of the identities in
<parameter>identities</parameter> for the action with the
identifier <parameter>action_id</parameter>.</para><para>Upon
succesful authentication, the authentication agent must invoke
the <link
linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">AuthenticationAgentResponse2()</link>
method on the <link
linkend="eggdbus-interface-org.freedesktop.PolicyKit1.Authority">org.freedesktop.PolicyKit1.Authority</link>
interface of the PolicyKit daemon before returning. This is normally
achieved via the <link linkend="PolkitAgentSession">PolkitAgentSession</link>
API, which invokes a private setuid helper process to verify the
authentication.
</para>
<para>
The authentication agent should not return until after authentication is complete.
If the user dismisses the authentication dialog, the authentication agent should return the <link linkend="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.Cancelled">org.freedesktop.PolicyKit1.Error.Cancelled</link> error.
</para>
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN String <parameter>action_id</parameter></literal>:</term>
<listitem>
<para>
The identifier for the action that the user is authentication for.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>message</parameter></literal>:</term>
<listitem>
<para>
The message to display to the user. This is translated into the locale passed when registering the authentication agent using <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>icon_name</parameter></literal>:</term>
<listitem>
<para>
The themed icon describing the action or the empty string if no icon is set.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN Dict&lt;String,String&gt; <parameter>details</parameter></literal>:</term>
<listitem>
<para>
Details about the authentication request. This is a dictionary
of key/value pairs where both key and value are strings.
Known key/value-pairs include
<literal>polkit.caller-pid</literal> (the process id of the
mechanism making the authorization check) and
<literal>polkit.subject-pid</literal> (the process id of the
subject the check is for).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>cookie</parameter></literal>:</term>
<listitem>
<para>
A cookie identifying the authentication request.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN Array&lt;<link linkend="eggdbus-struct-Identity">Identity</link>&gt; <parameter>identities</parameter></literal>:</term>
<listitem>
<para>
An array of <link linkend="eggdbus-struct-Identity">Identity</link> structs that the user can use for authentication.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.AuthenticationAgent.CancelAuthentication">
<title>CancelAuthentication ()</title>
<programlisting>
CancelAuthentication (IN String cookie)
</programlisting>
<para>
Called by the PolicyKit daemon if the authentication agent needs to cancel an authentication dialog.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN String <parameter>cookie</parameter></literal>:</term>
<listitem>
<para>
The cookie identifying the authentication request.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
</refsect1>
</refentry>
@@ -0,0 +1,960 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2 //EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id="eggdbus-interface-org.freedesktop.PolicyKit1.Authority">
<refmeta>
<refentrytitle role="top_of_page">org.freedesktop.PolicyKit1.Authority Interface</refentrytitle>
</refmeta>
<refnamediv>
<refname>org.freedesktop.PolicyKit1.Authority Interface</refname>
<refpurpose>Authority Interface</refpurpose>
</refnamediv>
<refsynopsisdiv role="synopsis">
<title role="synopsis.title">Methods</title>
<synopsis>
Flags <link linkend="eggdbus-enum-CheckAuthorizationFlags">CheckAuthorizationFlags</link>
Enumeration <link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link>
ErrorDomain <link linkend="eggdbus-errordomain-org.freedesktop.PolicyKit1.Error.">org.freedesktop.PolicyKit1.Error.*</link>
Flags <link linkend="eggdbus-enum-AuthorityFeatures">AuthorityFeatures</link>
Structure <link linkend="eggdbus-struct-Subject">Subject</link>
Structure <link linkend="eggdbus-struct-Identity">Identity</link>
Structure <link linkend="eggdbus-struct-ActionDescription">ActionDescription</link>
Structure <link linkend="eggdbus-struct-AuthorizationResult">AuthorizationResult</link>
Structure <link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuthorization</link>
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.EnumerateActions">EnumerateActions</link> (IN String locale,
OUT Array&lt;<link linkend="eggdbus-struct-ActionDescription">ActionDescription</link>&gt; action_descriptions)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String action_id,
IN Dict&lt;String,String&gt; details,
IN <link linkend="eggdbus-enum-CheckAuthorizationFlags">CheckAuthorizationFlags</link> flags,
IN String cancellation_id,
OUT <link linkend="eggdbus-struct-AuthorizationResult">AuthorizationResult</link> result)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CancelCheckAuthorization">CancelCheckAuthorization</link> (IN String cancellation_id)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String locale,
IN String object_path)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgentWithOptions">RegisterAuthenticationAgentWithOptions</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String locale,
IN String object_path,
IN Dict&lt;String,Variant&gt; options)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.UnregisterAuthenticationAgent">UnregisterAuthenticationAgent</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String object_path)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">AuthenticationAgentResponse</link> (IN String cookie,
IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">AuthenticationAgentResponse2</link> (IN uint32 uid, IN String cookie,
IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.EnumerateTemporaryAuthorizations">EnumerateTemporaryAuthorizations</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
OUT Array&lt;<link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuthorization</link>&gt; temporary_authorizations)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RevokeTemporaryAuthorizations">RevokeTemporaryAuthorizations</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject)
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RevokeTemporaryAuthorizationById">RevokeTemporaryAuthorizationById</link> (IN String id)
</synopsis>
</refsynopsisdiv>
<refsect1 role="signal_proto" id="eggdbus-if-signals-org.freedesktop.PolicyKit1.Authority">
<title role="signal_proto.title">Signals</title>
<synopsis>
<link linkend="eggdbus-signal-org.freedesktop.PolicyKit1.Authority::Changed">Changed</link> ()
</synopsis>
</refsect1>
<refsect1 role="properties" id="eggdbus-if-properties-org.freedesktop.PolicyKit1.Authority">
<title role="properties.title">Properties</title>
<synopsis>
<link linkend="eggdbus-property-org.freedesktop.PolicyKit1.Authority:BackendName">BackendName</link> readable String
<link linkend="eggdbus-property-org.freedesktop.PolicyKit1.Authority:BackendVersion">BackendVersion</link> readable String
<link linkend="eggdbus-property-org.freedesktop.PolicyKit1.Authority:BackendFeatures">BackendFeatures</link> readable <link linkend="eggdbus-enum-AuthorityFeatures">AuthorityFeatures</link>
</synopsis>
</refsect1>
<refsect1 role="desc" id="eggdbus-if-description-org.freedesktop.PolicyKit1.Authority">
<title role="desc.title">Description</title>
<para>
This D-Bus interface is implemented by the <literal>/org/freedesktop/PolicyKit1/Authority</literal> object on the well-known name <literal>org.freedesktop.PolicyKit1</literal> on the system message bus.
</para>
</refsect1>
<refsect1 role="desc" id="eggdbus-if-enumerations-org.freedesktop.PolicyKit1.Authority">
<title role="desc.title">Enumerations</title>
<refsect2 role="enum" id="eggdbus-enum-CheckAuthorizationFlags">
<title>The CheckAuthorizationFlags Flags</title>
<para>
<programlisting>
{
None = 0x00000000,
AllowUserInteraction = 0x00000001
}
</programlisting>
<para>
Flags used in the <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link> method.
</para>
<variablelist role="constant">
<varlistentry id="eggdbus-constant-CheckAuthorizationFlags.None" role="constant">
<term><literal>None</literal></term>
<listitem>
<para>
No flags set.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-CheckAuthorizationFlags.AllowUserInteraction" role="constant">
<term><literal>AllowUserInteraction</literal></term>
<listitem>
<para>
If the <link linkend="eggdbus-struct-Subject">Subject</link> can obtain the authorization through authentication, and an authentication agent is available, then attempt to do so. Note, this means that the <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link> method will block while the user is being asked to authenticate.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="enum" id="eggdbus-enum-ImplicitAuthorization">
<title>The ImplicitAuthorization Enumeration</title>
<para>
<programlisting>
{
NotAuthorized = 0,
AuthenticationRequired = 1,
AdministratorAuthenticationRequired = 2,
AuthenticationRequiredRetained = 3,
AdministratorAuthenticationRequiredRetained = 4,
Authorized = 5
}
</programlisting>
<para>
An enumeration for granting implicit authorizations.
</para>
<variablelist role="constant">
<varlistentry id="eggdbus-constant-ImplicitAuthorization.NotAuthorized" role="constant">
<term><literal>NotAuthorized</literal></term>
<listitem>
<para>
The <link linkend="eggdbus-struct-Subject">Subject</link> is not authorized.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-ImplicitAuthorization.AuthenticationRequired" role="constant">
<term><literal>AuthenticationRequired</literal></term>
<listitem>
<para>
Authentication is required.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-ImplicitAuthorization.AdministratorAuthenticationRequired" role="constant">
<term><literal>AdministratorAuthenticationRequired</literal></term>
<listitem>
<para>
Authentication as an administrator is required.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-ImplicitAuthorization.AuthenticationRequiredRetained" role="constant">
<term><literal>AuthenticationRequiredRetained</literal></term>
<listitem>
<para>
Authentication is required. If the authorization is obtained, it is retained.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-ImplicitAuthorization.AdministratorAuthenticationRequiredRetained" role="constant">
<term><literal>AdministratorAuthenticationRequiredRetained</literal></term>
<listitem>
<para>
Authentication as an administrator is required. If the authorization is obtained, it is retained.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-ImplicitAuthorization.Authorized" role="constant">
<term><literal>Authorized</literal></term>
<listitem>
<para>
The subject is authorized.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="enum" id="eggdbus-errordomain-org.freedesktop.PolicyKit1.Error."> <title>The org.freedesktop.PolicyKit1.Error.* Error Domain</title>
<para>
<programlisting>
{
org.freedesktop.PolicyKit1.Error.Failed,
org.freedesktop.PolicyKit1.Error.Cancelled,
org.freedesktop.PolicyKit1.Error.NotSupported,
org.freedesktop.PolicyKit1.Error.NotAuthorized,
org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique
}
</programlisting>
<para>
Errors that can be returned by various method calls.
</para>
<variablelist role="constant">
<varlistentry id="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.Failed" role="constant">
<term><literal>org.freedesktop.PolicyKit1.Error.Failed</literal></term>
<listitem>
<para>
The operation failed.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.Cancelled" role="constant">
<term><literal>org.freedesktop.PolicyKit1.Error.Cancelled</literal></term>
<listitem>
<para>
The operation was cancelled.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.NotSupported" role="constant">
<term><literal>org.freedesktop.PolicyKit1.Error.NotSupported</literal></term>
<listitem>
<para>
The operation is not supported.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.NotAuthorized" role="constant">
<term><literal>org.freedesktop.PolicyKit1.Error.NotAuthorized</literal></term>
<listitem>
<para>
You are not authorized to perform the requested operation.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique" role="constant">
<term><literal>org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique</literal></term>
<listitem>
<para>
The passed <parameter>cancellation_id</parameter> is already in use.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="enum" id="eggdbus-enum-AuthorityFeatures">
<title>The AuthorityFeatures Flags</title>
<para>
<programlisting>
{
None = 0x00000000,
TemporaryAuthorization = 0x00000001
}
</programlisting>
<para>
Flags describing features supported by the Authority implementation.
</para>
<variablelist role="constant">
<varlistentry id="eggdbus-constant-AuthorityFeatures.None" role="constant">
<term><literal>None</literal></term>
<listitem>
<para>
No flags set.
</para>
</listitem>
</varlistentry>
<varlistentry id="eggdbus-constant-AuthorityFeatures.TemporaryAuthorization" role="constant">
<term><literal>TemporaryAuthorization</literal></term>
<listitem>
<para>
The authority supports temporary authorizations that can be obtained through authentication.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsect1>
<refsect1 role="desc" id="eggdbus-if-structures-org.freedesktop.PolicyKit1.Authority">
<title role="desc.title">Structures</title>
<refsect2 role="struct" id="eggdbus-struct-Subject">
<title>The Subject Structure</title>
<para>
<programlisting>
{
String subject_kind,
Dict&lt;String,Variant&gt; subject_details
}
</programlisting>
<para>
<para>This struct describes subjects such as UNIX processes. It is typically used to check if a given process is authorized for an action.</para><para>The following kinds of subjects are known:</para> <formalpara><title>Unix Process</title><para><literal>subject_kind</literal> should be set to <literal>unix-process</literal> with keys <literal>pidfd</literal> (of type <literal>int32</literal>) and <literal>uid</literal> (of type <literal>int32</literal>) (if the operating system supports ProcessID File Descriptors), or alternatively with keys <literal>pid</literal> (of type <literal>uint32</literal>), <literal>uid</literal> (of type <literal>int32</literal>) and <literal>start-time</literal> (of type <literal>uint64</literal>).</para></formalpara> <formalpara><title>Unix Session</title><para><literal>subject_kind</literal> should be set to <literal>unix-session</literal> with the key <literal>session-id</literal> (of type <literal>string</literal>).</para></formalpara> <formalpara><title>System Bus Name</title><para><literal>subject_kind</literal> should be set to <literal>system-bus-name</literal> with the key <literal>name</literal> (of type <literal>string</literal>).</para></formalpara>
</para>
<variablelist role="struct">
<varlistentry>
<term><literal>String <structfield>subject_kind</structfield></literal></term>
<listitem>
<para>
The type of the subject.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Dict&lt;String,Variant&gt; <structfield>subject_details</structfield></literal></term>
<listitem>
<para>
Details about the subject. Depending of the value of <parameter>subject_kind</parameter>, a set of well-defined key/value pairs are guaranteed to be available.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="struct" id="eggdbus-struct-Identity">
<title>The Identity Structure</title>
<para>
<programlisting>
{
String identity_kind,
Dict&lt;String,Variant&gt; identity_details
}
</programlisting>
<para>
<para>This struct describes identities such as UNIX users and UNIX groups. It is typically used to check if a given process is authorized for an action.</para><para>The following kinds of identities are known:</para> <formalpara><title>Unix User</title><para><literal>identity_kind</literal> should be set to <literal>unix-user</literal> with key <literal>uid</literal> (of type <literal>uint32</literal>).</para></formalpara> <formalpara><title>Unix Group</title><para><literal>identity_kind</literal> should be set to <literal>unix-group</literal> with key <literal>gid</literal> (of type <literal>uint32</literal>).</para></formalpara>
</para>
<variablelist role="struct">
<varlistentry>
<term><literal>String <structfield>identity_kind</structfield></literal></term>
<listitem>
<para>
Type of identity.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Dict&lt;String,Variant&gt; <structfield>identity_details</structfield></literal></term>
<listitem>
<para>
Details about the identity. Depending of the value of <parameter>identity_kind</parameter>, a set of well-defined key/value pairs are guaranteed to be available.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="struct" id="eggdbus-struct-ActionDescription">
<title>The ActionDescription Structure</title>
<para>
<programlisting>
{
String action_id,
String description,
String message,
String vendor_name,
String vendor_url,
String icon_name,
<link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link> implicit_any,
<link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link> implicit_inactive,
<link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link> implicit_active,
Dict&lt;String,String&gt; annotations
}
</programlisting>
<para>
This struct describes actions registered with the PolicyKit daemon.
</para>
<variablelist role="struct">
<varlistentry>
<term><literal>String <structfield>action_id</structfield></literal></term>
<listitem>
<para>
Action Identifier.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>String <structfield>description</structfield></literal></term>
<listitem>
<para>
Localized description of the action.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>String <structfield>message</structfield></literal></term>
<listitem>
<para>
Localized message to be displayed when making the user authenticate for an action.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>String <structfield>vendor_name</structfield></literal></term>
<listitem>
<para>
Name of the provider of the action or the empty string.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>String <structfield>vendor_url</structfield></literal></term>
<listitem>
<para>
A URL pointing to a place with more information about the action or the empty string.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>String <structfield>icon_name</structfield></literal></term>
<listitem>
<para>
The themed icon describing the action or the empty string if no icon is set.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal><link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link> <structfield>implicit_any</structfield></literal></term>
<listitem>
<para>
A value from the <link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link>. enumeration for implicit authorizations that apply to any <link linkend="eggdbus-struct-Subject">Subject</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal><link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link> <structfield>implicit_inactive</structfield></literal></term>
<listitem>
<para>
A value from the <link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link>. enumeration for implicit authorizations that apply any <link linkend="eggdbus-struct-Subject">Subject</link> in an inactive user session on the local console.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal><link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link> <structfield>implicit_active</structfield></literal></term>
<listitem>
<para>
A value from the <link linkend="eggdbus-enum-ImplicitAuthorization">ImplicitAuthorization</link>. enumeration for implicit authorizations that apply any <link linkend="eggdbus-struct-Subject">Subject</link> in an active user session on the local console.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Dict&lt;String,String&gt; <structfield>annotations</structfield></literal></term>
<listitem>
<para>
Annotations for the action.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="struct" id="eggdbus-struct-AuthorizationResult">
<title>The AuthorizationResult Structure</title>
<para>
<programlisting>
{
Boolean is_authorized,
Boolean is_challenge,
Dict&lt;String,String&gt; details
}
</programlisting>
<para>
Describes the result of calling <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link>.
</para>
<variablelist role="struct">
<varlistentry>
<term><literal>Boolean <structfield>is_authorized</structfield></literal></term>
<listitem>
<para>
TRUE if the given <link linkend="eggdbus-struct-Subject">Subject</link> is authorized for the given action.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Boolean <structfield>is_challenge</structfield></literal></term>
<listitem>
<para>
TRUE if the given <link linkend="eggdbus-struct-Subject">Subject</link> could be authorized if more information was provided, and <link linkend="eggdbus-constant-CheckAuthorizationFlags.AllowUserInteraction">CheckAuthorizationFlags.AllowUserInteraction</link> wasn't passed or no suitable authentication agent was available.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Dict&lt;String,String&gt; <structfield>details</structfield></literal></term>
<listitem>
<para>
Details for the result. Known key/value-pairs include <literal>polkit.temporary_authorization_id</literal> (if the authorization is temporary, this is set to the opaque temporary authorization id), <literal>polkit.retains_authorization_after_challenge</literal> (Set to a non-empty string if the authorization will be retained after authentication (if is_challenge is TRUE)), <literal>polkit.dismissed</literal> (Set to a non-empty string if the authentication dialog was dismissed by the user).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 role="struct" id="eggdbus-struct-TemporaryAuthorization">
<title>The TemporaryAuthorization Structure</title>
<para>
<programlisting>
{
String id,
String action_id,
<link linkend="eggdbus-struct-Subject">Subject</link> subject,
UInt64 time_obtained,
UInt64 time_expires
}
</programlisting>
<para>
This struct describes a temporary authorization.
</para>
<variablelist role="struct">
<varlistentry>
<term><literal>String <structfield>id</structfield></literal></term>
<listitem>
<para>
An opaque identifier for the temporary authorization.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>String <structfield>action_id</structfield></literal></term>
<listitem>
<para>
The action the temporary authorization is for.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal><link linkend="eggdbus-struct-Subject">Subject</link> <structfield>subject</structfield></literal></term>
<listitem>
<para>
The subject the temporary authorization is for.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>UInt64 <structfield>time_obtained</structfield></literal></term>
<listitem>
<para>
When the temporary authorization was obtained, in seconds since the Epoch Jan 1, 1970 0:00 UTC.
Note that the PolicyKit daemon is using monotonic time internally so the returned value may change if system time changes.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>UInt64 <structfield>time_expires</structfield></literal></term>
<listitem>
<para>
When the temporary authorization is set to expire, in seconds since the Epoch Jan 1, 1970 0:00 UTC.
Note that the PolicyKit daemon is using monotonic time internally so the returned value may change if system time changes.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsect1>
<refsect1 role="details" id="eggdbus-if-method-details-org.freedesktop.PolicyKit1.Authority">
<title role="details.title">Method Details</title>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.EnumerateActions">
<title>EnumerateActions ()</title>
<programlisting>
EnumerateActions (IN String locale,
OUT Array&lt;<link linkend="eggdbus-struct-ActionDescription">ActionDescription</link>&gt; action_descriptions)
</programlisting>
<para>
Enumerates all registered PolicyKit actions.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN String <parameter>locale</parameter></literal>:</term>
<listitem>
<para>
The locale to get descriptions in or the blank string to use the system locale.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>OUT Array&lt;<link linkend="eggdbus-struct-ActionDescription">ActionDescription</link>&gt; <parameter>action_descriptions</parameter></literal>:</term>
<listitem>
<para>
An array of <link linkend="eggdbus-struct-ActionDescription">ActionDescription</link> structs.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">
<title>CheckAuthorization ()</title>
<programlisting>
CheckAuthorization (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String action_id,
IN Dict&lt;String,String&gt; details,
IN <link linkend="eggdbus-enum-CheckAuthorizationFlags">CheckAuthorizationFlags</link> flags,
IN String cancellation_id,
OUT <link linkend="eggdbus-struct-AuthorizationResult">AuthorizationResult</link> result)
</programlisting>
<para>
<para>
Checks if <parameter>subject</parameter> is authorized to
perform the action with identifier
<parameter>action_id</parameter>
</para>
<para>
If <parameter>cancellation_id</parameter> is non-empty and
already in use for the caller, the <link
linkend="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique">org.freedesktop.PolicyKit1.Error.CancellationIdNotUnique</link>
error is returned.
</para>
<para>
Note that <link
linkend="eggdbus-constant-CheckAuthorizationFlags.AllowUserInteraction">CheckAuthorizationFlags.AllowUserInteraction</link>
SHOULD be passed ONLY if the event that triggered the
authorization check is stemming from an user action, e.g. the
user pressing a button or attaching a device.
</para>
<para>
</para>
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Subject">Subject</link> <parameter>subject</parameter></literal>:</term>
<listitem>
<para>
A <link linkend="eggdbus-struct-Subject">Subject</link> struct.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>action_id</parameter></literal>:</term>
<listitem>
<para>
Identifier for the action that <parameter>subject</parameter> is attempting to do.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN Dict&lt;String,String&gt; <parameter>details</parameter></literal>:</term>
<listitem>
<para>
Details describing the action. Keys starting with <literal>polkit.</literal> are can only be set if defined in this document.
</para>
<para>
Known keys include <literal>polkit.message</literal> and
<literal>polkit.gettext_domain</literal> that can be used to
override the message shown to the user. This latter is needed
because the user could be running an authentication agent in
another locale than the calling process.
</para>
<para>
The (translated version of) <literal>polkit.message</literal>
may include references to other keys that are expanded with
their respective values. For example if the key
<literal>device_file</literal> has the value
<literal>/dev/sda</literal> then the message
"<literal>Authenticate to format $(device_file)</literal>" is
expanded to "<literal>Authenticate to format
/dev/sda</literal>".
</para>
<para>
The key <literal>polkit.icon_name</literal> is used to override the icon shown in the authentication dialog.
</para>
<para>
If non-empty, then the request will fail with
<link linkend="eggdbus-constant-Error.org.freedesktop.PolicyKit1.Error.Failed">org.freedesktop.PolicyKit1.Error.Failed</link>
unless the process doing the check itsef is sufficiently authorized (e.g. running as uid 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN <link linkend="eggdbus-enum-CheckAuthorizationFlags">CheckAuthorizationFlags</link> <parameter>flags</parameter></literal>:</term>
<listitem>
<para>
A set of <link linkend="eggdbus-enum-CheckAuthorizationFlags">CheckAuthorizationFlags</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>cancellation_id</parameter></literal>:</term>
<listitem>
<para>
A unique id used to cancel the the authentication check via <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CancelCheckAuthorization">CancelCheckAuthorization()</link> or the empty string if cancellation is not needed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>OUT <link linkend="eggdbus-struct-AuthorizationResult">AuthorizationResult</link> <parameter>result</parameter></literal>:</term>
<listitem>
<para>
An <link linkend="eggdbus-struct-AuthorizationResult">AuthorizationResult</link> structure.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CancelCheckAuthorization">
<title>CancelCheckAuthorization ()</title>
<programlisting>
CancelCheckAuthorization (IN String cancellation_id)
</programlisting>
<para>
Cancels an authorization check.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN String <parameter>cancellation_id</parameter></literal>:</term>
<listitem>
<para>
The <parameter>cancellation_id</parameter> passed to <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">
<title>RegisterAuthenticationAgent ()</title>
<programlisting>
RegisterAuthenticationAgent (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String locale,
IN String object_path)
</programlisting>
<para>
<para>Register an authentication agent.</para><para>Note that this should be called by same effective UID which will be passed to <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">AuthenticationAgentResponse2()</link>.</para>
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Subject">Subject</link> <parameter>subject</parameter></literal>:</term>
<listitem>
<para>
The subject to register the authentication agent for, typically a session subject.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>locale</parameter></literal>:</term>
<listitem>
<para>
The locale of the authentication agent.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>object_path</parameter></literal>:</term>
<listitem>
<para>
The object path of authentication agent object on the unique name of the caller.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgentWithOptions">
<title>RegisterAuthenticationAgentWithOptions ()</title>
<programlisting>
RegisterAuthenticationAgentWithOptions (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String locale,
IN String object_path,
IN Dict&lt;String,Variant&gt; options)
</programlisting>
<para>
<para>Like <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent</link> but takes additional options. If the option <literal>fallback</literal> (of type <literal>Boolean</literal>) is TRUE, then the authentcation agent will only be used as a fallback, e.g. if another agent (without the <literal>fallback</literal> option set TRUE) is available, it will be used instead.</para>
</para>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.UnregisterAuthenticationAgent">
<title>UnregisterAuthenticationAgent ()</title>
<programlisting>
UnregisterAuthenticationAgent (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
IN String object_path)
</programlisting>
<para>
Unregister an authentication agent.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Subject">Subject</link> <parameter>subject</parameter></literal>:</term>
<listitem>
<para>
The <parameter>subject</parameter> passed to <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>object_path</parameter></literal>:</term>
<listitem>
<para>
The <parameter>object_path</parameter> passed to <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">
<title>AuthenticationAgentResponse ()</title>
<programlisting>
AuthenticationAgentResponse (IN String cookie,
IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
</programlisting>
<para>
Method for authentication agents to invoke on successful
authentication, intended only for use by a privileged helper process
internal to polkit. This method will fail unless a sufficiently privileged
+caller invokes it. Deprecated in favor of <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">AuthenticationAgentResponse2()</link>.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN String <parameter>cookie</parameter></literal>:</term>
<listitem>
<para>
The cookie identifying the authentication request that was passed to the authentication agent.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Identity">Identity</link> <parameter>identity</parameter></literal>:</term>
<listitem>
<para>
A <link linkend="eggdbus-struct-Identity">Identity</link> struct describing what identity was authenticated.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">
<title>AuthenticationAgentResponse2 ()</title>
<programlisting>
AuthenticationAgentResponse2 (IN uint32 uid,
IN String cookie,
IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
</programlisting>
<para>
Method for authentication agents to invoke on successful
authentication, intended only for use by a privileged helper process
internal to polkit. This method will fail unless a sufficiently privileged
caller invokes it. Note this method was introduced in 0.114 and should be
preferred over <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">AuthenticationAgentResponse()</link>
as it fixes a security issue.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN uint32 <parameter>uid</parameter></literal>:</term>
<listitem>
<para>
The user id of the agent; normally this is the owner of the parent pid
of the process that invoked the internal setuid helper.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN String <parameter>cookie</parameter></literal>:</term>
<listitem>
<para>
The cookie identifying the authentication request that was passed to the authentication agent.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Identity">Identity</link> <parameter>identity</parameter></literal>:</term>
<listitem>
<para>
A <link linkend="eggdbus-struct-Identity">Identity</link> struct describing what identity was authenticated.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.EnumerateTemporaryAuthorizations">
<title>EnumerateTemporaryAuthorizations ()</title>
<programlisting>
EnumerateTemporaryAuthorizations (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
OUT Array&lt;<link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuthorization</link>&gt; temporary_authorizations)
</programlisting>
<para>
Retrieves all temporary authorizations that applies to <parameter>subject</parameter>.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Subject">Subject</link> <parameter>subject</parameter></literal>:</term>
<listitem>
<para>
The subject to get temporary authorizations for.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>OUT Array&lt;<link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuthorization</link>&gt; <parameter>temporary_authorizations</parameter></literal>:</term>
<listitem>
<para>
An array of <link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuthorization</link> structs.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RevokeTemporaryAuthorizations">
<title>RevokeTemporaryAuthorizations ()</title>
<programlisting>
RevokeTemporaryAuthorizations (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject)
</programlisting>
<para>
Revokes all temporary authorizations that applies to <parameter>subject</parameter>.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN <link linkend="eggdbus-struct-Subject">Subject</link> <parameter>subject</parameter></literal>:</term>
<listitem>
<para>
The subject to revoke temporary authorizations from.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RevokeTemporaryAuthorizationById">
<title>RevokeTemporaryAuthorizationById ()</title>
<programlisting>
RevokeTemporaryAuthorizationById (IN String id)
</programlisting>
<para>
Revokes all temporary authorizations that applies to <parameter>subject</parameter>.
</para>
<variablelist role="params">
<varlistentry>
<term><literal>IN String <parameter>id</parameter></literal>:</term>
<listitem>
<para>
The opaque identifier of the temporary authorization.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
</refsect1>
<refsect1 role="signals" id="eggdbus-if-signal-details-org.freedesktop.PolicyKit1.Authority">
<title role="signals.title">Signal Details</title>
<refsect2 role="signal" id="eggdbus-signal-org.freedesktop.PolicyKit1.Authority::Changed">
<title>The "Changed" signal</title>
<programlisting>
Changed ()
</programlisting>
<para>
This signal is emitted when actions and/or authorizations change
</para>
<variablelist role="params">
</variablelist>
</refsect2>
</refsect1>
<refsect1 role="property_details" id="eggdbus-if-property-details-org.freedesktop.PolicyKit1.Authority">
<title role="property_details.title">Property Details</title>
<refsect2 role="property" id="eggdbus-property-org.freedesktop.PolicyKit1.Authority:BackendName">
<title>The "BackendName" property</title>
<programlisting>
BackendName readable String
</programlisting>
<para>
The name of the currently used Authority backend.
</para>
</refsect2>
<refsect2 role="property" id="eggdbus-property-org.freedesktop.PolicyKit1.Authority:BackendVersion">
<title>The "BackendVersion" property</title>
<programlisting>
BackendVersion readable String
</programlisting>
<para>
The version of the currently used Authority backend.
</para>
</refsect2>
<refsect2 role="property" id="eggdbus-property-org.freedesktop.PolicyKit1.Authority:BackendFeatures">
<title>The "BackendFeatures" property</title>
<programlisting>
BackendFeatures readable <link linkend="eggdbus-enum-AuthorityFeatures">AuthorityFeatures</link>
</programlisting>
<para>
The features supported by the currently used Authority backend.
</para>
</refsect2>
</refsect1>
</refentry>
@@ -0,0 +1,36 @@
doc_module = pk_api_name
src_dirs = [
source_root / 'src/polkit',
source_root / 'src/polkitagent',
]
private_headers = [
'polkitagenthelperprivate.h',
'polkitprivate.h',
]
content_files += files(
'docbook-interface-org.freedesktop.PolicyKit1.AuthenticationAgent.xml',
'docbook-interface-org.freedesktop.PolicyKit1.Authority.xml',
)
html_images = [
'../polkit-architecture.png',
'../polkit-authentication-agent-example.png',
'../polkit-authentication-agent-example-wheel.png',
]
gnome.gtkdoc(
doc_module,
main_xml: doc_module + '-docs.xml',
src_dir: src_dirs,
ignore_headers: private_headers,
dependencies: libpolkit_agent_dep,
namespace: meson.project_name(),
html_assets: html_images,
fixxref_args: '--html-dir=' + pk_api_docpath,
gobject_typesfile: doc_module + '.types',
content_files: content_files,
install: true,
)
@@ -0,0 +1,343 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
<!ENTITY extensiondir SYSTEM "../extensiondir.xml">
]>
<part id="overview">
<title>polkit Overview</title>
<chapter id="polkit-intro">
<title>Introduction</title>
<para>
polkit provides an authorization API intended to be used by
privileged programs (<quote>MECHANISMS</quote>) offering service
to unprivileged programs (<quote>CLIENTS</quote>). See the
<link linkend="polkit.8">polkit</link> manual page for
the system architecture and big picture.
</para>
</chapter>
<chapter id="polkit-apps">
<title>Writing polkit applications</title>
<para>
polkit applications are applications using the polkit authority
as a decider component. They do this by installing a <filename
class='extension'>.policy</filename> file into the <filename
class='directory'>/usr/share/polkit-1/actions</filename>
directory and communicating with the polkit authority at runtime
(either via the <link linkend="ref-dbus-api">D-Bus API</link> or
indirectly through the <link
linkend="ref-api">libpolkit-gobject-1</link> library or the
<link linkend="pkcheck.1">pkcheck</link> command).
</para>
<simplesect id="polkit-apps-best-practices">
<title>Best practices</title>
<itemizedlist mark='opencircle' spacing='compact'>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> use polkit if you are
writing a privileged mechanism (that is, running as
<emphasis>root</emphasis> or otherwise has special
permissions) that is intended to be used by unprivileged
programs.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> carefully consider
what actions to define. In many cases there isn't a 1:1
mapping between operations and polkit actions. Often a
polkit action has more to do with the object the operation
is acting on than the operation itself. It is important to
strike the right balance between too fine-grained and too
coarse-grained.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> try to pick actions
and implicit authorizations so applications using your
mechanism will work out-of-the box for users logged in at
the console. Not interrupting console users with
authentication dialogs should be considered a
priority. For example, it is not wise to require console
users to authenticate for such mundane tasks as adding a
printer queue (if the administrator really wants the OS to
act this way, he can always deploy suitable authorization
rules).
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> consider the impact of the
chosen implicit authorizations on multi-user systems. Generally,
ordinary users should be able to neither modify important system's
behavior for other users, nor view other users' private data. If
your application needs an authorization framework at all, it is
fairly likely that the default configuration should deny
authorization in at least some cases. Default to using
<literal>auth_admin</literal>* instead of
<literal>auth_self</literal>*. (On single-user desktops, the
single user is typically configured as a polkit administrator, so
the two variants behave equally. On multi-user systems,
non-administrator users will be restricted by the default
configuration.)
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> pass polkit variables
along with <link
linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link>
requests so it's possible to write <emphasis>authorization
rules</emphasis> matching on these. Also document these
variables in your documentation (for example, see the
<ulink
url="http://udisks.freedesktop.org/docs/latest/udisks-polkit-actions.html">udisks2
actions and variables</ulink>).
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> pass a customized
authentication message (using the
<literal>polkit.message</literal> and
<literal>polkit.gettext_domain</literal> variables) that
include more detailed information about the request than
whatever is declared in the <filename
class='extension'>.policy</filename> file's
<literal>message</literal> element. For example, it's
better to show <quote>Authentication is needed to format
INTEL SSDSA2MH080G1GC (/dev/sda)</quote> than just
<quote>Authentication is needed to format the
device</quote>.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DO</emphasis> make sure
your application works even when the
<literal>org.freedesktop.PolicyKit1</literal>
D-Bus service is not available (this can
happen if
<link linkend="polkitd.8"><citerefentry><refentrytitle>polkitd</refentrytitle><manvolnum>8</manvolnum></citerefentry></link>
is not installed or if the <emphasis>polkit.service</emphasis> systemd unit/service has been
<ulink url="http://0pointer.de/blog/projects/three-levels-of-off.html">masked</ulink>). If you are using the
<link linkend="ref-api">libpolkit-gobject-1</link> library this
means handling
<link linkend="polkit-authority-get-sync">polkit_authority_get_sync()</link>
or
<link linkend="polkit-authority-get-finish">polkit_authority_get_finish()</link>
returning <constant>NULL</constant> or
<link linkend="polkit-authority-check-authorization">polkit_authority_check_authorization()</link> /
<link linkend="polkit-authority-check-authorization-sync">polkit_authority_check_authorization_sync()</link>
failing with an error not in the
<link linkend="POLKIT-ERROR:CAPS">POLKIT_ERROR</link>
domain.
An appropriate way of dealing with the polkit authority
not being available, could be to allow only uid 0 to
perform operations, forbid all operations or something
else.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DON'T</emphasis> use polkit if your
program isn't intended to be used by unprivileged
programs. For example, if you are writing developer tools
or low-level core OS command-line tools it's fine to just
require the user to be root. Users can always run your
tool through e.g.
<citerefentry><refentrytitle>sudo</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<link
linkend="pkexec.1"><citerefentry><refentrytitle>pkexec</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>
or write a simple polkit-using mechanism that allows
access to a (safe) subset of your tool.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DON'T</emphasis> use polkit unless
you actually have to. In other words, not every single
privileged program providing service to unprivileged
programs has to use polkit. For example, if you have a
small well-written <ulink
url="http://en.wikipedia.org/wiki/Setuid">setuid</ulink>
helper to help deal with some implementation-detail of the
OS (such as elevating the priority of the sound server
process to real-time for console users) it's not really
helpful to define a polkit action for this since,
realistically, no-one is going to choose to
<emphasis>not</emphasis> grant the privilege. Remember, a
secure program is often one with little amount of code and
few dependencies.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DON'T</emphasis> call <link
linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link>
for all your actions every time the authority emits the
<link
linkend="eggdbus-signal-org.freedesktop.PolicyKit1.Authority::Changed">Changed</link>
signal. Not only is this a waste of resources, the result
may also be inaccurate as authorization rules can return
whatever they want, whenever they want.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DON'T</emphasis> block the main
thread in your mechanism (e.g. the one used to service IPC
requests from unprivileged programs) while waiting for the
authority to reply - calls to <link
linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link>
may take a very long time (seconds, even minutes) to
complete as user interaction may be involved. Instead,
use either the <link
linkend="polkit-authority-check-authorization">asynchronous
API</link> or a dedicated thread with the <link
linkend="polkit-authority-check-authorization-sync">synchronous
API</link>.
</para>
</listitem>
<listitem>
<para>
<emphasis role='bold'>DON'T</emphasis> include any
authorization rules with your application as this is only
intended for administrators and special-purpose operating
systems / environments. See <xref linkend="polkit-rules"/>
for more information.
</para>
</listitem>
</itemizedlist>
</simplesect>
<simplesect id="polkit-apps-unprivileged">
<title>Usage in unprivileged programs</title>
<para>
An unprivileged program normally does not use polkit directly
- it simply calls into a privileged mechanism and the
mechanism either renders service (or refuses the request)
after checking with polkit (which may include presenting an
authentication dialog). In this setup, the unprivileged
program is oblivious to the fact that polkit is being used -
it simply just waits for the privileged mechanism to carry out
the request (which, if authentication dialogs are involved may
take many seconds). This is a good thing because not worrying
about implementation details like polkit, helps simplify the
unprivileged program.
</para>
<para>
Occasionally unprivileged programs need to disable, modify or
remove UI elements to convey to the user that a certain action
cannot be carried out (because e.g. the user is not
authorized) or authentication is needed (by e.g. displaying a
padlock icon in the UI). In this case, the best approach is
usually to have the unprivileged program get this information
from the privileged mechanism instead of polkit. This is
especially true because often there is no reliable way that
the unprivileged program can know what polkit action is going
to be used. In general, there is no guarantee that operations
(such as D-Bus methods) map 1:1: to polkit action - for
example, a disk manager service's <literal>Format()</literal>
method may check for the action
<literal>net.company.diskmanager.format-removable</literal> if
the disk is removable and
<literal>net.company.diskmanager.format-fixed</literal>
otherwise.
</para>
<para>
However, in certain cases, for example when using the
<emphasis>org.freedesktop.policykit.imply</emphasis> annotation
(see the
<link linkend="polkit.8"><citerefentry><refentrytitle>polkit</refentrytitle><manvolnum>8</manvolnum></citerefentry></link> man page),
it is meaningful for an unprivileged program to query the
polkit authority (to e.g. update UI elements) and it is
in fact allowed to do so as long as the unprivileged program doesn't pass any variables along with the
<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.CheckAuthorization">CheckAuthorization()</link>
call (otherwise it would be easy to spoof authentication dialogs and bypass authorization rules).
In fact, since this use-case is so common,
<link linkend="ref-api">libpolkit-gobject-1</link> provides the
<link linkend="PolkitPermission"><type>PolkitPermission</type></link> type (which is derived from
<ulink url="http://developer.gnome.org/gio/unstable/GPermission.html"><type>GPermission</type></ulink>)
that can be used together with
<ulink url="http://developer.gnome.org/gtk3/unstable/GtkLockButton.html"><type>GtkLockButton</type></ulink>.
Note that for <type>GtkLockButton</type> to work well, the
polkit action backing it should use <literal>auth_admin_keep</literal>
for its implicit authorizations (or more rarely
<literal>auth_self_keep</literal> for services which don't affect other
users).
This is often used to implement an <ulink
url="http://developer.gnome.org/hig-book/3.2/hig-book.html#windows-instant-apply">instant
apply</ulink> paradigm whereby the user
<emphasis>unlocks</emphasis> (by authenticating) e.g. a
preference pane window and is then free to change settings
until the authorization expires or is revoked.
</para>
</simplesect>
<simplesect id="polkit-apps-no-auth-agent">
<title>No authentication agent</title>
<para>
If a polkit application wants to handle the case where no
authentication agent exists (for example if the app is launched
via a
<citerefentry><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry>
login), the application can use the <link
linkend="PolkitAgentTextListener">PolkitAgentTextListener</link>
type to spawn its own authentication agent as
needed. Alternatively, the <xref linkend="pkttyagent.1"/>
helper can be used to do this.
</para>
</simplesect>
</chapter>
<chapter id="polkit-agents">
<title>Writing polkit Authentication Agents</title>
<para>
Authentication agents are provided by desktop environments. When
an user session starts, the agent registers with the polkit
Authority using the <link
linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link>
method. When services are needed, the authority will invoke
methods on the <link
linkend="eggdbus-interface-org.freedesktop.PolicyKit1.AuthenticationAgent">org.freedesktop.PolicyKit1.AuthenticationAgent</link>
D-Bus interface. Once the user is authenticated, (a privileged
part of) the agent invokes the <link
linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">AuthenticationAgentResponse2()</link>
method. This method should be treated as an internal
implementation detail, and callers should use the
<link linkend="PolkitAgentSession">PolkitAgentSession</link> API to invoke
it, which currently uses a setuid helper program.
</para>
<para>
The <link linkend="ref-authentication-agent-api">libpolkit-agent-1</link>
library provides helpers to make it easy to build authentication
agents that use the native authentication system
e.g. pam<literal>(8)</literal>.
</para>
<para>
If the environment variable <literal>POLKIT_DEBUG</literal> is
set, the libpolkit-agent-1 library prints out diagnostic
information on standard output.
</para>
</chapter>
</part>
@@ -0,0 +1,84 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "../version.xml">
<!ENTITY extensiondir SYSTEM "../extensiondir.xml">
]>
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
<title>polkit Reference Manual</title>
<releaseinfo>
For version &version; — the latest version of this
documentation can be found at <ulink role="online-location"
url="https://polkit.pages.freedesktop.org/polkit">https://polkit.pages.freedesktop.org/polkit</ulink>.
</releaseinfo>
</bookinfo>
<xi:include href="overview.xml"/>
<part id="ref-dbus-api">
<title>D-Bus API Reference</title>
<xi:include href="docbook-interface-org.freedesktop.PolicyKit1.Authority.xml"/>
<xi:include href="docbook-interface-org.freedesktop.PolicyKit1.AuthenticationAgent.xml"/>
</part>
<part id="ref-api">
<title>Library API Reference</title>
<xi:include href="xml/polkitauthority.xml"/>
<xi:include href="xml/polkitauthorizationresult.xml"/>
<xi:include href="xml/polkitdetails.xml"/>
<xi:include href="xml/polkiterror.xml"/>
<xi:include href="xml/polkitactiondescription.xml"/>
<xi:include href="xml/polkittemporaryauthorization.xml"/>
<xi:include href="xml/polkitpermission.xml"/>
<chapter id="subjects">
<title>Subjects</title>
<xi:include href="xml/polkitsubject.xml"/>
<xi:include href="xml/polkitunixprocess.xml"/>
<xi:include href="xml/polkitunixsession.xml"/>
<xi:include href="xml/polkitsystembusname.xml"/>
</chapter>
<chapter id="Identities">
<title>Identities</title>
<xi:include href="xml/polkitidentity.xml"/>
<xi:include href="xml/polkitunixuser.xml"/>
<xi:include href="xml/polkitunixgroup.xml"/>
<xi:include href="xml/polkitunixnetgroup.xml"/>
</chapter>
</part>
<part id="ref-authentication-agent-api">
<title>Authentication Agent API Reference</title>
<xi:include href="xml/polkitagentlistener.xml"/>
<xi:include href="xml/polkitagenttextlistener.xml"/>
<xi:include href="xml/polkitagentsession.xml"/>
</part>
<part id="manpages">
<title>Manual Pages</title>
<xi:include href="../man/polkit.xml"/>
<xi:include href="../man/polkitd.xml"/>
<xi:include href="../man/pkcheck.xml"/>
<xi:include href="../man/pkaction.xml"/>
<xi:include href="../man/pkexec.xml"/>
<xi:include href="../man/pkttyagent.xml"/>
</part>
<chapter id="polkit-hierarchy">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>
</chapter>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
<index id="polit-index">
<title>Index</title>
</index>
<appendix id="license">
<title>License</title>
<para>
<programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../COPYING" parse="text"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
</para>
</appendix>
</book>
@@ -0,0 +1,373 @@
<SECTION>
<FILE>polkitunixuser</FILE>
PolkitUnixUser
polkit_unix_user_new
polkit_unix_user_new_for_name
polkit_unix_user_get_uid
polkit_unix_user_set_uid
polkit_unix_user_get_name
<SUBSECTION Standard>
PolkitUnixUserClass
POLKIT_UNIX_USER
POLKIT_IS_UNIX_USER
POLKIT_TYPE_UNIX_USER
polkit_unix_user_get_type
POLKIT_UNIX_USER_CLASS
POLKIT_IS_UNIX_USER_CLASS
POLKIT_UNIX_USER_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitauthority</FILE>
PolkitAuthority
PolkitAuthorityFeatures
PolkitCheckAuthorizationFlags
polkit_authority_get_async
polkit_authority_get_finish
polkit_authority_get_sync
polkit_authority_get
polkit_authority_get_owner
polkit_authority_get_backend_name
polkit_authority_get_backend_version
polkit_authority_get_backend_features
polkit_authority_check_authorization
polkit_authority_check_authorization_finish
polkit_authority_check_authorization_sync
polkit_authority_enumerate_actions
polkit_authority_enumerate_actions_finish
polkit_authority_enumerate_actions_sync
polkit_authority_register_authentication_agent
polkit_authority_register_authentication_agent_finish
polkit_authority_register_authentication_agent_sync
polkit_authority_register_authentication_agent_with_options
polkit_authority_register_authentication_agent_with_options_finish
polkit_authority_register_authentication_agent_with_options_sync
polkit_authority_unregister_authentication_agent
polkit_authority_unregister_authentication_agent_finish
polkit_authority_unregister_authentication_agent_sync
polkit_authority_authentication_agent_response
polkit_authority_authentication_agent_response_finish
polkit_authority_authentication_agent_response_sync
polkit_authority_enumerate_temporary_authorizations
polkit_authority_enumerate_temporary_authorizations_finish
polkit_authority_enumerate_temporary_authorizations_sync
polkit_authority_revoke_temporary_authorizations
polkit_authority_revoke_temporary_authorizations_finish
polkit_authority_revoke_temporary_authorizations_sync
polkit_authority_revoke_temporary_authorization_by_id
polkit_authority_revoke_temporary_authorization_by_id_finish
polkit_authority_revoke_temporary_authorization_by_id_sync
<SUBSECTION Standard>
PolkitAuthorityClass
POLKIT_AUTHORITY
POLKIT_IS_AUTHORITY
POLKIT_TYPE_AUTHORITY
polkit_authority_get_type
POLKIT_AUTHORITY_CLASS
POLKIT_IS_AUTHORITY_CLASS
POLKIT_AUTHORITY_GET_CLASS
polkit_check_authorization_flags_get_type
</SECTION>
<SECTION>
<FILE>polkitauthorizationresult</FILE>
PolkitAuthorizationResult
polkit_authorization_result_new
polkit_authorization_result_get_is_authorized
polkit_authorization_result_get_is_challenge
polkit_authorization_result_get_retains_authorization
polkit_authorization_result_get_temporary_authorization_id
polkit_authorization_result_get_dismissed
polkit_authorization_result_get_details
<SUBSECTION Standard>
PolkitAuthorizationResultClass
POLKIT_AUTHORIZATION_RESULT
POLKIT_IS_AUTHORIZATION_RESULT
POLKIT_TYPE_AUTHORIZATION_RESULT
polkit_authorization_result_get_type
POLKIT_AUTHORIZATION_RESULT_CLASS
POLKIT_IS_AUTHORIZATION_RESULT_CLASS
POLKIT_AUTHORIZATION_RESULT_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitsystembusname</FILE>
PolkitSystemBusName
polkit_system_bus_name_new
polkit_system_bus_name_get_name
polkit_system_bus_name_set_name
polkit_system_bus_name_get_process_sync
<SUBSECTION Standard>
PolkitSystemBusNameClass
POLKIT_SYSTEM_BUS_NAME
POLKIT_IS_SYSTEM_BUS_NAME
POLKIT_TYPE_SYSTEM_BUS_NAME
polkit_system_bus_name_get_type
POLKIT_SYSTEM_BUS_NAME_CLASS
POLKIT_IS_SYSTEM_BUS_NAME_CLASS
POLKIT_SYSTEM_BUS_NAME_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitunixgroup</FILE>
PolkitUnixGroup
polkit_unix_group_new
polkit_unix_group_new_for_name
polkit_unix_group_get_gid
polkit_unix_group_set_gid
<SUBSECTION Standard>
PolkitUnixGroupClass
POLKIT_UNIX_GROUP
POLKIT_IS_UNIX_GROUP
POLKIT_TYPE_UNIX_GROUP
polkit_unix_group_get_type
POLKIT_UNIX_GROUP_CLASS
POLKIT_IS_UNIX_GROUP_CLASS
POLKIT_UNIX_GROUP_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitunixnetgroup</FILE>
PolkitUnixNetgroup
polkit_unix_netgroup_new
polkit_unix_netgroup_get_name
polkit_unix_netgroup_set_name
<SUBSECTION Standard>
PolkitUnixNetgroupClass
POLKIT_UNIX_NETGROUP
POLKIT_IS_UNIX_NETGROUP
POLKIT_TYPE_UNIX_NETGROUP
polkit_unix_netgroup_get_type
POLKIT_UNIX_NETGROUP_CLASS
POLKIT_IS_UNIX_NETGROUP_CLASS
POLKIT_UNIX_NETGROUP_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitunixsession</FILE>
PolkitUnixSession
polkit_unix_session_new
polkit_unix_session_new_for_process
polkit_unix_session_new_for_process_finish
polkit_unix_session_new_for_process_sync
polkit_unix_session_get_session_id
polkit_unix_session_set_session_id
<SUBSECTION Standard>
PolkitUnixSessionClass
POLKIT_UNIX_SESSION
POLKIT_IS_UNIX_SESSION
POLKIT_TYPE_UNIX_SESSION
polkit_unix_session_get_type
POLKIT_UNIX_SESSION_CLASS
POLKIT_IS_UNIX_SESSION_CLASS
POLKIT_UNIX_SESSION_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitunixprocess</FILE>
PolkitUnixProcess
polkit_unix_process_new
polkit_unix_process_new_full
polkit_unix_process_new_for_owner
polkit_unix_process_set_pid
polkit_unix_process_get_pid
polkit_unix_process_set_start_time
polkit_unix_process_get_start_time
polkit_unix_process_set_uid
polkit_unix_process_get_uid
polkit_unix_process_get_owner
<SUBSECTION Standard>
PolkitUnixProcessClass
POLKIT_UNIX_PROCESS
POLKIT_IS_UNIX_PROCESS
POLKIT_TYPE_UNIX_PROCESS
polkit_unix_process_get_type
POLKIT_UNIX_PROCESS_CLASS
POLKIT_IS_UNIX_PROCESS_CLASS
POLKIT_UNIX_PROCESS_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitidentity</FILE>
PolkitIdentity
PolkitIdentityIface
polkit_identity_hash
polkit_identity_equal
polkit_identity_to_string
polkit_identity_from_string
<SUBSECTION Standard>
POLKIT_IDENTITY
POLKIT_IS_IDENTITY
POLKIT_TYPE_IDENTITY
polkit_identity_get_type
POLKIT_IDENTITY_GET_IFACE
</SECTION>
<SECTION>
<FILE>polkitsubject</FILE>
PolkitSubject
PolkitSubjectIface
polkit_subject_hash
polkit_subject_equal
polkit_subject_exists
polkit_subject_exists_finish
polkit_subject_exists_sync
polkit_subject_to_string
polkit_subject_from_string
<SUBSECTION Standard>
POLKIT_SUBJECT
POLKIT_IS_SUBJECT
POLKIT_TYPE_SUBJECT
polkit_subject_get_type
POLKIT_SUBJECT_GET_IFACE
</SECTION>
<SECTION>
<FILE>polkitactiondescription</FILE>
PolkitActionDescription
PolkitImplicitAuthorization
polkit_action_description_get_action_id
polkit_action_description_get_description
polkit_action_description_get_message
polkit_action_description_get_vendor_name
polkit_action_description_get_vendor_url
polkit_action_description_get_icon_name
polkit_action_description_get_implicit_any
polkit_action_description_get_implicit_inactive
polkit_action_description_get_implicit_active
polkit_action_description_get_annotation
polkit_action_description_get_annotation_keys
polkit_implicit_authorization_to_string
polkit_implicit_authorization_from_string
<SUBSECTION Standard>
PolkitActionDescriptionClass
POLKIT_ACTION_DESCRIPTION
POLKIT_IS_ACTION_DESCRIPTION
POLKIT_TYPE_ACTION_DESCRIPTION
polkit_action_description_get_type
POLKIT_ACTION_DESCRIPTION_CLASS
POLKIT_IS_ACTION_DESCRIPTION_CLASS
POLKIT_ACTION_DESCRIPTION_GET_CLASS
polkit_implicit_authorization_get_type
</SECTION>
<SECTION>
<FILE>polkiterror</FILE>
POLKIT_ERROR
PolkitError
<SUBSECTION Standard>
polkit_error_quark
POLKIT_TYPE_ERROR
polkit_error_get_type
</SECTION>
<SECTION>
<FILE>polkitdetails</FILE>
PolkitDetails
polkit_details_new
polkit_details_lookup
polkit_details_insert
polkit_details_get_keys
<SUBSECTION Standard>
PolkitDetailsClass
POLKIT_DETAILS
POLKIT_IS_DETAILS
POLKIT_TYPE_DETAILS
polkit_details_get_type
POLKIT_DETAILS_CLASS
POLKIT_IS_DETAILS_CLASS
POLKIT_DETAILS_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitagentsession</FILE>
<TITLE>PolkitAgentSession</TITLE>
PolkitAgentSession
polkit_agent_session_new
polkit_agent_session_initiate
polkit_agent_session_response
polkit_agent_session_cancel
<SUBSECTION Standard>
POLKIT_AGENT_SESSION
POLKIT_AGENT_IS_SESSION
POLKIT_AGENT_TYPE_SESSION
polkit_agent_session_get_type
POLKIT_AGENT_SESSION_CLASS
POLKIT_AGENT_IS_SESSION_CLASS
POLKIT_AGENT_SESSION_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitagentlistener</FILE>
<TITLE>PolkitAgentListener</TITLE>
PolkitAgentListener
PolkitAgentListenerClass
polkit_agent_listener_initiate_authentication
polkit_agent_listener_initiate_authentication_finish
PolkitAgentRegisterFlags
polkit_agent_listener_register
polkit_agent_listener_register_with_options
polkit_agent_listener_unregister
polkit_agent_register_listener
<SUBSECTION Standard>
POLKIT_AGENT_LISTENER
POLKIT_AGENT_IS_LISTENER
POLKIT_AGENT_TYPE_LISTENER
polkit_agent_listener_get_type
POLKIT_AGENT_LISTENER_CLASS
POLKIT_AGENT_IS_LISTENER_CLASS
POLKIT_AGENT_LISTENER_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitagenttextlistener</FILE>
<TITLE>PolkitAgentTextListener</TITLE>
PolkitAgentTextListener
polkit_agent_text_listener_new
<SUBSECTION Standard>
POLKIT_AGENT_TEXT_LISTENER
POLKIT_AGENT_IS_TEXT_LISTENER
POLKIT_AGENT_TYPE_TEXT_LISTENER
polkit_agent_text_listener_get_type
POLKIT_AGENT_TEXT_LISTENER_CLASS
POLKIT_AGENT_IS_TEXT_LISTENER_CLASS
POLKIT_AGENT_TEXT_LISTENER_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkittemporaryauthorization</FILE>
<TITLE>PolkitTemporaryAuthorization</TITLE>
PolkitTemporaryAuthorization
polkit_temporary_authorization_get_id
polkit_temporary_authorization_get_action_id
polkit_temporary_authorization_get_subject
polkit_temporary_authorization_get_time_obtained
polkit_temporary_authorization_get_time_expires
<SUBSECTION Standard>
POLKIT_TEMPORARY_AUTHORIZATION
POLKIT_IS_TEMPORARY_AUTHORIZATION
POLKIT_TYPE_TEMPORARY_AUTHORIZATION
polkit_temporary_authorization_get_type
POLKIT_TEMPORARY_AUTHORIZATION_CLASS
POLKIT_IS_TEMPORARY_AUTHORIZATION_CLASS
POLKIT_TEMPORARY_AUTHORIZATION_GET_CLASS
</SECTION>
<SECTION>
<FILE>polkitpermission</FILE>
PolkitPermission
polkit_permission_new
polkit_permission_new_finish
polkit_permission_new_sync
polkit_permission_get_action_id
polkit_permission_get_subject
<SUBSECTION Standard>
PolkitPermissionClass
POLKIT_PERMISSION
POLKIT_IS_PERMISSION
POLKIT_TYPE_PERMISSION
polkit_permission_get_type
POLKIT_PERMISSION_CLASS
POLKIT_IS_PERMISSION_CLASS
POLKIT_PERMISSION_GET_CLASS
</SECTION>
@@ -0,0 +1,21 @@
polkit_authority_get_type
polkit_action_description_get_type
polkit_details_get_type
polkit_check_authorization_flags_get_type
polkit_implicit_authorization_get_type
polkit_identity_get_type
polkit_unix_user_get_type
polkit_unix_group_get_type
polkit_unix_netgroup_get_type
polkit_subject_get_type
polkit_unix_process_get_type
polkit_unix_session_get_type
polkit_system_bus_name_get_type
polkit_error_get_type
polkit_authorization_result_get_type
polkit_temporary_authorization_get_type
polkit_permission_get_type
polkit_agent_session_get_type
polkit_agent_listener_get_type
polkit_agent_text_listener_get_type
@@ -0,0 +1 @@
@VERSION@
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its"
version="2.0">
<its:translateRule selector="//*" translate="no"/>
<its:translateRule selector="//action/description |
//action/message"
translate="yes"/>
</its:rules>
@@ -0,0 +1,6 @@
<?xml version="1.0"?>
<locatingRules>
<locatingRule name="polkit policy" pattern="*.policy">
<documentRule localName="policyconfig" target="polkit.its"/>
</locatingRule>
</locatingRules>
@@ -0,0 +1,430 @@
project(
'polkit', ['c'],
version: '124',
license: 'LGPL2+',
default_options: [
'buildtype=debugoptimized',
'prefix=/usr',
'cpp_std=c++17',
],
meson_version: '>= 0.50.0',
)
pk_version = meson.project_version()
pk_api_version = '1'
pk_api_name = '@0@-@1@'.format(meson.project_name(), pk_api_version)
pk_gir_ns = 'Polkit'
pk_gir_version = '1.0'
pk_prefix = get_option('prefix')
pk_datadir = get_option('datadir')
pk_includedir = get_option('includedir')
pk_libdir = get_option('libdir')
pk_mandir = get_option('mandir')
pk_sysconfdir = get_option('sysconfdir')
pk_pkgdatadir = pk_datadir / pk_api_name
pk_pkgincludedir = pk_includedir / pk_api_name
# note that this is always 'lib', not lib64 or lib/x86_64-linux-gnu
pk_libprivdir = 'lib' / pk_api_name
pk_pkgsysconfdir = pk_sysconfdir / pk_api_name
pk_actiondir = pk_api_name / 'actions'
pk_pkgactiondir = pk_datadir / pk_actiondir
soversion = 0
current = 0
revision = 0
libversion = '@0@.@1@.@2@'.format(soversion, current, revision)
gnome = import('gnome')
i18n = import('i18n')
pkg = import('pkgconfig')
source_root = meson.current_source_dir()
build_root = meson.current_build_dir()
data_dir = source_root / 'data'
its_dir = source_root / 'gettext'
po_dir = source_root / 'po'
its_data = files(
'gettext/its/polkit.its',
'gettext/its/polkit.loc',
)
install_data(
its_data,
install_dir: pk_datadir / 'gettext/its',
)
top_inc = include_directories('.')
cc = meson.get_compiler('c')
config_h = configuration_data()
# defines
set_defines = [
# package
['PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/polkit/polkit/-/issues/'],
['PACKAGE_NAME', meson.project_name()],
['PACKAGE_URL', 'http://www.freedesktop.org/wiki/Software/polkit'],
['PACKAGE_VERSION', pk_version],
['VERSION', pk_version],
# i18n
['GETTEXT_PACKAGE', pk_api_name],
]
foreach define: set_defines
config_h.set_quoted(define[0], define[1])
endforeach
# Globally define_GNU_SOURCE and therefore enable the GNU extensions
config_h.set('_GNU_SOURCE', true)
# functions
check_functions = [
'clearenv',
'fdatasync',
'setnetgrent',
]
foreach func: check_functions
config_h.set('HAVE_' + func.to_upper(), cc.has_function(func))
endforeach
# compiler flags
common_c_flags = [
# FIXME: this should go as 'c_std=c99' in project's default_options.
# https://github.com/mesonbuild/meson/issues/1889
# https://github.com/mesonbuild/meson/pull/6729
'-std=c99',
'-DHAVE_CONFIG_H',
]
compiler_flags = []
compiler_c_flags = []
if get_option('buildtype').contains('debug')
compiler_c_flags += cc.get_supported_arguments([
'-Waggregate-return',
'-Wdeclaration-after-statement',
'-Wformat=2',
'-Wimplicit-function-declaration',
'-Winit-self',
'-Wmissing-declarations',
'-Wmissing-include-dirs',
'-Wmissing-prototypes',
'-Wstrict-prototypes',
])
endif
add_project_arguments(common_c_flags + compiler_c_flags, language: 'c')
glib_req_version = '>= 2.30.0'
gio_dep = dependency('gio-2.0', version: glib_req_version)
gio_unix_dep = dependency('gio-unix-2.0', version: glib_req_version)
glib_dep = dependency('glib-2.0', version: glib_req_version)
gobject_dep = dependency('gobject-2.0', version: glib_req_version)
expat_dep = dependency('expat')
assert(cc.has_header('expat.h', dependencies: expat_dep), 'Can\'t find expat.h. Please install expat.')
assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\'t find expat library. Please install expat.')
duktape_req_version = '>= 2.2.0'
js_engine = get_option('js_engine')
libs_only = get_option('libs-only')
if libs_only
js_engine = ''
endif
if js_engine == 'duktape'
js_dep = dependency('duktape', version: duktape_req_version, required: false)
if not js_dep.found()
message('Falling back to looking for library and header...')
js_dep = cc.find_library('duktape', has_headers: ['duktape.h'], required: true)
endif
libm_dep = cc.find_library('m')
thread_dep = dependency('threads')
func = 'pthread_condattr_setclock'
config_h.set('HAVE_' + func.to_upper(), cc.has_function(func, prefix : '#include <pthread.h>'))
elif js_engine == 'mozjs'
js_dep = dependency('mozjs-115')
_system = host_machine.system().to_lower()
if _system.contains('freebsd')
config_h.set('__BSD_VISIBLE', 1)
endif
endif
dbus_dep = dependency('dbus-1', required: false)
dbus_policydir = pk_prefix / pk_datadir / 'dbus-1/system.d'
if dbus_dep.found()
dbus_system_bus_services_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir', define_variable: ['datadir', pk_prefix / pk_datadir])
else
# libdbus development files not installed, assume a standard layout
dbus_system_bus_services_dir = pk_prefix / pk_datadir / 'dbus-1' / 'system-services'
endif
# check OS
host_system = host_machine.system()
config_h.set('HAVE_' + host_system.to_upper(), true)
# Check whether setnetgrent has a return value
config_h.set('HAVE_NETGROUP_H', cc.has_header('netgroup.h'))
if config_h.get('HAVE_SETNETGRENT', false)
setnetgrent_return_src = '''
#include <stddef.h>
#ifdef HAVE_NETGROUP_H
#include <netgroup.h>
#else
#include <netdb.h>
#endif
int main() {
int r = setnetgrent (NULL);
};
'''
config_h.set('HAVE_SETNETGRENT_RETURN', cc.compiles(setnetgrent_return_src, name: 'setnetgrent return support'))
endif
# Select wether to use libsystemd-login, libelogind or ConsoleKit for session tracking
session_tracking = get_option('session_tracking')
enable_logind = (session_tracking != 'ConsoleKit')
if enable_logind
if session_tracking == 'libsystemd-login'
logind_dep = dependency('libsystemd', required: false)
if not logind_dep.found()
logind_dep = dependency('libsystemd-login', not_found_message: 'libsystemd support requested but libsystemd or libsystemd-login library not found')
endif
else
logind_dep = dependency('libelogind', not_found_message: 'libelogind support requested but libelogind library not found')
endif
func = 'sd_uid_get_display'
config_h.set10('HAVE_' + func.to_upper(), cc.has_function(func, dependencies: logind_dep))
func = 'sd_pidfd_get_session'
config_h.set10('HAVE_' + func.to_upper(), cc.has_function(func, dependencies: logind_dep))
# systemd unit / service files
systemd_systemdsystemunitdir = get_option('systemdsystemunitdir')
if systemd_systemdsystemunitdir == '' and session_tracking == 'libsystemd-login'
systemd_dep = dependency('systemd', not_found_message: 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
# FIXME: systemd.pc file does not use variables with relative paths, so `define_variable` cannot be used
systemd_systemdsystemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
endif
systemd_sysusers_dir = systemd_dep.get_pkgconfig_variable('sysusers_dir', default: '/usr/lib/sysusers.d')
endif
config_h.set('HAVE_LIBSYSTEMD', enable_logind)
config_h.set('HAVE_PIDFD_OPEN', cc.get_define('SYS_pidfd_open', prefix: '#include <sys/syscall.h>') != '')
# User for running polkitd
polkitd_user = get_option('polkitd_user')
config_h.set_quoted('POLKITD_USER', polkitd_user)
polkitd_uid = get_option('polkitd_uid')
config_h.set('POLKITD_UID', polkitd_uid)
# Select which authentication framework to use
auth_deps = []
auth_fw = get_option('authfw')
enable_pam = (auth_fw == 'pam')
if enable_pam
# Check for PAM
pam_dep = cc.find_library('pam')
assert(pam_dep.found() and cc.has_function('pam_start', dependencies: pam_dep), 'Could not find pam/pam-devel, please install the needed packages.')
# how to call pam_strerror
pam_strerror_src = '''
#include <stdio.h>
#include <stdlib.h>
#include <security/pam_appl.h>
#endif
int main() {
@0@
};
'''
# FIXME: Not necessary anymore?
if cc.compiles(pam_strerror_src.format('pam_handle_t *pamh = 0; char *s = pam_strerror(pamh, PAM_SUCCESS);'))
# FIXME: unused?
config_h.set('PAM_STRERROR_TWO_ARGS', true)
else
message('how to call pam_strerror: ' + cc.compiles(pam_strerror_src.format('char *s = pam_strerror(PAM_SUCCESS);')).to_string('1', 'unknown'))
endif
pam_prefix = get_option('pam_prefix')
if pam_prefix == ''
pam_prefix = pk_prefix / 'lib/pam.d'
else
message('PAM files will be installed in prefix ' + pam_prefix)
endif
pam_module_dir = get_option('pam_module_dir')
if pam_module_dir == ''
pam_module_dir = pk_libdir / 'security'
endif
auth_deps += pam_dep
elif auth_fw == 'shadow'
auth_deps += cc.find_library('crypt')
endif
config_h.set('POLKIT_AUTHFW_' + auth_fw.to_upper(), true)
# FIXME: sigtimedwait is not used anywhere?
'''
if host_system == 'solaris'
rt_dep = cc.find_library('rt')
cc.has_function('sigtimedwait', dependencies: rt_dep)
else
cc.has_function('sigtimedwait')
endif
'''
os_type = get_option('os_type')
if os_type == ''
os_paths = [
['redhat', '/etc/sysconfig/network-scripts'],
['suse', '/etc/SuSE-release'],
['debian', '/etc/debian_version'],
['gentoo', '/etc/gentoo-release'],
['pardus', '/etc/pardus-release'],
['lfs', '/etc/lfs-release'],
]
foreach os_path: os_paths
if run_command('test', '-e', os_path[1]).returncode() == 0
os_type = os_path[0]
break
endif
endforeach
if os_type == ''
message('Linux distribution autodetection failed, specify the distribution to target using -Dos_type=')
endif
endif
pam_include = get_option('pam_include')
if pam_include == ''
if ['suse', 'solaris'].contains(os_type)
pam_conf = {
'PAM_FILE_INCLUDE_AUTH': 'common-auth',
'PAM_FILE_INCLUDE_ACCOUNT': 'common-account',
'PAM_FILE_INCLUDE_PASSWORD': 'common-password',
'PAM_FILE_INCLUDE_SESSION': 'common-session',
}
elif os_type.contains('bsd')
pam_conf = {
'PAM_FILE_INCLUDE_AUTH': 'system',
'PAM_FILE_INCLUDE_ACCOUNT': 'system',
'PAM_FILE_INCLUDE_PASSWORD': 'system',
'PAM_FILE_INCLUDE_SESSION': 'system',
}
elif os_type == 'lfs'
pam_conf = {
'PAM_FILE_INCLUDE_AUTH': 'system-auth',
'PAM_FILE_INCLUDE_ACCOUNT': 'system-account',
'PAM_FILE_INCLUDE_PASSWORD': 'system-password',
'PAM_FILE_INCLUDE_SESSION': 'system-session',
}
#if ['redhat', 'gentoo', 'pardus'].contains(os_type)
else
pam_conf = {
'PAM_FILE_INCLUDE_AUTH': 'system-auth',
'PAM_FILE_INCLUDE_ACCOUNT': 'system-auth',
'PAM_FILE_INCLUDE_PASSWORD': 'system-auth',
'PAM_FILE_INCLUDE_SESSION': 'system-auth',
}
endif
else
pam_conf = {
'PAM_FILE_INCLUDE_AUTH': pam_include,
'PAM_FILE_INCLUDE_ACCOUNT': pam_include,
'PAM_FILE_INCLUDE_PASSWORD': pam_include,
'PAM_FILE_INCLUDE_SESSION': pam_include,
}
endif
enable_introspection = get_option('introspection')
if enable_introspection
dependency('gobject-introspection-1.0', version: '>= 0.6.2')
endif
content_files = files('COPYING')
subdir('actions')
subdir('data')
subdir('src')
subdir('docs')
subdir('po')
enable_tests = get_option('tests')
if enable_tests
subdir('test')
endif
configure_file(
output: 'config.h',
configuration: config_h,
)
if not libs_only
meson.add_install_script(
'meson_post_install.py',
get_option('bindir'),
pk_libprivdir,
pk_pkgsysconfdir,
polkitd_user,
)
endif
output = '\n ' + meson.project_name() + ' ' + meson.project_version() + '\n'
output += ' ============\n\n'
output += ' prefix: ' + pk_prefix + '\n'
output += ' datadir: ' + pk_datadir + '\n\n'
output += ' includedir: ' + pk_includedir + '\n'
output += ' libdir: ' + pk_libdir + '\n'
output += ' sysconfdir: ' + pk_sysconfdir + '\n'
output += ' source code location: ' + source_root + '\n'
output += ' compiler: ' + cc.get_id() + '\n'
output += ' c_flags: ' + ' '.join(compiler_c_flags) + '\n\n'
if enable_man
output += ' xsltproc: ' + xsltproc.path() + '\n'
endif
output += ' introspection: ' + enable_introspection.to_string() + '\n'
output += ' Distribution/OS: ' + os_type + '\n'
output += ' Authentication framework: ' + auth_fw + '\n'
output += ' Session tracking: ' + session_tracking + '\n'
if enable_logind
output += ' systemdsystemunitdir: ' + systemd_systemdsystemunitdir + '\n'
endif
output += ' polkitd user: ' + polkitd_user + ' \n'
if polkitd_uid != '-'
output += ' polkitd UID: ' + polkitd_uid + ' \n'
endif
output += ' Javascript engine: ' + js_engine + '\n'
output += ' PAM support: ' + enable_pam.to_string() + '\n\n'
if libs_only
output += ' !!! Only building polkit libraries, not polkitd !!!\n\n'
endif
if enable_pam
output += ' PAM file auth: ' + pam_conf['PAM_FILE_INCLUDE_AUTH'] + '\n'
output += ' PAM file acount: ' + pam_conf['PAM_FILE_INCLUDE_ACCOUNT'] + '\n'
output += ' PAM file password: ' + pam_conf['PAM_FILE_INCLUDE_PASSWORD'] + '\n'
output += ' PAM file session: ' + pam_conf['PAM_FILE_INCLUDE_SESSION'] + '\n'
output += ' PAM config location: ' + pam_prefix + '\n\n'
endif
output += ' Building api docs: ' + enable_gtk_doc.to_string() + '\n'
output += ' Building man pages: ' + enable_man.to_string() + '\n'
output += ' Building examples: ' + enable_examples.to_string() + '\n'
output += ' Building tests: ' + enable_tests.to_string()
message(output)
@@ -0,0 +1,21 @@
option('session_tracking', type: 'combo', choices: ['libsystemd-login', 'libelogind', 'ConsoleKit'], value: 'ConsoleKit', description: 'session tracking (libsystemd-login/libelogind/ConsoleKit)')
option('systemdsystemunitdir', type: 'string', value: '', description: 'custom directory for systemd system units')
option('libs-only', type: 'boolean', value: false, description: 'Only build libraries (skips building polkitd)')
option('polkitd_user', type: 'string', value: 'polkitd', description: 'User for running polkitd (polkitd)')
option('polkitd_uid', type: 'string', value: '-', description: 'Fixed UID for user running polkitd (polkitd)')
option('authfw', type: 'combo', choices: ['pam', 'shadow', 'bsdauth'], value: 'pam', description: 'Authentication framework (pam/shadow)')
option('os_type', type: 'combo', choices: ['redhat', 'suse', 'gentoo', 'pardus', 'solaris', 'netbsd', 'lfs', ''], value: '', description: 'distribution or OS')
option('pam_include', type: 'string', value: '', description: 'pam file to include')
option('pam_module_dir', type: 'string', value: '', description: 'directory to install PAM security module')
option('pam_prefix', type: 'string', value: '', description: 'specify where pam files go')
option('examples', type: 'boolean', value: false, description: 'Build example programs')
option('tests', type: 'boolean', value: false, description: 'Build tests')
option('introspection', type: 'boolean', value: true, description: 'Enable introspection for this build')
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
option('man', type: 'boolean', value: false, description: 'build manual pages')
option('js_engine', type: 'combo', choices: ['mozjs', 'duktape'], value: 'duktape', description: 'javascript engine')
@@ -0,0 +1,69 @@
#!/usr/bin/env python3
import os
import pwd
import sys
destdir = os.environ.get('DESTDIR')
prefix = os.environ['MESON_INSTALL_DESTDIR_PREFIX']
def destdir_path(p):
if os.path.isabs(p):
if destdir is None:
return p
else:
return os.path.join(destdir, os.path.relpath(p, '/'))
else:
return os.path.join(prefix, p)
bindir = destdir_path(sys.argv[1])
pkglibdir = destdir_path(sys.argv[2])
pkgsysconfdir = destdir_path(sys.argv[3])
polkitd_user = sys.argv[4]
try:
polkitd_gid = pwd.getpwnam(polkitd_user).pw_gid
except KeyError:
polkitd_gid = None
dst = os.path.join(bindir, 'pkexec')
if os.geteuid() == 0:
os.chown(dst, 0, -1)
os.chmod(dst, 0o4755)
else:
print(
'Owner and mode of {} need to be setuid root (04755) after '
'installation'.format(
dst,
)
)
dst = os.path.join(pkgsysconfdir, 'rules.d')
if not os.path.exists(dst):
os.makedirs(dst, mode=0o750)
if os.geteuid() == 0 and polkitd_gid is not None:
os.chown(dst, 0, polkitd_gid)
else:
print(
'Owner of {} needs to be set to root and group to {} after installation'.format(
dst, polkitd_user,
)
)
# polkit-agent-helper-1 need to be setuid root because it's used to
# authenticate not only the invoking user, but possibly also root
# and/or other users.
dst = os.path.join(pkglibdir, 'polkit-agent-helper-1')
if os.geteuid() == 0:
os.chown(dst, 0, -1)
os.chmod(dst, 0o4755)
else:
print(
'Owner and mode of {} need to be setuid root (04755) after '
'installation'.format(
dst,
)
)
@@ -0,0 +1,23 @@
# please keep this list sorted alphabetically
#
cs
da
de
hr
hu
id
it
ka
nl
nn
pl
pt
pt_BR
ro
ru
sk
sv
tr
uk
zh_CN
zh_TW
@@ -0,0 +1,78 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = polkit-1
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = polkit Authors
# This tells whether or not to prepend "GNU " prefix to the package
# name that gets inserted into the header of the $(DOMAIN).pot file.
# Possible values are "yes", "no", or empty. If it is empty, try to
# detect it automatically by scanning the files in $(top_srcdir) for
# "GNU packagename" string.
PACKAGE_GNU = no
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS = https://gitlab.freedesktop.org/polkit/polkit/-/issues/
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
# context. Possible values are "yes" and "no". Set this to yes if the
# package uses functions taking also a message context, like pgettext(), or
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
USE_MSGCTXT = yes
# These options get passed to msgmerge.
# Useful options are in particular:
# --previous to keep previous msgids of translated messages,
# --quiet to reduce the verbosity.
MSGMERGE_OPTIONS =
# These options get passed to msginit.
# If you want to disable line wrapping when writing PO files, add
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
# MSGINIT_OPTIONS.
MSGINIT_OPTIONS =
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
# has changed. Possible values are "yes" and "no". Set this to no if
# the POT file is checked in the repository and the version control
# program ignores timestamps.
PO_DEPENDS_ON_POT = no
# This tells whether or not to forcibly update $(DOMAIN).pot and
# regenerate PO files on "make dist". Possible values are "yes" and
# "no". Set this to no if the POT file and PO files are maintained
# externally.
DIST_DEPENDS_ON_UPDATE_PO = no
@@ -0,0 +1,8 @@
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
actions/org.freedesktop.policykit.policy.in
src/examples/org.freedesktop.policykit.examples.pkexec.policy.in
src/programs/pkaction.c
src/programs/pkcheck.c
src/programs/pkexec.c
src/programs/pkttyagent.c
@@ -0,0 +1 @@
.pc
+216
View File
@@ -0,0 +1,216 @@
# Danish translations for PolicyKit.
# Copyright (C) 2013 SUSE Linux GmbH
# This file is distributed under the same license as the PolicyKit package.
#
# Tomáš Chvátal <tchvatal@suse.cz>, 2013.
# Marek Černocký <marek@manet.cz>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2023-06-20 15:27+0000\n"
"PO-Revision-Date: 2023-08-26 00:16+0200\n"
"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Poedit 3.3.2\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Spustit program jako jiný uživatel"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr "Pro spuštění programu pod jiným uživatelem je vyžadováno ověření"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "Spustit ukázkový program polkit Frobnicate"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Pro spuštění ukázkového programu polkit Frobnicate je vyžadováno ověření "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Pouze vypsat informace o ČINNOSTI"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ČINNOST"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Vypsat podrobné informace o činnosti"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "Vypsat verzi"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ČINNOST]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Chyby hlaste na: %s\n"
"%s domovská stránka: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: neočekávaný argument „%s“\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Použití:\n"
" pkcheck [VOLBY…]\n"
"\n"
"Volby nápovědy:\n"
" -h, --help Zobrazit nápovědu k volbám\n"
"\n"
"Volby aplikace:\n"
" -a, --action-id=ČINNOST Zkontrolovat oprávnění pro vykonání "
"ČINNOSTI\n"
" -u, --allow-user-interaction Povolit interakci s uživatelem, pokud "
"je potřeba\n"
" -d, --details=KLÍČ HODNOTA Přidat (KLÍČ, HODNOTA) do informací o "
"činnosti\n"
" --enable-internal-agent Použít interního ověřovacího agenta, "
"pokud je potřeba\n"
" --list-temp Vypsat dočasná oprávnění pro aktuální "
"sezení\n"
" -p, --process=PID[,ČAS_SPUŠTĚNÍ] Zkontrolovat oprávnění vybraného "
"procesu\n"
" --revoke-temp Zrušit všechna dočasná oprávnění pro "
"aktuální sezení\n"
" -s, --system-bus-name=NÁZEV_SBĚRNICE\n"
" Zkontrolovat oprávnění vlastníka "
"sběrnice NÁZEV_SBĚRNICE\n"
" --version Vypsat verzi\n"
"\n"
"Chyby hlaste na: %s\n"
"%s domovská stránka: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: po „%s“ je očekáván argument\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: neplatná hodnota „%s“ pro „--process“\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: po „--detail, -d“ jsou očekávány dva argumenty\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: není určen předmět\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:821
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr ""
"Pro spuštění „$(cmdline_short)“ pod účtem správce je vyžadováno ověření"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:831
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"Pro spuštění „$(cmdline_short)“ pod uživatelem $(user.display) je vyžadováno "
"ověření"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "Nenahrazovat již bežícího agenta"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "Uzavřít FD při registraci agenta"
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "Registrovat agenta pro určený proces"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,ČAS_SPUŠTĚNÍ]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registrovat agenta pro vlastníka sběrnice NÁZEV_SBĚRNICE"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "NÁZEV_SBĚRNICE"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr "%s: Volby --process a --system-bus-name se vzájemně vylučují\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: neplatný identifikátor procesu „%s“\n"
+204
View File
@@ -0,0 +1,204 @@
# Danish translations for PolicyKit.
# Copyright (C) 2009 Red Hat, Inc.
# This file is distributed under the same license as the polkit package.
# David Zeuthen <davidz@redhat.com>, 2009.
# scootergrisen, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2011-03-03 13:03-0500\n"
"PO-Revision-Date: 2019-02-04 21:06+0200\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Kør et program som en anden bruger"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "Der kræves autentifikation for at køre et program som en anden bruger"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Kør polkits Frobnicate-eksempelprogram"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Der kræves autentifikation for at køre polkits Frobnicate-eksempelprogram "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Output kun information om HANDLING"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "HANDLING"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Output detaljeret handlingsinformation"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "Vis version"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id HANDLING]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:83
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Rapportér fejl til: %s\n"
"%s hjemmeside: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:97
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Uventet argument `%s'\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Anvendelse:\n"
" pkcheck [TILVALG...]\n"
"\n"
"Tilvalg for hjælp:\n"
" -h, --help Vis tilvalg for hjælp\n"
"\n"
"Tilvalg for program:\n"
" -a, --action-id=HANDLING Tjek autorisation til at udføre "
"HANDLING\n"
" -u, --allow-user-interaction Interager med brugeren, hvis det er "
"nødvendigt\n"
" -d, --details=NØGLE VÆRDI Tilføj (NØGLE, VÆRDI) til information "
"om handlingen\n"
" --enable-internal-agent Brug en intern autentifikationsagent, "
"hvis det er nødvendigt\n"
" --list-temp Oplist midlertidige autorisationer for "
"den nuværende session\n"
" -p, --process=PID[,STARTTID,UID] Tjek autorisation af den angive proces\n"
" --revoke-temp Tilbagekald alle midlertidige "
"autorisationer for den nuværende session\n"
" -s, --system-bus-name=BUSNAVN Tjek autorisation for ejeren af BUSNAVN\n"
" --version Vis version\n"
"\n"
"Rapportér fejl til: %s\n"
"%s hjemmeside: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Argument ventet efter `%s'\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Ugyldig --process-værdi `%s'\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: To argumenter ventet after `--detail'\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Emne ikke angivet\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "Der kræves autentifikation for at køre `$(program)' som superbrugeren"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Der kræves autentifikation for at køre `$(program)' som brugeren "
"$(user.display)"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "Erstat ikke den eksisterende agent hvis der er en"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "Luk FD når agenten registreres"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "Registrer agenten for den angivne proces"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,STARTTID]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registrer agenten for ejeren af BUSNAVN"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "BUSNAVN"
#: ../src/programs/pkttyagent.c:129
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Ugyldig procesangiver `%s'\n"
+221
View File
@@ -0,0 +1,221 @@
# German translation for polkit.
# Copyright (C) 2015 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Christian Kirbach <Christian.Kirbach@gmail.com>, 2015.
# Wolfgang Stöggl <c72578@yahoo.de>, 2015.
# Jürgen Benvenuti <gastornis@posteo.org>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2023-09-12 15:27+0000\n"
"PO-Revision-Date: 2023-09-12 19:52+0200\n"
"Last-Translator: Jürgen Benvenuti <gastornis@posteo.org>\n"
"Language-Team: German <gnome-de@gnome.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.3.1\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Ein Programm als ein anderer Benutzer ausführen"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr ""
"Legitimierung ist erforderlich, um ein Programm als ein anderer Benutzer "
"auszuführen"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "Das polkit-Beispielprogramm Frobnicate ausführen"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Legitimierung ist erforderlich, um das polkit-Beispielprogramm Frobnicate "
"auszuführen (user=$(user), user.gecos=$(user.gecos), user.display=$(user."
"display), program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Nur Informationen zu AKTION ausgeben"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "AKTION"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Detaillierte Aktions-Informationen ausgeben"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "Version anzeigen"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id AKTION]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Fehler melden an: %s\n"
"%s Homepage: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Unerwartetes Argument »%s«\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Aufruf:\n"
" pkcheck [OPTION …]\n"
"\n"
"Hilfeoptionen:\n"
" -h, --help Hilfeoptionen anzeigen\n"
"\n"
"Programmoptionen:\n"
" -a, --action-id=ACTION Legitimierung prüfen, um AKTION "
"durchzuführen\n"
" -u, --allow-user-interaction Interaktion mit Benutzer, falls "
"erforderlich\n"
" -d, --details=KEY VALUE (KEY, VALUE) zur Information über die "
"Aktion hinzufügen\n"
" --enable-internal-agent Internen Legitimierungsagenten "
"verwenden, falls erforderlich\n"
" --list-temp Temporäre Legitimierungen für die "
"aktuelle Sitzung auflisten\n"
" -p, --process=PID[,START_TIME,UID] Legitimierung des angegebenen Prozesses "
"prüfen\n"
" --revoke-temp Alle temporären Legitimierungen der "
"aktuellen Sitzung aufheben\n"
" -s, --system-bus-name=BUS_NAME Legitimierung des Eigentümers von "
"BUS_NAME prüfen\n"
" --version Version anzeigen\n"
"\n"
"Fehler melden an: %s\n"
"%s Homepage: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Argument erwartet nach »%s«\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Ungültiger Wert »%s« für »--process«\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: Es werden zwei Argumente nach »--detail, -d« erwartet\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Betreff nicht angegeben\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:822
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr ""
"Legitimierung ist erforderlich, um »$(cmdline_short)« als Superuser "
"auszuführen"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:832
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"Legitimierung ist erforderlich, um »$(cmdline_short)« als Benutzer $(user."
"display) auszuführen"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "Vorhandenen Agenten nicht ersetzen"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "Dateideskriptor (FD) schließen, sobald der Agent registriert ist"
# file descriptor
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "Agenten des angegebenen Prozesses registrieren"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,STARTZEIT]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Den Agenten für den Besitzer von BUS_NAME registrieren"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "BUS_NAME"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr ""
"%s: Die Optionen »--process« und »--system-bus-name« schließen sich "
"gegenseitig aus\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Ungültige Prozessangabe »%s«\n"
+204
View File
@@ -0,0 +1,204 @@
# Croatian translation for polkit.
# Copyright (C) 2017 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
"product=PolicyKit&keywords=I18N+L10N&component=libpolkit\n"
"POT-Creation-Date: 2017-04-23 15:27+0000\n"
"PO-Revision-Date: 2017-04-23 19:27+0200\n"
"Language-Team: Croatian <hr@li.org>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"X-Generator: Poedit 1.8.7.1\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Pokreni programe kao drugi korisnik"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "Potrebna je ovjera za pokretanje programa kao drugog korisnika"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Pokreni primjer PolicyKit programa Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Potrebna je ovjera za pokretanje PolicyKit programa Frobnicate (user="
"$(korisnik), program=$(program), command_line=$(naredbeni_redak))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Samo izlazne informacije o RADNJAMA"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "RADNJA"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Opširnije izlazne informacije radnje"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "Prikaži inačicu"
#: ../src/programs/pkaction.c:134
msgid "[--action-id ACTION]"
msgstr "[--action-id RADNJA]"
#: ../src/programs/pkaction.c:135 ../src/programs/pkttyagent.c:85
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Prijavite greške na: %s\n"
"%s početna stranica: <%s>"
#: ../src/programs/pkaction.c:149 ../src/programs/pkcheck.c:495
#: ../src/programs/pkttyagent.c:99
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Neočekivani argument '%s'\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Upotreba:\n"
" pkcheck [MOGUĆNOST...]\n"
"\n"
"Mogućnosti pomoći:\n"
" -h, --help Prikaži mogućnosti pomoći\n"
"\n"
"Mogućnosti aplikacije:\n"
" -a, --action-id=RADNJA Provjeri ovjeru za pokretanje RADNJE\n"
" -u, --allow-user-interaction Djeluj s korisnikom ako je potrebno\n"
" -d, --details=KLJUČ VRIJEDNOST Dodaj (KLJUČ, VRIJEDNOST) u "
"informaciju o radnji\n"
" --enable-internal-agent Koristi unutrašnjeg agenta ovjere ako "
"je potrebno\n"
" --list-temp Prikaži privremena ovlaštenja za "
"trenutnu sesiju\n"
" -p, --process=PID[,POČETNO_VRIJEME,UID] Provjeri ovlaštenja za određeni "
"proces\n"
" --revoke-temp Opozovi sva privremena ovlaštenja za "
"trenutnu sesiju\n"
" -s, --system-bus-name=BUS_NAZIV Provjeri ovlaštenja vlasnika od "
"BUS_NAZIVA\n"
" --version Prikaži inačicu\n"
"\n"
"Prijavi greške na: %s\n"
"%s početna stranica: <%s>\n"
#: ../src/programs/pkcheck.c:395 ../src/programs/pkcheck.c:428
#: ../src/programs/pkcheck.c:440
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Očekivani argument nakon `%s'\n"
#: ../src/programs/pkcheck.c:418
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Neispravna --process vrijednost `%s'\n"
#: ../src/programs/pkcheck.c:455 ../src/programs/pkcheck.c:464
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Dva argumenta su očekivana nakon `--detail'\n"
#: ../src/programs/pkcheck.c:525
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Subjekt nije određen\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:797
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "Potrebna je ovjera za pokretanje `$(program)' kao super korisnika"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:807
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Potrebna je ovjera za pokretanje `$(program)' kao korisnika $(user.display)"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "Ne zamjenjuj postojećeg agenta ako postoji"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "Zatvori FD kada je agent registriran"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "Registriraj agenta za određeni proces"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,POČETNO_VRIJEME]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent owner of BUS_NAME"
msgstr "Registriraj vlasnika agenta BUS_NAZIVA"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "BUS_NAZIV"
#: ../src/programs/pkttyagent.c:131
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Neispravan razvrstač procesa `%s'\n"
+214
View File
@@ -0,0 +1,214 @@
# Hungarian translation for polkit.
# Copyright (C) 2016, 2021. Free Software Foundation, Inc.
# This file is distributed under the same license as the polkit package.
#
# Gabor Kelemen <kelemeng at ubuntu dot com>, 2016.
# Balázs Úr <ur.balazs at fsf dot hu>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: polkit\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2020-05-26 15:36+0000\n"
"PO-Revision-Date: 2021-03-18 01:19+0100\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 19.12.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Program futtatása másik felhasználóként"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "Hitelesítés szükséges a program futtatásához másik felhasználóként"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Frobnicate polkit példaprogram futtatása"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Hitelesítés szükséges a Frobnicate polkit példaprogram futtatásához (user="
"$(user), user.gecos=$(user.gecos), user.display=$(user.display), program="
"$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Csak a MŰVELETRŐL írjon ki információkat"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "MŰVELET"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Részletes műveletinformációk megjelenítése"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:95
msgid "Show version"
msgstr "Verziószám megjelenítése"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id MŰVELET]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:118
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"A hibák itt jelenthetők: %s\n"
"A %s honlapja: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:132
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: váratlan argumentum: „%s”\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Használat:\n"
" pkcheck [KAPCSOLÓ…]\n"
"\n"
"Súgó kapcsolói:\n"
" -h, --help Súgókapcsolók megjelenítése\n"
"\n"
"Alkalmazás kapcsolói:\n"
" -a, --action-id=MŰVELET A MŰVELET elvégzésére való "
"felhatalmazás\n"
" ellenőrzése\n"
" -u, --allow-user-interaction Felhasználóval való párbeszéd\n"
" engedélyezése, ha szükséges\n"
" -d, --details=KULCS ÉRTÉK A (KULCS, ÉRTÉK) hozzáadása a "
"művelettel\n"
" kapcsolatos információkhoz\n"
" --enable-internal-agent Belső hitelesítési ügynök használata, "
"ha\n"
" szükséges\n"
" --list-temp Ideiglenes felhatalmazások felsorolása "
"az\n"
" aktuális munkamenethez\n"
" -p, --process=PID[,INDÍTÁSI_IDŐ,UID] A megadott folyamat "
"felhatalmazásának\n"
" ellenőrzése\n"
" --revoke-temp Minden ideiglenes felhatalmazás "
"visszavonása\n"
" az aktuális munkamenetből\n"
" -s, --system-bus-name=BUSZNÉV A BUSZNÉV tulajdonosának "
"felhatalmazásának\n"
" ellenőrzése\n"
" --version Verziószám kiírása\n"
"\n"
"A hibák itt jelenthetők: %s\n"
"A %s honlapja: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: argumentum szükséges a következő után: „%s”\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Érvénytelen --process érték: „%s”\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Két argumentum szükséges a „--detail” után\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Nincs megadva az alany\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "Hitelesítés szükséges a(z) „$(program)” futtatásához rendszergazdaként"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Hitelesítés szükséges a(z) „$(program)” futtatásához $(user.display) "
"felhasználóként"
#: ../src/programs/pkttyagent.c:78
msgid "Don't replace existing agent if any"
msgstr "Ne cserélje a meglévő ügynököt, ha van"
#: ../src/programs/pkttyagent.c:82
msgid "Close FD when the agent is registered"
msgstr "Fájlleíró lezárása az ügynök regisztrálásakor"
#: ../src/programs/pkttyagent.c:82
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:86
msgid "Register the agent for the specified process"
msgstr "Az ügynök regisztrálása a megadott folyamathoz"
#: ../src/programs/pkttyagent.c:87
msgid "PID[,START_TIME]"
msgstr "PID[,INDÍTÁSI_IDŐ]"
#: ../src/programs/pkttyagent.c:91
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Az ügynök regisztrálása a BUSZNÉV tulajdonosánál"
#: ../src/programs/pkttyagent.c:91
msgid "BUS_NAME"
msgstr "BUSZNÉV"
#: ../src/programs/pkttyagent.c:164
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Érvénytelen folyamatmegadás: „%s”\n"
+204
View File
@@ -0,0 +1,204 @@
# Indonesian translation for polkit.
# Copyright (C) 2016 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Lorenz Adam Damara <lorenzadam@resolution-consulting.co.id>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2020-03-22 03:56+0000\n"
"PO-Revision-Date: 2020-03-31 20:21+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Jalankan program sebagai pengguna lain"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "Otentikasi diperlukan untuk menjalankan program sebagai pengguna lain"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Jalankan contoh program polkit Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Otentikasi dibutuhkan untuk menjalankan contoh program Frobnicate (user="
"$(user), user.gecos=$(user.gecos), user.display=$(user.display), program="
"$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Hanya informasi keluaran tentang AKSI"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ACTION"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Informasi detil aksi keluaran"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:95
msgid "Show version"
msgstr "Tampilkan versi"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ACTION]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:118
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Laporkan kutu ke: %s\n"
"halaman beranda %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:132
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: argumen yang tak terduga `%s'\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Penggunaan:\n"
" pkcheck [PILIHAN...]\n"
"\n"
"Bantuan Pilihan:\n"
" -h, --help Show help options\n"
"Pilihan Aplikasi:\n"
"-a, --action-id=ACTION Periksa otorisasi untuk melakukan ACTION\n"
" -u, --allow-user-interaction Berkomunikasi dengan pengguna jika "
"dibutuhkan\n"
" -d, --details=KEY VALUE Tambahkan (KEY, VALUE) untuk informasi "
"mengenai aksi\n"
" --enable-internal-agent Gunakan otentikasi agen internal jika "
"dibutuhkan\n"
" --list-temp Daftar otorisasi sementara untuk sesi "
"ini\n"
" -p, --process=PID[,START_TIME,UID] Periksa otorisasi untuk proses yang "
"spesifik\n"
" --revoke-temp Cabut semua otorisasi sementara untuk "
"sesi saat ini\n"
" -s, --system-bus-name=BUS_NAME Periksa otorisasi bagi pemilik "
"BUS_NAME\n"
" --version Tampilkan versi\n"
"\n"
"Laporkan kutu ke: %s\n"
"halaman beranda %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Argumen diharapkan setelah `%s'\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: kesalahan nilai --process `%s'\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Dua argumen diharapkan setelah `--detail'\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Subyek tidak dispesifikasikan\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"Otentikasi dibutuhkan untuk menjalankan `$(program)' sebagai super user"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Otentikasi dibutuhkan untuk menjalankan `$(program)' sebagai pengguna $(user."
"display)"
#: ../src/programs/pkttyagent.c:78
msgid "Don't replace existing agent if any"
msgstr "Jangan ganti agen yang sudah ada"
#: ../src/programs/pkttyagent.c:82
msgid "Close FD when the agent is registered"
msgstr "Tutup FD ketika agen sudah terdaftar"
#: ../src/programs/pkttyagent.c:82
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:86
msgid "Register the agent for the specified process"
msgstr "Daftarkan agen untuk proses yang spesifik"
#: ../src/programs/pkttyagent.c:87
msgid "PID[,START_TIME]"
msgstr "PID,[,START_TIME]"
#: ../src/programs/pkttyagent.c:91
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Daftarkan agen bagi pemilik BUS_NAME"
#: ../src/programs/pkttyagent.c:91
msgid "BUS_NAME"
msgstr "BUS_NAME"
#: ../src/programs/pkttyagent.c:164
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Kesalahan spesifikasi proses `%s'\n"
+212
View File
@@ -0,0 +1,212 @@
# Italian translation for polkit.
# Copyright (C) 2018 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Milo Casagrande <milo@milo.name>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2018-09-11 03:25+0000\n"
"PO-Revision-Date: 2018-09-11 11:51+0200\n"
"Language-Team: Italian <gnome-it-list@gnome.org>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"X-Generator: Poedit 2.1.1\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Lancia un programma come un altro utente"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr ""
"È richiesto autenticarsi per lanciare un programma come un altro utente"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Lancia il programma di esempio Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"È richiesto autenticarsi per lanciare il programma di esempio Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Stampa informazioni solo riguardo all'AZIONE"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "AZIONE"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Stampa informazioni dettagliate dell'azione"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "Mostra la versione"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id AZIONE]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:83
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Segnalare problemi a: %s\n"
"Sito web di %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:97
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: argomento «%s» non atteso\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Uso:\n"
" pkcheck [OPZIONE...]\n"
"\n"
"Opzioni d'aiuto:\n"
" -h, --help Mostra opzioni di aiuto\n"
"\n"
"Opzioni dell'applicazione:\n"
" -a, --action-id=AZIONE Controlla l'autorizzazione per "
"eseguire\n"
" AZIONE\n"
" -u, --allow-user-interaction Interagisce con l'utente, se "
"necessario\n"
" -d, --details=CHIAVE VALORE Aggiunge (CHIAVE, VALORE) alle "
"informazioni\n"
" riguardo all'azione\n"
" --enable-internal-agent Usa un agente di autenticazione "
"interna,\n"
" se necessario\n"
" --list-temp Elenca autorizzazione temporane per la\n"
" sessione corrente\n"
" -p, --process=PID[,START_TIME,UID] Controlla l'autorizzazione del "
"processo\n"
" specificato\n"
" --revoke-temp Revoca tutte le autorizzazione "
"temporane\n"
" per la sessione corrente\n"
" -s, --system-bus-name=NOME_BUS Controlla l'autorizzazione per il\n"
" proprietario di NOME_BUS\n"
" --version Mostra la versione\n"
"\n"
"Segnalare problemi a: %s\n"
"Sito web di %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: atteso un argomento dopo «%s»\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: valore «%s» di --process non valido\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: attesi due argomenti dopo «--detail»\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: oggetto non specificato\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "È richiesto autenticarsi per lanciare «$(program)» come super utente"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"È richiesto autenticarsi per lanciare «$(program)» come l'utente $(user."
"display)"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "Non sostituisce l'agente esistente"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "Chiude il FD quando l'agente viene registrato"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "Registra l'agente per il processo specificato"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,TEMPO_INIZIO]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registra l'agente per il proprietario di NOME_BUS"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "NOME_BUS"
#: ../src/programs/pkttyagent.c:129
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: indicatore di processo «%s» non valido\n"
+209
View File
@@ -0,0 +1,209 @@
# Georgian translation of polkit
# Copyright (C) 2023 Polkit's authors
# This file is distributed under the same license as the polkit package.
# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-07 21:51+0200\n"
"PO-Revision-Date: 2023-08-07 21:55+0200\n"
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
"Language-Team: Georgian <(nothing)>\n"
"Language: ka\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.3.2\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "პროგრამის სხვა სახელით გაშვება"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr "პროგრამის სხვა სახელით გაშვებას ავთენტიკაცია სჭირდება"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "გაუშვით polkit-ის მაგალითი Frobnicate"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Polkit მაგალითის პროგრამის Frobnicate-ის გასაშვებად საჭიროა ავტორიზაცია "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "ინფორმაციის მხოლოდ ACTION-ის შესახებ გამოტანა"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "[ქმედება]"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "ქმედების დეტალური ინფორმაციის გამოტანა"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "ვერსიის ჩვენება"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ACTION]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"შეცდომებზე მისწერეთ: %s\n"
"%s ვებგვერდი: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: მოულოდნელი არგუმენტი `%s'\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"გამოყენება:\n"
" pkcheck [OPTION...]\n"
"\n"
"დახმარების პარამეტრები:\n"
" -h, --help დახმარების პარამეტრების ჩვენება\n"
"\n"
"განაცხადის პარამეტრები:\n"
" -a, --action-id=ACTION ACTION-ის შესასრულებლად ავტორიზაციის შემოწმება \n"
" -u, --allow-user-interaction საჭიროების შემთხვევაში მომხმარებელთან "
"ურთერთობა\n"
" -d, --details=KEY VALUE ქმედების შესახებ ინფორმაციისთვის (KEY, VALUE) "
"დამატება\n"
" --enable-internal-agent საჭიროების შემთხვევაში შიდა ავთენტიფიკაციის "
"აგენტის გამოყენება\n"
" --list-temp მიმდინარე სესიისთვის დროებითი ავტორიზაციების სია \n"
" -p, --process=PID[,START_TIME,UID] მითითებული პროცესის ავტორიზაციის "
"შემოწმება\n"
" --revoke-temp მიმდინარე სესიისთვის ყველა დროებითი ავტორიზაციის გაუქმება \n"
" -s, --system-bus-name=BUS_NAME BUS_NAME-ის მფლობელის ავტორიზაციის "
"შემოწმება\n"
" --version ვერსიის ჩვენება\n"
"\n"
"შეატყობინეთ შეცდომების შესახებ: %s\n"
"%s მთავარი გვერდი: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: `%s'-ის შემდეგ მოველოდი არგუმენტს\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: --process -ის არასწორი მნიშვნელობა `%s'\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: `--detail'-ის და '-d-ის შემდეგ საჭიროა ორი არგუმენტის მითითება\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: თემა მითითებული არაა\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:821
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr "'$(cmdlne_short)'-ის ზემომხმარებლით გაშვებას ავთენტიკაცია სჭირდება"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:831
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"'$(cmdlne_short)'-ის მომხმარებლით '$(user.display)' გაშვებას ავთენტიკაცია "
"სჭირდება"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "თუ აგენტი არსებობს, ის არ ჩანაცვლდება"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "FD-ის დახურვა აგენტის რეგისტრაციის შემდეგ"
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "აგენტის რეგისტრაცია მითითებული პროცესისთვის"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,START_TIME]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "აგენტის რეგისტრაცია BUS_NAME-ის მფლობელისთვის"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "BUS_NAME"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr "%s: პარამეტრები --process და --system-bus-name ურთიერთგამომრიცხავია\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: პროცესის არასწორი მიმთითებელი: %s\n"
@@ -0,0 +1,5 @@
i18n.gettext(
pk_api_name,
data_dirs: data_dir,
preset: 'glib',
)
+209
View File
@@ -0,0 +1,209 @@
# Dutch translation for polkit.
# Copyright (C) 2022 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Nathan Follens <nfollens@gnome.org>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2022-03-27 15:28+0000\n"
"PO-Revision-Date: 2022-03-27 20:29+0200\n"
"Last-Translator: Nathan Follens <nfollens@gnome.org>\n"
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Voer een programma uit als een andere gebruiker"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr ""
"Authenticatie is vereist om een programma als een andere gebruiker uit te "
"voeren"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "Polkit-voorbeeldprogramma Frobnicate uitvoeren"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Authenticatie is vereist om het Polkit-voorbeeldprogramma Frobnicate uit te "
"voeren (user=$(user), user.gecos=$(user.gecos), user.display=$(user."
"display), program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Enkel informatie over ACTIE uitvoeren"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ACTIE"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Gedetailleerde actie-informatie tonen"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:95
msgid "Show version"
msgstr "Versie tonen"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ACTIE]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:118
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Gelieve problemen te melden aan: %s\n"
"%s projectwebsite: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:132
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Onverwachte parameter `%s'\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Gebruik:\n"
" pkcheck [OPTIE...]\n"
"\n"
"Hulpopties:\n"
" -h, --help Hulpopties tonen\n"
"\n"
"Toepassingsopties:\n"
" -a, --action-id=ACTIE Controleer vereiste autorisatie voor "
"ACTIE\n"
" -u, --allow-user-interaction Interageer indien nodig met de "
"gebruiker\n"
" -d, --details=SLEUTEL WAARDE Voeg (SLEUTEL, WAARDE) toe aan "
"informatie over de actie\n"
" --enable-internal-agent Gebruik indien nodig een interne "
"authenticatieagent\n"
" --list-temp Lijst tijdelijke autorisaties voor "
"huidige sessies op\n"
" -p, --process=PID[,BEGINTIJD,UID] Controleer autorisatie van opgegeven "
"proces\n"
" --revoke-temp Trek alle tijdelijke autorisaties voor "
"huidige sessie in\n"
" -s, --system-bus-name=BUSNAAM Controleer autorisatie van eigenaar van "
"BUSNAAM\n"
" --version Versie tonen\n"
"\n"
"Gelieve problemen te melden aan: %s\n"
"%s projectwebsite: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Parameter verwacht na `%s'\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Ongeldige --process-waarde `%s'\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Twee parameters verwacht na `--detail'\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Onderwerp niet opgegeven\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:807
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"Authenticatie is vereist om `$(program)' uit te voeren als de rootgebruiker"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:817
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Authenticatie is vereist om `$(program)' uit te voeren als gebruiker $(user."
"display)"
#: src/programs/pkttyagent.c:78
msgid "Don't replace existing agent if any"
msgstr "Indien er reeds een bestaande agent is, deze niet vervangen"
#: src/programs/pkttyagent.c:82
msgid "Close FD when the agent is registered"
msgstr "FD sluiten wanneer de agent geregistreerd is"
#: src/programs/pkttyagent.c:82
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:86
msgid "Register the agent for the specified process"
msgstr "Registreer de agent voor het opgegeven proces"
#: src/programs/pkttyagent.c:87
msgid "PID[,START_TIME]"
msgstr "PID[,BEGINTIJD]"
#: src/programs/pkttyagent.c:91
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registreer de agent voor de eigenaar van BUSNAAM"
#: src/programs/pkttyagent.c:91
msgid "BUS_NAME"
msgstr "BUSNAAM"
#: src/programs/pkttyagent.c:164
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Ongeldige processpecificeerder `%s'\n"
+207
View File
@@ -0,0 +1,207 @@
# Norwegian Nynorsk translation for polkit.
# Copyright (C) 2020 Karl Ove Hufthammer
# This file is distributed under the same license as the polkit package.
# Karl Ove Hufthammer <karl@huftis.org>, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-09 18:09+0200\n"
"PO-Revision-Date: 2020-05-09 18:42+0200\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 20.04.0\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Køyr program som ein annan brukar"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "Krev autentisering for å køyra program som ein annan brukar"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Køyr polkit sitt eksempel­program Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Krev autentisering for å køyra polkit sitt eksempel­program Frobnicate (user="
"$(user), user.gecos=$(user.gecos), user.display=$(user.display), program="
"$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Vis berre informasjon om HANDLING"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "HANDLING"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Vis detaljert handlingsinformasjon"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:95
msgid "Show version"
msgstr "Vis programversjon"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id HANDLING]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:118
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Meld frå om feil til: %s\n"
"Heimesida til %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:132
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Uventa argument «%s»\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"BRUK:\n"
" pkcheck [VAL …]\n"
"\n"
"Hjelpeval:\n"
" -h, --help Vis argumentoversikt\n"
"\n"
"Programval:\n"
" -a, --action-id=HANDLING Kontroller godkjenning for utføring av "
"HANDLING\n"
" -u, --allow-user-interaction Samhandla om nødvendig med brukaren\n"
" -d, --details=NØKKEL VERDI Legg (NØKKEL, VERDI) til informasjon om "
"handlinga\n"
" --enable-internal-agent Bruk om nødvendig intern autentiserings­"
"agent\n"
" --list-temp Vis oversikt over mellombelse "
"godkjenningar for gjeldande økt\n"
" -p, --process=PID[,STARTTID,UID] Kontroller godkjenning til vald "
"prosess\n"
" --revoke-temp Kall tilbake alle mellombelse "
"godkjenningar for gjeldande økt\n"
" -s, --system-bus-name=BUSSNAMN Kontroller godkjenning til eigaren av "
"BUSSNAMN\n"
" --version Vis programversjon\n"
"\n"
"Meld frå om feil til: %s\n"
"Heimesida til %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Venta argument etter «%s»\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Ugyldig verdi til «--process»: «%s»\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Venta to argument etter «--detail»\n"
# subject = prosess (program)
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Prosess må oppgjevast\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "Krev autentisering for å køyra «$(program)» som rotbrukar"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Krev autentisering for å køyra «$(program)» som brukaren $(user.display)"
# skip-rule: eksistera
#: ../src/programs/pkttyagent.c:78
msgid "Don't replace existing agent if any"
msgstr "Ikkje erstatt eventuell eksisterande agent"
# FD = fildeskriptor
#: ../src/programs/pkttyagent.c:82
msgid "Close FD when the agent is registered"
msgstr "Lukk FD når agenten er registrert"
#: ../src/programs/pkttyagent.c:82
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:86
msgid "Register the agent for the specified process"
msgstr "Registrer agenten for den valde prosessen"
#: ../src/programs/pkttyagent.c:87
msgid "PID[,START_TIME]"
msgstr "PID[,STARTTID]"
#: ../src/programs/pkttyagent.c:91
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registrer agenten for eigaren til BUSSNAMN"
#: ../src/programs/pkttyagent.c:91
msgid "BUS_NAME"
msgstr "BUSSNAMN"
#: ../src/programs/pkttyagent.c:164
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Ugyldig prosess-spesifikasjon «%s»\n"
+215
View File
@@ -0,0 +1,215 @@
# Polish translation for polkit.
# Copyright © 2010-2018, 2023 the polkit authors.
# This file is distributed under the same license as the polkit package.
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2018, 2023.
# Aviary.pl <community-poland@mozilla.org>, 2018, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2023-06-20 15:27+0000\n"
"PO-Revision-Date: 2023-07-16 12:44+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Uruchomienie programu jako inny użytkownik"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr ""
"Wymagane jest uwierzytelnienie, aby uruchomić program jako inny użytkownik"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "Uruchomienie przykładowego programu polkit „Frobnicate”"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Wymagane jest uwierzytelnienie, aby uruchomić przykładowy program polkit "
"„Frobnicate” (user=$(user), user.gecos=$(user.gecos), user.display=$(user."
"display), program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Wyświetla tylko informacje o DZIAŁANIU"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "DZIAŁANIE"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Wyświetla szczegółowe informacje o działaniu"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "Wyświetla wersję"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id DZIAŁANIE]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Prosimy zgłaszać błędy na (w języku angielskim): %s\n"
"Strona domowa programu %s: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: nieoczekiwany parametr „%s”\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Użycie:\n"
" pkcheck [OPCJA…]\n"
"\n"
"Opcje pomocy:\n"
" -h, --help Wyświetla opcje pomocy\n"
"\n"
"Opcje programu:\n"
" -a, --action-id=DZIAŁANIE Sprawdza upoważnienie do wykonania\n"
" DZIAŁANIA\n"
" -u, --allow-user-interaction Pyta użytkownika, jeśli trzeba\n"
" -d, --details=KLUCZ WARTOŚĆ Dodaje (KLUCZ, WARTOŚĆ) do\n"
" informacji o działaniu\n"
" --enable-internal-agent Używa wewnętrznego agenta\n"
" uwierzytelniania, jeśli trzeba\n"
" --list-temp Wyświetla listę tymczasowych\n"
" upoważnień dla bieżącej sesji\n"
" -p, --process=PID[,CZAS_POCZĄTKOWY,UID] Sprawdza upoważnienie podanego\n"
" procesu\n"
" --revoke-temp Unieważnia wszystkie tymczasowe\n"
" upoważnienia dla bieżącej sesji\n"
" -s, --system-bus-name=NAZWA_MAGISTRALI Sprawdza upoważnienie właściciela\n"
" NAZWY_MAGISTRALI\n"
" --version Wyświetla wersję\n"
"\n"
"Prosimy zgłaszać błędy na (w języku angielskim): %s\n"
"Strona domowa programu %s: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: oczekiwano parametru po opcji „%s”\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: nieprawidłowa wartość „%s” opcji --process\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: oczekiwano dwóch parametrów po opcji „--detail, -d”\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: nie podano tematu\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:821
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr ""
"Wymagane jest uwierzytelnienie, aby uruchomić program „$(cmdline_short)” "
"jako superużytkownik"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:831
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"Wymagane jest uwierzytelnienie, aby uruchomić program „$(cmdline_short)” "
"jako użytkownik $(user.display)"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "Bez zastępowania istniejących agentów, jeśli jakieś są"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "Zamyka deskryptor pliku po zarejestrowaniu agenta"
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "DP"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "Rejestruje agenta dla podanego procesu"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,CZAS_POCZĄTKOWY]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Rejestruje agenta dla właściciela NAZWY_MAGISTRALI"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "NAZWA_MAGISTRALI"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr "%s: opcje --process i --system-bus-name wzajemnie się wykluczają\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: nieprawidłowe określenie procesu „%s”\n"
+209
View File
@@ -0,0 +1,209 @@
# Portuguese translation for polkit.
# Copyright © 2010-2018 the polkit authors.
# This file is distributed under the same license as the polkit package.
# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2018-08-20 21:47+0000\n"
"PO-Revision-Date: 2021-06-12 16:37+0100\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
"Language-Team: Portuguese (https://l10n.gnome.org/teams/pt/)\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 3.0\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Executa um programa como outro utilizador"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr ""
"A autenticação é necessária para executar um programa como outro utilizador"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Executa Frobnicate, o programa exemplo do polkit"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"A autenticação é necessária para executar o exemplo de programa do polkit "
"Frobnicate (user=$(user), user.gecos=$(user.gecos), user.display=$(user."
"display), program=$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Apresenta apenas informação sobre AÇÃO"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "AÇÃO"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Apresenta informação detalhada da ação"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "Mostra a versão"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id AÇÃO]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:83
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Relate erros para: %s\n"
"Página web do %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:97
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Argumento inesperado '%s'\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Utilização:\n"
" pkcheck [OPÇÃO...]\n"
"\n"
"Opções de ajuda:\n"
" -h, --help Mostra as opções de ajuda\n"
"\n"
"Opções da aplicação:\n"
" -a, --action-id=AÇÃO Verifica autorização para realizar "
"AÇÃO\n"
" -u, --allow-user-interaction Interage com o utilizador, se "
"necessário\n"
" -d, --details=CHAVE VALOR Adiciona (CHAVE, VALOR) à informação\n"
" sobre a ação\n"
" --enable-internal-agent Usa um agente de autenticação interno,\n"
" se necessário\n"
" --list-temp Lista autorizações temporárias para a\n"
" sessão atual\n"
" -p, --process=PID[,START_TIME,UID] Verifica autorização do processo\n"
" especificado\n"
" --revoke-temp Revoga todas as autorizações\n"
" temporárias para sessão atual\n"
" -s, --system-bus-name=BARRAMENTO Verifica a autorização do proprietário "
"do\n"
" BARRAMENTO\n"
" --version Mostra a versão\n"
"\n"
"Relate erros para: %s\n"
"Página web do %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Esperava argumento após '%s'\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Valor '%s' inválido de --process\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Dois argumentos esperados após '--detail'\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Sujeito não especificado\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"A autenticação é necessária para executar `$(program)' como o superutilizador"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"A autenticação é necessária para executar `$(program)' como o utilizador "
"$(user.display)"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "Não substitui o agente existente, seu houver"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "Fecha o descritor de ficheiro FD quando o agente é registado"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "Regista o agente para o processo especificado"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,HORÁRIO_INÍCIO]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Regista o agente para o proprietário do BARRAMENTO"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "BARRAMENTO"
#: ../src/programs/pkttyagent.c:129
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Especificador do processo '%s' inválido\n"
@@ -0,0 +1,206 @@
# Brazilian Portuguese translation for polkit.
# Copyright (C) 2018 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Rafael Fontenelle <rafaelff@gnome.org>, 2015, 2018.
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2018-08-20 21:47+0000\n"
"PO-Revision-Date: 2018-09-02 22:46-0200\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Virtaal 1.0.0-beta1\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Executa um programa como outro usuário"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr ""
"A autenticação é necessária para executar um programa como outro usuário"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Executa Frobnicate, o programa exemplo do polkit"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"A autenticação é necessária para executar o exemplo de programa do polkit "
"Frobnicate (user=$(user), user.gecos=$(user.gecos), user.display=$(user."
"display), program=$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Exibe apenas informação sobre AÇÃO"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "AÇÃO"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Exibe informação detalhada da ação"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "Mostra a versão"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id AÇÃO]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:83
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Relate erros para: %s\n"
"Página web do %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:97
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Argumento inesperado \"%s\"\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Uso:\n"
" pkcheck [OPÇÃO...]\n"
"\n"
"Opções de ajuda:\n"
" -h, --help Mostra as opções de ajuda\n"
"\n"
"Opções do aplicativo:\n"
" -a, --action-id=AÇÃO Verifica autorização para realizar "
"AÇÃO\n"
" -u, --allow-user-interaction Interage com o usuário, se necessário\n"
" -d, --details=CHAVE VALOR Adiciona (CHAVE, VALOR) à informação\n"
" sobre a ação\n"
" --enable-internal-agent Usa um agente de autenticação interno,\n"
" se necessário\n"
" --list-temp Lista autorizações temporárias para a\n"
" sessão atual\n"
" -p, --process=PID[,START_TIME,UID] Verifica autorização do processo\n"
" especificado\n"
" --revoke-temp Revoga todas as autorizações\n"
" temporárias para sessão atual\n"
" -s, --system-bus-name=BARRAMENTO Verifica a autorização do dono do\n"
" BARRAMENTO\n"
" --version Mostra a versão\n"
"\n"
"Relate erros para: %s\n"
"Página web do %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Esperava argumento após \"%s\"\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Valor \"%s\" inválido de --process\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Dois argumentos esperados após \"--detail\"\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Sujeito não especificado\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"A autenticação é necessária para executar `$(program)' como o superusuário"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"A autenticação é necessária para executar `$(program)' como o usuário "
"$(user.display)"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "Não substitui o agente existente, seu houver"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "Fecha o descritor de arquivo FD quando o agente é registrado"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "Registra o agente para o processo especificado"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,HORÁRIO_INÍCIO]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registra o agente para o dono do BARRAMENTO"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "BARRAMENTO"
#: ../src/programs/pkttyagent.c:129
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Especificador do processo \"%s\" inválido\n"
+211
View File
@@ -0,0 +1,211 @@
# Romanian translation for polkit
# Copyright (C) 2021 polkit authors
# This file is distributed under the same license as the polkit package.
#
# Sergiu Bivol <sergiu@cip.md>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-06-03 22:41+0100\n"
"PO-Revision-Date: 2021-06-04 00:15+0100\n"
"Last-Translator: Sergiu Bivol <sergiu@cip.md>\n"
"Language-Team: Romanian\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 <"
" 20)) ? 1 : 2;\n"
"X-Generator: Lokalize 19.12.3\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Rulează un program ca alt utilizator"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr ""
"Este necesară autentificarea pentru a rula un program ca alt utilizator"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Rulează programul polkit exemplificator Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Este necesară autentificarea pentru a rula programul polkit exemplificator"
" Frobnicate (user=$(user), user.gecos=$(user.gecos),"
" user.display=$(user.display), program=$(program),"
" command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Afișează numai informații despre ACȚIUNE"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ACȚIUNE"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Afișează informații detaliate despre acțiune"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:95
msgid "Show version"
msgstr "Arată versiunea"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ACȚIUNE]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:118
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Raportați defecte la: %s\n"
"Pagina %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:132
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Argument neașteptat „%s”\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Utilizare:\n"
" pkcheck [OPȚIUNE...]\n"
"\n"
"Opțiuni pentru ajutor:\n"
" -h, --help Arată opțiunile pentru ajutor\n"
"\n"
"Opțiuni pentru aplicație:\n"
" -a, --action-id=ACȚIUNE Verifică autorizarea pentru efectuarea"
" ACȚIUNII\n"
" -u, --allow-user-interaction Interacționează cu utilizatorul dacă e"
" necesar\n"
" -d, --details=CHEIE VALOARE Adaugă (CHEIE, VALOARE) la informațiile"
" despre acțiune\n"
" --enable-internal-agent Folosește un agent de autentificare"
" intern dacă e necesar\n"
" --list-temp Enumeră autorizările temporare pentru"
" sesiunea actuală\n"
" -p, --process=PID[,TIMP_PORNIRE,UID] Verifică autorizarea procesului"
" specificat\n"
" --revoke-temp Revocă toate autorizările temporare din"
" sesiunea actuală\n"
" -s, --system-bus-name=DENUMIRE_MAGISTRALĂ "
" Verifică autorizarea proprietarului"
" DENUMIRE_MAGISTRALĂ\n"
" --version Arată versiunea\n"
"\n"
"Raportați defecte la: %s\n"
"Pagina %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Argument așteptat după „%s”\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Valoare nevalidă pentru --process „%s”\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Două argumente așteptate după „--detail”\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Subiect nespecificat\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"Este necesară autentificarea pentru a rula „$(program)” ca administrator"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Este necesară autentificarea pentru a rula „$(program)” ca utilizatorul"
" $(user.display)"
#: ../src/programs/pkttyagent.c:78
msgid "Don't replace existing agent if any"
msgstr "Nu înlocui agentul existent dacă există"
#: ../src/programs/pkttyagent.c:82
msgid "Close FD when the agent is registered"
msgstr "Închide descriptorul de fișier la înregistrarea agentului"
#: ../src/programs/pkttyagent.c:82
msgid "FD"
msgstr "DF"
#: ../src/programs/pkttyagent.c:86
msgid "Register the agent for the specified process"
msgstr "Înregistrează agentul pentru procesul specificat"
#: ../src/programs/pkttyagent.c:87
msgid "PID[,START_TIME]"
msgstr "PID[,TIMP_PORNIRE]"
#: ../src/programs/pkttyagent.c:91
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Înregistrează agentul pentru proprietarul DENUMIRE_MAGISTRALĂ"
#: ../src/programs/pkttyagent.c:91
msgid "BUS_NAME"
msgstr "DENUMIRE_MAGISTRALĂ"
#: ../src/programs/pkttyagent.c:164
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Specificator de proces nevalid „%s”\n"
+217
View File
@@ -0,0 +1,217 @@
# Russian translation for polkit.
# Copyright (C) 2023 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Aleksandr Melman <Alexmelman88@gmail.com>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2023-11-28 03:27+0000\n"
"PO-Revision-Date: 2023-11-28 14:40+0300\n"
"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.4.1\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Запуск программы от имени другого пользователя"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr ""
"Требуется аутентификация для запуска программы от имени другого пользователя"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "Запуск программы Frobnicate для примера polkit"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Требуется аутентификация для запуска программы Frobnicate для примера polkit "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Выводить информацию только о действии"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ДЕЙСТВИЕ"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Вывод подробной информации о действии"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "Показать версию"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ДЕЙСТВИЕ]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Сообщить об ошибках: %s\n"
"%s домашняя страница: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Неожиданный аргумент `%s'\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Использование:\n"
" pkcheck [ПАРАМЕТР...]\n"
"\n"
"Параметры справки:\n"
" -h, --help Показать параметры справки\n"
"\n"
"Параметры приложения:\n"
" -a, --action-id=ACTION Проверить авторизацию для выполнения "
"действия\n"
" -u, --allow-user-interaction Взаимодействовать с пользователем при "
"необходимости\n"
" -d, --details=KEY VALUE Добавить (ключ, значение) к информации "
"о действии\n"
" --enable-internal-agent Использовать внутренний агент "
"аутентификации при необходимости\n"
" --list-temp Список временных авторизаций для "
"текущего сеанса\n"
" -p, --process=PID[,START_TIME,UID] Проверить авторизацию указанного "
"процесса\n"
" --revoke-temp Отменить все временные авторизации для "
"текущего сеанса\n"
" -s, --system-bus-name=BUS_NAME Проверить авторизацию владельца "
"имени_шины\n"
" --version Показать версию\n"
"\n"
"Сообщить об ошибках: %s\n"
"%s домашняя страница: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Аргумент ожидается после `%s'\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Недопустимое значение --process `%s'\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: Ожидается два аргумента после `--detail, -d'\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Субъект не указан\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:822
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr ""
"Необходима аутентификация для запуска `$(cmdline_short)' от имени "
"суперпользователя"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:832
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"Необходима аутентификация для запуска `$(cmdline_short)' от имени "
"пользователя $(user.display)"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "Не заменять существующего агента, если таковой имеется"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "Закрыть FD, когда агент зарегистрирован"
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "Зарегистрировать агента для указанного процесса"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,ВРЕМЯ_НАЧАЛА]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Зарегистрировать агента для владельца имени_шины"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "ИМЯ_ШИНЫ"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr ""
"%s: Параметры --process и --system-bus-name являются взаимоисключающими\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Недопустимый спецификатор процесса `%s'\n"
+211
View File
@@ -0,0 +1,211 @@
# Slovak translation for polkit.
# Copyright (C) 2016 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Dušan Kazik <prescott66@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
"product=PolicyKit&keywords=I18N+L10N&component=libpolkit\n"
"POT-Creation-Date: 2016-08-08 02:28+0000\n"
"PO-Revision-Date: 2016-08-08 10:49+0200\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"X-Generator: Poedit 1.8.8\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Spustenie programu ako iný používateľ"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr ""
"Na spustenie programu ako iný používateľ sa vyžaduje overenie totožnosti"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Spustenie vzorového programu Frobnicate nástroja polkit"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Na spustenie vzorového programu Frobnicate nástroja polkit sa vyžaduje "
"overenie totožnosti (user=$(user), user.gecos=$(user.gecos), user.display="
"$(user.display), program=$(program), command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Iba výstup informácií o AKCII"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "AKCIA"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Podrobný výstup informácií o AKCII"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "Zobrazí verziu"
#: ../src/programs/pkaction.c:134
msgid "[--action-id ACTION]"
msgstr "[--action-id AKCIA]"
#: ../src/programs/pkaction.c:135 ../src/programs/pkttyagent.c:85
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Chyby nahláste na: %s\n"
"Domovská stránka balíka %s: <%s>"
#: ../src/programs/pkaction.c:149 ../src/programs/pkcheck.c:495
#: ../src/programs/pkttyagent.c:99
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Neočakávaný parameter „%s“\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Použitie:\n"
" pkcheck [VOĽBA...]\n"
"\n"
"Voľby pomocníka:\n"
" -h, --help Zobrazí voľby pomocníka\n"
"\n"
"Voľby aplikácie:\n"
" -a, --action-id=AKCIA Skontroluje overenie totožnosti na "
"vykonanie AKCIE\n"
" -u, --allow-user-interaction Umožní interakciu s používateľom, ak je "
"to potrebné\n"
" -d, --details=KĽÚČ HODNOTA Pridá parametre (KĽÚČ, HODNOTA) do "
"informácií o akcii\n"
" --enable-internal-agent Použije vnútorného agenta overenia "
"totožnosti, ak je to potrebné\n"
" --list-temp Vypíše dočasné overenia totožností pre "
"aktuálnu reláciu\n"
" -p, --process=PID[,ČAS_SPUSTENIA,UID] Skontroluje overenie totožnosti "
"určeného procesu\n"
" --revoke-temp Odvolá všetky dočasné overenia "
"totožností pre aktuálnu reláciu\n"
" -s, --system-bus-name=NÁZOV_ZBERNICE Skontroluje overenie totožnosti "
"vlastníka definovaného premennou NÁZOV_ZBERNICE\n"
" --version Zobrazí verziu\n"
"\n"
"Chyby nahláste na: %s\n"
"Domovská stránka balíka %s: <%s>\n"
#: ../src/programs/pkcheck.c:395 ../src/programs/pkcheck.c:428
#: ../src/programs/pkcheck.c:440
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Očakával sa parameter po voľbe „%s“\n"
#: ../src/programs/pkcheck.c:418
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Neplatný parameter voľby --process value „%s“\n"
#: ../src/programs/pkcheck.c:455 ../src/programs/pkcheck.c:464
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: Očakávali sa dva parametre po voľbe „--detail“\n"
#: ../src/programs/pkcheck.c:525
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Predmet nebol určený\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:797
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"Na spustenie programu „$(program)“ ako superpoužívateľ sa vyžaduje overenie "
"totožnosti"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:807
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Na spustenie programu „$(program)“ ako používateľ $(user.display) sa "
"vyžaduje overenie totožnosti"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "Nenahradí existujúceho agenta, ak nejaký existuje"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "Zavrie FD, keď je agent zaregistrovaný"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "Zaregistruje agenta pre určený proces"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,ČAS_SPUSTENIA]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent owner of BUS_NAME"
msgstr ""
"Zaregistruje agenta pre vlastníka definovaného premennou NÁZOV_ZBERNICE"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "NÁZOV_ZBERNICE"
#: ../src/programs/pkttyagent.c:131
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Neplatný určovateľ procesu „%s“\n"
+214
View File
@@ -0,0 +1,214 @@
# Swedish translation for polkit.
# Copyright © 2015-2023 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2019, 2022, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2023-06-20 15:27+0000\n"
"PO-Revision-Date: 2023-06-20 21:05+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Kör ett program som en annan användare"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr "Autentisering krävs för att köra ett program som en annan användare"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "Kör polkit-exempelprogrammet Frobnicate"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Autentisering krävs för att köra polkit-exempelprogrammet Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Visa endast information om ÅTGÄRD"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ÅTGÄRD"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Visa detaljerad åtgärdsinformation"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "Visa version"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ÅTGÄRD]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Rapportera fel till: %s\n"
"Webbplats för %s: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Oväntat argument ”%s”\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Användning:\n"
" pkcheck [FLAGGA…]\n"
"\n"
"Hjälpflaggor:\n"
" -h, --help Visa hjälpflaggor\n"
"\n"
"Programflaggor:\n"
" -a, --action-id=ÅTGÄRD Kontrollera auktorisering för att "
"utföra ÅTGÄRD\n"
" -u, --allow-user-interaction Interagera med användaren om "
"nödvändigt\n"
" -d, --details=NYCKEL VÄRDE Lägg till (NYCKEL, VÄRDE) till "
"information om åtgärden\n"
" --enable-internal-agent Använd en intern autentiseringsagent om "
"nödvändigt\n"
" --list-temp Lista tillfälliga auktoriseringar för "
"aktuell session\n"
" -p, --process=PID[,STARTTID,UID] Kontrollera auktorisering för angiven "
"process\n"
" --revoke-temp Återkalla alla tillfälliga "
"auktoriseringar för aktuell session\n"
" -s, --system-bus-name=BUSSNAMN Kontrollera auktorisering för ägare av "
"BUSSNAMN\n"
" --version Visa version\n"
"\n"
"Rapportera fel till: %s\n"
"Webbplats för %s: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: Argument förväntades efter ”%s”\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Ogiltigt värde ”%s” för --process\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: Två argument förväntades efter ”--detail, -d”\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Subjekt ej angivet\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:821
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr ""
"Autentisering krävs för att köra ”$(cmdline_short)” som superanvändaren"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:831
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"Autentisering krävs för att köra ”$(cmdline_short)” som användaren $(user."
"display)"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "Ersätt inte befintlig agent om sådan finns"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "Stäng FD då agenten registrerats"
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "Registrera agenten för den angivna processen"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,STARTTID]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Registrera agenten för ägaren av BUSSNAMN"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "BUSSNAMN"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr ""
"%s: Flaggorna --process och --system-bus-name är ömsesidigt uteslutande\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Ogiltig processbeskrivare ”%s”\n"
+218
View File
@@ -0,0 +1,218 @@
# Turkish translation for polkit.
# Copyright (C) 2016-2023 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
#
# Muhammet Kara <muhammetk@gmail.com>, 2016.
# Sabri Ünal <libreajans@gmail.com>, 2019, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2023-08-06 15:27+0000\n"
"PO-Revision-Date: 2023-08-07 03:24+0300\n"
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
"Language-Team: Türkçe <takim@gnome.org.tr>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.2.2\n"
#: actions/org.freedesktop.policykit.policy.in:12
msgid "Run a program as another user"
msgstr "Bir programı başka bir kullanıcı olarak çalıştırın"
#: actions/org.freedesktop.policykit.policy.in:13
msgid "Authentication is required to run a program as another user"
msgstr ""
"Bir programı başka bir kullanıcı olarak çalıştırmak için kimlik doğrulama "
"gerekir"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:10
msgid "Run the polkit example program Frobnicate"
msgstr "polkit örnek programı Frobnicate'i çalıştırın"
#: src/examples/org.freedesktop.policykit.examples.pkexec.policy.in:11
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"polkit örnek programı Frobnicate'i çalıştırmak için kimlik doğrulama gerekir "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
#: src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Sadece EYLEM hakkındaki bilgileri çıktı verin"
#: src/programs/pkaction.c:101
msgid "ACTION"
msgstr "EYLEM"
#: src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Ayrıntılı eylem bilgilerini çıktı verin"
#: src/programs/pkaction.c:109 src/programs/pkttyagent.c:104
msgid "Show version"
msgstr "Sürümü göster"
#: src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id EYLEM]"
#: src/programs/pkaction.c:133 src/programs/pkttyagent.c:127
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Hataları şuraya bildirin: %s\n"
"%s ev sayfası: <%s>"
#: src/programs/pkaction.c:147 src/programs/pkcheck.c:498
#: src/programs/pkttyagent.c:141
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: Beklenmeyen değişken `%s'\n"
#: src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Kullanımı:\n"
" pkcheck [SEÇENEK...]\n"
"\n"
"Yardım Seçenekleri:\n"
" -h, --help Yardım seçeneklerini göster\n"
"\n"
"Uygulama seçenekleri:\n"
" -a, --action-id=EYLEM EYLEM'i gerçekleştirmek için "
"yetkilendirmeyi kontrol et\n"
" -u, --allow-user-interaction Eğer gerekliyse kullanıcı ile "
"etkileşime gir\n"
" -d, --details=ANAHTAR DEĞER (ANAHTAR, DEĞER)'i eylem hakkındaki "
"bilgilere ekle\n"
" --enable-internal-agent Eğer gerekirse dahili bir kimlik "
"doğrulama vekilini kullan\n"
" --list-temp Geçerli oturum için geçici "
"yetkilendirmeleri listele\n"
" -p, --process=PID[,START_TIME,UID] Belirtilen sürecin yetkilendirmesini "
"kontrol et\n"
" --revoke-temp Geçerli oturum için tüm geçici "
"yetkilendirmeleri iptal et\n"
" -s, --system-bus-name=VERİYOLU_ADI VERİYOLU_ADI'nın sahibinin "
"yetkilendirmesini kontrol et\n"
" --version Sürümü göster\n"
"\n"
"Hataları şuraya bildirin: %s\n"
"%s ev sayfası: <%s>\n"
#: src/programs/pkcheck.c:398 src/programs/pkcheck.c:431
#: src/programs/pkcheck.c:443
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: `%s'den sonra değişken bekleniyor\n"
#: src/programs/pkcheck.c:421
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: Geçersiz --process değeri `%s'\n"
#: src/programs/pkcheck.c:458 src/programs/pkcheck.c:467
#, c-format
msgid "%s: Two arguments expected after `--detail, -d'\n"
msgstr "%s: `--detail, -d'den sonra iki değişken bekleniyor\n"
#: src/programs/pkcheck.c:528
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: Konu belirtilmedi\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: src/programs/pkexec.c:821
msgid "Authentication is needed to run `$(cmdline_short)' as the super user"
msgstr ""
"`$(cmdline_short)' programını süper kullanıcı olarak çalıştırmak için kimlik "
"doğrulama gerekir"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: src/programs/pkexec.c:831
msgid ""
"Authentication is needed to run `$(cmdline_short)' as user $(user.display)"
msgstr ""
"`$(cmdline_short)' programını $(user.display) kullanıcısı olarak çalıştırmak "
"için kimlik doğrulama gerekir"
#: src/programs/pkttyagent.c:87
msgid "Don't replace existing agent if any"
msgstr "Eğer varsa, mevcut vekili değiştirme"
#: src/programs/pkttyagent.c:91
msgid "Close FD when the agent is registered"
msgstr "Vekil kaydedildiğinde FD'yi kapat"
#: src/programs/pkttyagent.c:91
msgid "FD"
msgstr "FD"
#: src/programs/pkttyagent.c:95
msgid "Register the agent for the specified process"
msgstr "Belirtilen süreç için vekili kaydet"
#: src/programs/pkttyagent.c:96
msgid "PID[,START_TIME]"
msgstr "PID[,BAŞLANGIÇ_ZAMANI]"
#: src/programs/pkttyagent.c:100
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Vekili, VERİYOLU_ADI sahibi için kaydet"
#: src/programs/pkttyagent.c:100
msgid "BUS_NAME"
msgstr "VERİYOLU_ADI"
#: src/programs/pkttyagent.c:155
#, c-format
msgid "%s: Options --process and --system-bus-name are mutually exclusive\n"
msgstr "%s: --process ve --system-bus-name seçenekleri birbirini dışlar\n"
#: src/programs/pkttyagent.c:179
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: Geçersiz süreç belirteci `%s'\n"
+210
View File
@@ -0,0 +1,210 @@
# Ukrainian translation for polkit.
# Copyright (C) 2015 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
#
# Yuri Chornoivan <yurchor@ukr.net>, 2015, 2020.
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/polkit/polkit/issues\n"
"POT-Creation-Date: 2020-03-22 03:56+0000\n"
"PO-Revision-Date: 2020-04-02 13:05+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 20.07.70\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "Виконання програми від імені іншого користувача"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr ""
"Для виконання програми від імені іншого користувача слід пройти розпізнавання"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "Виконання прикладу програми polkit Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"Для запуску прикладу програми polkit Frobnicate (user=$(user), user.gecos="
"$(user.gecos), user.display=$(user.display), program=$(program), "
"command_line=$(command_line)) слід пройти розпізнавання"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "Вивести дані лише щодо дії ДІЯ"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ДІЯ"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "Вивести докладні дані щодо дії"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:95
msgid "Show version"
msgstr "Показати дані щодо версії"
#: ../src/programs/pkaction.c:132
msgid "[--action-id ACTION]"
msgstr "[--action-id ДІЯ]"
#: ../src/programs/pkaction.c:133 ../src/programs/pkttyagent.c:118
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"Про вади повідомляйте за такою адресою: %s\n"
"Домашня сторінка %s: <%s>"
#: ../src/programs/pkaction.c:147 ../src/programs/pkcheck.c:493
#: ../src/programs/pkttyagent.c:132
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: неочікуваний аргумент «%s»\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"Користування:\n"
" pkcheck [ПАРАМЕТР...]\n"
"\n"
"Параметри довідки:\n"
" -h, --help Вивести довідку щодо параметрів\n"
"\n"
"Параметри програми:\n"
" -a, --action-id=ДІЯ Перевірити уповноваження щодо виконання "
"дії ДІЯ\n"
" -u, --allow-user-interaction Взаємодіяти із користувачем, якщо "
"потрібно\n"
" -d, --details=КЛЮЧ ЗНАЧЕННЯ Додати пару (КЛЮЧ, ЗНАЧЕННЯ) до "
"інформації щодо дії\n"
" --enable-internal-agent Використати вбудований агент "
"розпізнавання, якщо потрібно\n"
" --list-temp Вивести список тимчасових уповноважень "
"для поточного сеансу\n"
" -p, --process=PID[,ЧАС_ЗАПУСКУ,UID] Перевірити уповноваження для вказаного "
"процесу\n"
" --revoke-temp Відкликати усі тимчасові уповноваження "
"для поточного сеансу\n"
" -s, --system-bus-name=НАЗВА_КАНАЛУ Перевірити уповноваження власника "
"НАЗВА_КАНАЛУ\n"
" --version Вивести дані щодо версії\n"
"\n"
"Про вади повідомляйте за такою адресою: %s\n"
"Домашня сторінка %s: <%s>\n"
#: ../src/programs/pkcheck.c:393 ../src/programs/pkcheck.c:426
#: ../src/programs/pkcheck.c:438
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: після «%s» мало бути вказано аргумент'\n"
#: ../src/programs/pkcheck.c:416
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: некоректне значення --process, «%s»\n"
#: ../src/programs/pkcheck.c:453 ../src/programs/pkcheck.c:462
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: після «--detail» мало бути вказано два аргументи\n"
#: ../src/programs/pkcheck.c:523
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: не вказано суб’єкт\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:790
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr ""
"Для запуску «$(program)» від імені суперкористувача слід пройти розпізнавання"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:800
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr ""
"Для запуску «$(program)» від імені користувача $(user.display) слід пройти "
"розпізнавання"
#: ../src/programs/pkttyagent.c:78
msgid "Don't replace existing agent if any"
msgstr "Не змінювати наявного агента, якщо такий є"
#: ../src/programs/pkttyagent.c:82
msgid "Close FD when the agent is registered"
msgstr "Закрити дескриптор файла, якщо агент не зареєстровано"
#: ../src/programs/pkttyagent.c:82
msgid "FD"
msgstr "ДФ"
#: ../src/programs/pkttyagent.c:86
msgid "Register the agent for the specified process"
msgstr "Зареєструвати агент для вказаного процесу"
#: ../src/programs/pkttyagent.c:87
msgid "PID[,START_TIME]"
msgstr "PID[,ЧАС_ЗАПУСКУ]"
#: ../src/programs/pkttyagent.c:91
#| msgid "Register the agent owner of BUS_NAME"
msgid "Register the agent for the owner of BUS_NAME"
msgstr "Зареєструвати агент для власника НАЗВА_КАНАЛУ"
#: ../src/programs/pkttyagent.c:91
msgid "BUS_NAME"
msgstr "НАЗВА_КАНАЛУ"
#: ../src/programs/pkttyagent.c:164
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: некоректний специфікатор процесу, «%s»\n"
@@ -0,0 +1,196 @@
# Chinese (China) translation for polkit.
# Copyright (C) 2015 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Mingye Wang <arthur2e5@aosc.xyz>, 2015.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
"product=PolicyKit&keywords=I18N+L10N&component=libpolkit\n"
"POT-Creation-Date: 2015-11-13 02:11+0000\n"
"PO-Revision-Date: 2015-11-13 01:59-0500\n"
"Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n"
"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.6\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "作为另一个用户运行程序"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "需要验证:作为另一个用户运行程序"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "运行 polkit 示例程序“Frobnicate”"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"需要验证:运行 polkit 示例程序 Frobnicate (user=$(user), user.gecos=$(user."
"gecos), user.display=$(user.display), program=$(program), command_line="
"$(command_line))"
#: ../src/programs/pkaction.c:100
msgid "Only output information about ACTION"
msgstr "只输出与操作有关的信息"
#: ../src/programs/pkaction.c:100
msgid "ACTION"
msgstr "操作"
#: ../src/programs/pkaction.c:104
msgid "Output detailed action information"
msgstr "输出详细的操作信息"
#: ../src/programs/pkaction.c:108 ../src/programs/pkttyagent.c:61
msgid "Show version"
msgstr "显示版本"
#: ../src/programs/pkaction.c:130
msgid "[--action-id ACTION]"
msgstr "[--action-id 操作]"
#: ../src/programs/pkaction.c:131 ../src/programs/pkttyagent.c:81
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"报告错误到:%s\n"
"%s 项目主页:<%s>"
#: ../src/programs/pkaction.c:145 ../src/programs/pkcheck.c:491
#: ../src/programs/pkttyagent.c:95
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s: 意外的参数 \"%s\"\n"
#: ../src/programs/pkcheck.c:35
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"用法\n"
" pkcheck [选项...]\n"
"\n"
"帮助选项\n"
" -h, --help 显示可选的帮助\n"
"\n"
"应用选项\n"
" -a, --action-id=操作 检查 <操作> 的授权情况\n"
" -u, --allow-user-interaction 在必要时进行用户交互\n"
" -d, --details=键 值 将 (键, 值) 加入有关操作的信息\n"
" --enable-internal-agent 在必要时使用内置授权助理程序\n"
" --list-temp 列出当前会话的临时授权\n"
" -p, --process=PID[,开始时间,UID] 检查指定进程的授权\n"
" --revoke-temp 吊销所有当前会话的临时授权\n"
" -s, --system-bus-name=BUS_NAME 检查 BUS_NAME 所有者的授权\n"
" --version 显示版本\n"
"\n"
"报告错误到:%s\n"
"%s 项目主页:<%s>\n"
#: ../src/programs/pkcheck.c:391 ../src/programs/pkcheck.c:424
#: ../src/programs/pkcheck.c:436
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s: %s 后预期参数\n"
#: ../src/programs/pkcheck.c:414
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s: 无效 --process 值 \"%s\"\n"
#: ../src/programs/pkcheck.c:451 ../src/programs/pkcheck.c:460
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s: --detail 后预期两个参数\n"
#: ../src/programs/pkcheck.c:521
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s: 主题未指定\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:794
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "需要授权:作为超级用户身份运行 \"$(program)\" "
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:804
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr "需要授权:作为用户 \"$(user.display)\" 运行 \"$(program)\" "
#: ../src/programs/pkttyagent.c:44
msgid "Don't replace existing agent if any"
msgstr "不替换现有助理程序,若有的话"
#: ../src/programs/pkttyagent.c:48
msgid "Close FD when the agent is registered"
msgstr "注册助理程序时关闭文件描述符"
#: ../src/programs/pkttyagent.c:48
msgid "FD"
msgstr "文件描述符"
#: ../src/programs/pkttyagent.c:52
msgid "Register the agent for the specified process"
msgstr "对指定进程注册助理程序"
#: ../src/programs/pkttyagent.c:53
msgid "PID[,START_TIME]"
msgstr "PID[,开始时间]"
#: ../src/programs/pkttyagent.c:57
msgid "Register the agent owner of BUS_NAME"
msgstr "注册 BUS_NAME 的助理所有者"
#: ../src/programs/pkttyagent.c:57
msgid "BUS_NAME"
msgstr ""
#: ../src/programs/pkttyagent.c:127
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s: 无效进程定义 \"%s\" \n"
@@ -0,0 +1,196 @@
# Chinese (Taiwan) translation for polkit.
# Copyright (C) 2017 polkit's COPYRIGHT HOLDER
# This file is distributed under the same license as the polkit package.
# Cheng-Chia Tseng <pswo10680@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: polkit master\n"
"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
"product=PolicyKit&keywords=I18N+L10N&component=libpolkit\n"
"POT-Creation-Date: 2017-08-31 03:26+0000\n"
"PO-Revision-Date: 2017-08-31 21:24+0800\n"
"Language-Team: Chinese (Taiwan) <chinese-l10n@googlegroups.com>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"X-Generator: Poedit 2.0.3\n"
#: ../actions/org.freedesktop.policykit.policy.in.h:1
msgid "Run a program as another user"
msgstr "以其他使用者身份執行程式"
#: ../actions/org.freedesktop.policykit.policy.in.h:2
msgid "Authentication is required to run a program as another user"
msgstr "必須先核對身份才能以其他使用者執行程式"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:1
msgid "Run the polkit example program Frobnicate"
msgstr "執行 polkit 範例程式 Frobnicate"
#: ../src/examples/org.freedesktop.policykit.examples.pkexec.policy.in.h:2
msgid ""
"Authentication is required to run the polkit example program Frobnicate "
"(user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), "
"program=$(program), command_line=$(command_line))"
msgstr ""
"必須先核對身份才能執行 polkit 範例程式 Frobnicate (user=$(user), user.gecos="
"$(user.gecos), user.display=$(user.display), program=$(program), "
"command_line=$(command_line))"
#: ../src/programs/pkaction.c:101
msgid "Only output information about ACTION"
msgstr "僅輸出 ACTION 相關資訊"
#: ../src/programs/pkaction.c:101
msgid "ACTION"
msgstr "ACTION"
#: ../src/programs/pkaction.c:105
msgid "Output detailed action information"
msgstr "輸出詳細動作資訊"
#: ../src/programs/pkaction.c:109 ../src/programs/pkttyagent.c:62
msgid "Show version"
msgstr "顯示版本"
#: ../src/programs/pkaction.c:134
msgid "[--action-id ACTION]"
msgstr "[--action-id ACTION]"
#: ../src/programs/pkaction.c:135 ../src/programs/pkttyagent.c:85
#, c-format
msgid ""
"Report bugs to: %s\n"
"%s home page: <%s>"
msgstr ""
"回報臭蟲處:%s\n"
"%s 網頁:<%s>"
#: ../src/programs/pkaction.c:149 ../src/programs/pkcheck.c:495
#: ../src/programs/pkttyagent.c:99
#, c-format
msgid "%s: Unexpected argument `%s'\n"
msgstr "%s:未預期引數「%s」\n"
#: ../src/programs/pkcheck.c:36
#, c-format
msgid ""
"Usage:\n"
" pkcheck [OPTION...]\n"
"\n"
"Help Options:\n"
" -h, --help Show help options\n"
"\n"
"Application Options:\n"
" -a, --action-id=ACTION Check authorization to perform ACTION\n"
" -u, --allow-user-interaction Interact with the user if necessary\n"
" -d, --details=KEY VALUE Add (KEY, VALUE) to information about "
"the action\n"
" --enable-internal-agent Use an internal authentication agent if "
"necessary\n"
" --list-temp List temporary authorizations for "
"current session\n"
" -p, --process=PID[,START_TIME,UID] Check authorization of specified "
"process\n"
" --revoke-temp Revoke all temporary authorizations for "
"current session\n"
" -s, --system-bus-name=BUS_NAME Check authorization of owner of "
"BUS_NAME\n"
" --version Show version\n"
"\n"
"Report bugs to: %s\n"
"%s home page: <%s>\n"
msgstr ""
"用法:\n"
" pkcheck [OPTION...]\n"
"\n"
"幫助選項:\n"
" -h, --help 顯示幫助選項\n"
"\n"
"應用選項:\n"
" -a, --action-id=ACTION 檢查授權以執行 ACTION\n"
" -u, --allow-user-interaction 若有必要,則和使用者互動\n"
" -d, --details=KEY VALUE 加入 (KEY, VALUE) 到動作的相關資訊中\n"
" --enable-internal-agent 若有必要,使用內部身份核對代理\n"
" --list-temp 列出目前工作階段的暫時授權\n"
" -p, --process=PID[,START_TIME,UID] 檢查指定程序的授權\n"
" --revoke-temp 撤銷目前工作階段的所有暫時授權\n"
" -s, --system-bus-name=BUS_NAME 檢查 BUS_NAME 的使用者授權\n"
" --version 顯示版號\n"
"\n"
"請回報臭蟲到:%s\n"
"%s 網頁:<%s>\n"
#: ../src/programs/pkcheck.c:395 ../src/programs/pkcheck.c:428
#: ../src/programs/pkcheck.c:440
#, c-format
msgid "%s: Argument expected after `%s'\n"
msgstr "%s:預期「%s」後要有引數\n"
#: ../src/programs/pkcheck.c:418
#, c-format
msgid "%s: Invalid --process value `%s'\n"
msgstr "%s:無效 --process 值「%s」\n"
#: ../src/programs/pkcheck.c:455 ../src/programs/pkcheck.c:464
#, c-format
msgid "%s: Two arguments expected after `--detail'\n"
msgstr "%s:預期「--detail」後有兩個引數\n"
#: ../src/programs/pkcheck.c:525
#, c-format
msgid "%s: Subject not specified\n"
msgstr "%s:未指定目標\n"
#. Translators: message shown when trying to run a program as root. Do not
#. * translate the $(program) fragment - it will be expanded to the path
#. * of the program e.g. /bin/bash.
#.
#: ../src/programs/pkexec.c:797
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "必須先核對身份才能以超級使用者執行「$(program)」"
#. Translators: message shown when trying to run a program as another user.
#. * Do not translate the $(program) or $(user) fragments - the former will
#. * be expanded to the path of the program e.g. "/bin/bash" and the latter
#. * to the user e.g. "John Doe (johndoe)" or "johndoe".
#.
#: ../src/programs/pkexec.c:807
msgid "Authentication is needed to run `$(program)' as user $(user.display)"
msgstr "必須先核對身份才能以 $(user.display) 使用者執行「$(program)」"
#: ../src/programs/pkttyagent.c:45
msgid "Don't replace existing agent if any"
msgstr "不要替換既有代理,若有的話"
#: ../src/programs/pkttyagent.c:49
msgid "Close FD when the agent is registered"
msgstr "當代裡已註冊時關閉 FD"
#: ../src/programs/pkttyagent.c:49
msgid "FD"
msgstr "FD"
#: ../src/programs/pkttyagent.c:53
msgid "Register the agent for the specified process"
msgstr "為指定程序註冊代理"
#: ../src/programs/pkttyagent.c:54
msgid "PID[,START_TIME]"
msgstr "PID[,START_TIME]"
#: ../src/programs/pkttyagent.c:58
msgid "Register the agent owner of BUS_NAME"
msgstr "註冊 BUS_NAME 的代理擁有者"
#: ../src/programs/pkttyagent.c:58
msgid "BUS_NAME"
msgstr "BUS_NAME"
#: ../src/programs/pkttyagent.c:131
#, c-format
msgid "%s: Invalid process specifier `%s'\n"
msgstr "%s:無效程序指定碼「%s」\n"
@@ -0,0 +1,157 @@
/*
* Copyright (C) 2009 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
/* Simple example that shows how to check for an authorization
* including cancelling the check.
*
* Cancelling an authorization check is desirable in situations where
* the object/action to check for vanishes.
*
* One concrete example of this is a disks service in which the user
* needs to authenticate to modify a disk. If the disk is removed
* while the authentication dialog is shown, the disks service should
* cancel the authorization check. A side effect of this, is that the
* authentication dialog is removed.
*/
#include "config.h"
#include <polkit/polkit.h>
static gboolean
on_tensec_timeout (gpointer user_data)
{
GMainLoop *loop = user_data;
g_print ("Ten seconds has passed. Now exiting.\n");
g_main_loop_quit (loop);
return FALSE;
}
static void
check_authorization_cb (PolkitAuthority *authority,
GAsyncResult *res,
gpointer user_data)
{
GMainLoop *loop = user_data;
PolkitAuthorizationResult *result;
GError *error;
error = NULL;
result = polkit_authority_check_authorization_finish (authority, res, &error);
if (error != NULL)
{
g_print ("Error checking authorization: %s\n", error->message);
g_error_free (error);
}
else
{
const gchar *result_str;
if (polkit_authorization_result_get_is_authorized (result))
{
result_str = "authorized";
}
else if (polkit_authorization_result_get_is_challenge (result))
{
result_str = "challenge";
}
else
{
result_str = "not authorized";
}
g_print ("Authorization result: %s\n", result_str);
}
g_print ("Authorization check has been cancelled and the dialog should now be hidden.\n"
"This process will exit in ten seconds.\n");
g_timeout_add (10000, on_tensec_timeout, loop);
}
static gboolean
do_cancel (GCancellable *cancellable)
{
g_print ("Timer has expired; cancelling authorization check\n");
g_cancellable_cancel (cancellable);
return FALSE;
}
int
main (int argc, char *argv[])
{
pid_t parent_pid;
const gchar *action_id;
GMainLoop *loop;
PolkitSubject *subject;
PolkitAuthority *authority;
GCancellable *cancellable;
if (argc != 2)
{
g_printerr ("usage: %s <action_id>\n", argv[0]);
return 1;
}
action_id = argv[1];
loop = g_main_loop_new (NULL, FALSE);
authority = polkit_authority_get_sync (NULL, NULL);
/* Typically mechanisms will use a PolkitSystemBusName since most
* clients communicate with the mechanism via D-Bus. However for
* this simple example we use the process id of the calling process.
*
* Note that if the parent was reaped we have to be careful not to
* check if init(1) is authorized (it always is).
*/
parent_pid = getppid ();
if (parent_pid == 1)
{
g_printerr ("Parent process was reaped by init(1)\n");
return 1;
}
subject = polkit_unix_process_new_for_owner (parent_pid, 0, getuid ());
cancellable = g_cancellable_new ();
g_print ("Will cancel authorization check in 10 seconds\n");
/* Set up a 10 second timer to cancel the check */
g_timeout_add (10 * 1000,
(GSourceFunc) do_cancel,
cancellable);
polkit_authority_check_authorization (authority,
subject,
action_id,
NULL, /* PolkitDetails */
POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
cancellable,
(GAsyncReadyCallback) check_authorization_cb,
loop);
g_main_loop_run (loop);
g_object_unref (authority);
g_object_unref (subject);
g_object_unref (cancellable);
g_main_loop_unref (loop);
return 0;
}
@@ -0,0 +1,83 @@
/*
* Copyright (C) 2009 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#include "config.h"
#include <glib.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
int
main (int argc, char *argv[])
{
gchar *args;
gchar **env;
guint n;
int ret;
#ifdef __GLIBC__
gchar *cwd = NULL;
#else
gchar cwd[PATH_MAX];
#endif
ret = 1;
args = NULL;
env = NULL;
#ifdef __GLIBC__
if ((cwd = get_current_dir_name ()) == NULL)
#else
if (getcwd (cwd, sizeof cwd) == NULL)
#endif
{
g_printerr ("Error getting cwd: %s\n", g_strerror (errno));
goto out;
}
args = g_strjoinv (" ", argv);
g_print ("In pk-example-frobnicate\n");
g_print ("uid: %d\n", getuid ());
g_print ("euid: %d\n", geteuid ());
g_print ("args: `%s'\n", args);
g_print ("cwd: %s\n", cwd);
g_print ("environment:\n");
env = g_listenv ();
for (n = 0; env[n] != NULL; n++)
{
g_print (" %s=%s\n", env[n], g_getenv (env[n]));
}
ret = 0;
out:
#ifdef __GLIBC__
free (cwd);
#endif
g_free (args);
g_strfreev (env);
return ret;
}
@@ -0,0 +1,27 @@
policy = 'org.freedesktop.policykit.examples.pkexec.policy'
i18n.merge_file(
input: policy + '.in',
output: '@BASENAME@',
po_dir: po_dir,
data_dirs: its_dir,
install: true,
install_dir: pk_pkgactiondir,
)
program = 'cancel'
executable(
program,
program + '.c',
include_directories: top_inc,
dependencies: libpolkit_gobject_dep,
)
executable(
'pk-example-frobnicate',
'frobnicate.c',
include_directories: top_inc,
dependencies: glib_dep,
install: true,
)
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
<policyconfig>
<vendor>Examples for the polkit project</vendor>
<vendor_url>http://www.freedesktop.org/wiki/Software/polkit/</vendor_url>
<action id="org.freedesktop.policykit.example.pkexec.run-frobnicate">
<description>Run the polkit example program Frobnicate</description>
<message>Authentication is required to run the polkit example program Frobnicate (user=$(user), user.gecos=$(user.gecos), user.display=$(user.display), program=$(program), command_line=$(command_line))</message>
<icon_name>audio-x-generic</icon_name> <!-- just an example -->
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pk-example-frobnicate</annotate>
</action>
</policyconfig>
@@ -0,0 +1,41 @@
#!/usr/bin/env python
# Copyright (C) 2009 Red Hat, Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General
# Public License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307, USA.
#
# Author: David Zeuthen <davidz@redhat.com>
# Simple example showing how to access the Authority via D-Bus calls
#
import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority')
authority = dbus.Interface(proxy, dbus_interface='org.freedesktop.PolicyKit1.Authority')
system_bus_name = bus.get_unique_name()
subject = ('system-bus-name', {'name' : system_bus_name})
action_id = 'org.freedesktop.policykit.exec'
details = {}
flags = 1 # AllowUserInteraction flag
cancellation_id = '' # No cancellation id
result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id)
print result
@@ -0,0 +1,21 @@
src_inc = include_directories('.')
symbol_map = meson.current_source_dir() / 'symbol.map'
ldflags = cc.get_supported_link_arguments('-Wl,--version-script,@0@'.format(symbol_map))
subdir('polkit')
# Red Bear: build the client-side agent library (libpolkit-agent-1) + its PAM
# auth helper even under libs-only. It's needed by PolkitQt6-1 (the agent
# component) and depends only on libpolkit-gobject-1 + glib + PAM (pam-redbear) —
# NOT on the daemon/backend. Only polkitbackend/polkitd/programs (the JS rules
# engine + daemon) stay gated off, since redbear-polkit is the authority daemon.
subdir('polkitagent')
if not get_option('libs-only')
subdir('polkitbackend')
subdir('programs')
endif
enable_examples = get_option('examples')
if enable_examples
subdir('examples')
endif
@@ -0,0 +1,136 @@
name = '@0@-gobject-@1@'.format(meson.project_name(), pk_api_version)
enum_headers = files(
'polkitauthorityfeatures.h',
'polkitcheckauthorizationflags.h',
'polkiterror.h',
'polkitimplicitauthorization.h',
)
headers = enum_headers + files(
'polkitactiondescription.h',
'polkitauthority.h',
'polkitauthorizationresult.h',
'polkitdetails.h',
'polkit.h',
'polkitidentity.h',
'polkitpermission.h',
'polkitsubject.h',
'polkitsystembusname.h',
'polkittemporaryauthorization.h',
'polkitunixgroup.h',
'polkitunixnetgroup.h',
'polkitunixprocess.h',
'polkitunixsession.h',
'polkitunixuser.h',
)
private_headers = files(
'polkitprivate.h',
'polkittypes.h',
)
install_headers(
headers + private_headers,
install_dir: pk_pkgincludedir / 'polkit',
)
common_deps = [
gio_dep,
gio_unix_dep,
glib_dep,
]
enum_sources = gnome.mkenums_simple(
'polkitenumtypes',
sources: enum_headers,
install_header: true,
install_dir: pk_pkgincludedir / 'polkit',
)
sources = enum_sources + files(
'polkitactiondescription.c',
'polkitauthority.c',
'polkitauthorityfeatures.c',
'polkitauthorizationresult.c',
'polkitcheckauthorizationflags.c',
'polkitdetails.c',
'polkiterror.c',
'polkitidentity.c',
'polkitimplicitauthorization.c',
'polkitpermission.c',
'polkitsubject.c',
'polkitsystembusname.c',
'polkittemporaryauthorization.c',
'polkitunixgroup.c',
'polkitunixnetgroup.c',
'polkitunixprocess.c',
'polkitunixuser.c',
)
incs = [
top_inc,
src_inc,
]
deps = common_deps
c_flags = '-D_POLKIT_COMPILATION'
if enable_logind
sources += 'polkitunixsession-systemd.c'
deps += logind_dep
else
sources += 'polkitunixsession.c'
endif
libpolkit_gobject = shared_library(
name,
sources: sources,
version: libversion,
include_directories: incs,
dependencies: deps,
c_args: c_flags,
link_args: ldflags,
link_depends: symbol_map,
install: true,
)
libpolkit_gobject_dep = declare_dependency(
sources: enum_sources[1],
include_directories: src_inc,
dependencies: common_deps,
link_with: libpolkit_gobject,
)
pkg.generate(
libraries: libpolkit_gobject,
version: pk_version,
name: name,
description: 'PolicyKit Authorization API',
filebase: name,
subdirs: pk_api_name,
requires: common_deps,
variables: [
'exec_prefix=${prefix}',
'datadir=' + ('${prefix}' / pk_datadir),
'policydir=' + ('${datadir}' / pk_actiondir),
'actiondir=' + ('${datadir}' / pk_actiondir),
'pkcheck_supports_uid=true',
],
)
if enable_introspection
libpolkit_gobject_gir = gnome.generate_gir(
libpolkit_gobject,
sources: sources + headers,
extra_args: c_flags,
nsversion: pk_gir_version,
namespace: pk_gir_ns,
export_packages: name,
includes: 'Gio-2.0',
header: 'polkit/polkit.h',
install: true,
)
endif
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#ifndef __POLKIT_H
#define __POLKIT_H
#define _POLKIT_INSIDE_POLKIT_H 1
#include <polkit/polkittypes.h>
#include <polkit/polkitenumtypes.h>
#include <polkit/polkitimplicitauthorization.h>
#include <polkit/polkitactiondescription.h>
#include <polkit/polkitauthorityfeatures.h>
#include <polkit/polkiterror.h>
#include <polkit/polkitidentity.h>
#include <polkit/polkitunixuser.h>
#include <polkit/polkitunixgroup.h>
#include <polkit/polkitunixnetgroup.h>
#include <polkit/polkitsubject.h>
#include <polkit/polkitunixprocess.h>
#include <polkit/polkitunixsession.h>
#include <polkit/polkitsystembusname.h>
#include <polkit/polkitauthorizationresult.h>
#include <polkit/polkitcheckauthorizationflags.h>
#include <polkit/polkitauthority.h>
#include <polkit/polkitdetails.h>
#include <polkit/polkittemporaryauthorization.h>
#include <polkit/polkitpermission.h>
#undef _POLKIT_INSIDE_POLKIT_H
#endif /* __POLKIT_H */
@@ -0,0 +1,382 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <string.h>
#include "polkitimplicitauthorization.h"
#include "polkitactiondescription.h"
#include "polkitprivate.h"
/**
* SECTION:polkitactiondescription
* @title: PolkitActionDescription
* @short_description: Description of Actions
*
* Object used to encapsulate a registered action.
*/
/**
* PolkitActionDescription:
*
* The #PolkitActionDescription struct should not be accessed directly.
*/
struct _PolkitActionDescription
{
GObject parent_instance;
gchar *action_id;
gchar *description;
gchar *message;
gchar *vendor_name;
gchar *vendor_url;
gchar *icon_name;
PolkitImplicitAuthorization implicit_any;
PolkitImplicitAuthorization implicit_inactive;
PolkitImplicitAuthorization implicit_active;
GHashTable *annotations;
gchar **annotation_keys;
};
struct _PolkitActionDescriptionClass
{
GObjectClass parent_class;
};
G_DEFINE_TYPE (PolkitActionDescription, polkit_action_description, G_TYPE_OBJECT);
static void
polkit_action_description_init (PolkitActionDescription *action_description)
{
action_description->annotations = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
g_free);
}
static void
polkit_action_description_finalize (GObject *object)
{
PolkitActionDescription *action_description;
action_description = POLKIT_ACTION_DESCRIPTION (object);
g_free (action_description->action_id);
g_free (action_description->description);
g_free (action_description->message);
g_free (action_description->vendor_name);
g_free (action_description->vendor_url);
g_free (action_description->icon_name);
g_hash_table_unref (action_description->annotations);
g_strfreev (action_description->annotation_keys);
if (G_OBJECT_CLASS (polkit_action_description_parent_class)->finalize != NULL)
G_OBJECT_CLASS (polkit_action_description_parent_class)->finalize (object);
}
static void
polkit_action_description_class_init (PolkitActionDescriptionClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = polkit_action_description_finalize;
}
/**
* polkit_action_description_get_action_id:
* @action_description: A #PolkitActionDescription.
*
* Gets the action id for @action_description.
*
* Returns: A string owned by @action_description. Do not free.
*/
const gchar *
polkit_action_description_get_action_id (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return action_description->action_id;
}
/**
* polkit_action_description_get_description:
* @action_description: A #PolkitActionDescription.
*
* Gets the description used for @action_description.
*
* Returns: A string owned by @action_description. Do not free.
*/
const gchar *
polkit_action_description_get_description (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return action_description->description;
}
/**
* polkit_action_description_get_message:
* @action_description: A #PolkitActionDescription.
*
* Gets the message used for @action_description.
*
* Returns: A string owned by @action_description. Do not free.
*/
const gchar *
polkit_action_description_get_message (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return action_description->message;
}
/**
* polkit_action_description_get_vendor_name:
* @action_description: A #PolkitActionDescription.
*
* Gets the vendor name for @action_description, if any.
*
* Returns: A string owned by @action_description. Do not free.
*/
const gchar *
polkit_action_description_get_vendor_name (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return action_description->vendor_name;
}
/**
* polkit_action_description_get_vendor_url:
* @action_description: A #PolkitActionDescription.
*
* Gets the vendor URL for @action_description, if any.
*
* Returns: A string owned by @action_description. Do not free.
*/
const gchar *
polkit_action_description_get_vendor_url (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return action_description->vendor_url;
}
/**
* polkit_action_description_get_implicit_any:
* @action_description: A #PolkitActionDescription.
*
* Gets the implicit authorization for @action_description used for
* any subject.
*
* Returns: A value from the #PolkitImplicitAuthorization enumeration.
*/
PolkitImplicitAuthorization
polkit_action_description_get_implicit_any (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), 0);
return action_description->implicit_any;
}
/**
* polkit_action_description_get_implicit_inactive:
* @action_description: A #PolkitActionDescription.
*
* Gets the implicit authorization for @action_description used for
* subjects in inactive sessions on a local console.
*
* Returns: A value from the #PolkitImplicitAuthorization enumeration.
*/
PolkitImplicitAuthorization
polkit_action_description_get_implicit_inactive (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), 0);
return action_description->implicit_inactive;
}
/**
* polkit_action_description_get_implicit_active:
* @action_description: A #PolkitActionDescription.
*
* Gets the implicit authorization for @action_description used for
* subjects in active sessions on a local console.
*
* Returns: A value from the #PolkitImplicitAuthorization enumeration.
*/
PolkitImplicitAuthorization
polkit_action_description_get_implicit_active (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), 0);
return action_description->implicit_active;
}
/**
* polkit_action_description_get_icon_name:
* @action_description: A #PolkitActionDescription.
*
* Gets the icon name for @action_description, if any.
*
* Returns: A string owned by @action_description. Do not free.
*/
const gchar *
polkit_action_description_get_icon_name (PolkitActionDescription *action_description)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return action_description->icon_name;
}
/**
* polkit_action_description_get_annotation:
* @action_description: A #PolkitActionDescription.
* @key: An annotation key.
*
* Get the value of the annotation with @key.
*
* Returns: (allow-none): %NULL if there is no annoation with @key,
* otherwise the annotation value owned by @action_description. Do not
* free.
*/
const gchar *
polkit_action_description_get_annotation (PolkitActionDescription *action_description,
const gchar *key)
{
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
return g_hash_table_lookup (action_description->annotations, key);
}
/**
* polkit_action_description_get_annotation_keys:
* @action_description: A #PolkitActionDescription.
*
* Gets the keys of annotations defined in @action_description.
*
* Returns: (transfer none): The annotation keys owned by @action_description. Do not free.
*/
const gchar * const *
polkit_action_description_get_annotation_keys (PolkitActionDescription *action_description)
{
GPtrArray *p;
GHashTableIter iter;
const gchar *key;
g_return_val_if_fail (POLKIT_IS_ACTION_DESCRIPTION (action_description), NULL);
if (action_description->annotation_keys != NULL)
goto out;
p = g_ptr_array_new ();
g_hash_table_iter_init (&iter, action_description->annotations);
while (g_hash_table_iter_next (&iter, (gpointer) &key, NULL))
g_ptr_array_add (p, g_strdup (key));
g_ptr_array_add (p, NULL);
action_description->annotation_keys = (gchar **) g_ptr_array_free (p, FALSE);
out:
return (const gchar * const *) action_description->annotation_keys;
}
PolkitActionDescription *
polkit_action_description_new (const gchar *action_id,
const gchar *description,
const gchar *message,
const gchar *vendor_name,
const gchar *vendor_url,
const gchar *icon_name,
PolkitImplicitAuthorization implicit_any,
PolkitImplicitAuthorization implicit_inactive,
PolkitImplicitAuthorization implicit_active,
GHashTable *annotations)
{
PolkitActionDescription *ret;
g_return_val_if_fail (annotations != NULL, NULL);
ret = POLKIT_ACTION_DESCRIPTION (g_object_new (POLKIT_TYPE_ACTION_DESCRIPTION, NULL));
ret->action_id = g_strdup (action_id);
ret->description = g_strdup (description);
ret->message = g_strdup (message);
ret->vendor_name = g_strdup (vendor_name);
ret->vendor_url = g_strdup (vendor_url);
ret->icon_name = g_strdup (icon_name);
ret->implicit_any = implicit_any;
ret->implicit_inactive = implicit_inactive;
ret->implicit_active = implicit_active;
if (ret->annotations != NULL)
g_hash_table_unref (ret->annotations);
ret->annotations = g_hash_table_ref (annotations);
return ret;
}
PolkitActionDescription *
polkit_action_description_new_for_gvariant (GVariant *value)
{
PolkitActionDescription *action_description;
GVariantIter iter;
GVariant *annotations_dict;
gchar *a_key;
gchar *a_value;
action_description = POLKIT_ACTION_DESCRIPTION (g_object_new (POLKIT_TYPE_ACTION_DESCRIPTION, NULL));
g_variant_get (value,
"(ssssssuuu@a{ss})",
&action_description->action_id,
&action_description->description,
&action_description->message,
&action_description->vendor_name,
&action_description->vendor_url,
&action_description->icon_name,
&action_description->implicit_any,
&action_description->implicit_inactive,
&action_description->implicit_active,
&annotations_dict);
g_variant_iter_init (&iter, annotations_dict);
while (g_variant_iter_next (&iter, "{ss}", &a_key, &a_value))
g_hash_table_insert (action_description->annotations, a_key, a_value); /* adopts a_key and a_value */
g_variant_unref (annotations_dict);
return action_description;
}
/* Note that this returns a floating value. */
GVariant *
polkit_action_description_to_gvariant (PolkitActionDescription *action_description)
{
GVariantBuilder builder;
GHashTableIter iter;
const gchar *a_key;
const gchar *a_value;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
g_hash_table_iter_init (&iter, action_description->annotations);
while (g_hash_table_iter_next (&iter, (gpointer) &a_key, (gpointer) &a_value))
g_variant_builder_add (&builder, "{ss}", a_key, a_value);
/* TODO: note 'foo ? : ""' is a gcc specific extension (it's a short-hand for 'foo ? foo : ""') */
return g_variant_new ("(ssssssuuua{ss})",
action_description->action_id ? : "",
action_description->description ? : "",
action_description->message ? : "",
action_description->vendor_name ? : "",
action_description->vendor_url ? : "",
action_description->icon_name ? : "",
action_description->implicit_any,
action_description->implicit_inactive,
action_description->implicit_active,
&builder);
}
@@ -0,0 +1,65 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#if !defined (_POLKIT_COMPILATION) && !defined(_POLKIT_INSIDE_POLKIT_H)
#error "Only <polkit/polkit.h> can be included directly, this file may disappear or change contents."
#endif
#ifndef __POLKIT_ACTION_DESCRIPTION_H
#define __POLKIT_ACTION_DESCRIPTION_H
#include <glib-object.h>
#include <gio/gio.h>
#include <polkit/polkittypes.h>
G_BEGIN_DECLS
#define POLKIT_TYPE_ACTION_DESCRIPTION (polkit_action_description_get_type())
#define POLKIT_ACTION_DESCRIPTION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), POLKIT_TYPE_ACTION_DESCRIPTION, PolkitActionDescription))
#define POLKIT_ACTION_DESCRIPTION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), POLKIT_TYPE_ACTION_DESCRIPTION, PolkitActionDescriptionClass))
#define POLKIT_ACTION_DESCRIPTION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), POLKIT_TYPE_ACTION_DESCRIPTION, PolkitActionDescriptionClass))
#define POLKIT_IS_ACTION_DESCRIPTION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), POLKIT_TYPE_ACTION_DESCRIPTION))
#define POLKIT_IS_ACTION_DESCRIPTION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), POLKIT_TYPE_ACTION_DESCRIPTION))
#if 0
typedef struct _PolkitActionDescription PolkitActionDescription;
#endif
typedef struct _PolkitActionDescriptionClass PolkitActionDescriptionClass;
GType polkit_action_description_get_type (void) G_GNUC_CONST;
const gchar *polkit_action_description_get_action_id (PolkitActionDescription *action_description);
const gchar *polkit_action_description_get_description (PolkitActionDescription *action_description);
const gchar *polkit_action_description_get_message (PolkitActionDescription *action_description);
const gchar *polkit_action_description_get_vendor_name (PolkitActionDescription *action_description);
const gchar *polkit_action_description_get_vendor_url (PolkitActionDescription *action_description);
const gchar *polkit_action_description_get_icon_name (PolkitActionDescription *action_description);
PolkitImplicitAuthorization polkit_action_description_get_implicit_any (PolkitActionDescription *action_description);
PolkitImplicitAuthorization polkit_action_description_get_implicit_inactive (PolkitActionDescription *action_description);
PolkitImplicitAuthorization polkit_action_description_get_implicit_active (PolkitActionDescription *action_description);
const gchar *polkit_action_description_get_annotation (PolkitActionDescription *action_description,
const gchar *key);
const gchar * const *polkit_action_description_get_annotation_keys (PolkitActionDescription *action_description);
G_END_DECLS
#endif /* __POLKIT_ACTION_DESCRIPTION_H */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,227 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#if !defined (_POLKIT_COMPILATION) && !defined(_POLKIT_INSIDE_POLKIT_H)
#error "Only <polkit/polkit.h> can be included directly, this file may disappear or change contents."
#endif
#ifndef __POLKIT_AUTHORITY_H
#define __POLKIT_AUTHORITY_H
#include <glib-object.h>
#include <gio/gio.h>
#include <polkit/polkittypes.h>
#include <polkit/polkitauthorityfeatures.h>
G_BEGIN_DECLS
#define POLKIT_TYPE_AUTHORITY (polkit_authority_get_type())
#define POLKIT_AUTHORITY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), POLKIT_TYPE_AUTHORITY, PolkitAuthority))
#define POLKIT_AUTHORITY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), POLKIT_TYPE_AUTHORITY, PolkitAuthorityClass))
#define POLKIT_AUTHORITY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), POLKIT_TYPE_AUTHORITY, PolkitAuthorityClass))
#define POLKIT_IS_AUTHORITY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), POLKIT_TYPE_AUTHORITY))
#define POLKIT_IS_AUTHORITY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), POLKIT_TYPE_AUTHORITY))
#if 0
typedef struct _PolkitAuthority PolkitAuthority;
#endif
typedef struct _PolkitAuthorityClass PolkitAuthorityClass;
GType polkit_authority_get_type (void) G_GNUC_CONST;
PolkitAuthority *polkit_authority_get (void) G_GNUC_DEPRECATED_FOR (polkit_authority_get_sync);
void polkit_authority_get_async (GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
PolkitAuthority *polkit_authority_get_finish (GAsyncResult *res,
GError **error);
PolkitAuthority *polkit_authority_get_sync (GCancellable *cancellable,
GError **error);
gchar *polkit_authority_get_owner (PolkitAuthority *authority);
const gchar *polkit_authority_get_backend_name (PolkitAuthority *authority);
const gchar *polkit_authority_get_backend_version (PolkitAuthority *authority);
PolkitAuthorityFeatures polkit_authority_get_backend_features (PolkitAuthority *authority);
/* ---------------------------------------------------------------------------------------------------- */
GList *polkit_authority_enumerate_actions_sync (PolkitAuthority *authority,
GCancellable *cancellable,
GError **error);
PolkitAuthorizationResult *polkit_authority_check_authorization_sync (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *action_id,
PolkitDetails *details,
PolkitCheckAuthorizationFlags flags,
GCancellable *cancellable,
GError **error);
gboolean polkit_authority_register_authentication_agent_sync (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *locale,
const gchar *object_path,
GCancellable *cancellable,
GError **error);
gboolean polkit_authority_register_authentication_agent_with_options_sync (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *locale,
const gchar *object_path,
GVariant *options,
GCancellable *cancellable,
GError **error);
gboolean polkit_authority_unregister_authentication_agent_sync (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *object_path,
GCancellable *cancellable,
GError **error);
gboolean polkit_authority_authentication_agent_response_sync (PolkitAuthority *authority,
const gchar *cookie,
PolkitIdentity *identity,
GCancellable *cancellable,
GError **error);
GList *polkit_authority_enumerate_temporary_authorizations_sync (PolkitAuthority *authority,
PolkitSubject *subject,
GCancellable *cancellable,
GError **error);
gboolean polkit_authority_revoke_temporary_authorizations_sync (PolkitAuthority *authority,
PolkitSubject *subject,
GCancellable *cancellable,
GError **error);
gboolean polkit_authority_revoke_temporary_authorization_by_id_sync (PolkitAuthority *authority,
const gchar *id,
GCancellable *cancellable,
GError **error);
/* ---------------------------------------------------------------------------------------------------- */
void polkit_authority_enumerate_actions (PolkitAuthority *authority,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GList * polkit_authority_enumerate_actions_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_check_authorization (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *action_id,
PolkitDetails *details,
PolkitCheckAuthorizationFlags flags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
PolkitAuthorizationResult *polkit_authority_check_authorization_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_register_authentication_agent (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *locale,
const gchar *object_path,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean polkit_authority_register_authentication_agent_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
gboolean polkit_authority_register_authentication_agent_with_options_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_register_authentication_agent_with_options (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *locale,
const gchar *object_path,
GVariant *options,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
void polkit_authority_unregister_authentication_agent (PolkitAuthority *authority,
PolkitSubject *subject,
const gchar *object_path,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean polkit_authority_unregister_authentication_agent_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_authentication_agent_response (PolkitAuthority *authority,
const gchar *cookie,
PolkitIdentity *identity,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean polkit_authority_authentication_agent_response_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_enumerate_temporary_authorizations (PolkitAuthority *authority,
PolkitSubject *subject,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GList *polkit_authority_enumerate_temporary_authorizations_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_revoke_temporary_authorizations (PolkitAuthority *authority,
PolkitSubject *subject,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean polkit_authority_revoke_temporary_authorizations_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
void polkit_authority_revoke_temporary_authorization_by_id (PolkitAuthority *authority,
const gchar *id,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean polkit_authority_revoke_temporary_authorization_by_id_finish (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
/* ---------------------------------------------------------------------------------------------------- */
G_END_DECLS
#endif /* __POLKIT_AUTHORITY_H */
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "polkitcheckauthorizationflags.h"
#include "polkitprivate.h"
@@ -0,0 +1,49 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#if !defined (_POLKIT_COMPILATION) && !defined(_POLKIT_INSIDE_POLKIT_H)
#error "Only <polkit/polkit.h> can be included directly, this file may disappear or change contents."
#endif
#ifndef __POLKIT_AUTHORITY_FEATURES_H
#define __POLKIT_AUTHORITY_FEATURES_H
#include <glib-object.h>
G_BEGIN_DECLS
/**
* PolkitAuthorityFeatures:
* @POLKIT_AUTHORITY_FEATURES_NONE: No flags set.
* @POLKIT_AUTHORITY_FEATURES_TEMPORARY_AUTHORIZATION: The authority supports temporary authorizations
* that can be obtained through authentication.
*
* Flags describing features supported by the Authority implementation.
*/
typedef enum
{
POLKIT_AUTHORITY_FEATURES_NONE = 0,
POLKIT_AUTHORITY_FEATURES_TEMPORARY_AUTHORIZATION = (1<<0),
} PolkitAuthorityFeatures;
G_END_DECLS
#endif /* __POLKIT_AUTHORITY_FEATURES_H */
@@ -0,0 +1,304 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "polkitauthorizationresult.h"
#include "polkitdetails.h"
#include "polkitprivate.h"
/**
* SECTION:polkitauthorizationresult
* @title: PolkitAuthorizationResult
* @short_description: Result for checking an authorization
* @stability: Stable
*
* This class represents the result you get when checking for an authorization.
*/
/**
* PolkitAuthorizationResult:
*
* The #PolkitAuthorizationResult struct should not be accessed directly.
*/
struct _PolkitAuthorizationResult
{
GObject parent_instance;
gboolean is_authorized;
gboolean is_challenge;
PolkitDetails *details;
};
struct _PolkitAuthorizationResultClass
{
GObjectClass parent_class;
};
G_DEFINE_TYPE (PolkitAuthorizationResult, polkit_authorization_result, G_TYPE_OBJECT);
static void
polkit_authorization_result_init (PolkitAuthorizationResult *authorization_result)
{
}
static void
polkit_authorization_result_finalize (GObject *object)
{
PolkitAuthorizationResult *authorization_result;
authorization_result = POLKIT_AUTHORIZATION_RESULT (object);
if (authorization_result->details != NULL)
g_object_unref (authorization_result->details);
if (G_OBJECT_CLASS (polkit_authorization_result_parent_class)->finalize != NULL)
G_OBJECT_CLASS (polkit_authorization_result_parent_class)->finalize (object);
}
static void
polkit_authorization_result_class_init (PolkitAuthorizationResultClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = polkit_authorization_result_finalize;
}
/* ---------------------------------------------------------------------------------------------------- */
/**
* polkit_authorization_result_new:
* @is_authorized: Whether the subject is authorized.
* @is_challenge: Whether the subject is authorized if more
* information is provided. Must be %FALSE unless @is_authorized is
* %TRUE.
* @details: (allow-none): Must be %NULL unless @is_authorized is %TRUE
*
* Creates a new #PolkitAuthorizationResult object.
*
* Returns: A #PolkitAuthorizationResult object. Free with g_object_unref().
*/
PolkitAuthorizationResult *
polkit_authorization_result_new (gboolean is_authorized,
gboolean is_challenge,
PolkitDetails *details)
{
PolkitAuthorizationResult *authorization_result;
g_return_val_if_fail (details == NULL || POLKIT_IS_DETAILS (details), NULL);
authorization_result = POLKIT_AUTHORIZATION_RESULT (g_object_new (POLKIT_TYPE_AUTHORIZATION_RESULT, NULL));
authorization_result->is_authorized = is_authorized;
authorization_result->is_challenge = is_challenge;
authorization_result->details = details != NULL ? g_object_ref (details) : NULL;
return authorization_result;
}
/**
* polkit_authorization_result_get_is_authorized:
* @result: A #PolkitAuthorizationResult.
*
* Gets whether the subject is authorized.
*
* If the authorization is temporary, use polkit_authorization_result_get_temporary_authorization_id()
* to get the opaque identifier for the temporary authorization.
*
* Returns: Whether the subject is authorized.
*/
gboolean
polkit_authorization_result_get_is_authorized (PolkitAuthorizationResult *result)
{
g_return_val_if_fail (POLKIT_IS_AUTHORIZATION_RESULT (result), FALSE);
return result->is_authorized;
}
/**
* polkit_authorization_result_get_is_challenge:
* @result: A #PolkitAuthorizationResult.
*
* Gets whether the subject is authorized if more information is provided.
*
* Returns: Whether the subject is authorized if more information is provided.
*/
gboolean
polkit_authorization_result_get_is_challenge (PolkitAuthorizationResult *result)
{
g_return_val_if_fail (POLKIT_IS_AUTHORIZATION_RESULT (result), FALSE);
return result->is_challenge;
}
/**
* polkit_authorization_result_get_details:
* @result: A #PolkitAuthorizationResult.
*
* Gets the details about the result.
*
* Returns: (allow-none) (transfer none): A #PolkitDetails object or
* %NULL if there are no details. This object is owned by @result and
* should not be freed by the caller.
*/
PolkitDetails *
polkit_authorization_result_get_details (PolkitAuthorizationResult *result)
{
g_return_val_if_fail (POLKIT_IS_AUTHORIZATION_RESULT (result), NULL);
return result->details;
}
/**
* polkit_authorization_result_get_retains_authorization:
* @result: A #PolkitAuthorizationResult.
*
* Gets whether authorization is retained if obtained via authentication. This can only be the case
* if @result indicates that the subject can obtain authorization after challenge (cf.
* polkit_authorization_result_get_is_challenge()), e.g. when the subject is not already authorized (cf.
* polkit_authorization_result_get_is_authorized()).
*
* If the subject is already authorized, use polkit_authorization_result_get_temporary_authorization_id()
* to check if the authorization is temporary.
*
* This method simply reads the value of the key/value pair in @details with the
* key <literal>polkit.retains_authorization_after_challenge</literal>.
*
* Returns: %TRUE if the authorization is or will be temporary.
*/
gboolean
polkit_authorization_result_get_retains_authorization (PolkitAuthorizationResult *result)
{
gboolean ret;
PolkitDetails *details;
g_return_val_if_fail (POLKIT_IS_AUTHORIZATION_RESULT (result), FALSE);
ret = FALSE;
details = polkit_authorization_result_get_details (result);
if (details != NULL && polkit_details_lookup (details, "polkit.retains_authorization_after_challenge") != NULL)
ret = TRUE;
return ret;
}
/**
* polkit_authorization_result_get_temporary_authorization_id:
* @result: A #PolkitAuthorizationResult.
*
* Gets the opaque temporary authorization id for @result if @result indicates the
* subject is authorized and the authorization is temporary rather than one-shot or
* permanent.
*
* You can use this string together with the result from
* polkit_authority_enumerate_temporary_authorizations() to get more details
* about the temporary authorization or polkit_authority_revoke_temporary_authorization_by_id()
* to revoke the temporary authorization.
*
* If the subject is not authorized, use polkit_authorization_result_get_retains_authorization()
* to check if the authorization will be retained if obtained via authentication.
*
* This method simply reads the value of the key/value pair in @details with the
* key <literal>polkit.temporary_authorization_id</literal>.
*
* Returns: (allow-none): The opaque temporary authorization id for
* @result or %NULL if not available. Do not free this string, it
* is owned by @result.
*/
const gchar *
polkit_authorization_result_get_temporary_authorization_id (PolkitAuthorizationResult *result)
{
const gchar *ret;
PolkitDetails *details;
g_return_val_if_fail (POLKIT_IS_AUTHORIZATION_RESULT (result), NULL);
ret = NULL;
details = polkit_authorization_result_get_details (result);
if (details != NULL)
ret = polkit_details_lookup (details, "polkit.temporary_authorization_id");
return ret;
}
/**
* polkit_authorization_result_get_dismissed:
* @result: A #PolkitAuthorizationResult.
*
* Gets whether the authentication request was dismissed / canceled by the user.
*
* This method simply reads the value of the key/value pair in @details with the
* key <literal>polkit.dismissed</literal>.
*
* Returns: %TRUE if the authentication request was dismissed, %FALSE otherwise.
*
* Since: 0.101
*/
gboolean
polkit_authorization_result_get_dismissed (PolkitAuthorizationResult *result)
{
gboolean ret;
PolkitDetails *details;
g_return_val_if_fail (POLKIT_IS_AUTHORIZATION_RESULT (result), FALSE);
ret = FALSE;
details = polkit_authorization_result_get_details (result);
if (details != NULL && polkit_details_lookup (details, "polkit.dismissed") != NULL)
ret = TRUE;
return ret;
}
PolkitAuthorizationResult *
polkit_authorization_result_new_for_gvariant (GVariant *value)
{
gboolean is_authorized;
gboolean is_challenge;
GVariant *dict;
PolkitDetails *details;
PolkitAuthorizationResult *ret;
g_variant_get (value,
"(bb@a{ss})",
&is_authorized,
&is_challenge,
&dict);
details = polkit_details_new_for_gvariant (dict);
g_variant_unref (dict);
ret = polkit_authorization_result_new (is_authorized, is_challenge, details);
g_object_unref (details);
return ret;
}
/* Note that this returns a floating value. */
GVariant *
polkit_authorization_result_to_gvariant (PolkitAuthorizationResult *authorization_result)
{
PolkitDetails *details;
details = polkit_authorization_result_get_details (authorization_result);
return g_variant_new ("(bb@a{ss})",
polkit_authorization_result_get_is_authorized (authorization_result),
polkit_authorization_result_get_is_challenge (authorization_result),
polkit_details_to_gvariant (details)); /* A floating value */
}
@@ -0,0 +1,61 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#if !defined (_POLKIT_COMPILATION) && !defined(_POLKIT_INSIDE_POLKIT_H)
#error "Only <polkit/polkit.h> can be included directly, this file may disappear or change contents."
#endif
#ifndef __POLKIT_AUTHORIZATION_RESULT_H
#define __POLKIT_AUTHORIZATION_RESULT_H
#include <glib-object.h>
#include <polkit/polkittypes.h>
G_BEGIN_DECLS
#define POLKIT_TYPE_AUTHORIZATION_RESULT (polkit_authorization_result_get_type())
#define POLKIT_AUTHORIZATION_RESULT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), POLKIT_TYPE_AUTHORIZATION_RESULT, PolkitAuthorizationResult))
#define POLKIT_AUTHORIZATION_RESULT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), POLKIT_TYPE_AUTHORIZATION_RESULT, PolkitAuthorizationResultClass))
#define POLKIT_AUTHORIZATION_RESULT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), POLKIT_TYPE_AUTHORIZATION_RESULT, PolkitAuthorizationResultClass))
#define POLKIT_IS_AUTHORIZATION_RESULT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), POLKIT_TYPE_AUTHORIZATION_RESULT))
#define POLKIT_IS_AUTHORIZATION_RESULT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), POLKIT_TYPE_AUTHORIZATION_RESULT))
#if 0
typedef struct _PolkitAuthorizationResult PolkitAuthorizationResult;
#endif
typedef struct _PolkitAuthorizationResultClass PolkitAuthorizationResultClass;
GType polkit_authorization_result_get_type (void) G_GNUC_CONST;
PolkitAuthorizationResult *polkit_authorization_result_new (gboolean is_authorized,
gboolean is_challenge,
PolkitDetails *details);
PolkitDetails *polkit_authorization_result_get_details (PolkitAuthorizationResult *result);
gboolean polkit_authorization_result_get_is_authorized (PolkitAuthorizationResult *result);
gboolean polkit_authorization_result_get_is_challenge (PolkitAuthorizationResult *result);
gboolean polkit_authorization_result_get_retains_authorization (PolkitAuthorizationResult *result);
const gchar *polkit_authorization_result_get_temporary_authorization_id (PolkitAuthorizationResult *result);
gboolean polkit_authorization_result_get_dismissed (PolkitAuthorizationResult *result);
/* ---------------------------------------------------------------------------------------------------- */
G_END_DECLS
#endif /* __POLKIT_AUTHORIZATION_RESULT_H */
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "polkitcheckauthorizationflags.h"
#include "polkitprivate.h"
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2008 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#if !defined (_POLKIT_COMPILATION) && !defined(_POLKIT_INSIDE_POLKIT_H)
#error "Only <polkit/polkit.h> can be included directly, this file may disappear or change contents."
#endif
#ifndef __POLKIT_CHECK_AUTHORIZATION_FLAGS_H
#define __POLKIT_CHECK_AUTHORIZATION_FLAGS_H
#include <glib-object.h>
G_BEGIN_DECLS
/**
* PolkitCheckAuthorizationFlags:
* @POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE: No flags set.
* @POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION: If the subject can obtain the authorization
* through authentication, and an authentication agent is available, then attempt to do so. Note, this
* means that the method used for checking authorization is likely to block for a long time.
*
* Possible flags when checking authorizations.
*/
typedef enum
{
POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE = 0,
POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION = (1<<0),
} PolkitCheckAuthorizationFlags;
G_END_DECLS
#endif /* __POLKIT_CHECK_AUTHORIZATION_FLAGS_H */

Some files were not shown because too many files have changed in this diff Show More