.gitignore000066400000000000000000000012601471266067600130640ustar00rootroot00000000000000*~ *.bak /.autotools /.cproject /.project /.pydevproject /.settings /.zanata-cache/etag-cache.xml /admin/ar-lib /admin/compile /admin/config.guess /admin/config.rpath /admin/config.sub /admin/depcomp /admin/install-sh /admin/ltmain.sh /admin/missing /admin/mkinstalldirs /admin/test-driver /admin/ylwrap /autom4te.cache /build /build3 /docs/Makefile.in /docs/reference/Makefile.in /docs/reference/gtk-doc.make /docs/reference/tmpl /m4 /po/*.gmo /po/Makefile.in.in /po/Makevars.template /po/Rules-quot /po/boldquot.sed /po/en@boldquot.header /po/en@quot.header /po/insert-header.sin /po/quot.sed /po/remove-potcdate.sin /ABOUT-NLS /INSTALL /Makefile.in /aclocal.m4 /config.h.in /configure .hgtags000066400000000000000000000167321471266067600123640ustar00rootroot00000000000000038c1e9d59d00a2a2377390cf32e220263d48c5d libuser-0-49-101-3 065f2b1581de6acf2ca80a5993f1ba9c90a3d43d libuser-0-51-6-1 06900e4c49c0a13b61d74280bad95c1b5674b8b0 libuser-0_55 0701d4a2d9c21277f848dabf161290f7d566e6ca libuser-0_53_5 0a866e2409d8a4e3515e060803683e96d7021df5 libuser-0-49-101-1 0d9286547001c0c5046aa76483e165f0febf0579 libuser-0-49-91-1 **INVALID** 134283680d4615579e5a1af3f7489c0659789be1 libuser-0_52_5 15797533514b971b7c4344b6c4a5c1a3da832778 libuser-0_51_12 1bd10a124856bad223f2326eee980e8f17929152 libuser-0-49-94-1 1d248fa3c61d959f94f59bde7c487e5e16fbe3b8 libuser-0_54_7 1ffa426fcfc3782d890dfc68174a972a0036e058 libuser-0_53_1 21bd071abdd72404bf34efcfea9007031f67c38e libuser-0-16-1-1 2290f16a13608082e5e199dccac02e98d6f767b2 libuser-0-22-1 23e6ac1562eb72a8f58db2ad247769fb62d235e1 libuser-0-26-1 2f327f3ac71224aac23e5f32af981cfcb7082115 libuser-0-51-3-1 317968073ddfe122adb0000ad7a70542192d3774 libuser-0-50-1-1 34f68026e7d0b8c275a150350d26fa51f1503f28 libuser-0-18-1 35241bf059309df07cd20555a0384b085c4c3f04 libuser-0-51-7-2 367a38c37efb08b2081d677c1c91d3721f12b224 libuser-0_53_3 38e400e9bd681ac180ac8b5771d3341c533bdcb4 libuser-0_56_1 3ba057cc4e5b3a103a7759777e04224ea4836ae2 libuser-0-49-96-1 40f5a6a161bbaf79baee6cca4850ef67224b3d83 libuser-0-30-1 44f6b56f45487d4004104cb9a05c534cbd322cc9 libuser-0_53 4598fd5c9e5e556d202e1268acad7a9020c617c0 libuser-0-51-7-3 4bc04147a6f5d91779d429477d5e2f7548bcb740 libuser-0-24-4 4dbd0c17f19dbd88bef1b99692bc4a7df08ee378 libuser-0-49-97-1 50af00c6a47c0ec1d7ba965308140e9d367c82a9 libuser-0_54_4 5229eb984dd9a208275822cc6b5650943e6e9750 libuser-0-51-5-1 5378d263fa18cfcede6354b7fe547e5124b48c12 libuser-0-20-1 53e98cedf94bd0fb22a23eaf83dc1b048cd9d595 libuser-0-51-7-6 5895e8c2e9674943623fd9ef6c82d67f399cfa31 libuser-0-24-3 5984e8618b258524326e747289e6c97135260e32 libuser-0-49-90-1 5f448af858caefd4f0ef8857410a519614bec32f libuser-0-24-2 5f7c63a31c96644d7fb74ef260237d641f829b8f libuser-0_52_2 **FUNKY** 6bbaf5c0fd04e2125c8c4d7e249752834de3772b libuser-0-51-1-1 702ac002777186a1aa5ecf7a65df778b35450f0a libuser-0_54_6 72c11af8ea76d7c1bceafcbd14980560393a930d libuser-0_54_1 744632cd548d254a1814967d83e08a1e785f7232 libuser-0_54_5 750502ce649e0612cc6a17f95fe2af96381d8735 libuser-0_52_1 7778b9471287091c8dd74aed475324a3f077b908 libuser-0-51-7-7 79ccfae645474072e4a1eeb99435faf966060da0 libuser-0-51-7-1 79d267dab6520048d1cef31f8afae1efa50d8100 libuser-0-51-7-4-sel 79f4f81bf640ec25f71adaa5227970d178bd6f6a libuser-0_56_4 7ae6b3ce2ea59b732e0edde442531724a1956468 libuser-0-32-1 7cbaa12f06a43a626cf24f8ad91b6fa0ef089d5a libuser-0-49-100-1 816c9344b1d69c22be1e8ce8c092a90e4a3d9648 libuser-0-31-1 835e8f44da108a0559499596657836935263b5c8 libuser-0_52_4 893439758835af051ce1caaa7c186d0ce4fe06c0 libuser-0-25-1 899b5e564fa11e42062803116a3c2f6f1a32c6f9 libuser-0_53_6 8b4f5d101bfd4340a445592a28d042141c3ccba5 libuser-0-29-1 8c70414eddde7e2b45da2fc0e6be5a20fecc8f07 libuser-0-12 916f529af3688065284f1f9962e66c3a35eee50d libuser-0-27-1 98a37b625e371f2b96404f7ffa968c03fffccbba libuser-0-51-2-1 993d85242cbc101f1bab169d8a3e96a418cc6c99 libuser-0_53_2 9a62965116e415473689ba63b4c04e564127c156 libuser-0-49-98-1 9c897df40938b7adf5238634992849bd78a564b4 libuser-0_56 9fc0c66f7a1028710046f34676bfbc21b9460081 libuser-0-6 a50737c63f52b7e974f611b9166ee66f3f35262f libuser-0_56_6 a86ebb89ef742d76069e5c34631eddaa55f4bccd libuser-0-51-1 a893ba910b51ec70a57751dd63121ea4c5f865d9 libuser-0-49-95-1 aae361a23349ee081565b1d1a6ce9ba64b9118e1 libuser-0-25-1-1 ab0c581cb07aa9d31b410026ab6906473ed311c6 libuser-0-49-93-1 ac0523e094dc60924ba4009ca3db9096dbfc03b0 libuser-0_54_3 ac6db5b1c2c8cc035eb1c8658a96998ba8b2367a libuser-0_56_7 add602751bfe6f30deceaf1ffa473a8346304828 libuser-0_53_7 af5165a3c64931f59b9d9197d039eb3512c171c5 libuser-0-50-2-1 b36a94f9f6375a874acc3c245567f370fda848a0 libuser-0-7 b70acbaa19fd3f51a666b990072680b425cffea2 libuser-0_53_4 bb7f1e6134f156c8bbc00609f62c0c9e84c8ac0b libuser-0-21-1 bde3cfed1a451457a6bdbe1a611336da886ca63f libuser-0-28-1 c024bdd2e0c87f09d55bedcd50249d17cfb32634 libuser-0-49-99-1 c2df07267084a6a36e201dfa0fc1e632b54f2e72 libuser-0-49-102-1 c849f634aafe0120058485ce1de20e68beced7b6 libuser-0_56_2 cae0de1c75d82689a922db4255db6b28dc171d88 libuser-0_52_3 **FUNKY** cbf834477d6de135a030df4a6277a7a01d6c968d libuser-0_52_6 cec29acfea2e718aca81c3b32877a14307705fbe libuser-0-16-1 **INVALID** d2c314c22cd3ccdb3b04ac8a9989c93debd7835c libuser-0_53_8 d398076887ee081dc569e323e54897fb240bdecb libuser-0_54 d55f720a54c8c322878cd3a3a0bfffd3e4036b54 libuser-0-24-1 d5b448d44ef7ea2feb378ec0bfadc2d11ed1bde1 libuser-0-49-101-2 d666c2468c7dc8ddb868f5eec2fac2085a49ae81 libuser-0-51-10-1 d7b811341c5c7a91b2d86a93459b2ef8a331d074 libuser-0_56_5 d97e747bcf7717b10864c9463898abb100a69b18 libuser-0_56_3 dbfd40096f15d95fd0acd636290b29d07be29591 libuser-0_54_2 dc07378e499aa98c125d263053537c8c5684a0be libuser-0-23-1 e05f806700a220247abaccaed737e2baa40df1a5 libuser-0-19-1 e0d64287a00c1eb1ea3034c908cbdfaeca4d8338 libuser-0-49-94-2 e65123d5c80e87c31d0aca77cab4a5152a9ce469 libuser-0-51-1-2 ea5f9c1e3d4456f26425d243eca6a442c3977cdf libuser-0-51-9-1 ebb7eaaedb6c936e0be6193a4a228fa69f0abc99 libuser-0_54_8 ecc05520c22c2810e517438bba2d6e387128dea2 libuser-0-51-11-1 ed6cb417f04f0e4b6425d4b58862858a37081bc1 libuser-0-51-4-1 eeefb3e32f8070002ef05cc669a1a4651f6d3e84 libuser-0_52 **INVALID** f06b8cf7484ca86b7c50c3772f40bcc7ea0d8b54 libuser-0-51-8-1 f15d10fe06a12cf6ef0d604e2eac2f6f38ac8290 libuser-0-5 f38d524b7bb96782d1a4f17c9aa828ca88de074d libuser-0-17-1 f450b0123a17191921ea6c557044a572da2caa68 libuser-0-49-95-2 f5e2eac32e7c6225cf95c20612d7189131104cf4 libuser-0-50-1 fcc75716e6608fb222733078b35b2f10561e8a58 libuser-0-51-5-2 b84a07ec322423885eccd65b956c4b9ed65595f2 libuser-0.56.8 d722607c8b7f70f6bf90f11d8c93f2bd20ede2eb libuser-0.56.8 5decbce3a69f5d9e9211cbca34b3f2a40751b0ce libuser-0.56.9 49e2f44463b42f46fae605b726fcb2a7212acef3 libuser-0.56.10 99ac682bf165763b6ef303554d9ba8e07aee6d0a libuser-0.56.11 99ac682bf165763b6ef303554d9ba8e07aee6d0a libuser-0.56.11 318be48d697acae5dbbf7c09c7556bf72bc6e33b libuser-0.56.11 036bc767701ce7642f21fbed148ce124763df12a libuser-0.56.12 586f4978e5b2d95cfda0a7a9b248918727f9d667 libuser-0.56.13 f37f6eb54016945d2de8a35054161e674d540b37 libuser-0.56.14 134fb35781764a1597303887b0397925c92b1d1a libuser-0.56.15 317ec556db14aa865fccf786d6a0a107942d6fab libuser-0.56.16 d54961319f7778f7c92364b7592b6d7eb24df39d libuser-0.56.17 084c16d00fe786d4aebf8dbb144a9550f011e680 libuser-0.56.18 1114f9b1a1568c94aa25918bd2723365fbf24ac4 libuser-0.57 4e337698c0d9c5609cd0411bf455e3b7a89ee7b3 libuser-0.57.1 a64d8b0be912dd6287303d645032acc75b8a5b80 libuser-0.57.2 227e79cf354228cef1198c2ac3f16a779bd34dc0 libuser-0.57.3 227e79cf354228cef1198c2ac3f16a779bd34dc0 libuser-0.57.3 ad340164c6d07b5c3425f23cec848810f0a4f627 libuser-0.57.3 ad340164c6d07b5c3425f23cec848810f0a4f627 libuser-0.57.3 e960860a25a38139cc7ec5249b45a0cbce1f54c6 libuser-0.57.3 e960860a25a38139cc7ec5249b45a0cbce1f54c6 libuser-0.57.3 60c483b1a406b8c4f700f9cdba66f6fe0d924aed libuser-0.57.3 7610aec7d4664adbdf9015ada72edcfb68b9b80c libuser-0.57.4 7610aec7d4664adbdf9015ada72edcfb68b9b80c libuser-0.57.4 177d0870d99a022c4d150328e0a4806bd2a2a0d7 libuser-0.57.4 20ef0442ecdfad81d0a44e11616ec24b88d32077 libuser-0.57.5 6608f0cf6427359d65ac3186b08a40c64d1a8531 libuser-0.57.6 1fc47d7dcaa7dc122a5e0dc73f1c56c5c45a278a libuser-0.57.7 1bc2a37cf4ce34ded62381579b13a3c17536ecc9 libuser-0.58 27ab01534b537529441b7689de81fe024bbc3c99 libuser-0.59 c7a319080854fe15b80c25535ca78fd29a921f78 libuser-0.60 9fa28386aee8fa4c7f62f6effd32090310145089 libuser-0.61 066f28deba1f2da61e070aebeafb97ca1e86b8c4 libuser-0.62 AUTHORS000066400000000000000000000000431471266067600121420ustar00rootroot00000000000000Nalin Dahyabhai COPYING000066400000000000000000000614471471266067600121440ustar00rootroot00000000000000 GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. Copyright (C) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ChangeLog000066400000000000000000004106531471266067600126600ustar00rootroot000000000000002015-07-23 Miloslav Trmač * configure.ac: Release 0.62. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. 2015-06-26 Miloslav Trmač * modules/files.c (open_and_copy_file): Replace and heavily modify ... (lu_files_create_backup): ... this. (lock_file_handle_existing, lock_file_create, lock_file_remove) (struct editing, editing_open, replace_file_or_symlink) (editing_close): New functions. (generic_lookup, generic_is_locked, lu_files_enumerate) (lu_files_users_enumerate_by_group, lu_files_groups_enumerate_by_user) (lu_files_enumerate_full): Remove locking on read-only operations. (generic_add, generic_mod, generic_del, generic_lock) (generic_setpass): Use struct editing instead of dealing with locking, backups, SELinux individually. * lib/user_private.h (lu_util_lock_obtain, lu_util_lock_free): Mark as deprecated. * lib/util.c (lu_util_field_write): Fail on an incomplete write(). 2015-06-25 Miloslav Trmač * modules/files.c (format_generic, generic_setpass): Refuse to write field values which contain \n. * tests/files_test.py (Tests.testUserAdd9, Tests.testUserMod8) (tests.testUserSetpass5, tests.testGroupAdd6, tests.testGroupMod7) (tests.testGroupSetpass4): New tests. * docs/reference/Makefile.am: Update from gtk-doc example. (AUTOMAKE_OPTIONS): Remove no longer needed workaround. (DOC_SOURCE_DIR): Follow upstream example. * docs/reference/libuser-docs.sgml: Comment out unused reference. * docs/reference/libuser-sections.txt: Add types newly recognized by gtk-doc. * lib/error.h (enum lu_status): Add docstring. (struct lu_error): Document members. Remove gtk-doc workaround. * lib/prompt.h (struct lu_prompt): Use a docstring. Remove gtk-doc workaround. * lib/user.h (enum lu_entity_type): Add docstring. 2015-06-25 Miloslav Trmač * lib/user.c (lu_dispatch) * modules/ldap.c (lu_ldap_handle_lock) * samples/homedir.c (main): Silence Eclipse warnings. 2015-03-24 Miloslav Trmač * configure.ac: Release 0.61. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. 2015-03-21 Miloslav Trmač * po/libuser.pot: Remove autogenerated file. Unlike Transifex, Zanata does not need it. 2015-03-17 Miloslav Trmač * zanata.xml: Update for changed version name on the server. 2015-03-16 Miloslav Trmač * po/POTFILES.in: Remove reference to removed modules/krb5.c. * .tx/config: Remove. * zanata.xml: Add. To pull updated translations, run (zanata-cli pull). 2015-03-10 Miloslav Trmač * python/libusermodule.c (PyInit_libuser): Raise NotImplementedError when running in a non-UTF-8 locale. 2015-02-24 Miloslav Trmač * tests/files_test.py * tests/ldap_test.py: Replace deprecated assert_ with more specific assert* methods. * tests/files_test.py (Tests.testGroupMod4): Add a missing assertion. * python/libusermodule.c (dict_add_stolen_object) (dict_add_string): Remove. (initialize_libuser_module): Use PyModule_Add* instead of home-grown alternatives. * python/common.h (struct libuser_prompt): Move ... * python/misc.c (struct libuser_prompt): ... here. * python/common.h (Py_ssize_t): Remove, we can no longer support Python < 2.5. * python/admin.c (AdminType) * python/ent.c (EntityType) * python/misc.c (PromptType): Use the right form for tp_name. * python/common.h (PYSTRTYPE_FROMFORMAT): New macro. * python/misc.c (libuser_prompt_print): Replace with ... (libuser_prompt_str): ... this. PromptType updated. * python/ent.c (libuser_entity_setattr): Rename to ... (libuser_entity_setattro) ... this, updating the calling convention and EntityType. * python/admin.c (Admin_Check) * python/ent.c (Entity_Check): Remove unused macros. * python/ldap-script * python/prompt-script * python/test-script: Port from obsolete libuser API. * python/test-script: Stop overwriting the list() function. Don't use list(_.keys()) unnecessarily. * python/gtk_prompt_callback.py (libuser_gtk_prompt_callback, harness) * python/ldap-script * python/prompt-script * python/test-script * tests/default_pw_test.py * tests/files_test.py (Tests.testUsersEnumerate1) (Tests.testUsersEnumerateByGroup1, Tests.testUsersEnumerateByGroupFull1) (Tests.testUsersEnumerateByGroupFull2) (Tests.testUsersEnumerateByGroupFull3, Tests.testUsersEnumerateFull1) (Tests.testGroupAdd2, Tests.testGroupAdd4, Tests.testGroupMod2) (Tests.testGroupMod4, Tests.testGroupsEnumerate1) (Tests.testGroupsEnumerateByUser1, Tests.testGroupsEnumerateByUserFull1) (Tests.testGroupsEnumerateByUserFull2) (Tests.testGroupsEnumerateByUserFull3, Tests.testGroupsEnumerateFull1) (Tests.testValidateIdValue) * tests/fs_test.py (main) * tests/ldap_test.py (Tests.testUserSetpass2, Tests.testUserSetpass3) (Tests.testUserRemovepass2, Tests.testUserRemovepass3) (Tests.testUsersEnumerate, Tests.testUsersEnumerateByGroup1) (Tests.testUsersEnumerateFull, Tests.testUsersEnumerateByGroupFull1) (Tests.testUsersEnumerateByGroupFull2) (Tests.testUsersEnumerateByGroupFull3, Tests.testGroupAdd2) (Tests.testGroupMod2, Tests.testGroupSetpass2, Tests.testGroupSetpass3) (Tests.testGroupRemovepass2, Tests.testGroupRemovepass3) (Tests.testGroupsEnumerate, Tests.testGroupsEnumerateByUser1) (Tests.testGroupsEnumerateFull, Tests.testGroupsEnumerateByUserFull1) (Tests.testGroupsEnumerateByUserFull2) (Tests.testGroupsEnumerateByUserFull3) * tests/pwhash.py: Update using (2to3-3.3 -w -f all -f buffer -f idioms -f set_literal -f ws_comma), add a few line wraps. * tests/files_test.py (Tests.testGroupAdd4, Tests.testGroupMod4): Revert overzealous .has_key removal. (Tests.testValidateIdValue): Test with 500L again on Python 2. * tests/default_pw_test.py: Use sys.stderr.write instead of print() for compatibility with Python 2. * tests/fs_test.py (main): Consistently use spaces for indentation. * tests/default_pw_test (valid_password): Make compatible with Python 3. * python/common.h (AdminType, PromptType): New declarations. * python/admin.c (libuser_admin_getattr, libuser_admin_setattr): Replace by ... (libuser_admin_get_prompt, libuser_admin_set_prompt) (libuser_admin_get_prompt_args, libuser_admin_set_prompt_args) (libuser_admin_getseters): ... use of PyGetSetDef. (AdminType): Make public. Add tp_doc, use tp_methods instead of tp_getattr. (libuser_admin_methods, AdminType): Remove no longer necessary forward declarations. (libuser_admin_new): Stop using Py_FindMethod unavailable in Python 3. * python/ent.c (libuser_entity_getattr): Remove. (EntityType): Add tp_doc, use tp_methods instead of tp_getattr. (libuser_entity_mapping_methods, libuser_entity_methods): Remove no longer necessary forward declarations. * python/misc.c (libuser_prompt_getattr, libuser_prompt_setattr): Replace by ... (libuser_prompt_get_key, libuser_prompt_set_key) (libuser_prompt_get_prompt, libuser_prompt_set_prompt) (libuser_prompt_get_domain, libuser_prompt_set_domain) (libuser_prompt_get_visible, libuser_prompt_set_visible) (libuser_prompt_get_default_value, libuser_prompt_set_default_value) (libuser_prompt_get_value, libuser_prompt_set_value) (libuser_prompt_getseters): ... use of PyGetSetDef. (PromptType): Make public. Add tp_doc. (PromptType): Remove no longer necessary forward declaration. * python/libusermodule.c (initialize_libuser_module): Initialize types as required to make tp_getseters and tp_methods work. Add a return value. All users updated. 2015-02-20 Miloslav Trmač * python/libusermodule.c (libuser_module_doc): Move out of the Python 3 conditional. (initlibuser): Use libuser_module_doc. * python/libusermodule.c (initlibuser): Use PyMODINIT_FUNC as Python documents. * python/libusermodule.c (initialize_libuser_module): Split from initlibuser(). (libuser_module_doc, libuser_module, PyInit_libuser): New definitions to support loading as a Python 3 module. * python/common.h (PYINTTYPE_FROMLONG): New macro to abstract away returning integers in Python 2 and 3. * python/admin.c (libuser_admin_do_wrap, libuser_admin_wrap_boolean) (libuser_admin_setpass, libuser_admin_create_home) (libuser_admin_remove_home, libuser_admin_remove_home_if_owned) (libuser_admin_move_home, libuser_admin_create_remove_mail) (libuser_admin_add_user, libuser_admin_delete_user) * python/ent.c (libuser_entity_has_key) * python/libusermodule (initlibuser) * python/misc.c (libuser_prompt_getattr): Use PYINTTYPE_FROMLONG. * python/common.h (PYSTRTYPE_FROMSTRING): New macro to abstract away returning strings to Python 2 and 3. * python/ent.c (convert_value_array_pylist): Document that it may now return NULL. * python/ent.c (convert_value_array_pylist, libuser_entity_getattrlist) * python/libusermodule.c (libuser_get_user_shells, dict_add_string) * python/misc.c (libuser_prompt_getattr): Use PYSTRTYPE_FROMSTRING. * python/ent.c (libuser_convert_to_value): Remove two more direct uses of PyString_AsString in debug output (converting one, fixing the other). * python/ent.c (libuser_convert_to_value): Fix a type mismatch in debug output. * python/common.h (PYSTRTYPE_ASSTRING, PYSTRTYPE_CHECK): New macros to abstract away accepting strings from Python 2 and 3. * python/ent.c (libuser_convert_to_value, libuser_entity_setattr) (libuser_entity_get_item, libuser_entity_set_item) * python/misc.c (libuser_prompt_setattr): Use PYSTRTYPE_ASSTRING and PYSTRTYPE_CHECK. * Makefile.am (AM_TESTS_ENVIRONMENT): Define PYTHON in tests. * tests/config_test.sh: * tests/default_pw_test: * tests/files_test: * tests/fs_test: * tests/ldap_test: * tests/pwhash_test: Use $PYTHON to run tests. * Makefile.am (pyexec_LTLIBRARIES): Rename from libusermodule.so to libuser.so so that Python 3 can find it. Dependency data updated. 2015-02-18 Miloslav Trmač * configure.ac: Define PYINCLUDEDIR. * Makefile.am (PYTHON_CPPFLAGS): Use PYINCLUDEDIR instead of hard-coding the path. This is necessary for Python 3. 2014-01-23 Miloslav Trmač * python/admin.c (libuser_admin_user_methods) (libuser_admin_group_methods) * python/ent.c (libuser_methods): Remove unused definitions. * Makefile.am (noinst_HEADERS): Move ... (python_libusermodule_la_SOURCES): ... here, to use ordinary linking instead of #including .c files. * python/admin.c (libuser_admin_new) * python/ent.c (convert_value_array_pylist, convert_ent_array_pylist) (libuser_wrap_ent, EntityType) * python/libusermodule.c (libuser_get_user_shells) * python/misc.c (libuser_admin_python_prompter) (libuser_admin_prompt_console, libuser_admin_prompt_console_quiet) (libuser_prompt_new): Make non-static, module-internal. * python/common.h: Use G_GNUC_INTERNAL declarations instead of static declarations for all of the above symbols. * python/common.h (AdminType, PromptType): Remove declarations that would result in redundant static definitions. * python/debug.h (indent, getindent): Replace by declarations. * python/libusermodule.c (indent, getindent): Move the definitions here to keep the indent a shared value. * modules/krb5.c: Remove, there's no point distributing the non-working code. It can always be resurrected from the VCS. * configure.ac (KRB5): Remove hardcoded-false conditional. * Makefile.am (pkglib_LTLIBRARIES): Remove support for the KRB5 conditional. Related configuration removed. * docs/libuser.conf.5.in, docs/sgml/libuser.sgml, TODO: Remove references to the krb5 module. * docs/Makefile.am (sgml/libuser.txt, sgml/libuser.html): Fix build if $(srcdir) is an absolute path. 2014-01-02 Miloslav Trmač * tests/default_pw_test.py: Remove an unused import. * lib/util.c (lu_util_field_write): Remove redundant assignments. * lib/util.c (lu_util_field_write): Fix a memory leak. 2013-11-21 Miloslav Trmač * tests/fs_test: New function filtered_ls. Use it in all tests, reformat some of the expected results to match. * tests/fs_test: Make files setuid after setting the owner, not before; this doesn't matter with fakeroot but does matter without it. * tests/fs_test: Make it possible to run tests as real root, without fakeroot. * tests/fs_test: Use a shell function instead of (cp -a) to prepare source directories for tests, to avoid yet another fakeroot bug. Update the expected test results. 2013-10-18 Miloslav Trmač * docs/Makefile.am (SGML_OUTPUTS): New variable. (CLEANFILES): Use SGML_OUTPUTS. (EXTRA_DIST): Add SGML_OUTPUTS so that sgml2txt is not required when building from a release tarball. 2013-10-16 Miloslav Trmač * python/ent.c (libuser_entity_set_item): Fix a missing parameter in debug output. * modules/krb5.c (lu_krb5_user_setpass): Fix a missing initialization. 2013-10-12 Miloslav Trmač * configure.ac: Release 0.60. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * apps/luserdel.c (main) * python/admin.c (libuser_admin_remove_home): Use lu_homedir_remove_for_user() instead of looking up LU_HOMEDIRECTORY manually. * lib/error.h (lu_status): New value lu_error_homedir_not_owned. * lib/error.c (lu_strerror, lu_error_is_error): Support lu_error_homedir_not_owned. * lib/fs.c (remove_subdirectory): New parameter required_toplevel_uid. All users updated. (homedir_remove_for_user, lu_homedir_remove_for_user) (lu_homedir_remove_for_user_if_owned): New functions. * lib/fs.h (lu_homedir_remove_for_user) (lu_homedir_remove_for_user_if_owned): New declarations. * docs/reference/libuser-sections.txt: Add lu_homedir_remove_for_user and lu_homedir_remove_for_user_if_owned. * python/admin.c (libuser_admin_remove_home_if_owned): New function. (libuser_admin_methods): New entry for removeHomeIfOwned. * tests/fs_test.py (main): New option --remove-if-owned. * tests/fs_test: Test lu_homedir_remove_for_user_if_owned(). * python/modules.txt: Document createHome, moveHome, removeHome, removeHomeIfOwned, createMail, removeMail. Based on a smaller patch by Robin Hack . * lib/user.c (lu_default_int): Precompute the replacement strings instead of computing it for each key. This is a little faster, and more importantly, we can be sure that the %d replacement value will be the same for all keys. * lib/util.c (lu_util_shadow_current_date): Rename to... * lib/util.c (lu_util_shadow_current_date_or_minus_1): ... this. Return -1 if the time is not available, or if the time would result in special-cased LU_SHADOW* values. All users updated. 2013-09-20 Miloslav Trmač * libuser.pc.in: Use Libs.private for @CRYPT_LIBS@, Requires.private for gmodule-no-export-2.0. glib-2.0 and gobject-2.0 stay in Requires: because applications usually need both of them, and there are known cases of applications that don't ask pkg-config for them explicitly. (We might consider removing gobject-2.0 if all users use the non-GValueArray helpers; removing glib-2.0 is pointless.) 2013-07-08 Miloslav Trmač * docs/reference/Makefile.am (AUTOMAKE_OPTIONS): Workaround a bug in automake-1.13-4. * configure.ac: Update gettext version, which avoids autoconf warnings. * configure.ac: Use AM_PROG_AR to shut up automake. This required moving AC_USE_SYSTEM_EXTENSIONS up. 2013-06-28 Miloslav Trmač * tests/fs_test: Skip the test if fakeroot is not available. * .tx/config: Update configuration for hosted Transifex changes. 2013-03-28 Miloslav Trmač * configure.ac: Release 0.59. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. (EXTRA_DIST): Fix a typo that broke (make distcheck). * lib/user_private.h (lu_util_fscreate_from_fd): Fix the non-SELinux macro. * tests/fs_test: Create temporary files only in a temporary directory. 2013-03-26 Miloslav Trmač * lib/fs.c (lu_homedir_populate): Fix typo in docstring. Noticed by Viktor Hercinger . 2013-03-22 Miloslav Trmač * tests/fs_test: Set umask because it affects test output. Patch by Viktor Hercinger . 2013-02-20 Miloslav Trmač * configure.ac: Enable large file support, in particular to enable working with 64-bit inode numbers. 2013-02-09 Miloslav Trmač * lib/fs.c (struct copy_access_options): Remove member ignore_eexist. (copy_symlink, copy_regular_file, lu_copy_dir_and_close): Remove the possibility to ignore EEXIST, always fail on pre-existing contents. (lu_homedir_populate): Incompatible change: Refuse to populate pre-existing directories. (lu_homedir_move): Stop setting access_options.ignore_eexist. * tests/fs_test.py (main): Beautify output on createHome failure to help checking the output. * tests/fs_test: Fix mv2_output check. Test that attempts to populate a pre-existing home directory are refused. 2013-02-08 Miloslav Trmač * lib/fs.c (copy_regular_file): Rename from... (copy_regular_file_and_close): ... this, and stop closing src_fd; we don't really need to use this irregular model here. (copy_dir_entry): Update. * lib/fs.c (lu_homedir_populate, lu_homedir_move) (lu_nscd_flush_cache, lu_mail_spool_create) (lu_mail_spool_remove): These functions are public API, add g_return_*_if_fail() checks for input parameters. * lib/fs.c (copy_symlink): Fix comments. * lib/fs.c (copy_symlink, copy_regular_file_and_close) (copy_dir_entry, lu_homedir_copy, lu_homedir_populate) (mail_spool_path, lu_mail_spool_remove): Add LU_ERROR_CHECK calls. * lib/fs.c (copy_symlink, copy_regular_file_and_close): Use simpler parameter names. * lib/fs.c (copy_dir_entry): Split from ... (lu_copy_dir_and_close): ... to simplify handling of src_path_buf and dest_path_buf. * lib/fs.c (lu_copy_dir_and_close, lu_homedir_copy): Use GString buffers to build paths, removing the PATH_MAX limit and reducing O(N^2) memory use to O(N). * lib/fs.c (remove_subdirectory, lu_homedir_remove): Use a single GString to build all paths, removing the PATH_MAX limit and reducing O(N^2) memory use to O(N). * lib/fs.c (lu_copy_dir_and_close): Simplify the control flow a little. * lib/fs.c (copy_symlink, copy_regular_file_and_close): Split from ... (lu_copy_dir_and_close): ... this. 2013-02-04 Miloslav Trmač * configure.ac: Define GLIB_VERSION_MIN_REQUIRED to shut up warnings about GValueArray being deprecated. * lib/common.c: #include first, to let the GLIB_VERSION_MIN_REQUIRED take effect. * configure.ac: Rename from ... * configure.in: ... the obsolete name. * configure.in: Enable system extensions, in particular the secure_getenv() declaration. Check for secure_getenv() in addition to __secure_getenv(). * lib/config.c: Use secure_getenv() if __secure_getenv() is not available, abort build if neither is available. Patch by Viktor Hercinger . 2012-12-20 Miloslav Trmač * apps/lnewusers.c (main) * apps/luseradd.c (main): Only set the user's password after the home directory is created. * lib/fs.c (struct copy_access_options): New member ignore_eexist. (lu_copy_dir_and_close): Use access_options->ignore_eexist. (lu_homedir_populate, lu_homedir_move): Set access_options.ignore_eexist. * tests/fs_test.py (main): Don't output a full traceback if moveHome fails. * tests/fs_test: Test that moving onto an existing directory is prohibited. * lib/fs.c (lu_copy_dir_and_close): Only set the ownership and mode of newly created files after the content is copied. This is better because 1) write(3) is allowed to reset the S_ISUID and S_ISGID bits, and 2) if write() didn't reset the bits, having a set-uid/set-gid executable with partial content might be a security risk. 2012-12-13 Miloslav Trmač * tests/fs_test: Add tests for lu_homedir_populate() and lu_homedir_move(). Make sure even inaccessible files are removed on exit. Actually test code from the current build instead of the system installation. Make the existing tests locale-independent. * tests/fs_test.py: New modes --move and --populate. * tests/fs_test: Check the final situation more thoroughly. * tests/fs.conf.in * tests/fs_test * tests/fs_test.py: New files. * Makefile.am (TESTS): Add tests/fs_test. (EXTRA_DIST): Add tests/fs_test and dependencies. 2012-12-11 Miloslav Trmač * lib/fs.c (lu_copy_dir_and_close): Don't unnecessarily ftruncate() a file we just created. * lib/fs.c (lu_copy_dir_and_close): Only make the directory accessible to the target user after all work in it is done. Still doesn't handle pre-existing directories. 2012-12-08 Miloslav Trmač * lib/fs.c (lu_homedir_copy): Allow src_dir to be a symlink again. This fixes an API incompatibility. * lib/fs.c (lu_copy_dir_and_close): Rename again from... (lu_homedir_copy_and_close): ... this. (lu_homedir_copy): New helper function. (lu_homedir_populate, lu_homedir_move): Simplify by using the new lu_homedir_copy(). Better document security assumptios. * lib/fs.c (copy_access_options): Rename member preserve_contexts to preserve_source. Document that other fields apply only if !preserve_source. (uid_for_copy): Implement preserve_source. Fix a spectacular typo. (gid_for_copy, mode_for_copy): Implement preserve_srouce. (lu_homedir_copy_and_close, (lu_homedir_populate): Update for renamed field preserve_source. (lu_homedir_move): Update for renamed field preserve source. This also means that while moving the directory we do not override the original owner in the copy, fixing a security hole (the user could have a had hardlink to a file they couldn't read, and we would helpfully create a copy owned by them). * lib/fs.c (copy_access_options): Fix description of member umask. (mode_for_copy): New helper function. (lu_homedir_copy_and_close): Use mode_for_copy(). * lib/fs.c (lu_homedir_copy_and_close): Rename from ... (lu_homedir_copy) ... this. When scanning a directory, open() each entry and then fstat() instead of fstatat() + possible openat(), which is racy. (lu_homedir_populate, lu_homedir_move): Update for lu_homedir_copy_and_close(). * lib/user_private.h (lu_util_fscreate_from_fd) (lu_util_fscreate_from_lfile): New declarations and fallback macros. * lib/util.c (lu_util_fscreate_from_fd, lu_util_fscreate_from_lfile): New functions. * lib/fs.c (lu_homedir_copy): Set SELinux context immediately before creating a new file, based on the file descriptor we will be using, removing another path lookup race and avoiding the top-level-directory special case. Use lu_util_fscreate_from_lfile() for symbolic links, fixing a bug. (lu_homedir_populate, lu_homedir_move): Stop setting SELinux contexts manually. * lib/fs.c (lu_homedir_copy): Modify file times through existing descriptors if possible. * lib/fs.c (lu_homedir_copy): When creating copies, start with minimal permissions, set owner, then set the desired permissions. Thus, start preserving S_IS[UG]ID flags on copied regular files, and make sure they aren't even momentarily undesirably acessible. * lib/fs.c (copy_access_options): Drop member is_toplevel again. (gid_for_copy): Don't use options->is_toplevel. (lu_homedir_populate): Don't make a special case for the top-level directory: just use the mode of the source directory for the copy, and the same rules for the group. All users updated. (lu_homedir_populate): Manually set ownership and group to handle the special case of a new home directory. * lib/fs.c (copy_access_options): New members is_toplevel, uid and gid. (uid_for_copy, gid_for_copy): New functions. (lu_homedir_copy): Use access_options to pass around ownership information. All users updated, no change in semantics. * lib/fs.c (copy_access_options): New structure. (lu_homedir_copy): Use struct copy_access_options for keep_contexts and umask. All users updated, no change in semantics. * lib/fs.c (lu_homedir_copy): Use a (parent FD, entry name) pair when creating the existing directory to start avoiding symlink races. Start preserving nanosecond timestamp in the process. * lib/fs.c (lu_homedir_copy): Rename path to dest_ent_path for consistency. * lib/fs.c (lu_homedir_copy): Use a (parent FD, entry name) pair when reading the existing directory to avoid symlink races. * lib/fs.c (lu_homedir_copy): Rename srcpath to src_ent_path to avoid confusion with names added in the future. * lib/fs.c (remove_subdirectory): Split from lu_homedir_remove(). Use openat(), fstatat(), and unlinkat() to avoid symlink races. 2012-11-29 Miloslav Trmač * lib/util.c (fill_urandom): Don't use g_return_val_if_fail(), glib can be configured so that it does nothing. * lib/user.c (lu_dispatch): Add a comment about unreachable code. 2012-11-21 Miloslav Trmač * tests/default_pw_test: * tests/ldap_test: Use 1024-bit RSA keys instead of 512-bit, to run correctly in FIPS mode. 2012-11-08 Miloslav Trmač * lib/entity.h (LU_SHADOWLASTCHANGE, LU_SHADOWMIN, LU_SHADOWMAX) (LU_SHADOWWARNING): Document that -1 should be treated the same as a missing value. * modules/files.c (format_shadow): Treat most missing fields as default value "-1", and suppress it on output, to stop deviating from shadow(5). * apps/lchage.c (read_ndays): Move lu_ent_get() call from the callers. Handle missing value and value -1 equivalently. All callers updated. (main): Always print all fields, even if the account attributes are missing. Output missing minimum password age, and missing passwod warning period, as 0. Output missing maximum password age as "None". Output missing password inactivity period as "Never". Output missing last password change and missing account expiration date as "Never". Consistently report "Must change password on next login" in all fields affected by this setting, and "Never" if the respective password expiration feature is disabled. * apps/lchage.1 (--date): Document values 0 and -1. (--inactive): Document value -1. (--mindays): Document value -1, and interaction with --maxdays. (--maxdays): Document value -1, don't recommend 99999 to disable password expiration. (--warndays): Document values 0 and -1. (NOTES): New section. * tests/files_test: Test also empty sp_lstchg. * tests/files_test.py (Tests.testUserLookupName2) (Tests.testUserMod4): Update expected values to follow lib/entity.h and shadow(5), and for updated empty_user contents. * tests/utils_test (lchage): Test handling of -d 0, and handling of -1 for all fields. * tests/utils_shadow: Verify that -1 values are correctly suppressed on output. * tests/utils_group * tests/utils_gshadow * tests/utils_passwd: Add user4_2 added by tests/utils_test. * configure.in: Release 0.58. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. 2012-11-01 Miloslav Trmač * lib/entity.h (LU_USERPASSWORD, LU_GROUPPASSWORD, LU_SHADOWPASSWORD): Document that users shouldn't modify these values directly. 2012-10-25 Miloslav Trmač * lib/user.c (lu_default_int): Simplify. We don't need to clear previous values because the entity is completely wiped at the beginning of the function. * lib/entity.c (lu_ent_set_long_int, lu_ent_set_long) (lu_ent_set_long_current): New functions. * lib/entity.h (lu_ent_set_long, lu_ent_set_long_current): New declarations. * docs/reference/libuser-sections.txt: Add lu_ent_set_long and and lu_ent_set_long_current. * apps/lchage.c (main) * lib/common.c (lu_common_suser_default) * lib/util.c (lu_util_update_shadow_last_change): Use lu_ent_set_long(). * apps/lgroupmod.c (main): Drop unnecessary variable. * modules/ldap.c (lu_ldap_lookup, lu_ldap_user_default): Use the new interfaces instead of manipulating GValues manually. * lib/entity.c (lu_ent_set_id_int, lu_ent_set_id) (lu_ent_set_id_current): New functions. * lib/entity.h (lu_ent_set_id, lu_ent_set_id_current): New declarations. * docs/reference/libuser-sections.txt: Add lu_ent_set_id and and lu_ent_set_id_current. * apps/lgroupadd.c (main) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main) * lib/user.c (lu_default_int): Use lu_ent_set_id(). * lib/entity.c (lu_ent_set_string_int, lu_ent_set_string) (lu_ent_set_string_current): New functions. * lib/entity.h (lu_ent_set_string, lu_ent_set_string_current): New declarations. * docs/reference/libuser-sections.txt: Add lu_ent_set_string and and lu_ent_set_string_current. * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main) * lib/common.c (lu_common_user_default, lu_common_group_default) (lu_common_suser_default) * lib/user.c (lu_default_int) * modules/files.c (lu_shadow_user_add_prep) (lu_shadow_group_add_prep): Use lu_ent_set_string(). * lib/entity.c (lu_ent_set_prepare): Split from lu_ent_set_int(). * modules/files.c (module_filename): New function. (generic_lookup, generic_add, generic_mod, generic_del) (generic_lock, generic_is_locked, generic_setpass) (lu_files_enumerate, lu_files_users_enumerate_by_group) (lu_files_groups_enumerate_by_user, lu_files_enumerate_full) (lu_files_uses_elevated_privileges) (lu_shadow_uses_elevated_privileges): Use module_filename(). * modules/files.c (generic_lock, generic_is_locked) (generic_setpass): Use `name' instead of `namestring' for better readability. * modules/ldap.c (lu_ldap_del, lu_ldap_handle_lock) (lu_ldap_is_locked, lu_ldap_setpass): Use `name' instead of `name_string' for better readability. * lib/entity.c (lu_ent_get_first_value_strdup_int) (lu_ent_get_first_value_strdup) (lu_ent_get_first_value_strdup_current): New functions. * lib/entity.h (lu_ent_get_first_value_strdup) (lu_ent_get_first_value_strdup_current): New declarations. * docs/reference/libuser-sections.txt: Add lu_ent_get_first_value_strdup and lu_ent_get_first_value_strdup_current. * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lusermod.c (main) * lib/fs.c (mail_spool_path) * lib/user.c (merge_ent_array_duplicates) * modules/files.c (lu_shadow_user_lookup_id) (lu_shadow_group_lookup_id, generic_mod, generic_del) (generic_lock, generic_is_locked, generic_setpass) * modules/ldap.c (get_ent_adds, lu_ldap_del) (lu_ldap_handle_lock, lu_ldap_is_locked, lu_ldap_setpass) * modules/sasldb.c (lu_sasldb_user_is_locked): Use lu_ent_get_first_value_strdup() and lu_ent_get_first_value_strdup_current(). * apps/luserdel.c (main): Don't use the same entity for groups and users (potentially looking up LU_HOMEDIR_COPY in the group data). * lib/entity.c (lu_ent_get_first_id) (lu_ent_get_first_id_current): Fix value returned on invalid arguments. * lib/entity.c (lu_ent_get_first_current_string): Rename to ... (lu_ent_get_first_string_current): ... this. All references updated. (lu_ent_get_first_current_id): Rename to ... (lu_ent_get_first_id_current): ... this. All references updated. 2012-10-24 Miloslav Trmač * lib/entity.c (lu_ent_get_first_id_int, lu_ent_get_first_id) (lu_ent_get_first_current_id): New functions. Fix some comments. * lib/entity.h (lu_ent_get_first_id, lu_ent_get_first_current_id): New declarations. * docs/reference/libuser-sections.txt: Add lu_ent_get_first_id and lu_ent_get_first_current_id. * apps/lgroupmod.c (main) * apps/lid.c (do_full) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/luserdel.c (main) * lib/fs.c (lu_mail_spool_create) * lib/user.c (extract_id) * python/admin.c (libuser_admin_create_home): Use lu_ent_get_first_id(). * lib/entity.c (lu_ent_get_first_string_int) (lu_ent_get_first_string, lu_ent_get_first_current_string): New functions. * lib/entity.h (lu_ent_get_first_string) (lu_ent_get_first_current_string): New declarations. * docs/reference/libuser-sections.txt: Add lu_ent_get_first_string and lu_ent_get_first_current_string. * apps/lid.c (do_full) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/luserdel.c (main) * apps/lusermod.c (main) * lib/user.c (extract_name, lu_dispatch, lu_user_add) * python/admin.c (libuser_admin_create_home) (libuser_admin_remove_home, libuser_admin_move_home): Use lu_ent_get_first_string() and lu_ent_get_first_current_string(). * lib/fs.h (LU_NSCD_CACHE_PASSWD, LU_NSCD_CACHE_GROUP): New macros. * docs/reference/libuser-sections.txt: Add LU_NSCD_CACHE_GROUP and LU_NSCD_CACHE_PASSWD. * apps/lchage.c (main) * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lgroupadd.c (main) * apps/lgroupdel.c (main) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/lpasswd.c (main) * apps/luseradd.c (main) * apps/luserdel.c (main) * apps/lusermod.c (main): Use the LU_NSCD_CACHE_GROUP and LU_NSCD_CACHE_PASSWD macros. * apps/lusermod.c (main): Don't mark data to be freed as "const". * apps/apputil.c (current_umask, lu_homedir_copy, lu_homedir_populate) (lu_homedir_remove, lu_homedir_move, lu_nscd_flush_cache) (mail_spool_path, lu_mail_spool_create, lu_mail_spool_remove): Move... * lib/fs.c (current_umask, lu_homedir_copy, lu_homedir_populate) (lu_homedir_remove, lu_homedir_move, lu_nscd_flush_cache) (mail_spool_path, lu_mail_spool_create, lu_mail_spool_remove): ... into this new file. Add documentation. * apps/apputil.h (lu_homedir_populate, lu_homedir_move) (lu_homedir_remove, lu_nscd_flush_cache, lu_mail_spool_create) (lu_mail_spool_remove): Move declarations... * lib/fs.h (lu_homedir_populate, lu_homedir_move, lu_homedir_remove) (lu_nscd_flush_cache, lu_mail_spool_create, lu_mail_spool_remove): ... into this new file. * lib/user.h: Include lib/fs.h. * Makefile.am (pkginclude_HEADERS): Add lib/fs.h. (lib_libuser_la_SOURCES): Add lib/fs.c. (apps_libapputil_la_CPPFLAGS): Move NSCD definition.... (lib_libuser_la_CPPFLAGS): ... here. (apps_lchage_LDADD, apps_lgroupadd_LDADD, apps_lgroupdel_LDADD) (apps_lgroupmod_LDADD, apps_lnewusers_LDADD) (apps_luseradd_LDADD, apps_luserdel_LDADD, apps_lusermod_LDADD) (python_libusermodule_la_LIBADD) (samples_homedir_LDADD): Don't link to apps/libapputil.la any more. * docs/reference/libuser-sections.txt: Add a section for lib/fs.c. * docs/reference/libuser-docs.sgml: Include fs documentation. * apps/apputil.c (mail_spool_path, lu_mail_spool_create) (lu_mail_spool_remove): Add error reporting using struct lu_error. All users updated. * apps/apputil.h (lu_mail_spool_create, lu_mail_spool_remove): Update declarations. * apps/apputil.c (lu_mail_spool_create, lu_mail_spool_remove): Split... (lu_mailspool_create_remove): ... this. All users updated. * apps/apputil.h (lu_mail_spool_create, lu_mail_spool_remove): New declarations. (lu_mailspool_create_remove): Remove declaration. * python/admin.c (libuser_admin_delete_user): Instead of creating a mail spool, remove it. * apps/apputil.c (mail_spool_path): Split from ... (lu_mailspool_create_remove): ... here. * tests/valgrind.supp: Add popt suppressions. * apps/lnewusers.c (main) * apps/lusermod.c (main): Fix some memory leaks. * tests/valgrind.supp: Add popt suppressions. * tests/utils_test: Refer to utilities using a full path to allow libtool --mode=execute (and hence valgrind) to work. * apps/lgroupmod.c (main) * apps/lusermod.c (main): Fix a memory leak. * apps/lchage.c (main): * apps/lchfn.c (main): * apps/lchsh.c (main): * apps/lgroupadd.c (main): * apps/lgroupdel.c (main): * apps/lgroupmod.c (main): * apps/lid.c (main): * apps/lnewusers.c (main): * apps/lpasswd.c (main): * apps/luseradd.c (main): * apps/luserdel.c (main): * apps/lusermod.c (main): * apps/luseradd.c (main): Free popt context after use. * tests/valgrind.supp: One more glibc suppression. * modules/ldap.c (get_ent_adds): Fix a memory leak. * Makefile.am (VG_EXECUTION): Use a more practical valgrind configuration. * tests/valgrind.supp: Add generic NSS initialization suppression. * tests/valgrind.supp: Also cover SHA-256 in glibc suppression. * python/ent.c (libuser_entity_getattrlist) (libuser_entity_length): Fix memory leaks. * modules/files.c (lu_files_groups_enumerate_by_user): Fix two memory leaks. Simplify error handling a little. * python/libusermodule.c (dict_add_stolen_object) (dict_add_string): New functions. (initlibuser): Use dict_add_stolen_object() and dict_add_string() to avoid leaking references. * modules/ldap.c (lu_ldap_setpass): Fix a memory leak. * tests/valgrind.supp: Add librpm and glibc suppressions. * tests/config_test.c (start, verify_var, main): Fix memory leaks. * tests/valgrind.supp: Simplify and generalize g_type_init suppression. * tests/config_test.sh: * tests/default_pw_test: * tests/files_test: * tests/ldap_test: * tests/pwhash_test: * tests/utils_test: Support $VALGRIND. * Makefile.am (VG_EXECUTION, VG_ENVIRONMENT): New variables. (EXTRA_DIST): Ship tests/valgrind.supp. (valgrind): New target. 2012-10-23 Miloslav Trmač * apps/lid.c (do_nameonly, do_full): Specialize from do_id. Caller updated. (do_full): Use lu_*_enumerate_by_*_full(). * apps/lid.c (do_id): Remove entity existence verification. Removed parameter lookup_name. (main): Do entity existence verification here. * apps/lgroupmod.c (main): Use lu_users_enumerate_by_group_full() instead of looking up the full data manually. * apps/lusermod.c (main): Use lu_groups_enumerate_by_user_full() instead of looking up the full data manually. * lib/user_private.h (LU_MODULE_VERSION): Increase. (lu_module): Remove members users_enumerate_by_group_full and groups_enumerate_by_user_full. * lib/modules.c (load_one_module): Don't require members users_enumerate_by_group_full and groups_enumerate_by_user_full. * lib/user.c (lu_dispatch_id): Remove values users_enumerate_by_group_full and groups_enumerate_by_user_full. (run_single, run_list): Remove no longer used handling of users_enumerate_by_group_full and groups_enumerate_by_user_full. * modules/files.c (lu_files_users_enumerate_by_group_full) (lu_files_groups_enumerate_by_user_full) (lu_shadow_users_enumerate_by_group_full) (lu_shadow_groups_enumerate_by_user_full): Remove placeholders. (libuser_files_init, libuser_shadow_init): Don't initialize members users_enumerate_by_group_full and groups_enumerate_by_user_full. * modules/ldap.c (lu_ldap_users_enumerate_by_group_full) (lu_ldap_groups_enumerate_by_user_full): Remove functions. (libuser_ldap_init): Don't initialize members users_enumerate_by_group_full and groups_enumerate_by_user_full. * modules/sasldb.c (lu_sasldb_users_enumerate_by_group_full) (lu_sasldb_groups_enumerate_by_user_full): Remove placeholders. (libuser_sasldb_init): Don't initialize members users_enumerate_by_group_full and groups_enumerate_by_user_full. * tests/files_test.py (Tests.testUsersEnumerateByGroupFull1) (Tests.testUsersEnumerateByGroupFull2) (Tests.testUsersEnumerateByGroupFull3) (Tests.testGroupsEnumerateByUserFull1) (Tests.testGroupsEnumerateByUserFull2) (Tests.testGroupsEnumerateByUserFull3): New tests. * lib/user.c (lu_users_enumerate_by_group_full) (lu_groups_enumerate_by_user_full): Instead of dispatching into the modules to get full data, only gather names and look up by these names in all modules. 2012-10-19 Miloslav Trmač * lib/user_private.h (lu_util_append_values): New declaration. * lib/util.c (lu_util_append_values): New function. * lib/entity.c (lu_ent_set_int) * lib/user.c (merge_ent_array_duplicates, run_list) * modules/ldap.c (lu_ldap_users_enumerate_by_group) (lu_ldap_groups_enumerate_by_user): Use lu_util_append_values(). 2012-10-18 Miloslav Trmač * modules/ldap.c (lu_ldap_users_enumerate_by_group) (lu_ldap_groups_enumerate_by_user): Remove an unnecessary condition. * modules/ldap.c (lu_ldap_users_enumerate_by_group_full): Silently ignore errors when looking up group members, instead of returning a non-error return value with error indication set. * modules/ldap.c (lu_ldap_users_enumerate_by_group) (lu_ldap_users_enumerate_by_group_full) (lu_ldap_groups_enumerate_by_user): Use `ret' instead of `primaries' as the variable name, it contains both primary and secondary values. * modules/ldap.c (lu_ldap_groups_enumerate_by_user_full): Implement. * tests/ldap_test.py (Tests.testGroupsEnumerateByUserFull1) (Tests.testGroupsEnumerateByUserFull2) (Tests.testGroupsEnumerateByUserFull3): New tests. 2012-10-08 Miloslav Trmač * docs/libuser.conf.5.in ([ldap]): Warn against storing a password in the system-wide file. 2012-09-24 Miloslav Trmač * configure.in: Release 0.57.7. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * modules/ldap.c (lu_ldap_users_enumerate_by_group_full): Implement. * tests/ldap_test.py (Tests.testUsersEnumerateByGroupFull1) (Tests.testUsersEnumerateByGroupFull2) (Tests.testUsersEnumerateByGroupFull3): New tests. * python/common.h: Declare convert_ent_array_pylist. * python/ent.c (convert_ent_array_pylist): New function. * python/admin.c (libuser_admin_enumerate_users_full) (libuser_admin_enumerate_groups_full) (libuser_admin_enumerate_users_by_group_full) (libuser_admin_enumerate_groups_by_user_full): Use convert_ent_array_pylist (also fixes a crash on error). (libuser_admin_enumerate_groups_by_user_full): Remove a duplicated line. * lib/user.c (convert_user_name_to_id, convert_group_name_to_id): Set *error if the entity was not found. (lu_user_lookup_name, lu_group_lookup_name, lu_user_lookup_id) (lu_group_lookup_id): Document that error is not set if the entity was not found. 2012-09-04 Miloslav Trmač * apps/luseradd.c (main): Free groupEnt. 2012-07-30 Miloslav Trmač * lib/user.h (lu_users_enumerate_by_group_full) (lu_groups_enumerate_by_user_full): New declarations. * lib/user.c (lu_users_enumerate_by_group_full) (lu_groups_enumerate_by_user_full): Uncomment functions. Use a simple group or user name instead of a pattern. Add documentation. * docs/reference/libuser-sections.txt: Add lu_users_enumerate_by_group_full and lu_groups_enumerate_by_user_full. * python/admin.c (libuser_admin_enumerate_users_by_group_full) (libuser_admin_enumerate_groups_by_user_full): Uncomment and fix functions. (libuser_admin_methods): Uncomment enumerateUsersByGroupFull and enumerateGroupsByUserFull. * python/modules.txt: Document enumerateUsersByGroupFull and enumerateGroupsByUserFull. 2012-06-03 Miloslav Trmač * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Rename from DISTCHECK_CONFIGURE_FLAGS to follow automake-1.11.3. 2012-03-22 Miloslav Trmač * configure.in: Release 0.57.6. * NEWS: Update. * po/*: Update. * po/libuser.pot: Update for Transifex. * apps/lchage.c (main) * apps/lgroupadd.c (main) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/lpasswd.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main): Improve --help messages. * apps/lchage.c (main) * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lgroupadd.c (main) * apps/lgroupdel.c (main) * apps/lgroupmod.c (main) * apps/lid.c (main) * apps/lnewusers.c (main) * apps/lpasswd.c (main) * apps/luseradd.c (main) * apps/luserdel.c (main) * apps/lusermod.c (main): Mark --help messages for translation. * modules/ldap.c (connect_server): Don't try to use STARTTLS for ldapi: URLs. Based on a patch by . * docs/libuser.conf.5.in: Document that TLS is never used for ldapi:. * tests/ldap_test: Wait for slapd exit before returning from the test. * tests/wait_for_slapd_exit.c * tests/wait_for_slapd_start.c: New files. * tests/default_pw_test * tests/ldap_test: Use tests/wait_for_slapd_exit and tests/wait_for_slapd_start, making the waiting both shorter and more precise. * tests/test_utils.sh: Remove. * Makefile.am (check_PROGRAMS): Add tests/wait_for_slapd_exit and tests/wait_for_slapd_start. (tests_wait_for_slapd_exit_LDFLAGS) (tests_wait_for_slapd_start_LDFLAGS): New definitions. (EXTRA_DIST): Don't ship tests/test_utils.sh any more. * Makefile.am (noinst_PROGRAMS): Move tests/alloc_port ... (check_PROGRAMS): ... here. There's no benefit in building it when the tests are not run. 2012-03-03 Miloslav Trmač * configure.in: Release 0.57.5. * NEWS: Update. * po/*: Update. 2012-02-10 Miloslav Trmač * Makefile.am (EXTRA_DIST): Add tests/test_utils.sh. * configure.in: Release 0.57.4. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * po/libuser.pot: Update for Transifex. 2012-02-08 Miloslav Trmač * lib/util.c (lu_util_line_get_matchingx): Fix field search to not continue into the following line. * lib/util.c (lu_util_field_write): Cleanup field search. * lib/util.c (lu_util_field_write): Report an error when the entry is not found early to simplify the code. * lib/util.c (lu_util_field_read): Cleanup field search. * lib/util.c (lu_util_field_read): Simplify search for the matching entry. * lib/util.c (lu_util_field_read): Report an error when the entry is not found. * lib/util.c (lu_util_field_write): Fix a memory leak. * lib/util.c (lu_util_field_read): Simplify testing for end of file. * lib/util.c (lu_util_field_read): Simplify redundant error handling. * lib/util.c (lu_util_line_get_matchingx): Cleanup transition between lines. * lib/util.c (lu_util_line_get_matchingx): Cleanup field search. * lib/util.c (lu_util_line_get_matchingx): Cleanup return value handling. * lib/util.c (lu_util_line_get_matchingx): Simplify testing for end of file. * lib/util.c (lu_util_line_get_matchingx): Cleanup end of line handling. * lib/util.c (lu_util_line_get_matchingx): Cleanup field testing. * lib/util.c (lu_util_line_get_matchingx): Rename a confusing variable `buf' to `line'. * lib/util.c (lu_util_line_get_matchingx): Don't access memory after the mmap()ed area. * lib/util.c (lu_util_field_read): Don't access memory after the mmap()ed area if the file doesn't end with a newline. 2012-02-06 Miloslav Trmač * python/admin.c (libuser_admin_wrap_boolean): Fix error handling. * lib/user.c (run_single): Replace an unreachable return with a g_assert_not_reached (). * lib/error.c (lu_error_is_success, lu_error_is_warning) (lu_error_is_error): Remove unreachable code. * lib/config.c (process_line): Remove redundant code. * lib/util.c (lu_util_lock_obtain): Don't corrupt errno before using it, simplify. * modules/files.c (lu_files_create_backup): Handle a fchmod () failure. * lib/config.c (handle_default_useradd_key): Fix a check for invalid GID number. * apps/lpasswd.c (main): Handle strdup () allocation failure. * python/misc.c (libuser_admin_python_prompter): Handle an allocation failure. * lib/util.c (lu_util_field_read): Simplify code. * lib/util.c (lu_util_field_write): Simplify a condition. * lib/util.c (lu_util_field_write): Add FIXME. * modules/files.c (lu_files_create_backup): Drop some code with unclear purpose (probably supposed to check for a symlink, but not really), avoid using uinitiazed data. * lib/util.c (lu_util_fscreate_save): Make sure *ctx is initialized so that lu_util_fscreate_restore() callers don't handle an undefined value. * lib/getdate.y (LookupWord): Correctly cast an argument to tolower (). 2011-10-06 Miloslav Trmač * COPYING * apps/apputil.c * apps/apputil.h * apps/lchage.1 * apps/lchage.c * apps/lchfn.1 * apps/lchfn.c * apps/lchsh.1 * apps/lchsh.c * apps/lgroupadd.1 * apps/lgroupadd.c * apps/lgroupdel.1 * apps/lgroupdel.c * apps/lgroupmod.1 * apps/lgroupmod.c * apps/lid.1 * apps/lid.c * apps/lnewusers.1 * apps/lnewusers.c * apps/lpasswd.1 * apps/lpasswd.c * apps/luseradd.1 * apps/luseradd.c * apps/luserdel.1 * apps/luserdel.c * apps/lusermod.1 * apps/lusermod.c * docs/libuser.conf.5.in * lib/common.c * lib/config.c * lib/config.h * lib/entity.c * lib/entity.h * lib/error.c * lib/error.h * lib/internal.h * lib/misc.c * lib/modules.c * lib/prompt.c * lib/prompt.h * lib/scache.c * lib/user.c * lib/user.h * lib/user_private.h * lib/util.c * modules/files.c * modules/krb5.c * modules/ldap.c * modules/sasldb.c * python/admin.c * python/ent.c * python/libusermodule.c * python/misc.c * samples/enum.c * samples/field.c * samples/homedir.c * samples/lookup.c * samples/prompt.c * samples/testuser.c * tests/alloc_port.c * tests/config_test.c * tests/config_test.sh * tests/default_pw_test * tests/files_test * tests/ldap_test * tests/pwhash_test * tests/test_utils.sh * tests/utils_test: Update FSF address. 2011-10-04 Miloslav Trmač * tests/test_utils.sh: New file. * tests/default_pw_test * tests/ldap_test: Use common wait_for_slapd, also increasing the timeout to 30 seconds. * po/*.po (many): Mark an invalid translation as fuzzy. * configure.in: Release 0.57.3. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * apps/apputil.c (current_umask): New function. (lu_homedir_copy): Preserve S_ISGID and other bits for directories. New parameter umask_value. All users updated. * python/admin.c (libuser_admin_get_first_unused_id_type): Read default start value from configuration. * tests/config_test.py: New file. * tests/config_test.sh (workdir): Run tests/config_test.py. * Makefile.am (EXTRA_DIST): Add tests/config_test.py * apps/lgroupadd.1: * apps/luseradd.1: Fix documentation of start of non-system ID values. * libuser.conf: Comment hard-coded "500" values. 2011-08-26 Miloslav Trmač * docs/reference/tmpl/config.sgml * docs/reference/tmpl/entity.sgml * docs/reference/tmpl/error.sgml * docs/reference/tmpl/libuser-unused.sgml * docs/reference/tmpl/prompt.sgml * docs/reference/tmpl/user.sgml * docs/reference/tmpl/value.sgml: Remove, all information is now stored in *.[ch]. * docs/reference/Makefile.am (setup-build-workaround.stamp, setup.stamp) (dist-hook): Remove workarounds necessary for tmpl in $(srcdir). * docs/reference/Makefile.am (HFILE_GLOB, CFILE_GLOB): Fill in. * docs/reference/tmpl/user.sgml: Move contents... * lib/misc.c: ... here and ... * lib/user.c: ... here. * docs/reference/tmpl/entity.sgml: Move contents... * lib/entity.c: ... here and ... * lib/entity.h: ... here. * docs/reference/tmpl/error.sgml: Move contents... * lib/error.c: ... here and ... * lib/error.h: ... here. * docs/reference/tmpl/value.sgml: Move contents... * lib/misc.c: ... here and ... * lib/user.h: ... here. * docs/reference/tmpl/config.sgml: Move contents... * lib/config.c: ... here, and update somewhat. * lib/config.h: Drop redundant documentation. * docs/reference/libuser-decl-list.txt * docs/reference/libuser-decl.txt * docs/reference/libuser.args * docs/reference/libuser.hierarchy * docs/reference/libuser.signals: Stop tracking generated files. * docs/reference/tmpl/prompt.sgml: Move contents... * lib/prompt.c: ... here. * lib/entity.h (lu_ent_t) * lib/error.h (lu_status_t, lu_error_t) * lib/user.h (lu_context_t, lu_entity_type_t): Mark with #ifndef LU_DISABLE_DEPRECATED. * docs/reference/Makefile.am (SCAN_OPTIONS): Recognize LU_DISABLE_DEPRECATED. * docs/reference/Makefile.am (TESTS): Uncomment to enable gtk-doc tests. * lib/user.h (struct lu_context): Document. (lu_context_t): Document, mark as deprecated. All users changed. * docs/reference/tmpl/user.sgml: Regenerate. * docs/reference/libuser-sections.txt: Add lu_context and lu_context_t. * lib/error.h (struct lu_error): Add a redundant declaration to let gtk-doc recognize existence of the type. * lib/error.h (lu_status_t): Split; should be marked as deprecated, but gtk-doc can't handle an enum typedef. All users changed. (struct lu_error): Add minimal documentation (fields not documented because gtk-doc doesn't find them). (lu_error_t): Document, mark as deprecated. All users changed. * docs/reference/tmpl/error.sgml: Regenerate. * docs/reference/libuser-sections.txt: Add lu_error and lu_error_t. * docs/reference/tmpl/entity.sgml (SECTION Long_Description): Move struct lu_ent documentation ... * lib/entity.h (struct lu_ent): ... here. (lu_ent_t): Document, mark as deprecated. All users changed. * docs/reference/libuser-sections.txt: Add lu_ent and lu_ent_t. * lib/prompt.h (lu_prompt): Workaround a gtk-doc parser bug, treating free_value as an external symbol. 2011-08-25 Miloslav Trmač * docs/reference/libuser-docs.sgml: Regenerate with gtk-doc 1.17. * docs/reference/Makefile.am: Update from gtk-doc 1.17. * docs/reference/Makefile.am (setup-build-workaround.stamp) (setup.stamp): Workaround incorrect gtk-doc handling of tmpl when $(builddir) != $(srcdir). (DOC_SOURCE_DIR): Workaround incorrect gtk-doc handling of sources when $(builddir) != $(srcdir). (dist-hook): Workaround references to $(build) instead of $(builddir). 2011-05-03 Miloslav Trmač * lib/user.c (run_list): Remove dead code. * lib/user.c (run_list): Use a better assertion. 2011-03-31 Miloslav Trmač * configure.in: Release 0.57.2. * NEWS: Update. * po/*: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. 2011-03-19 Miloslav Trmač * tests/alloc_port.c: New file. * Makefile.am (noinst_PROGRAMS): Add tests/alloc_port. (tests_alloc_port_LDFLAGS): New definition. * tests/default_pw_test: * tests/default_pw.conf.in (ldap/server) * tests/ldap_test: * tests/ldap.conf.in (ldap/server): Use a dynamically allocated port for the LDAP server. * tests/default_pw_test: * tests/ldap_test: Don't set up port 6360 for ldaps, it is not used. 2011-03-17 Miloslav Trmač * tests/config_test.c (verify_var): Call va_end(). * lib/config.c (process_line): Only search for '=' once. * modules/files.c (lu_files_create_backup): Handle lseek() failure. * lib/util.c (lu_util_line_get_matchingx): Handle lseek() failures. Only restore file position if we have actually altered it. * apps/lpasswd.c (main): Handle errors when reading the password from a supplied file descriptor. * apps/apputil.c (lu_homedir_copy): Don't leak a file descriptor on error. * modules/ldap.c (arrays_equal): Drop unnecessary checks. * lib/util.c (lu_util_field_write): Simplify: unless we return lu_error_search, we know line != NULL, and ret == TRUE a little below. This could be simplified further - the current function both reject lines which match but don't contain the specified field, and supports adding the field. * lib/user.c (lu_dispatch): Fix a pasto. 2011-03-04 Miloslav Trmač * .tx/config: New file. * po/libuser.pot: Add to prepare for Transifex. 2011-02-04 Miloslav Trmač * modules/files.c (line_read): Remove an unused variable. * modules/ldap.c (lu_ldap_fudge_objectclasses): Silence a warning. 2011-02-01 Miloslav Trmač * lib/misc.c (lu_value_get_id): Explicitly return LU_VALUE_INVALID_ID for LU_VALUE_INVALID_ID :) (with a warning, from now on). (lu_value_init_set_attr_from_string): Reject LU_VALUE_INVALID_ID as an id_t value. * modules/ldap.c (lu_ldap_setpass): Don't use "!!" (password missing) as an algorithm indicator to be preserved. Skip over '!' (account locked) when looking for the algorithm indicator. * tests/files_test.py (Tests.testUserSetpass1) (Tests.testUserSetpass2, Tests.testUserSetpass3) (Tests.testUserSetpass4, Tests.testGroupSetpass1) (Tests.testGroupSetpass2, Tests.testGroupSetpass3) (Tests.testGroupSetpass4): Verify that crypt_style is honored. * tests/ldap_test.py (Tests.testUserSetpass1) (Tests.testUserSetpass2, Tests.testGroupSetpass1) (Tests.testGroupSetpass2): Verify that the existing algorithm is preserved. (Tests.testUserSetpass3, Tests.testGroupSetpass3): Verify that crypt_style is honored. (Tests.testUserSetpass4, Tests.testUserSetpass5) (Tests.testGroupSetpass4, Tests.testGroupSetpass5): New tests. * tests/files_test.py (Tests.testUserSetpass4, Tests.testGroupSetpass4): Verify that the encrypted password value does not contain ':'. 2011-01-20 Miloslav Trmač * modules/ldap.c (get_ent_adds): Don't use empty gecos as a commonName value. * tests/ldap_test.py (Tests.testUserAdd7): New test. 2011-01-14 Miloslav Trmač * configure.in: Release 0.57.1. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * lib/modules.c (lu_modules_load): Fix handling of modules that report non-fatal errors. 2011-01-10 Miloslav Trmač * configure.in: Release 0.57. * NEWS: Update. * po/LINGUAS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. 2011-01-03 Miloslav Trmač * tests/default_pw_test * tests/default_pw_test.py * tests/default_pw.conf.in: New test. * Makefile.am (TESTS) (EXTRA_DIST): Add tests/default_pw.conf.in, tests/default_pw_test and tests/default_pw_test.py. * tests/ldap_test.py (Tests.testUserAdd1, Tests.testGroupAdd1): Verify default password value of newly created entries. * modules/ldap.c (lu_ldap_user_default): Use an LDAP-specific default for LU_USERPASSWORD. (lu_ldap_group_default): Comment absence of default password. * lib/user_private.h (struct lu_module): New member valid_module_combination. * lib/error.h (lu_status_t): Add lu_error_invalid_module_combination. * lib/error.c (lu_strerror, lu_error_is_error): Handle lu_error_invalid_module_combination. * lib/modules.c (load_one_module): Verify `valid_module_combination' is provided. (lu_modules_load): After loading modules, let each one verify the module combination. * modules/files.c (lu_files_shadow_valid_module_combination): New function. (libuser_files_init, libuser_shadow_init): Provide `valid_module_combination'. * modules/ldap.c (lu_ldap_valid_module_combination): New function. (libuser_ldap_init): Provide `valid_module_combination'. * modules/sasldb.c (lu_sasldb_valid_module_combination): New function. (libuser_sasldb_init): Provide `valid_module_combination'. * lib/user_private.h (LU_MODULE_NAME_FILES, LU_MODULE_NAME_LDAP) (LU_MODULE_NAME_SHADOW): New definitions. * modules/files.c (SHADOW_MODULE_NAME): Remove, replaced by LU_MODULE_NAME_SHADOW. All users updated. (libuser_files_init): Use LU_MODULE_NAME_FILES. * modules/ldap.c (libuser_ldap_init): Use LU_MODULE_NAME_LDAP. * lib/user_private.h (LU_MODULE_VERSION): Increase. * lib/error.c (lu_strerror, lu_error_is_error): Handle lu_error_invalid_attribute_value. 2010-12-14 Miloslav Trmač * tests/ldap_test: Don't run (openssl req) in batch mode so that we can specify a host name. Use "127.0.0.1" as host name to fix CN mismatches, "localhost" when connecting is apparently replaced by the actual host name. * Makefile.am (tests_config_test_LDADD): Fix a typo. 2010-09-29 Miloslav Trmač * lib/util.c (lu_util_fscreate_for_path): Don't pass NULL to %s. * lib/util.c (lu_util_fscreate_for_path): Handle cases when a path is not in the matchpathcon database. 2010-09-07 Miloslav Trmač * apps/apputil.c (lu_authenticate_unprivileged): New parameter ctx. All users changed. Don't authenticate the user if the application is not set*id and elevated privileges are not necessary. * apps/apputil.h (lu_authenticate_unprivileged): Update prototype. * lib/misc.c (lu_value_get_id): Don't abort the program if the value is not a valid ID. * modules/ldap.c (lu_ldap_groups_enumerate_by_user) * apps/lid.c (do_id): Handle invalid ID values, for completeness. 2010-09-01 Miloslav Trmač * libuser.conf (crypt_style): Change default to sha512. 2010-09-14 Miloslav Trmač * configure.in: Release 0.56.18. * NEWS: Update. 2010-08-26 Miloslav Trmač * configure.in: Release 0.56.17. * NEWS: Update. * autogen.sh: Fix running autogen on an old checkout. * tests/slapd.conf.in: Make the tests run with current openldap again. 2010-07-07 Miloslav Trmač * tests/files_test.py (Tests.testValidateIdValue): Fix comment. 2010-07-02 Miloslav Trmač * python/libusermodule.c (libuser_validate_id_value): New function. (libuser_methods): Add validateIdValue. * python/modules.txt (libuser): Document validateIdValue. * tests/files_test.py (Tests.testValidateIdValue): New test. * python/libusermodule.c (initlibuser): Provide VALUE_INVALID_ID. * python/modules.txt (libuser): Document VALUE_INVALID_ID. 2010-06-14 Miloslav Trmač * modules/ldap.c (lu_ldap_needed_objectclasses, get_ent_adds) (get_ent_mods, libuser_ldap_init) * python/misc.c (libuser_admin_prompt): Use g_malloc*_n (). 2010-06-12 Miloslav Trmač * configure.in: Define PACKAGE_BUGREPORT and PACKAGE_URL. * autogen.sh: Run aclocal with -Wall. 2010-03-25 Miloslav Trmač * configure.in: Release 0.56.16. * NEWS: Update. 2010-03-04 Miloslav Trmač * configure.in: Release 0.56.15. * NEWS: Update. * po/LINGUAS: Sort. * Makefile.am (archive) * configure.in: Use xz for compressing the distribution tarball. 2010-02-08 Miloslav Trmač * configure.in: Release 0.56.14. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * docs/libuser.conf.5.in ([ldap]): Document the "password" option. 2010-02-08 Rob Myers * modules/ldap.c (libuser_ldap_init): Allow specifying the LDAP password in a config file. 2010-02-08 Miloslav Trmač * lib/prompt.c (lu_prompt_console): Don't try to modify TTY attributes if stdin is not a TTY. 2010-02-03 Thierry Vignaud * po/fr.po: Update. 2010-02-03 Miloslav Trmač * lib/user_private.h (_): Use dcgettext (). Based on patch by Thierry Vignaud . 2010-01-26 Miloslav Trmač * tests/ldap.conf.in (ldap/password): Remove, the value is not used. 2009-12-11 Miloslav Trmač * configure.in: Release version 0.56.13. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. 2009-12-11 Miloslav Trmač * apps/luseradd.c (main): New arguments --commonname, --givenname, --surname, --roomnumber, --telephonenumber, --homephone. * apps/luseradd.1: Document new arguments. * apps/lusermod.c (main): New arguments --commonname, --givenname, --surname, --roomnumber, --telephonenumber, --homephone. * apps/lusermod.1: Document new arguments. * modules/ldap.c (interact, lu_ldap_needed_objectclasses) (lu_ldap_is_locked): Fix debug print parameters. 2009-12-08 Miloslav Trmač * modules/files.c (entry_name_conflicts): Split from generic_add (). (generic_mod): Refuse to rename to an existing name. * tests/files_test.py (Tests.testUserAdd8, Tests.testUserMod7) (Tests.testGroupAdd5, Tests.testGroupMod6) * tests/ldap_test.py (Tests.testUserAdd6, Tests.testUserMod5) (Tests.testGroupAdd4, Tests.testGroupMod4): New test cases. * apps/lnewusers.c (main): Refuse using dubious home directories unless specified explicitly. * tests/utils_test: Test handling of dubious default home directories in lnewusers. * lib/internal.h (LU_DUBIOUS_HOMEDIRECTORY): New definition. * lib/user.c (lu_user_add): Refuse to create an user with a dubious home directory unless specified explicitly. (replace_all): New parameter "key". Recognize dubious home directory value created by the substitution. Caller updated. * lib/user_private.h (lu_common_user_add_check): Remove declaration. * lib/common.c (LU_INVALID_HOMEDIRECTORY): Remove. (lu_common_user_default): Set LU_DUBIOUS_HOMEDIRECTORY instead of LU_INVALID_HOMEDIRECTORY, and only if LU_DUBIOUS_HOMEDIRECTORY is not already set. (lu_common_user_add_check): Remove. * modules/files.c (lu_files_user_add) * modules/ldap.c (lu_ldap_user_add): Remove call to lu_common_user_add_check (). 2009-12-07 Miloslav Trmač * lib/common.c (lu_common_user_add_check): Capitalize error message. * lib/user_private.h (lu_common_user_add_check): New declaration. * lib/common.c (LU_INVALID_HOMEDIRECTORY): New definition. (lu_common_user_default): Don't set home directory to /home/. or /home/.. by default. (lu_common_user_add_check): New function. * modules/files.c (lu_files_user_add) * modules/ldap.c (lu_ldap_user_add): Call lu_common_user_add_check (). * po/POTFILES.in: Add lib/common.c. * tests/files_test.py (Tests.testUserAdd7) * tests/ldap_test.py (Tests.testUserAdd5): New tests. 2009-10-26 Miloslav Trmač * apps/lid.c (do_id): Report error when the name does not exist (as opposed to the case when a group exists but does not have any members). Caller updated. 2009-10-02 Miloslav Trmač * configure.in: Release version 0.56.12. * NEWS: Update. 2009-09-14 Miloslav Trmač * configure.in: Release version 0.56.11. * NEWS: Update. * po/LINGUAS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * autogen.sh: Fix (make archive). * apps/luserdel.c (main): Fix comment. 2009-06-23 Miloslav Trmač * apps/lgroupmod.c (main): Remove unnecessary nscd refreshes. Refresh the "passwd" nscd cache only once after modifying all affected users. * apps/lnewusers.c (main): Refresh the "group" nscd cache after adding a group. Refresh the "passwd" nscd cache only after changing the user's password. * apps/lpasswd.c (main): Refresh the relevant nscd cache after changing the password. * apps/luseradd.c (main): Refresh the "passwd" nscd cache only after changing the user's password. * apps/luserdel.c (main): Only refresh the "group" cache if a group was deleted. * Makefile.am (apps_libapputil_la_CPPFLAGS): New variable. * apps/apputil.c (lu_nscd_flush_cache): New function. (lu_signal_nscd, lu_hup_nscd): Remove. * apps/apputil.h: Update prototypes. * apps/lchage.c (main) * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lgroupadd.c (main) * apps/lgroupdel.c (main) * apps/lgroupmod.c (main): * apps/lnewusers.c (main): * apps/luseradd.c (main) * apps/luserdel.c (main): Use lu_nscd_flush_cache () instead of lu_hup_nscd (). Based on a patch by Masahiro Matsuya . 2009-06-14 Miloslav Trmač * configure.in: Add AC_CONFIG_MACRO_DIR. Drop AC_ISC_POSIX. Update for libtool 2. * lib/getdate.y: Update for bison 2.4. * configure.in: Update gettext version to 0.17. 2009-05-22 Miloslav Trmač * apps/luserdel.c (main): Remove user's mail spool as well. * apps/luserdel.1: Update. * lib/user.c (run_single): Prohibit renaming entities to an invalid name. * tests/files_test.py (Tests.testUserMod6, Tests.testGroupMod5): New tests. * modules/files.c (generic_add): Remove unnecessary "line != NULL" conditions. * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main): Refuse GID and UID (id_t)-1. * apps/lgroupadd.c (main) * apps/lgroupmod.c (main): Refuse GID (gid_t)-1. * lib/user.c (extract_name, extract_id): Only check pending values, nothing else falls back on current values like these functions did. (lu_default_int): Don't default LU_GIDNUMBER to -1 if the "users" group does not exist. Don't set ID to 0 or -1 if a new ID can't be allocated. Don't replace %u in default values by 0 or -1 if a new ID can't be allocated. * python/admin.c (libuser_admin_create_home): Dont populate home directory if UID or GID is (id_t)-1. * python/ent.c (libuser_convert_to_value): Try to refuse GID and UID (id_t)-1. 2009-04-14 Miloslav Trmač * configure.in: Version 0.56.10. * NEWS: Update. * po/LINGUAS: Update. 2009-03-12 Miloslav Trmač * tests/ldap_test.py (Tests.testUserLock3) (Tests.testUserUnlock4, Tests.testUserUnlockNonempty4) (Tests.testGroupLock3, Tests.testGroupUnlock4) (Tests.testGroupUnlockNonempty4): Test handling of unsupported encryption schemes when locking or unlocking passwords. * modules/ldap.c (userPassword_has_scheme): New function. (lu_ldap_handle_lock): Don't re-encrypt (corrupt) passwords that use a different encryption scheme than {crypt}. 2009-02-19 Miloslav Trmač * tests/utils_test * tests/utils_group * tests/utils_gshadow * tests/utils_passwd * tests/utils_shadow: Test useradd with a numerical user name. * apps/luseradd.c (main): When the user name is used as a group name, never interpret it as a number. 2008-10-13 Miloslav Trmač * po/POTFILES.skip: New file (used by transifex at translate.fedora.redhat.com). 2008-07-19 Miloslav Trmač * tests/files_test.py (Tests.testUserAdd6, Tests.testUserMod5) (Tests.testUserSetpass4, Tests.testGroupAdd4) (Tests.testGroupMod4, Tests.testGroupSetpass4): New tests. * modules/files.c (format_generic): New parameter error. Reject fields contaning a ':' that would be interpreted as a field separator. (format_fn): Remove. (generic_add): New parameters formats, format_count instead of formatter. All users changed. Format the new line first, and refuse to use it if it is invalid. (lu_files_format_user, lu_files_format_group, lu_shadow_format_user) (lu_shadow_format_group): Fold into generic_add callers. (generic_mod): Format the new line first, and refuse to use it if it is invalid. Modify the file one line at a time instead of one field at a time. (generic_setpass): Refuse to use the new password if it contains a literal ':'. 2008-07-18 Miloslav Trmač * tests/config_test.sh (workdir): * tests/pwhash_test (workdir): * tests/utils_test (workdir): Use a work directory distinct from tests/files_test. * tests/slapd.conf.in: Use the "bdb" database backend, ldbm was removed in openldap-2.4. 2008-07-13 Miloslav Trmač * apps/lnewusers.1: Fix .IP argument quoting. Use sentence capitalization for field names. Fix a typo. 2008-04-09 Miloslav Trmač * configure.in: Version 0.56.9. * NEWS: Update. * po/LINGUAS: Add as. 2008-03-25 Miloslav Trmač * apps/lpasswd.1 (DESCRIPTION): Fix another pasto. 2008-02-27 Miloslav Trmač * apps/lusermod.c (main): Warn if the new GID does not refer to an existing group. * apps/lusermod.1: Document that --gid may output a warning if the group does not exist. Resolves libuser #1. * tests/utils_group * tests/utils_gshadow * tests/utils_passwd * tests/utils_shadow * tests/utils_test: Test usermod -g outputs a warning if the specified group does not exist. 2008-02-26 Miloslav Trmač * apps/lpasswd.1 (SYNOPSIS): Fix a pasto. * apps/luseradd.1 (NAME): Fix. Bugs reported by Miloš Malík . 2008-02-23 Miloslav Trmač * configure.in: Version 0.56.8. * NEWS: Update. * Makefile.am (EXTRA_DIST): Add tests/config_import2.conf.in, tests/config_login2.defs, tests/pwhash.conf.in, tests/pwhash.py and tests/pwhash_test. * All relevant source files: Use <> for #including config.h, in particular do not use "../config.h", which can refer to a file outside the build directory. Remove #ifdef HAVE_CONFIG_H, we know that is true. * Makefile.am (HGTAG): Replace CVSTAG. (force-tag, tag, archive): Update to use Mercurial. * all files: Remove CVS keywords. * README: Point to the home page hosted at fedoraproject.org. 2008-02-16 Miloslav Trmač * po/POTFILES.in: Add missing lib/misc.c. * docs/libuser.conf.5.in: Fix a typo. 2008-01-11 Miloslav Trmač * tests/pwhash_test: Fix description. 2008-01-09 Miloslav Trmač * configure.in: Version 0.56.7. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update version info. * lib/common.c: New file, moving most code from modules/default.-c. (lu_common_user_default, lu_common_group_default) (lu_common_suser_default, lu_common_sgroup_default): Make public. * lib/user_private.h (LU_COMMON_DEFAULT_PASSWORD) (LU_COMMON_DEFAULT_SHADOW_PASSWORD, LU_COMMON_DEFAULT_SHELL): New definitions, moved from modules/default.-c. (lu_common_user_default, lu_common_group_default) (lu_common_suser_default, lu_common_sgroup_default) (lu_util_default_salt_specifier): New declarations. * lib/util.c (HASH_ROUNDS_MIN, HASH_ROUNDS_MAX) (parse_hash_rounds, select_hash_rounds): Move from modules/default.-c. (lu_util_default_salt_specifier): Move from modules/default.-c. Use a lu_context * instead of lu_module *. All users changed. (lu_make_crypted): Use HASH_ROUNDS_MAX. * modules/default.-c: Remove. All users changed. * Makefile.am (pkginclude_HEADERS): Remove modules/default.-c. (lib_libuser_la_SOURCES): Add lib/common.c. (modules_libuser_files_la_CPPFLAGS) (modules_libuser_shadow_la_CPPFLAGS) (modules_libuser_krb5_la_CPPFLAGS) (modules_libuser_ldap_la_CPPFLAGS) (modules_libuser_sasldb_la_CPPFLAGS): Remove. 2008-01-08 Miloslav Trmač * po/sr@latin.po: Rename from po/sr@Latn.po * po/LINGUAS: Update. * docs/libuser.conf.5.in: Document SHA support. * tests/pwhash.conf.in * tests/pwhash.py: New files * tests/pwhash_test: New test. * Makefile.am (TESTS): Add tests/pwhash_test. * tests/config_import2.conf.in * tests/config_login2.defs: New files. * tests/config_login.defs: Add SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS. * tests/config_override.conf.in: Add hash_rounds_min and hash_rounds_max. * tests/config_test.sh: Create libuser_import2.conf. * tests/config_test.c (main): Add tests for hash_rounds_min and hash_rounds_max. Test ENCRYPT_METHOD and MD5_CRYPT_ENAB interaction. * lib/config.c (struct handle_login_defs_key_data): New definition. (handle_login_defs_key): Expect struct handle_login_defs_key_data * instead of struct config_config *. Handle ENCRYPT_METHOD, SHA_CRYPT_MIN_ROUNDS, SHA_CRYPT_MAX_ROUNDS. Only use MD5_CRYPT_ENAB if ENCRYPT_METHOD is not defined. (import_login_defs): Pass struct handle_login_defs_key_data * to handle_login_defs_key(). * lib/util.c (salt_type_info): New member sha_rounds. Add SHA256 and SHA512 entries. (lu_make_crypted): Add support for SHA rounds specification. * modules/default.-c (HASH_ROUNDS_MIN, HASH_ROUNDS_MAX): New macros. (lu_common_parse_hash_rounds, lu_common_select_hash_rounds): New functions. (lu_common_default_salt_specifier): Add support for sha256 and sha512. Add support for configurable number of hashing rounds. Return a newly allocated string. All callers changed. 2008-01-07 Miloslav Trmač * tests/files_test.py (Tests.testUserSetpass1) (Tests.testUserSetpass2, Tests.testUserSetpass3) (Tests.testGroupSetpass1, Tests.testGroupSetpass2) (Tests.testGroupSetpass3): Don't assume the password salt is 11 characters long. 2007-12-06 Miloslav Trmač * apps/lid.1: Fix grammar. 2007-11-14 Miloslav Trmač * lib/util.c (lu_util_lock_obtain): Fix setting l_type. 2007-10-30 Miloslav Trmač * lib/util.c (lu_util_fscreate_restore) [WITH_SELINUX]: Fix use of uninitialized data when SELinux is disabled. 2007-10-25 Miloslav Trmač * configure.in: Version 0.56.6. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * docs/Makefile.am (CLEANFILES): Add sgml/libuser-1.html and sgml/libuser-2.html. * Makefile.am (modules_libuser_files_la_LDFLAGS) (modules_libuser_shadow_la_LDFLAGS) (modules_libuser_krb5_la_LDFLAGS) (modules_libuser_ldap_la_LDFLAGS) (modules_libuser_sasldb_la_LDFLAGS) (python_libusermodule_la_LDFLAGS): Don't use -export-dynamic, that option is defined only for executables. * apps/apputil.c (lu_homedir_copy, lu_homedir_populate) (lu_homedir_move): Set up / preserve SELinux file contexts when creating / copying home directories. * lib/user_private.h (lu_security_context_t, lu_util_fscreate_save) (lu_util_fscreate_restore, lu_util_fscreate_from_file) (lu_util_fscreate_for_path): New declarations. * lib/util.c (lu_util_fscreate_save, lu_util_fscreate_restore) (lu_util_fscreate_from_file, lu_util_fscreate_for_path): New functions. * modules/files.c (set_default_context, reset_default_context): Remove. (generic_add, generic_mod, generic_del, generic_lock) (generic_setpass): Use lu_util_fscreate_save(), lu_util_fscreate_from_file() and lu_util_fscreate_restore() instead of set_default_context() and reset_default_context(). (This fixes a possible leak of prev_context). * apps/apputil.c (setup_default_context): Remove. (lu_authenticate_unprivileged): Use lu_util_fscreate_from_file() instead of setup_default_context(). * Makefile.am (lib_libuser_la_LDFLAGS): Link to SELINUX_LIBS. (modules_libuser_files_la_LDFLAGS) (modules_libuser_shadow_la_LDFLAGS): Don't link to SELINUX_LIBS directly. * docs/Makefile.am (CLEANFILES): Add sgml/libuser.html and sgml/libuser.txt. (clean-local): Remove. 2007-10-11 Miloslav Trmač * configure.in: Version 0.56.5. * NEWS: Update. * po/LINGUAS: Add kn, ro, te. * tests/files_test.py (workdir): New variable. (Tests.testUserAdd4, Tests.testUserAdd5): New tests. * tests/files_test: Pass workdir to files_test.py. * apps/apputil.c (lu_homedir_copy): Report an error if the destination (home directory) is a relative path. * python/admin.c (libuser_admin_add_user): Don't ignore a raised exception before creating a mail spool. Create an exception object if creating a mail spool fails. Beautify. (libuser_admin_delete_user): Create an exception object if removing a mail spool fails. Beautify. 2007-09-25 Miloslav Trmač * tests/ldap_test.py (Tests.testUserMod4): Test empty modifications. * modules/ldap.c (dump_mods): Handle NULL mods. (lu_ldap_set): Do not call ldap_modify_ext_s() when no attributes need to be modified, to avoid spurious errors on Fedora Directory Server. Beautify. 2007-09-10 Miloslav Trmač * lib/modules.c (load_one_module): Use G_MODULE_BIND_LOCAL. 2007-06-15 Miloslav Trmač * configure.in: Version 0.56.4. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * tests/files_test.py (Tests.testUserSetpass1) (Tests.testUserRemovepass) * tests/ldap_test.py (Tests.testUserSetpass1) (Tests.testUserRemovepass1): Test LU_SHADOWLASTCHANGE is updated. * modules/files.c (lu_shadow_user_setpass) (lu_shadow_group_setpass, lu_shadow_user_removepass) (lu_shadow_group_removepass): Remove redundant lu_util_update_shadow_last_change() calls. * lib/user.c (lu_user_setpass, lu_user_removepass): Save the modified LU_SHADOWLASTCHANGE value. (lu_group_setpass, lu_group_removepass): Don't update LU_SHADOWLASTCHANGE, the field is valid only for user entities. 2007-06-09 Miloslav Trmač * configure.in: Version 0.56.3. * NEWS: Update. * modules/ldap.c (struct lu_ldap_context): New member sasl_mechanism. (interact): Return "" to SASL_CB_GETREALM. Shorten variable names for better formating, simplify a bit. (bind_server): Use context->sasl_mechanism. Replace contradictory LDAP_SASL_INTERACTIVE | LDAP_SASL_QUIET by LDAP_SASL_AUTOMATIC. (lu_ldap_close_module): Free sasl_mechanism. (libuser_ldap_init): Default ldap/user to "". Allow specifying SASL bind mechanism as "sasl/MECHANISM". * docs/libuser.conf.5.in: Update bindtype documentation. Original patch by Simo Sorce . 2007-04-28 Miloslav Trmač * configure.in * Makefile.am: Use features available in autoconf 2.61. 2007-04-19 Miloslav Trmac * configure.in: Version 0.56.2. * NEWS: Update. * po/LINGUAS: Add bs. Remove languages with no translated strings. 2007-03-16 Miloslav Trmac * libuser.conf: Remove all krb5 module references to avoid the slightest possibility of giving an impression that the krb5 module might work. 2007-03-02 Miloslav Trmac * po/no.po: Remove, obsoleted by nb.po. * po/LINGUAS: Remove no. 2007-02-23 Miloslav Trmac * configure.in: Version 0.56.1. * NEWS: Update. * tests/files_test.py (Tests.testUserSetpass3) (Tests.testGroupLookupName2, Tests.testGroupSetpass3): Simplify the lambda expression. * modules/files.c (suffix_passwd, suffix_shadow, suffix_group) (suffix_gshadow): New variables. (generic_lookup, generic_add, generic_mod, generic_del, generic_lock) (generic_is_locked, generic_setpass, lu_files_enumerate) (lu_files_users_enumerate_by_group, lu_files_groups_enumerate_by_user) (lu_files_enumerate_full, lu_files_uses_elevated_privileges) (lu_shadow_uses_elevated_privileges, libuser_shadow_init): Use suffix_* instead of separate "/" and copy&pasted basenames. All users changed. * modules/files.c (lu_files_uses_elevated_privileges) (lu_shadow_uses_elevated_privileges): Fix incorrect conversion from g_strdup_printf (). * modules/files.c (SHADOW_MODULE_NAME): New macro. (ent_has_shadow): New function. (generic_setpass): Only silently ignore known shadow markers, and replace invalid shadow markers by "x"; both only if a shadow entry exists. (libuser_shadow_init): Use SHADOW_MODULE_NAME. * tests/files_test.py (Tests.testUserSetpass1): Rename from testUserSetpass. (Tests.testGroupSetpass1): Rename from testGroupSetpass. (Tests.testUserSetpass2, tests.testUserSetpass3) (Tests.testGroupSetpass2, tests.testGroupSetpass3): New tests. * tests/files_test: Update file contents. 2007-02-17 Miloslav Trmac * configure.in: Version 0.56. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * NEWS: Update. * configure.in (AM_INIT_AUTOMAKE): Use dist-bzip2. * Makefile (archive): Use the bzip2 tarball. * tests/files_test.py (Tests.testUserLookupName3) (Tests.testUserDefault, Tests.testGroupLookupName3) (Tests.testGroupDefault): New tests. * tests/files_test: Update file contents. * apps/apputil.c (lu_mailspool_create_remove) * apps/lnewusers.c (main) * lib/user.c (lu_default_int) * modules/files.c (lu_files_user_lookup_id) (lu_shadow_user_lookup_id, lu_files_group_lookup_id) (lu_shadow_group_lookup_id, generic_del) * modules/ldap.c (lu_ldap_base, lu_ldap_user_lookup_id) (lu_ldap_group_lookup_id, lu_ldap_handle_lock) (lu_ldap_users_enumerate_by_group): Don't use g_strdup_printf () when a simpler alternative can be used. * lib/error.c (lu_error_new): Don't use lu_strerror () result as a format string. Beautify. * apps/lchage.c (read_ndays): Assume the value is a G_TYPE_LONG. Return a g_type_long. All callers updated. (date_to_string): Use glong for n_days. * lib/user.c (lu_default_int) * modules/ldap.c (lu_ldap_lookup): Use lu_value_init_set_attr_from_string (). Report invalid values. * tests/ldap_test.py (Tests.testUserAdd2): Use correct value types. * docs/reference/tmpl/entity.sgml: Document the value types used for entities. * lib/config.c (handle_default_useradd_key): Try harder to eliminate the possibility of date overflow. 2007-02-16 Miloslav Trmac * apps/lid.c (do_id): Avoid an unnecessary lu_value_strdup (). * lib/util.c (salt_type_info): Use char[] instead of char * and reorder fields within the structure to eliminate run-time relocations and save some space. * docs/reference/tmpl/error.sgml: Add missing parameter documentation. * lib/user.c (lu_user_setpass, lu_user_removepass) (lu_group_setpass, lu_group_removepass, lu_default_int): Use lu_util_update_shadow_last_change (). * lib/util.c (lu_util_shadow_current_date): Return the number of days as an integer. Clean up. (lu_util_update_shadow_last_change): Move from ... * modules/files.c (set_shadow_last_change): ... here. All callers updated. * lib/internal.h (lu_util_shadow_current_date): Update prototype. Move declaration from... * lib/user_private.h (lu_util_shadow_current_date): ... here. (lu_util_update_shadow_last_change): New declaration. (LU_MODULE_VERSION): Bump. * lib/user.c (replace_all): New function, based on a part of lu_default_int (). (lu_default_int): Perform substitutions one by one instead of precomputing a list of them. 2007-02-15 Miloslav Trmac * lib/user.c (run_list): Avoid unnecessary g_value_dup_string (). * lib/entity.c (lu_ent_dump): Remove output of value types that are not expected to appear. (lu_ent_add_module): Only copy the module name if it is not already present in ent->modules. * modules/files.c (line_read): Simplify and clean up. (generic_del): Use memmove for copying strings that overlap. Clean up the code a bit. * apps/lnewusers.c (main) * lib/prompt.c (lu_prompt_console): Eliminate duplicate strchr () calls. * lib/entity.c (lu_ent_del_int): Use lu_values_equal () instead of g_strdup_value_contents (), which is intended for human-readable debugging dumps. * lib/entity.c (lu_ent_dump_attributes): Split from lu_ent_dump_attributes (). Show something for unsupported value types. 2007-01-06 Jeremy Katz * python/misc.c (libuser_prompt_destroy): Use PyObject_DEL since we allocated with PyObject_NEW (#220679) * python/ent.c (libuser_entity_destroy): Likewise. * python/admin.c (libuser_admin_destroy): Likewise. 2006-12-14 Miloslav Trmac * python/admin.c (AdminType) * python/ent.c (libuser_entity_mapping_methods, EntityType) * python/misc.c (PromptType): Remove casts, use comments to indicate struct members. * python/admin.c (libuser_admin_setattr) (libuser_admin_get_first_unused_id, libuser_admin_get_first_unused_gid) (libuser_admin_new): Add manual casts to conform to PyCFunctionWithKeywords. (libuser_admin_get_first_unused_id_type): Remove unnecessary variable. (libuser_admin_methods) [getUserShells]: Use METH_NOARGS. * python/common.h (lenfunc): Remove definition. (libuser_admin_new, libuser_prompt_new, libuser_get_user_shells): Update prototypes. * python/ent.c (libuser_entity_destroy, libuser_entity_getattr) (libuser_entity_setattr, libuser_entity_length) (libuser_entity_get_item, libuser_entity_set_item): Add manual casts to conform to method types. (libuser_entity_getattrlist, libuser_entity_module) (libuser_entity_clear_all, libuser_entity_revert): Use METH_NOARGS. (libuser_entity_get, libuser_entity_add, libuser_entity_set) (libuser_entity_clear) (libuser_entity_has_key): Add manual casts to conform to PyCFunction. (libuser_entity_methods) [getattrlist, keys, clear_all, revert] [modules]: Use METH_NOARGS. [has_key, get, clear, set, add]: Remove casts. * python/libusermodule.c (libuser_get_user_shells): Use METH_NOARGS. (libuser_methods) [prompt, get_user_shells, PROMPT, getUserShells]: Use METH_NOARGS. * python/misc.c (libuser_prompt_destroy, libuser_prompt_getattr) (libuser_prompt_setattr, libuser_prompt_print): Add manual casts to conform to method types. (libuser_prompt_new): Use METH_NOARGS. * python/admin.c (libuser_admin_new) * python/misc.c (libuser_prompt_new): Remove redundant declarations. 2006-12-10 Miloslav Trmac * configure.in (AM_GNU_GETTEXT_VERSION): Use gettext-0.14.6. * configure.in: Version 0.55. * NEWS: Update. * autogen.sh * Makefile.am (EXTRA_MANS, pkginclude_HEADERS, dist_noinst_SCRIPTS) [QUOTA] (noinst_PROGRAMS, lib_LTLIBRARIES, pyexec_LTLIBRARIES) * configure.in * docs/reference/libuser-docs.sgml * docs/reference/libuser-sections.txt * python/modules.txt: Remove the quota library and Python module. * docs/reference/tmpl/quota.sgml * lib/userquota.3 * lib/userquota.c * lib/userquota.h * python/quota-script * python/quotamodule.c * samples/quotaq.c: Removed files. * python/admin.c (libuser_admin_setattr) (libuser_admin_lookup_user_name, libuser_admin_lookup_user_id) (libuser_admin_lookup_group_name, libuser_admin_lookup_group_id) (libuser_admin_do_wrap, libuser_admin_wrap_boolean) (libuser_admin_setpass, libuser_admin_create_home) (libuser_admin_remove_home, libuser_admin_move_home) (libuser_admin_create_remove_mail, libuser_admin_add_user) (libuser_admin_delete_user) (libuser_admin_get_first_unused_id_type, libuser_admin_new) * python/ent.c (libuser_entity_add, libuser_entity_set) (libuser_entity_clear, libuser_entity_clear_all) (libuser_entity_revert, libuser_entity_has_key) * python/misc.c (libuser_admin_prompt, libuser_prompt_getattr): * python/quotamodule.c (quotamodule_set, quotamodule_on) (quotamodule_off): Replace all trivial uses of Py_BuildValue (). * python/misc.c (libuser_admin_prompt, libuser_prompt_setattr): Remove an unnecessary use of typeof. * apps/apputil.c (lu_converse): Use calloc () instead of malloc () and memset (). * python/common.h (Py_ssize_t, lenfunc): New definitions. * python/ent.c (libuser_entity_setattr, libuser_entity_set) (libuser_entity_length, libuser_entity_set_item): Use Py_ssize_t. (libuser_entity_mapping_methods): Use lenfunc. * python/misc.c (libuser_admin_python_prompter, libuser_admin_prompt): Use Py_ssize_t. * python/quotamodule.c (Py_ssize_t): New definition. (quotamodule_set): Use Py_ssize_t. 2006-11-02 Miloslav Trmac * configure.in: Version 0.54.8. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * NEWS: Update. * lib/config.c (handle_default_useradd_key): Import HOME. * docs/libuser.conf.5.in: Document HOME is imported from default/useradd. * tests/config_default_useradd * tests/config_override.conf.in * tests/config_test.c (main): Test import of HOME. 2006-09-25 Miloslav Trmac * configure.in: Version 0.54.7. * NEWS: Update. * po/LINGUAS: Add el, ml and or. 2006-05-01 Miloslav Trmac * configure.in: Version 0.54.6. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * NEWS: Update. * apps/lchsh.c (main): Provide a more verbose error message. * apps/apputil.c (lu_homedir_copy): Split from lu_homedir_populate. Reformat a bit. (lu_homedir_populate): New parameter ctx. Default skeleton to defaults/skeleton. All users updated to pass NULL instead of reading the config value. * apps/apputil.h (lu_homedir_populate): Update prototype. * python/admin.c (libuser_admin_add_user): New keyword parameter "skeleton". * python/modules.txt: Document new addUser parameter. 2006-03-12 Miloslav Trmac * modules/ldap.c (get_ent_mods): Remove unused parameter module. * lib/getdate.y: Quiesce some warnings. * lib/config.c (read_file): Make type conversion explicit, assuming sizeof (off_t) >= sizeof (size_t). 2006-03-06 Miloslav Trmac * python/admin.c (libuser_admin_enumerate_users) (libuser_admin_enumerate_groups) (libuser_admin_enumerate_users_by_group) (libuser_admin_enumerate_groups_by_user): Don't attempt to g_value_array_free(NULL). * lib/user.c (extract_id, extract_name): Don't warn if the attribute has no value, leave it to the caller. (lu_refresh_int): Don't unnecessarily call extract_id(). Don't attempt to refresh an entity without name. (convert_user_name_to_id, convert_group_name_to_id): Report errors when the entity can't be found or has no ID. (ent_has_name_and_id): New function. (lu_dispatch): Report more detailed errors on insufficiently filled entities, also fixing a memory leak. Use constants for unused sdata, ldata parameters. * lib/user.c (lu_dispatch): Use g_assert_not_reached(). * apps/lid.c (do_id): Report lookup error. Exit with status 1 on error. * apps/lchsh.c (main): Report error on prompting. Exit with status 1 on error. * apps/lchfn.c (main): Exit with status 1 on error. * apps/apputil.c (lu_mailspool_create_remove): Fix memory leak. 2006-03-05 Miloslav Trmac * modules/files.c (parse_generic): Fix crash if the last field is empty. (lu_files_enumerate_full): Don't return empty data if the input line is invalid. Match only the user name against the supplied pattern. * tests/files_test.py (Tests.testUsersEnumerateFull3) (Tests.testGroupsEnumerateFull3): New tests. 2006-02-21 Miloslav Trmac * lib/getdate.y: Add missing #include. Define YYENABLE_NLS to avoid -Wundef. * configure.in: Version 0.54.5. * NEWS: Update. * configure.in: Use newer gettext. * docs/libuser.conf.5.in: Remove @pkglibdir@ references to avoid multilib conflicts. * docs/Makefile.am (libuser.conf.5): Stop replacing @pkglibdir@. * modules/sasldb.c (lu_sasldb_close_module): Fix invalid aliasing. 2006-02-13 Miloslav Trmac * po/LINGUAS: Add my. * configure.in: Version 0.54.4. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. 2006-01-31 Miloslav Trmac * configure.in (WITH_PYTHON): New conditional. * Makefile.am (pyexec_LTLIBRARIES, pyexec_LTLIBRARIES): Only use if WITH_PYTHON. Based on a patch by Dan Yefimov . * lib/scache.c (get_keys): Fix C99-ism, patch by Dan Yefimov . 2005-12-20 Miloslav Trmac * po/LINGUAS: Add hy, sr and sr@Latn. 2005-12-02 Miloslav Trmac * configure.in: Version 0.54.3. * NEWS: Update. * apps/lpasswd.c (main): Determine user name before attempting to autenticate a NULL user. 2005-11-12 Miloslav Trmac * modules/krb5.c (lu_krb5_user_add) * modules/ldap.c (lu_ldap_handle_lock, lu_ldap_setpass): Use g_str_has_prefix () where appropriate. 2005-11-11 Miloslav Trmac * configure.in: Version 0.54.2. * NEWS: Update. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * modules/ldap.c (close_server, connect_server, bind_server) (lu_ldap_ent_to_dn, lu_ldap_lookup, lu_ldap_fudge_objectclasses) (lu_ldap_is_locked, lu_ldap_setpass, lu_ldap_user_enumerate): Avoid functions deprecated by openldap. (objectclass_present, lu_ldap_needed_objectclasses): Use BerValue's instead of strings. All callers updated. (free_needed_objectclasses): New function. * configure.in: Remove checks for no longer used deprecated openldap functions. (lu_ldap_close_module): Use close_server (). (lu_ldap_set, lu_ldap_del, lu_ldap_handle_lock, lu_ldap_is_locked) (lu_ldap_setpass, connect_server, bind_server): Replace empty LDAP control vectors by NULL. 2005-10-11 Miloslav Trmac * configure.in: Version 0.54.1. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * libuser.pc.in (Requires) * configure.in: Use gmodule-no-export-2.0. * libuser.conf: Rename from libuser.conf.in, hardcode @sysconfdir@ to /etc. * Makefile.am: Ship libuser.conf instead of libuser.conf.in. * libuser.conf.in: Update to import values from shadow where possible. * NEWS: Update. 2005-10-10 Miloslav Trmac * tests/config_default_useradd, testes/config_import.conf.in, tests/config_login.defs, tests/config_override.conf.in: New files. * tests/config_test.sh: Generate three config files, pass $workdir to config_test instead of setting LIBUSER_CONF. * tests/config_test.c (start): Split from main (). Set LIBUSER_CONF. (verify_var): Abstract from main (). (main): Test configuration import from shadow. * Makefile.am (EXTRA_DIST): Distribute the new test components. * lib/config.c (handle_login_defs_key): Fix pasto. Don't use the first member of conv[] over and over. 2005-10-09 Miloslav Trmac * Most functions: Move variables to inntermost scope, remove unnecessary initializers. * modules/ldap.c (struct lu_ldap_context): New members user_branch, group_branch. (libuser_ldap_init): Initialize user_branch, group_branch. (lu_ldap_base, lu_ldap_ent_to_dn, lu_ldap_lookup, lu_ldap_set) (lu_ldap_del, lu_ldap_handle_lock, lu_ldap_is_locked, lu_ldap_setpass) (lu_ldap_enumerate): Replace the configKey and def parameters by branch. All callers changed to use struct lu_ldap_context members. (lu_ldap_ent_to_dn): Rename variable branch to base. (lu_ldap_base): Don't access module before asserting it is non-NULL. Fix checking of empty branch. (lu_ldap_ent_to_dn): Remove unused variable base. Map namingAttr to LDAP only once. (libuser_ldap_init): Fix memory leak. * modules/ldap.c (LU_LDAP_USER, LU_LDAP_GROUP, LU_LDAP_SHADOW): Remove. (ldap_attribute_map): Replace applicability by type. (lu_ldap_lookup): Replace applicability by type. All callers changed. * modules/ldap.c (lu_ldap_base, lu_ldap_lookup, lu_ldap_set) (lu_ldap_del, lu_ldap_handle_lock, lu_ldap_is_locked, lu_ldap_setpass): Remove handling of NULL which can't ever trigger. * modules/ldap.c (lu_ldap_user_lookup_name, lu_ldap_user_lookup_id) (lu_ldap_group_lookup_name, lu_ldap_group_looup_id, getn_ent_adds) (lu_ldap_is_locked, lu_ldap_setpass, lu_ldap_users_enumerate) (lu_ldap_users_enumerate_full, lu_ldap_groups_enumerate) (lu_ldap_groups_enumerate_full, lu_ldap_users_enumerate_by_group) (lu_ldap_gropus_enumerate_by_user): Hardcode constant results of map_to_ldap (). * docs/libuser.conf.5.in: New file. * docs/Makefile.am: Ship and install libuser.conf.5. 2005-10-07 Miloslav Trmac * lib/config.c (destroy_section): Split from lu_cfg_done(). (gather_values): Removed function. (lu_cfg_done): Don't build a temporary list of sections to free. (lu_cfg_read_single): Don't unnecessarily cache the default value. * config.c (key_add_cached): Split from lu_cfg_init (). (key_defined, key_add, handle_login_defs_key, import_login_defs) (handle_default_useradd_key, import_default_useradd): New functions. (lu_cfg_init): Handle import/login_defs and import/default_useradd. * configure.in (YACC): New check. * Makefile.am (lib_libuser_la_SOURCES): Add lib/getdate.y. * lib/getdate.y: New file, copied from shadow and made reentrant. * lib/internal.h: Declare lu_get_date (). Remove dependencies on other headers. * lib/modules.c (load_one_module): Split from lu_modules_load. Fix leaks. (lu_modules_load): Keep the *modules unchanged on failure. (lu_module_unload): Simplify. * lib/user.c (lu_start): Allocate ctx->scache before lu_cfg_init (). Fix leaks. (lu_end): Remove unnecessary NULL checks. * tests/ldap_test: Allow more time for slapd initialization. 2005-10-01 Miloslav Trmac * lib/config.c (process_line): Cast arguments of isspace () to unsigned char. * apps/apputil.c: Remove unnecessary #include . * lib/config.c (process_line): Split from lu_cfg_init (). Handle very large files and EINTR from read (). Fix FD leak on fstat () failure. Don't prezero the buffer. * lib/config.c (process_line): Fix accesses before the allocated array. Add some microoptimizations. 2005-09-30 Miloslav Trmac * modules/default.-c (salt_initializer_des, salt_initializer_md5) (salt_initializer_blowfish): Remove unnecessary variables, fold values in lu_common_default_salt_specifier (). 2005-09-29 Miloslav Trmac * modules/files.c (libuser_shadow_init): Avoid useless runtime computation. * modules/files.c (lu_files_uses_elevated_privileges): Hardcode "/etc" as default, like other functions. * Makefile.am (modules_libuser_files_la_CPPFLAGS) (modules_libuser_shadow_la_CPPFLAGS): Don't define SYSCONFDIR. (modules_libuser_files_la_CPPFLAGS): Define SYSCONFDIR directly. (SYSCONFDIR): Remove definition. 2005-09-14 Miloslav Trmac * apps/apputil.c (lu_authenticate_unprivileged): Correctly handle pam_get_item () failures. 2005-09-13 Miloslav Trmac * configure.in: Version 0.54. * Makefile.am (lib_libuser_la_LDFLAGS): Update revision. * NEWS: Update. * apps/apputil.h * lib/internal.h: Add G_GNUC_INTERNAL to all declarations. * lib/util.c (lu_strv_len): Remove. * lib/user_private.h (lu_strv_len): Remove declaration. * lib/user.c (lu_default_int): Replace lu_str_case_equal () with its contents. * lib/util.c (lu_str_case_equal, lu_str_equal) (lu_account_name_is_valid): Remove unused functions (not exported in public header files). * lib/internal.h (lu-str_case_equal, lu_str_equal) (lu_account_name_is_valid: Remove declarations. * apps/apputil.c (lu_strconcat): Comment out like its only user. * apps/apputil.h (lu_strconcat): Remove declaration. * lib/internal.h: Merge lib/modules.h and lib/util.h. * lib/user_private.h: Move internal interfaces to internal.h. * Makefile.am (lib_libuser_la_SOURCES) * docs/reference/Makefile.am (IGNORE_HFILES) * lib/config.c * lib/entity.c * lib/misc.c * lib/modules.c * lib/scache.c * lib/user.c * modules/krb5.c: Update. 2005-09-12 Miloslav Trmac * apps/apputil.c (lu_converse) * apps/lnewusers.c (main) * lib/error.c (lu_error_free) * python/misc.c (libuser_prompt_setattr): Remove conditionals around g_free () or g_strfreev (). * apps/lchfn.c (main) * apps/lnewusers.c (main) * lib/util.c (lu_strv_len) * modules/files.c (parse_generic): Use g_strv_length (). * lib/user_private.h (lu_strv_len): Mark as deprecated. * apps/apputil.c (lu_converse): Actually use the "pending" messages. * lib/entity.c (quark_from_attribute): Use g_ascii_strdown (). * modules/files.c (struct format_specifier): Remove member position, assume position == index + 1. (format_passwd, format_group, format_shadow, format_gshadow) (parse_generic, format_generic, generic_mod): Update. * lib/entity.c (lu_ent_add_int) * modules.files.c (format_generic, generic_mod): Beautify. * modules/files.c (generic_mod): Simplify name extraction. * modules/files.c (format_field): New function. (format_generic, generic_mod): Use format_field (). * lib/entity.c (quark_from_attribute): New function. (lu_ent_get_int, lu_ent_clear_int, lu_ent_set_int, lu_ent_add_int): Use quark_from_attribute (). * modules/files.c (generic_mod): Fix crash when attribute is missing. * tests/files_test.py (Tests.testUserMod4): New test. * modules/files.c (parse_generic): Use size_t for field index. * apps/lchage.c (read_ndays): Assume array != NULL && array->n_values > 0. Beautify. * lib/user.c (merge_ent_array_duplicates) * modules/files.c (generic_is_locked) * modules/ldap.c (lu_ldap_lookup, get_ent_adds): Beautify. * apps/lchage.c (main) * apps/lchsh.c (main) * apps/luserdel.c (main) * lib/user.c (lu_dispatch) * modules/files.c (lu_shadow_user_lookup_id, lu_shadow_group_lookup_id) (format_generic): Simplify conditions based on the guarantee below. * docs/reference/tmpl/entity.sgml: Document that attribute values have always at least one value. * lib/entity.c (lu_ent_set_int, lu_ent_del_int): Remove the attribute if there are no values. 2005-06-08 Miloslav Trmac * configure.in: Version 0.53.8. * NEWS: Update. * tests/ldap_test: Remove temporary debugging modification. * lib/user.c (lu_name_allowed, INVALID_NAME_CHARS): Permit "portable" user and group names as defined by SUSv3, plus trailing $. * tests/files_test.py (Tests.testUserAddPrep): New test. * lib/error.h: Use G_GNUC_PRINTF. * python/debug.h (FIXME): Remove unused definition. 2005-06-04 Miloslav Trmac * autogen.sh: Don't set CFLAGS, we don't run configure any more. * configure.in: Use gettext 0.14.3. * tests/ldap_test: Really use tests/ldaprc. 2005-05-20 Miloslav Trmac * autogen.sh: Document the full set of testing flags. Remove hardcoded paths (used to be necessary to workaround parsing paths in configure). * configure.in, Makefile.am: Don't attempt to parse paths in configure, let (make) expand the variables. * libuser.conf.in: Don't use both @scdir@ and @sysconfdir@. * tests/config_test.sh: New file. * tests/config.conf: Rename from tests/config.conf.in. Define defaults/moduledir to point to the build directory. * tests/config_test.c: Don't define LIBUSER_CONF, it is defined by the wrapper script now. * configure.in: Remove many unnecessary tests, simplify others. Fix checking for __secure_getenv(). * Makefile.am: Hardcode variables with only a single possible value * configure.in: Disable building of static libraries. * Makefile.am: Don't remove *.{a,la} of plugins. 2005-04-30 Miloslav Trmac * configure.in: Version 0.53.7. * NEWS: Update. * configure.in: Remove unused GETTEXT_PACKAGE definition. * po/LINGUAS: New file, moved from ALL_LINGUAS in configure.in. Add missing languages (bn_IN, en_GB, et, fi, gu, he, id, ka, ku, lo, mr, si, sq, ur). 2005-04-24 Miloslav Trmac * configure.in: Version 0.53.6. * NEWS: Update. * Makefile.am: Don't ship test/config_test in distribution tarball. * autogen.sh: Don't automatically run configure. * Makefile.am: Update. * tests/config_test.c, tests/config.conf: New files. * Makefile.am: Add tests/config_test.c and tests/config.conf. * lib/config.c (lu_cfg_init): Don't ignore keys with empty values. * lib/config.c (struct config_config): Store the configuration in parsed form, not only the text of the config file. (lu_cfg_init): Parse the configuration only at initialization time. (lu_cfg_done): Update. (lu_cfg_read, lu_cfg_read_keys): Use the paresd configuration. (compare_section_names, compare_key_string, gather_values): New functions. 2005-04-15 Miloslav Trmac * configure.in: Version 0.53.5. * NEWS: Update. * tests/files_test.py (Tests.testUserEnumerate1): Rename from testUserEnumerate. (Tests.testGroupsEnumerate1): Rename from testGroupsEnumerate. (Tests.testUsersEnumerateFull1): Rename from testUsersEnumerateFull. Simplify. (Tests.testGroupsEnumerateFull1): Rename from testGroupsEnumerateFull. Simplify. (Tests.testUsersEnumerateByGroup3): Simplify. (Tests.testUserEnumerate2, Tests.testUsersEnumerateByGroup4) (Tests.testUsersEnumerateFull2, Tests.testGroupsEnumerate2) (Tests.testGroupsEnumerateByUser4, Tests.testGroupsEnumerateFull2): New tests. * modules/files.c (lu_files_enumerate) (lu_files_users_enumerate_by_group) (lu_files_groups_enumerate_by_user, lu_files_enumerate_full): Skip nss_compat lines (starting with '+' or '-'). * tests/files_test: Update initial file contents. * apps/apputil.c: Remove unnecessary include. * configure.in: Use AM_PATH_PYTHON instead of --with-python-version. * Makefile.am (pythonexecdir): Replace by pyexecdir. (DISTCHECK_CONFIGURE_FLAGS): Remove --with-python-version. (PYTHON_CPPFLAGS): New definition. 2005-04-06 Miloslav Trmac * configure.in: Version 0.53.4. * NEWS: Update. 2005-04-06 Miloslav Trmac * modules/ldap.c (ldap_attribute_map): Fix "cn" objectclass. (lu_ldap_needed_objectclasses): Don't add "account" objectclass if it is already present. (lu_ldap_fudge_objectclasses): Add debugging output. 2005-03-05 Miloslav Trmac * configure.in: Version 0.53.3. * NEWS: Update. 2005-03-04 Miloslav Trmac * apps/apputil.c (lu_homedir_populate, lu_signal_nscd) (lu_mailspool_create_remove) * modules/files.c (lu_files_create_backup, generic_add, generic_del): Add more error checking. * modules/ldap.c: Include Cyrus SASL v2 header file. * modules/krb5.c (lu_krb5_user_add, lu_krb5_user_mod) (lu_krb5_user_del, lu_krb5_user_do_lock, lu_krb5_user_islocked) (lu_krb5_user_setpass): Fix checking of lu_ent magic. * docs/reference/libuser-sections.txt: Add lu_values_equal. * docs/reference/tmpl/value.sgml: Document lu_values_equal (). 2005-01-17 Miloslav Trmac * configure.in: Version 0.53.2. * NEWS: Update. * tests/utils_test * tests/utils.conf.in * tests/utils_group * tests/utils_gshadow * tests/utils_passwd * tests/utils_shadow: New files. * Makefile.am: Add tests/utils_test. * apps/lgroupmod.c (main): Fix ignoring of other changes when one of -p, -P, -L, -U is used. Fix group ID changes (look up group members in the original group, and only after applying other member list modifications; don't change primary group ID for users that have a different primary group). * apps/lgroupmod.1: Fix typo. * apps/lnewusers.c (main): Don't use "users" if the input specifies a nonexistent group name. Use the specified user ID. * apps/lnewusers.1: Update. * apps/luseradd.c (main): Actually implement -p and -P. * apps/lusermod.c (main): Fix ignoring of other changes when one of -p, -P, -L, -U is used. 2005-01-15 Miloslav Trmac * apps/lchage.1 * apps/lgroupadd.1 * apps/lgroupdel.1 * apps/lgroupmod.1 * apps/lid.1 * apps/lnewusers.1 * apps/lpasswd.1 * apps/luseradd.1 * apps/luserdel.1 * apps/lusermod.1: New files. * Makefile.am: Add new man pages. * apps/lchage.c (main): Fix cut-and-paste error in -E and -W. * apps/lpasswd.c (main): Make sure the password is always '\0'-terminated. * apps/luseradd.c (main): Exit if a new group can't be created. 2004-12-13 Miloslav Trmac * configure.in: Version 0.53.1. * NEWS: Update. * python/libusermodule.c (initlibuser): Export UT_NAMESIZE from . * pythone/modules.txt: Document UT_NAMESIZE. 2004-11-14 Miloslav Trmac * configure.in: Version 0.53. * NEWS: Update. * docs/reference/libuser-sections.txt * docs/reference/tmpl/user.sgml: Document lu_user_unlock_nonempty () and lu_group_unlock_nonempty (). * tests/files_test.py (Tests.testUserUnlockNonempty1) (Tests.testUserUnlockNonempty2, Tests.testUserUnlockNonempty3) (Tests.testGroupUnlockNonempty1, Tests.testGroupUnlockNonempty2) (Tests.testGroupUnlockNonempty3) * tests/ldap_test.py (Tests.testUserUnlockNonempty1) (Tests.testUserUnlockNonempty2, Tests.testUserUnlockNonempty3) (Tests.testGroupUnlockNonempty1, Tests.testGroupUnlockNonempty2) (Tests.testGroupUnlockNonempty3): Add tests for lu_user_unlock_nonempty () * modules/files.c (reset_default_context): Don't report error in restoring default context, there is no way to handle them anyway. * python/admin.c (libuser_admin_unlock_user) (libuser_admin_unlock_group): Allow calling lu_user_unlock_nonempty () and lu_group_unlock_nonempty (). * python/modules.txt: Document unlockUser nad unlockGroup changes. * tests/files_test.py (Tests.testUserUnlock3) (Tests.testGroupUnlock3) * tests/ldap_test.py (Tests.testUserUnlock3) (Tests.testGroupUnlock2): Test that empty password fields can be unlocked. * modules/ldap.c (enum lock_op): New definition. (lu_ldap_handle_lock): Use enum lock_op. All callers changed. (lu_ldap_user_unlock_nonempty, lu_ldap_group_unlock_nonempty) (libuser_ldap_init): Handle user_unlock_nonempty and group_unlock_nonempty. * modules/files.c (enum lock_op): New definition. (lock_process): Use enum lock_op, return error status. (generic_lock): Use enum lock_op. All callers changed. (lu_files_user_unlock_nonempty, lu_files_group_unlock_nonempty) (lu_shadow_user_unlock_nonempty, lu_shadow_group_unlock_nonempty) (libuser_files_init, libuser_shadow_init): Handle user_unlock_nonempty and group_unlock_nonempty. * modules/sasldb.c (lu_sasldb_user_unlock_nonempty) (lu_sasldb_group_unlock_nonempty, libuser_sasldb_init): Define user_unlock_nonempty and group_unlock_nonempty stubs. * lib/error.h (lu_error_unlock_empty): New definition. * lib/error.c (lu_strerror, lu_error_is_error): Handle lu_error_unlock_empty. * lib/user_private.h (LU_MODULE_VERSION): Bump. (struct lu_module): New members user_unlock_nonempty, group_unlock_nonempty. * lib/modules.c (lu_modules_load): Handle new struct lu_module members. * lib/user.c (lu_user_unlock_nonempty, lu_group_unlock_nonempty): New functions. (lu_dispatch_id): New values user_unlock_nonempty, group_unlock_nonempty. (run_single, run_list, lu_dispatch): Handle new lu_dispatch_id values. * lib/user.h: Add declarations. * NEWS: Update. * tests/files_test.py (Tests.testUserLock1, Tests.testUserLock2) (Tests.testUserUnlock1, Tests.testUserUnlock2) (Tests.testUserIslocked1, Tests.testUserIslocked2) (Tests.testUserSetpass, Tests.testUserRemovepass) (Tests.testGroupLock1, Tests.testGroupLock2) (Tests.testGroupUnlock1, Tests.testGroupUnlock2) (Tests.testGroupIsLocked1, Tests.testGroupIsLocked2) (Tests.testGroupSetpass, Tests.testGroupRemovepass): Test the functions don't change the non-shadow password fields. * modules/files.c (generic_setpass): Allow setting a shadow password even if the current shadow password is invalid. All callers updated. * apps/luseradd.c (main): Don't attempt to create a user group if --gid specifies a numerical ID of a non-existing group. * apps/lnewusers.c (main): Fix handling of empty home directory field. * apps/lusermod.c (main): Make copies of entity values that get destroyed by lu_user_modify (). Get a list of groups an user is in before renaming the user. Don't reuse 'ent' for group entitites. * NEWS: Update. 2004-11-13 Miloslav Trmac * modules/files.c (struct format specifier): New member def_if_empty. (format_passwd, format_group, format_shadow, format_gshadow): Update. (parse_generic): Check for def_if_empty. * apps/lgroupadd.c (main) * apps/lgroupmod.c (main) * apps/lchage.c (read_ndays) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main) * lib/misc.c (lu_value_get_id) * lib/user.c (lu_default_int) * modules/files.c (parse_field) * modules/ldap.c (lu_ldap_lookup) * samples/lookup.c (main): Check strto* () for error yet more properly. * tests/files.conf.in, tests/files_test, tests/files_test.py: New files. * Makefile.am: Add tests/files_test. (EXTRA_DIST): Don't change values depending on whether LDAP is used. * modules/files.c (libuser_files_init, libuser_shadow_init): Allow using the modules as non-root if explicitly requested. 2004-11-09 Miloslav Trmac * tests/ldap_test.py (Tests.testUserLookupId) (Tests.testGroupLookupId): Test large ID values. (Tests.testUserAdd4, Tests.testUserMod3, Tests.testGroupAdd3) (Tests.testGroupMod3): New tests. * apps/lusermod.c (main): Fix user renaming in groups where the user is a member or administrator. * python/ent.c (libuser_convert_to_value): Handle whole id_t range. * python/ent.c (libuser_convert_to_value): Report Python exception instead of aborting. Return success/failure status. (libuser_entity_setattr, libuser_entity_add, libuser_entity_set) (libuser_entity_set_item): Handle errors reported by libuser_convert_to_value(). * python/ent.c (convert_value_array_pylist): Handle G_TYPE_INT64. * python/admin.c (lubser_admin_lookup_user_id) (libuser_admin_lookup_group_id, libuser_admin_create_home) (libuser_admin_get_first_unused_id_type): Handle whole uid_t/gid_t range. 2004-11-08 Miloslav Trmac * lib/user.c (lu_default_int): Use id_t. * lib/user.c (lu_get_first_unused_id): Change the interface to use id_t. Don't allow (id_t)-1. * lib/user_private.h: Update prototype. * modules/files.c (format_passwd, format_group): Use G_TYPE_INVALID for id_t. (parse_field): Handle G_TYPE_INVALID. * modules/files.c (parse_field): New function, split from parse_generic (). Don't interpret input as octal or hexadecimal numbers. (parse_generic): Use parse_field (). * modules/ldap.c (lu_ldap_lookup): Convert id_t values to numbers, not strings. Don't interpret input as octal or hexadecimal numbers. * samples/lookup.c (main): Handle whole id_t range. * lib/user.c (lu_default_int): Convert id_t values to numbers, not strings. Don't interpret input as octal or hexadecimal numbers. * lub/user.c (lu_default_int): Handle whole range of uid_t/gid_t in '%u' substitution. * lib/user.c (lu_default_int): Remove copy-and-pasted usage of idkeystring as a generic fallback. * lib/user.c (lu_default_int): Handle whole ID range. * lib/user.c (compare_strings): Replace compare_ints (). (merge_ent_array_duplicates): Use lu_value_strdup () instead of poking in GValues. * modules/ldap.c (value_compare): Removed function. * lib/entity.c (lu_ent_add_int) * lib/user.c (remove_duplicate_values) * modules/ldap.c (arrays_equal, get_ent_mods): Use lu_values_equal (). * lib/misc.c (lu_values_equal): New function. * lib/user.h: Add declaration. * apps/lgroupmod.c (main) * apps/lgroupadd.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main): Handle whole gid_t/uid_t range for '--gid' and '--uid', respectively. 2004-11-07 Miloslav Trmac * apps/apputil.h (INVALID): Removed definition. * apps/apputil.c (lu_mailspool_create_remove) * apps/lgroupadd.c (main) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main): Use LU_VALUE_INVALID_ID to indicate unknown value. * lib/user.c (INVALID): Removed definition. (extract_id, convert_user_name_to_id, convert_group_name_to_id): Return LU_VALUE_INVALID_ID on failure. All callers changed. (lu_dispatch): Use LU_VALUE_INVALID_ID to indicate unknown value. All callers changed. * samples/testuser.c (dump_attribute): Handle G_TYPE_INT64. * modules/ldap.c (lu_ldap_user_lookup_id): Handle whole uid_t range. (lu_ldap_group_lookup_id, lu_ldap_users_enumerate_by_group): Handle whole gid_t range. * modules/files.c (lu_files_user_lookup_id) (lu_shadow_user_lookup_id): Handle whole uid_t range. (lu_files_group_lookup_id, lu_shadow_group_lookup_id) (lu_files_users_enumerate_by_group): Handle whole gid_t range. * lib/user.c (run_single, run_list): Use id_t for ldata. All callers changed. (convert_user_name_to_id): Return uid_t. (convert_group_name_to_id): Return gid_t. * lib/entity.c (lu_ent_dump): Handle G_TYPE_INT64. * apps/luserdel.c (main): Handle whole gid_t range. * apps/luseradd.c (main): Handle whole gid_t range. * apps/lnewusers.c (main): Handle whole uid_t/gid_t range, don't ignore invalid values. * apps/lchage.c (read_ndays): Handle G_TYPE_INT64. * apps/apputil.c (lu_mailspool_create_remove) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/luserdel.c (main) * modules/ldap.c (lu_ldap_groups_enumerate_by_user): Use lu_value_get_id (). * docs/reference/tmpl/value.sgml: New file. * lib/misc.c (lu_value_get_id): New function. * lib/user.h: Add declaration. (LU_VALUE_INVALID_ID): New macro. * apps/lgroupadd.c (main) * apps/lgroupmod.c (main) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/lusermod.c (main) * lib/user.c (lu_default_int): Use lu_value_init_set_id (). * lib/misc.c (lu_value_init_set_id): New function. * lib/user.h: Add declaration. * lib/misc.c (lu_value_strdup): Handle G_TYPE_INT64. * lib/misc.c (lu_strdup_value): Rename to lu_value_strdup (). All callers changed. * lib/user.h: Rename declaration. * apps/lchage.c (read_ndays) * apps/lnewusers.c (main) * apps/luseradd.c (main) * lib/user.c (lu_default_int) * modules/files.c (parse_generic) * modules/ldap.c (lu_ldap_lookup) (lu_ldap_groups_enumerate_by_user): Properly check strtol () for error. 2004-11-05 Miloslav Trmac * modules/files.c (generic_lock, generic_is_locked, generic_setpass) * apps/lchfn.c (main): Use lu_strdup_value (). * modules/files.c (generic_is_locked): Fix memory leak. 2004-11-04 Miloslav Trmac * modules/ldap.c (get_ent_adds, get_ent_mods, lu_ldap_set) (lu_ldap_del, lu_ldap_handle_lock, lu_ldap_is_locked) (lu_ldap_setpass): Use lu_strdup_value () instead of value_as_string (). (value_as_string): Removed function. * modules/sasldb.c (lu_sasldb_user_munge, lu_sasldb_user_is_locked): Use lu_strdup_value (). 2004-11-03 Miloslav Trmac * apps/apputil.c (lu_mailspool_create_remove) * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lid.c (main) * modules/files.c (lu_shadow_user_lookup_id, lu_shadow_group_lookup_id) (format_generic, generic_mod, generic_del): Use lu_strdup_value (). * lib/misc.c (lu_strdup_value): New function. * lib/user.h: Add declaration. * docs/reference/tmpl/entity.sgml * docs/reference/libuser-sections.txt: Document lu_strdup_value (). 2004-11-02 Miloslav Trmac * configure.in: Version 0.52.6. * NEWS: Update. 2004-11-01 Miloslav Trmac * modules/sasldb.c (lu_sasldb_user_lookup_name, lu_sasldb_user_munge) (lu_sasldb_user_is_locked): Remove assertions on possible error codes, undocumented codes happen too. * modules/sasldb.c (libuser_sasldb_init): Fix self-describing module name. * modules/sasldb.c (lu_sasldb_user_removepass) (lu_sasldb_group_removepass): New functions (libuser_sasldb_init): Set the user_removepass and group_removepass handlers. * lib/modules.c (lu_modules_load): Don't close a NULL handle. * modules/sasldb.c (lu_sasldb_user_add): Return TRUE on success. * configure.in * modules/sasldb.c (lu_sasldb_user_lookup_name, lu_sasldb_user_munge) (libuser_sasldb_init): Use Cyrus SASL v2. * modules/ldap.c (bind_server): Don't attempt to bind using NULL bind DN. * modules/ldap.c (bind_server): Report at least the first encountered bind error. 2004-10-30 Miloslav Trmac * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lnewusers.c (main) * samples/enum.c (main) * samples/testuser.c (main): Output error messages on stderr. * apps/lchfn.c (main): Exit if specified user does not exist. * apps/lnewusers.c (main): Don't attempt to act on improperly formatted lines. * po/POTFILES.in: Add missing files. * modules/ldap.c (lu_ldap_set, lu_ldap_del): Remove superfluous '\n' and '.\n' at message ends. * apps/lgroupadd.c (main) * apps/lgroupdel.c (main) * apps/lgroupmod.c (main) * apps/lchage.c (main) * apps/lchfn.c (main) * apps/lchsh.c (main) * apps/lid.c (main) * apps/lnewusers.c (main) * apps/luseradd.c (main) * apps/luserdel.c (main) * apps/lusermod.c (main) * python/admin.c (libuser_admin_do_wrap, libuser_admin_setpass): * samples/enum.c (main): * samples/homedir.c (main): * samples/lookup.c (main): * samples/testuser.c (main): Use lu_strerror () instead of (error ? error->string : _("unknown error")). Report error cause in more error messages. * apps/lchsh.c (main): Report error if shell was not changed. * modules/ldap.c (lu_ldap_set, lu_ldap_handle_lock) (lu_ldap_setpass) * modules/files.c (set_default_context, reset_default_context) (generic_setpass) * lib/config.c (lu_cfg_init) * apps/apputil.c (lu_authenticate_unprivileged): Mark strings for translation. * lib/util.c (lu_util_line_get_matchingx): Fix memory leak. 2004-10-14 Miloslav Trmac * lib/error.h (LU_ERROR_CHECK): Add missing '\n'. 2004-10-11 Miloslav Trmac * configure.in: Version 0.52.5. * NEWS: Update. * python/admin.c (libuser_admin_add_user) (libuser_admin_modify_user) (libuser_admin_delete_user): Fix memory leak. * python/admin.c (libuser_admin_add_user) (libuser_admin_delete_user): Fix reference counting. * python/modules.txt: Fix modifyUser documentation about not creating home directory by default. * python/admin.c (libuser_admin_modify_user): Pass original entity to libuser_admin_move_home(). 2004-10-10 Miloslav Trmac * configure.in: Version 0.52.4. * NEWS: Update. * python/misc.c (libuser_prompt_destroy): Fix memory leak. (libuser_admin_python_prompter): Properly copy struct libuser_prompt to avoid double free(). * python/admin.c (libuser_admin_enumerate_users) (libuser_admin_enumerate_groups) (libuser_admin_enumerate_users_by_group) (libuser_admin_enumerate_groups_by_user): Fix memory leaks. * python/admin.c (libuser_admin_enumerate_users_full) (libuser_admin_enumerate_groups_full) (libuser_admin_enumerate_users_by_group_full) (libuser_admin_enumerate_groups_by_user_full) * python/ent.c (convert_value_array_pylist) (libuser_entity_getattrlist): * python/libusermodule.c (libuser_get_user_shells): * python/misc.c (libuser_admin_python_prompter): Fix memory leaks. 2004-10-09 Miloslav Trmac * lib/entity.c (lu_ent_free): Fix memory leak. * modules/files.c (generic_add): Fix memory leak. * lib/user.c (merge_ent_array_duplicates): Remove fflush (from debugging?). * modules/files.c (lu_files_enumerate_full): Fix memory leak. 2004-09-29 Miloslav Trmac * configure.in: Version 0.52.3. * NEWS: Update. * Makefile.am: Readd -D_LIBUSER_MODULE for modules. 2004-09-28 Miloslav Trmac * configure.in: Version 0.52.2. * NEWS: Update. * modules/ldap.c (lu_ldap_set): Beautify debug messages. * modules/ldap.c (connect_server): Allow ldap URIs, don't require TLS for servers specified by URIs. * docs/sgml/libuser.sgml: Document URI support. 2004-09-27 Miloslav Trmac * configure.in: Version 0.52.1. * NEWS: Update. * modules/files.c (set_default_context): Make sure *prev_context is always initialized. 2004-09-27 Miloslav Trmac * configure.in: Version 0.52. * autogen.sh: Create the `admin' subdirectory if needed. * Makefile.am (CVSTAG): Fix definition. * Makefile.am (archive): Ship with formatted documentation. * configure.in: Define AC_CONFIG_AUX_DIR. * configure.in: Remove various unneeded parts. * configure.in, Makefile.am: Use automake conditionals instead of MODULES. * Makefile.am (TESTS): Define only if LDAP. * Makefile.am: Use AM_CPPFLAGS to eliminate the most redundant lines. * Makefile.am (uninstall-local): Fix typo. * Makefile.am: Link exactly with needed libraries. * docs/sgml/Makefile.am: Merge with docs/Makefile.am. * Makefile.am (CVSTAG): Define portably. * configure.in: Use new-style AC_INIT and AM_INIT_AUTOMAKE. Set automake options `subdir-objects' and `-Wall'. * modules/ldap.c (lu_ldap_lookup): Silence gcc warning. * apps/Makefile.am, lib/Makefile.am, modules/Makefile.am, samples/Makefile.am: Merge with top-level Makefile.am. * apps/lchage.c, apps/lchfn.c, apps/lgroupadd.c, apps/lgroupdel.c, apps/lgroupmod.c, apps/lid.c, apps/lnewusers.c, apps/lpasswd.c, apps/luseradd.c, apps/luserdel.c, apps/lusermod.c, samples/enum.c, python/admin.c, python/ent.c, python/misc.c, python/libusermodule.c, python/quotamodule.c, samples/field.c, samples/homedir.c, samples/lookup.c, samples/quotaq.c, samples/prompt.c, samples/testuser.c: Change path of config.h. * NEWS: Update. * tests/ldap_test.py (Tests.testUserDel, Tests.testUserLock1) (Tests.testUserLock2, Tests.testUserUnlock1) (Tests.testUserUnlock2, Tests.testUserIslocked1) (Tests.testUserIslocked2, Tests.testUserSetpass1) (Tests.testUserSetpass2, Tests.testUserSetpass3) (Tests.testUserRemovepass1, Tests.testUserRemovepass2) (Tests.testUserRemovepass3, Tests.testUsersEnumerate) (Tests.testUsersEnumerateByGroup1) (Tests.testUsersEnumerateByGroup2) (Tests.testUsersEnumerateByGroup3, Tests.testUsersEnumerateFull) (Tests.testGroupLookupName, Tests.testGroupLookupId) (Tests.testGroupAdd1, Tests.testGroupAdd2, Tests.testGroupMod1) (Tests.testGroupMod2, Tests.testGroupDel, Tests.testGroupLock1) (Tests.testGroupLock2, Tests.testGroupUnlock1) (Tests.testGroupUnlock2, Tests.testGroupIsLocked1) (Tests.testGroupIsLocked2, Tests.testGroupSetpass1) (Tests.testGroupSetpass2, Tests.testGroupSetpass3) (Tests.testGroupRemovepass1, Tests.testGroupRemovepass2) (Tests.testGroupRemovepass3, Tests.testGroupsEnumerate) (Tests.testGroupsEnumerateByUser1) (Tests.testGroupsEnumerateByUser2) (Tests.testGroupsEnumerateByUser3, Tests.testGroupsEnumerateFull): New tests. * tests/ldap_test.py (Tests.testUserAdd2, Tests.testUserMod2): Update for final password entity model. * modules/ldap.c (lu_ldap_is_locked): Remove unneeded parameter `type'. All callers changed. * tests/ldap_test: Clean up after running the tests. * tests/ldap_test.py: Workaround openssl's inability to handle repeated library loading and unloading. * modules/ldap.c (lu_ldap_groups_enumerate_by_user): Don't consider all string representations of numbers invalid. (lu_ldap_groups_enumerate_by_user): Don't free data owned by the entity. * lib/user.c (run_single): Don't run user_removepass when group_removepass is wanted. * modules/ldap.c (lu_ldap_group_removepass): Implement. * modules/ldap.c (lu_ldap_is_locked): Use LU_GROUPPASSWORD and POSIXGROUP for groups. * modules/ldap.c (lu_ldap_setpass): Don't attempt to remove the attribute if it does not exist. (lu_ldap_setpass): Use LU_GROUPPASSWORD for groups. * modules/ldap.c (lu_ldap_handle_lock): Use LU_GROUPPASSWORD for groups. * modules/ldap.c (ldap_attribute_map): Remove LU_SHADOWPASSWORD. (get_ent_adds): Skip LU_SHADOWPASSWORD. It should be completely ignored now. * python/libusermodule.c (initlibuser): Fix libuser.GROUPPASSWORD. 2004-09-26 Miloslav Trmac * lib/user.c (lu_end): Fix memory leak. * modules/ldap.c (lu_ldap_ent_to_dn): Remove parameter `applicability'. All callers changed. * modules/ldap.c (lu_ldap_fudge_objectclasses): Use the mod_values macro. (ldap_attribute_map): Make members point to constant strings. Casts added to users where needed. (lu_ldap_user_attributes, lu_ldap_group_attributes): Make it a constant array of constant strings. (libuser_ldap_init): Store converted pointers to data that will be eventually freed as part of the context. (lu_ldap_lookup): Use mapped_user_attributes, mapped_group_attributes. (map_from_ldap): Remove. (lu_ldap_close_module): Free mapped_user_attributes, mapped_group_attributes. 2004-09-25 Miloslav Trmac * modules/ldap.c (lu_ldap_needed_objectclasses): s/User/Entity/g (lu_ldap_needed_objectclasses): Fix debugging printout. (lu_ldap_needed_objectclasses): Ignore attributes not applicable to given entity type. * modules/ldap.c (ldap_attribute_map): Remove mapping for LU_ADMINISTRATORNAME. (SHADOWGROUP): Remove. * python/admin.c (libuser_admin_removepass_user) (libuser_admin_removepass_group): Throw exception on error. * modules/ldap.c (lu_ldap_user_removepass): Implement. * modules/ldap.c (lu_ldap_is_locked): Fix memory leak. (lu_ldap_is_locked): Map libuser attribute names to LDAP names. * modules/ldap.c (lu_ldap_setpass): Initialize addvalues[0] and rmvalues[0] even if the original password is already encrypted. (lu_ldap_setpass): Map libuser attribute names to LDAP names. (lu_ldap_setpass): Remove (maybe all) values before adding new values. (lu_ldap_setpass): Fix memory leak. * modules/ldap.c (lu_ldap_handle_lock): Don't skip LU_CRYPTED twice. (lu_ldap_handle_lock): Fix memory leaks. (lu_ldap_handle_lock): Don't remove and add the same value. (lu_ldap_handle_lock): Avoid unnecessary g_malloc0()/g_free() pair. (lu_ldap_handle_lock): Don't drop LU_CRYPTED when unlocking unlocked account. (lu_ldap_handle_lock): Don't lock locked accounts again. * modules/ldap.c (lu_ldap_user_attributes): Drop LU_SHADOWPASSWORD. (get_ent_adds): Drop LU_SHADOWPASSWORD, not LU_USERPASSWORD. * modules/ldap.c (lu_ldap_set): Remove parameter `attributes'. All callers changed. 2004-09-24 Miloslav Trmac * configure.in: Version 0.51.12. * Makefile.am: Remove the spec file and "release" tagging from CVS, rework the spec file a bit. * configure.in: Don't create libuser.spec. * NEWS: Move data from libuser.spec.in. * libuser.spec.in: Remove. * tests/ldap.conf.in, tests/ldaprc, tests/ldap_skel.ldif, tests/ldap_test.py, tests/slapd.conf.in: New files * Makefile.am (TESTS, EXTRA_DIST): Use and distribute tests. * python/ent.c (libuser_entity_set): Don't both return success and indicate error at the same time. * python/ent.c (libuser_entity_set_item): Don't clear the entity if the new value has invalid type. * modules/files.c (generic_lookup): Fix memory leak. * python/ent.c (libuser_convert_to_value): Fix memory leak. * modules/ldap.c (get_ent_mods, lu_ldap_set): Special-case entry renaming. (lu_ldap_set): Fix desired RDN computation in rename. * modules/ldap.c (lu_ldap_set): Use the original name when looking up the DN of an entry that is being renamed. 2004-09-23 Miloslav Trmac * configure.in: Version 0.51.11. * libuser.conf.in: Avoid mentioning /usr/lib* in config file. 2004-09-21 Miloslav Trmac * modules/ldap.c (lu_ldap_set): New parameter `add'. All callers changed. * modules/ldap.c (get_ent_mods): Simplify somewhat. * modules/ldap.c (objectclass_present, lu_ldap_needed_objectclasses) (get_ent_adds): Split and customize/fix from lu_ldap_fudge_objectclasses (). (lu_ldap_fudge_objectclasses): Use lu_ldap_needed_objectclasses (). * modules/ldap.c (ACCOUNT): New macro. (SHADOWACCOUNT): Define as "shadowAccount" again. * modules/ldap.c (ldap_attribute_map): Remove unused member `ldap_attribute_key'. * modules/ldap.c (lu_ldap_user_lookup_name, lu_ldap_user_lookup_id): Add LU_LDAP_SHADOW to `applicability' argument. * python/libusermodule.c (initlibuser): Add missing attribute names. 2004-09-19 Miloslav Trmac * python/admin.c (libuser_admin_setattr): Fix reference counting. 2004-09-18 Miloslav Trmac * python/misc.c (libuser_admin_python_prompter, libuser_admin_prompt): Fix reference counting. * modules/ldap.c (libuser_ldap_init): Don't set error when it was already set. 2004-09-17 Miloslav Trmac * modules/ldap.c (value_compare): Make sense of comparison same for longs and strings. * modules/ldap.c (lu_ldap_ent_to_dn, libuser_ldap_init): Fix memory leaks. * modules/ldap.c (libuser_ldap_init, bind_server): Respect bind_simple and bind_sasl. 2004-09-20 Miloslav Trmac * apps/lchfn.1, apps/lchsh.1: New files. * apps/Makefile.am (dist_man_MANS): Distribute new man pages. Makefile.am000066400000000000000000000206561471266067600131420ustar00rootroot00000000000000## Process this file with automake to produce Makefile.in ## Settings pkgconfigdir = $(libdir)/pkgconfig ACLOCAL_AMFLAGS = -I m4 AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --with-ldap HGTAG = 'libuser-$(VERSION)' AM_CPPFLAGS = $(GOBJECT_CFLAGS) LOCALEDIR_CPPFLAGS = -DLOCALEDIR='"$(localedir)"' PYTHON_CPPFLAGS = -I$(PYINCLUDEDIR) AM_TESTS_ENVIRONMENT = PYTHON=$(PYTHON); export PYTHON; # Ignore possibly lost, there are too many due to Python. --gen-suppressions # makes the run interactive, which is not good for regression testing - we # are not there yet. VG_EXECUTION = libtool --mode=execute \ valgrind --quiet --suppressions=$(srcdir)/tests/valgrind.supp \ --leak-check=full --num-callers=20 --log-fd=3 \ --gen-suppressions=yes --show-possibly-lost=no VG_ENVIRONMENT = G_SLICE=always-malloc \ G_DEBUG=gc-friendly,resident-modules ## Targets SUBDIRS = po docs TESTS = tests/config_test.sh tests/fs_test tests/files_test tests/pwhash_test \ tests/utils_test if LDAP TESTS += tests/default_pw_test tests/ldap_test endif EXTRA_DIST = \ $(EXTRA_MANS) \ python/modules.txt \ samples/genusers \ tests/config.conf.in tests/config_default_useradd \ tests/config_import.conf.in tests/config_import2.conf.in \ tests/config_login.defs tests/config_login2.defs \ tests/config_override.conf.in tests/config_test.py \ tests/config_test.sh \ tests/default_pw.conf.in tests/default_pw_test tests/default_pw_test.py \ tests/files.conf.in tests/files_test tests/files_test.py \ tests/fs.conf.in tests/fs_test tests/fs_test.py \ tests/ldap.conf.in tests/ldaprc tests/ldap_skel.ldif tests/ldap_test \ tests/ldap_test.py \ tests/pwhash.conf.in tests/pwhash.py tests/pwhash_test \ tests/slapd.conf.in \ tests/utils.conf.in tests/utils_group tests/utils_gshadow \ tests/utils_passwd tests/utils_shadow tests/utils_test \ tests/valgrind.supp bin_PROGRAMS = apps/lchfn apps/lchsh sbin_PROGRAMS = apps/lchage apps/lgroupadd apps/lgroupdel apps/lgroupmod \ apps/lid apps/lnewusers apps/lpasswd apps/luseradd apps/luserdel \ apps/lusermod noinst_PROGRAMS = samples/enum samples/field samples/homedir samples/lookup \ samples/prompt samples/testuser \ tests/config_test check_PROGRAMS = tests/alloc_port tests/wait_for_slapd_exit \ tests/wait_for_slapd_start noinst_LTLIBRARIES = apps/libapputil.la lib_LTLIBRARIES = lib/libuser.la pkglib_LTLIBRARIES = modules/libuser_files.la modules/libuser_shadow.la if LDAP pkglib_LTLIBRARIES += modules/libuser_ldap.la endif if SASL pkglib_LTLIBRARIES += modules/libuser_sasldb.la endif if WITH_PYTHON pyexec_LTLIBRARIES = python/libuser.la endif dist_man_MANS = apps/lgroupadd.1 apps/lgroupdel.1 apps/lgroupmod.1 \ apps/lchage.1 apps/lchfn.1 apps/lchsh.1 apps/lid.1 apps/lnewusers.1 \ apps/lpasswd.1 apps/luseradd.1 apps/luserdel.1 apps/lusermod.1 pkgconfig_DATA = $(PACKAGE).pc dist_sysconf_DATA = libuser.conf pkginclude_HEADERS = lib/config.h lib/entity.h lib/error.h lib/fs.h \ lib/prompt.h lib/user.h lib/user_private.h dist_noinst_SCRIPTS = python/ldap-script python/test-script ## Rules force-tag: cd $(top_srcdir); hg tag -f $(HGTAG) tag: cd $(top_srcdir); hg tag $(HGTAG) archive: rm -fr /tmp/$(PACKAGE)-export-tmp hg clone -r $(HGTAG) $(abs_top_srcdir) /tmp/$(PACKAGE)-export-tmp cd /tmp/$(PACKAGE)-export-tmp; ./autogen.sh ; \ ./configure --sysconfdir=/etc --with-ldap --enable-gtk-doc \ --without-sasl; make -C docs/reference; make dist mv /tmp/$(PACKAGE)-export-tmp/$(PACKAGE)-$(VERSION).tar.xz . rm -fr /tmp/$(PACKAGE)-export-tmp @echo Package is in \"$(PACKAGE)-$(VERSION).tar.xz\". valgrind: VALGRIND='$(VG_EXECUTION)' \ $(MAKE) check TESTS_ENVIRONMENT='$(VG_ENVIRONMENT)' 3>&2 ## Dependency data apps_libapputil_la_CPPFLAGS = $(AM_CPPFLAGS) apps_libapputil_la_SOURCES = apps/apputil.c apps/apputil.h apps_libapputil_la_LDFLAGS = $(GOBJECT_LIBS) -lpam -lpam_misc $(SELINUX_LIBS) apps_lchage_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lchage_LDADD = lib/libuser.la $(LTLIBINTL) apps_lchage_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_lchfn_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lchfn_LDADD = apps/libapputil.la lib/libuser.la $(LTLIBINTL) apps_lchfn_LDFLAGS = $(GMODULE_LIBS) -lpopt apps_lchsh_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lchsh_LDADD = apps/libapputil.la lib/libuser.la $(LTLIBINTL) apps_lchsh_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_lgroupadd_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lgroupadd_LDADD = lib/libuser.la $(LTLIBINTL) apps_lgroupadd_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_lgroupdel_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lgroupdel_LDADD = lib/libuser.la $(LTLIBINTL) apps_lgroupdel_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_lgroupmod_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lgroupmod_LDADD = lib/libuser.la $(LTLIBINTL) apps_lgroupmod_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_lid_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lid_LDADD = lib/libuser.la $(LTLIBINTL) apps_lid_LDFLAGS = $(GMODULE_LIBS) -lpopt apps_lnewusers_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lnewusers_LDADD = lib/libuser.la $(LTLIBINTL) apps_lnewusers_LDFLAGS = $(GMODULE_LIBS) -lpopt apps_lpasswd_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lpasswd_LDADD = apps/libapputil.la lib/libuser.la $(LTLIBINTL) apps_lpasswd_LDFLAGS = $(GMODULE_LIBS) -lpopt apps_luseradd_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_luseradd_LDADD = lib/libuser.la $(LTLIBINTL) apps_luseradd_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_luserdel_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_luserdel_LDADD = lib/libuser.la $(LTLIBINTL) apps_luserdel_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) apps_lusermod_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) apps_lusermod_LDADD = lib/libuser.la $(LTLIBINTL) apps_lusermod_LDFLAGS = $(GMODULE_LIBS) -lpopt $(AUDIT_LIBS) lib_libuser_la_SOURCES = lib/common.c lib/config.c lib/entity.c lib/error.c \ lib/fs.c lib/getdate.y lib/internal.h lib/misc.c lib/modules.c \ lib/prompt.c lib/scache.c lib/user.c lib/util.c # -Ilib so that "../config.h" is the result of configure lib_libuser_la_CPPFLAGS = $(GMODULE_CFLAGS) -Ilib $(LOCALEDIR_CPPFLAGS) \ -DMODULEDIR='"$(pkglibdir)"' -DNSCD='"$(NSCD)"' \ -DSYSCONFDIR='"$(sysconfdir)"' lib_libuser_la_LDFLAGS = $(GMODULE_LIBS) $(CRYPT_LIBS) $(SELINUX_LIBS) \ $(AUDIT_LIBS) -version-info 6:2:5 lib_libuser_la_LIBADD = $(LTLIBINTL) modules_libuser_files_la_SOURCES = modules/files.c modules_libuser_files_la_LDFLAGS = -module -avoid-version $(GOBJECT_LIBS) modules_libuser_files_la_LIBADD = lib/libuser.la modules_libuser_shadow_la_SOURCES = modules/files.c modules_libuser_shadow_la_LDFLAGS = -module -avoid-version $(GOBJECT_LIBS) modules_libuser_shadow_la_LIBADD = lib/libuser.la modules_libuser_ldap_la_SOURCES = modules/ldap.c modules_libuser_ldap_la_LDFLAGS = -module -avoid-version $(GOBJECT_LIBS) -lldap modules_libuser_ldap_la_LIBADD = lib/libuser.la modules_libuser_sasldb_la_SOURCES = modules/sasldb.c modules_libuser_sasldb_la_LDFLAGS = -module -avoid-version $(GOBJECT_LIBS) \ -lsasl2 modules_libuser_sasldb_la_LIBADD = lib/libuser.la python_libuser_la_SOURCES = python/admin.c python/ent.c \ python/libusermodule.c python/misc.c python/common.h python/debug.h python_libuser_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS) python_libuser_la_LDFLAGS = -module -avoid-version $(GOBJECT_LIBS) python_libuser_la_LIBADD = lib/libuser.la samples_enum_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) samples_enum_LDADD = lib/libuser.la $(GMODULE_LIBS) samples_enum_LDFLAGS = -no-install samples_field_LDADD = lib/libuser.la $(GMODULE_LIBS) samples_field_LDFLAGS = -no-install samples_homedir_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) samples_homedir_LDADD = lib/libuser.la $(GMODULE_LIBS) samples_homedir_LDFLAGS = -no-install samples_lookup_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) samples_lookup_LDADD = lib/libuser.la $(GMODULE_LIBS) samples_lookup_LDFLAGS = -no-install samples_prompt_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) samples_prompt_LDADD = lib/libuser.la $(GMODULE_LIBS) samples_prompt_LDFLAGS = -no-install samples_testuser_CPPFLAGS = $(AM_CPPFLAGS) $(LOCALEDIR_CPPFLAGS) samples_testuser_LDADD = lib/libuser.la $(GMODULE_LIBS) samples_testuser_LDFLAGS = -no-install tests_alloc_port_LDFLAGS = -no-install tests_config_test_LDADD = lib/libuser.la $(GMODULE_LIBS) tests_config_test_LDFLAGS = -no-install tests_wait_for_slapd_exit_LDFLAGS = -no-install tests_wait_for_slapd_start_LDFLAGS = -no-install NEWS000066400000000000000000000567451471266067600116150ustar00rootroot000000000000000.62: * Fixed security vulnerabilities: * \n characters were allowed in files/shadow fields (CVE-2015-3245) * Non-atomic file updates in files/shadow module (CVE-2015-3246) Thanks to Qualys for reporting these issues. * The files and shadow modules now use a shadow-utils compatible scheme (primarily lckpwdf()). 0.61: * Python 3 is now supported. Consistent with the Python 3 C API and its prevailing usage, only UTF-8 locales work. Note that importing libuser in non-UTF-8 locales will fail in Python 3. * The Python extension now requires Python 2.7. * Translations are now maintained in https://fedora.zanata.org/ . * tests/fs_test can be edited to truly perform operations as root, without fakeroot. * sgml2txt is no longer required for building from the released tarball. * Miscellaneous bug fixes and cleanups, primarily in the Python extension. 0.60: * New functions lu_homedir_remove_for_user() and lu_homedir_remove_for_user_if_owned(). * libuser's pkg-config file no longer refers to internally-used libraries. glib-2.0 and gobject-2.0 are still included because they are required to use the API anyway. * When setting dates in shadow fields, avoid the special value 0 if the clock is incorrect. * Miscellaneous cleanups. 0.59: * Fixed security vulnerabilities: * Race conditions in copying and removing home directories (CVE-2012-5630) * Information disclosure when moving users' home directory (CVE-2012-5644) Related changes: - INCOMPATIBLE API CHANGES: lu_homedir_move() and lu_homedir_populate() will refuse to use a pre-existing directory as a destination. - setuid/setgid bits are now preserved when copying regular files in home directories (from /etc/skel or when moving a home directory) * Empty fields in /etc/shadow are now treated as "missing", like libc does. * Specific values of the attributes can be used to represent "missing data". * lchage(1) now handles missing fields on both input and output. * Refuse to build when secure_getenv() is not available. * Miscellaneous bug fixes and cleanups. 0.58 * API enhancements: * New helpers for attribute access replace 4-5 function calls with 1: lu_ent_get_first_{string,id,value_strdup}(), lu_ent_set_{string,id,long}() * New header , providing lu_homedir_{populate,move,remove}, lu_nscd_flush_cache(), and lu_mail_spool_{create,remove}. * lu_users_enumerate_by_group_full() and lu_groups_enumerate_by_user_full() are now fully supported. * New module-private function lu_util_append_values(). * Documented that LU_*PASSWORD should not be manipulated directly. * deleteUser in Python bindings now removes the mail spool instead of creating it. * New warning in libuser.conf.5 about storing a LDAP password in system-wide configuration. * Module interface ABI has changed. * Miscellaneous bug fixes and cleanups, quite a few memory leaks fixed. 0.57.7 * lu_users_enumerate_by_group_full() added, implemented ONLY for LDAP for now. Related functions and functionality in other modules will be added later. Applications are advised to NOT USE these functions yet. * group/user list by name of a user/group now returns an error if the user/group was not found. The Python bindings enumerateUsersFull and enumerateGroupsFull no longer crash in this situation. * Updated translations. 0.57.6 * Make it possible to use ldapi: URLs by not trying to use TLS (based on a patch by ). * Hopefully fix races in test suite, causing failures on slower computers. * Mark --help messages for translation and improve them a bit. * Update translations. 0.57.5 * Update translations. 0.57.4 * Don't crash when a database file size is a multiple of page size. * Miscellaneous bug fixes and cleanups. 0.57.3 * Don't assume user/group IDs start at 500 in Python getFirstUnusedGid and getFirstUnusedUid. * Preserve S_ISGID and other bits when copying directories from /etc/skel. * Deprecate lu_*_t typedefs: use {struct,enum} lu_* instead. * Update to build with recent gtk-doc. 0.57.2 * Fix adding LDAP users with empty gecos. * Correctly preserve algorithm used to hash an LDAP password when changing it. * Don't hard-code ports used in the test suite (to allow parallel development and builds). * Miscellaneous bug fixes. 0.57.1 * Fix a crash when a module refuses to load with a warning (e.g. the "shadow" module when /etc/shadow is not present) 0.57 * Resolve an ambiguity about "password" value format that could cause setting a known plaintext password in LDAP accounts: the "files"/"shadow" and LDAP modules may not be used together any more, and the module interface ABI has changed to support this. * Don't authenticate the user (in lchfn, lchsh, lpasswd) if the application is not set*id and it does not need elevated privileges. In particular, this allows the above programs to be used for LDAP administration by unprivileged users. * Change default crypt_style to sha512. * Don't abort on invalid ID values. * Miscellaneous bug fixes. 0.56.18 * Update translations. 0.56.17 * New Python constant VALUE_INVALID_ID and function validateIdValue. * Update translations. 0.56.16 * Update translations. 0.56.15 * Update translations. 0.56.14 * Use dgettext() inside the library. * Allow passing passwords using a pipe. * Allow specifying the LDAP password in a config file (patch by Rob Myers ). 0.56.13 * Report error in lid if the specified name does not exist. * Don't default a home directory to a path that contains a "." or ".." component derived from the user name (explicitly specified home directories that contain such components are accepted). * Detect naming conflicts when renaming an entry in the "files" or "shadow" module. * Add new arguments to luseradd and lusermod, to support creating and modifying LDAP user entries with the inetOrgPerson objectClass. 0.56.12 * Update translations. 0.56.11 * Remove user's mail spool as well in (luserdel -r). * Refuse GID and UID values (id_t)-1. * Verify name validity when renaming an entity. * Fix flushing of nscd cache by luser* utilities. 0.56.10 * Prohibit entity values that contain ':' in the files and shadow module (except for the last field on the line). * Don't corrupt LDAP passwords that use an unsupported password encryption scheme. * When the user name is used as a default group name, don't interpret it as a number. * Minor test suite and man page fixes. 0.56.9 * Warn in lusermod if changing a primary group ID to a group that does not exist. (#1) * Fix pastos in man pages. 0.56.8 * New home page at https://fedorahosted.org/libuser/ . 0.56.7 * Fix a crash with disabled SELinux * Add support for SHA256 and SHA512 in password hashes. * Fix file locking on some architectures * Remove default.-c, moving the provided functions to libuser proper. 0.56.6 * Set SELinux file contexts when creating home directories and preserve them when moving home directories 0.56.5 * Work around spurious error messages when run against the Fedora Directory server * Fix error reporting when creating home directories and creating / removing mail spool files 0.56.4 * Update the last password change date field when changing passwords. 0.56.3 * Allow specifying a SASL mechanism (#240904, original patch by Simo Sorce). 0.56.2 * Update translations 0.56.1 * When changing passwords, only silently ignore known shadow markers, not all invalid hashes 0.56 * Document the correct types used for attribute values. Use these types for parsing, to avoid corrupting number-like strings, e.g. '07' -> 7; this expands the API requirements * Miscellaneous bug fixes, optimizations and cleanups; module interface ABI has changed 0.55 * Remove the quota library and Python module. It doesn't even compile and has no known users. * Add support for the 64-bit API of Python 2.5 * Minor cleanups 0.54.8 * Add importing of HOME from default/useradd. 0.54.7 * Update translations 0.54.6 * Fix bugs in handling of invalid lines in the files and shadow modules. * Fix pattern matching in lu_*_enumerate_full in the files and shadow modules. * Add more error reporting, return non-zero exit status on error from utils. * Use the skeleton directory specified in libuser.conf by Python admin.createHome and admin.addUser, add parameter skeleton= to admin.addUser. 0.54.5 * Don't reference @pkglibdir@ in libuser.conf.5 to avoid multilib file conflicts. 0.54.4 * Fix compilation with pre-C99 compilers (#179385, patch by Dan Yefimov). * Allow building without Python (#179384, original patch by Dan Yefimov). 0.54.3 * Fix a crash when lpasswd is run without specifying an user name 0.54.2 * Avoid using deprecated openldap functions 0.54.1 * Support for importing of configuration from shadow (/etc/login.defs and /etc/default/useradd) * New libuser.conf(5) man page * Minor cleanups and bug fixes all over the code 0.54 * Make sure attributes with no values can never appear * Fix crash in the "files" module when an attribute is missing * Use hidden visibility for internal functions, remove them from libuser/user_private.h; this changes module interface ABI * Miscellaneous source code simplifications 0.53.8 * Permit "portable" user and group names as defined by SUSv3, plus trailing $ * Disable building static libraries by default * Miscellaneous build machinery improvements 0.53.7 * Add missing translations * Update translations 0.53.6 * Allow empty configuration values. 0.53.5 * Ignore nss_compat lines in the "files" module. * Autodetect Python version. 0.53.4 * Fix adding of objectclasses to LDAP user accounts. 0.53.3 * Handle more I/O failures. 0.53.2 * Important bug fixes in lchage, lgroupmod, lnewusers and lusermod; minor bug fixes in lpasswd and luseradd. * Add man pages for the utilities. 0.53.1 * Export UT_NAMESIZE from to Python 0.53 * Support UID and GID values larger than LONG_MAX (#124967) * Fix updating of groups after user renaming in lusermod * Allow setting a shadow password even if the current shadow password is invalid (#131180) * Add lu_{user,group}_unlock_nonempty (#86414); module interface ABI has changed * Miscellaneous bug and memory leak fixes 0.52.6 * Mark more strings for translation * Make error reporting more consistent and more verbose, output error messages on stderr. * Port sasldb backend to Cyrus SASL v2, make it at least minimally usable 0.52.5 * Fix home directory renaming in ADMIN.modifyUser (#135280) * Further Python reference counting fixes 0.52.4 * Memory leak fixes 0.52.3 * Fix compilation without libuser headers already installed (#134085) 0.52.2 * Allow LDAP connection using ldaps, custom ports or without TLS (original patch from Pawel Salek). 0.52.1 * Fix freecon() of uninitialized value in files/shadow module 0.52 * Usable LDAP backend * Miscellaneous bug fixes 0.51.12 * Don't claim success and exception at the same time (#133479) * LDAP fixes, second round * Various other bug fixes 0.51.11 * Allow documented optional arguments in Python ADMIN.{addUser,modifyUser,deleteUser} (#119812) * Add man pages for lchfn and lchsh * LDAP fixes, first round * Avoid file conflict on multilib systems * Call ldconfig correctly 0.51.10 * Don't attempt to lookup using original entity name after entity modification (rename in particular) (#78376, #121252) * Fix copying of symlinks from /etc/skel (#87572, original patch from gLaNDix) * Make --enable-quota work, and fix the quota code to at least compile (#89114) * Fix several bugs (#120168, original patch from Steve Grubb) * Don't hardcode python version in spec file (#130952, from Robert Scheck) * Properly integrate the SELinux patch, it should actually be used now, even though it was "enabled" since 0.51.7-6 0.51.9 * Fix various typos * Document library interfaces * Build all shared libraries with -fPIC (#72536) 0.51.8 * Update to build with latest autotools and gtk-doc * Update ALL_LINGUAS and POTFILES.in * Rebuild to depend on newer openldap 0.51.7-7 * fix is_selinux_enabled call 0.51.7-3 * Add SELinux support 0.51.7 * ldap: set error codes correctly when we encounter failures initializing * don't double-close modules which fail initialization * ldap: don't set an error in cases where one is already set 0.51.6 * use a crypt salt consistent with the defaults/crypt_style setting when setting new passwords (#79337) 0.51.5 * expose lu_get_first_unused_id() as a package-private function * provide libuser.ADMIN.getFirstUnusedUid and libuser.ADMIN.getFirstUnusedGid in python 0.51.4 * fix not freeing resources properly in files.c(generic_is_locked), spotted by Zou Pengcheng 0.51.2 * degrade gracefully * build with --with-pic and -fPIC * remove unpackaged man page 0.51.1-2 * translation updates 0.51.1-1 * doc updates -- cvs tree moved * language updates * disallow weird characters in account names * automated rebuild 0.51 * files: ignore blank lines in files * libuser: disallow creation of accounts with names containing whitespace, control characters, or non-ASCII characters 0.50.2 * refresh translations * fix a heap-corruption bug in the python bindings 0.50 * bump version * refresh translations 0.49.102 * ldap: cache an entity's dn in the entity structure to try to speed things up 0.49.101-2 * add missing buildreqs on cyrus-sasl-devel and openldap-devel (#59456) * translation refresh 0.49.101-1 * fix python bindings of enumerateFull functions * adjust prompter wrapping to not error out on successful returns 0.49.100 * be more careful about printing error messages * fix refreshing after adding of accounts * ldap: try to use a search to convert names to DNs, and only fall back to guessing if it turns up nothing * files: fix an off-by-one in removal of entries 0.49.99 * refresh translations * fix admin() constructor comments in the python module 0.49.98 * automatically refresh entities after add, modify, setpass, removepass, lock, and unlock operations * remove debug spewage when creating and removing mail spools * files: fix saving of multi-valued attributes * rename MEMBERUID attribute for groups to MEMBERNAME 0.49.97 * files: fix bug in removals * ldap: revert attempts at being smart at startup time, because it makes UIs very messy (up the three whole dialogs just to start the ldap stuff!) 0.49.96 * fix thinko in dispatch routines 0.49.95 * lgroupmod: fix thinko 0.49.93 * move shadow initialization for groups to the proper callback * rework locking in the files module to not require that files be writable * expose lu_strerror() * add various typedefs for types used by the library 0.49.92 * add removepass() functions * lchfn,lchsh,lpasswd - reorder PAM authentication calls * include API docs in the package 0.49.91 * ldap: finish port to new API * sasl: finish port to new API (needs test) * libuser: don't commit object changes before passing data to service functions which might need differing data sets to figure out what to change (for example, ldap) 0.49.90 * bind the internal mail spool creation/removal functions for python * renamed the python module * revamped internals to use gobject's gvalues and gvaluearrays instead of glists of cached strings * add enumeration-with-data functions to the C library * require linuxdoc-tools instead of sgml-tools for rawhide * fixup build files to allow building for arbitrary versions of python 0.32 * link the python module against libpam * attempt to import the python modules at build-time to verify dependencies 0.31 * fix a file-parsing bug that popped up in 0.29's mmap modifications 0.30 * quotaq: fix argument order when reading quota information * user_quota: set quota grace periods correctly * luseradd: never create home directories for system accounts * add da translation files * update translations 0.29 * add an explicit build dependency on jade (for the docs) * HUP nscd on modifications * userutil.c: mmap files we're reading for probable speed gain * userutil.c: be conservative with the amount of random data we read * docs fixes 0.28 * apps: print usage on errors * lnewusers.c: initialize groups as groups, not users * lnewusers.c: set passwords for new accounts * luseradd.c: accept group names in addition to IDs for the -g flag * luseradd.c: allow the primary GID to be a preexisting group 0.27 * add ko translation files * files.c: fix a heap corruption bug in lock/unlock (#51750) * files.c: close a memory leak in reading of files * files.c: remove implementation limits on lengths of lines 0.26 * lusermod: change user name in groups the user is a member of during renames * lgroupmod: change primary GID for users who are in the group during renumbers * ldap.c: handle new attributes more gracefully if possible * add ru translation files 0.25.1 * rename the quota source files to match the library, which clears up a file conflict with older quota packages * add ja translation files * add lu_ent_clear_all() function 0.25 * close up some memory leaks * add the ability to include resident versions of modules in the library 0.24-4 * fix incorrect Py_BuildValue invocation in python module 0.24-3 * stop leaking descriptors in the files module * speed up user creation by reordering some checks for IDs being in use * update the shadowLastChanged attribute when we set a password * adjust usage of getXXXXX_r where needed * fix assorted bugs in python binding which break prompting 0.23 * install sv translation * make lpasswd prompt for passwords when none are given on the command line * make sure all user-visible strings are marked for translation * clean up some user-visible strings * require PAM authentication in lchsh, lchfn, and lpasswd for non-networked modules * print uids and gids of users and names in lid app * fix tree traversal in users_enumerate_by_group and groups_enumerate_by_users * implement enumerate_by_group and enumerate_by_user in ldap module * fix id-based lookups in the ldap module * implement islocked() method in ldap module * implement setpass() method in ldap module * add lchfn and lchsh apps * add %d substitution to libuser.conf 0.21 * finish adding a sasldb module which manipulates a sasldb file * add users_enumerate_by_group and groups_enumerate_by_users * luserdel: remove the user's primary group if it has the same name as the user and has no members configured (-G disables) * fixup some configure stuff to make libuser.conf get generated correctly even when execprefix isn't specified 0.20 * only call the auth module when setting passwords (oops) * use GTrees instead of GHashTables for most internal tables * files: complain properly about unset attributes * files: group passwords are single-valued, not multiple-valued * add lpasswd app, make sure all apps start up popt with the right names 0.18 * actually make the new optional arguments optional * fix lu_error_new() to actually report errors right * fix part of the python bindings * include tools in the binary package again * fixup modules so that password-changing works right again * add a "key" field to prompt structures for use by apps which like to cache these things * add an optional "mvhomedir" argument to userModify (python) 0.16.1 * finish home directory population * implement home directory moving * change entity get semantics in the python bindings to allow default values for .get() * add lu_ent_has(), and a python has_key() method to Entity types * don't include tools in the binary package * add translated strings * lib/user.c: catch and ignore errors when running stacks * lusermod: fix slightly bogus help messages * luseradd: when adding a user and group, use the gid of the group instead of the user's uid as the primary group * properly set the password field in user accounts created using auth-only auth modules (shadow needs "x" instead of "!!") * implement home directory removal, start on population * fix group password setting in the files module * setpass affects both auth and info, so run both stacks * make the testbed apps noinst * fix errors due to uninitialized fields in the python bindings * add kwargs support to all python wrappers * add a mechanism for passing arguments to python callbacks * stub out the krb5 and ldap modules so that they'll at least compile again * don't bail when writing empty fields to colon-delimited files * use permissions of the original file when making backup files instead of 0600 * finish implementing is_locked methods in files/shadow module * finish cleanup of the python bindings * allow conditional builds of modules so that we can build without all of the prereqs for all of the modules * add error reporting facilities * split public header into pieces by function * backend cleanups * make %{name}-devel require %{name} and not %{name}-devel * clean up quota bindings some more * finish most of the ldap bindings * fix a subtle bug in the files module that would show up when renaming accounts * fix mapping methods for entity structures in python * get bindings for prompts to work correctly * clean up some of the add/remove semantics (set source on add) * ldap: implement enumeration * samples/enum: fix the argument order * clean up python bindings for quota 0.11 * finish up python bindings for quota support * finish up quota support libs * start quota support library to get some type safety * start looking at quota manipulation * add functions for enumerating users and groups, optionally per-module * lusermod.c: -s should specify the shell, not the home directory 0.10 * finish the python bindings and verify that the file backend works again * remove a redundant check which was breaking modifications * finish adding setpass methods 0.9 * get a start on some Python bindings 0.8.2 * make binary-incompatible change in headers 0.8.1 * add doxygen docs and a "doc" target for them 0.8 * add a "quiet" prompter * add --interactive flag to sample apps and default to using quiet prompter * ldap: attempt a "self" bind if other attempts fail * krb5: connect to the password-changing service if the user principal has the NULL instance * the great adding-of-the-copyright-statements * take more care when creating backup files in the files module 0.7 * add openldap-devel as a buildprereq * krb5: use a continuous connection * krb5: add "realm" config directive * ldap: use a continuous connection * ldap: add "server", "basedn", "binddn", "user", "authuser" config directives * ldap: actually finish the account deletion function * ldap: don't send cleartext passwords to the directory * fix naming attribute for users (should be uid, not gid) * refine the search-by-id,convert-to-name,search-by-name logic * fix handling of defaults when the config file is read in but contains no value * implement an LDAP information store * try to clean up module naming with libtool * luseradd: pass plaintext passwords along * luseradd: use symbolic attribute names instead of hard-coded * lusermod: pass plaintext passwords along * lgroupadd: pass plaintext passwords along * lgroupmod: pass plaintext passwords along * add libuser as a dependency of libuser-devel 0.6 * See changelog in libuser.spec.in from here on. 0.5 * Implemented the krb5 back-end (user add, modify, delete only). * Lookups in the files module use O_RDONLY instead of O_RDWR. 0.4 * Modify lu_start prototype and add semantics for non-superuser use (we'll need this later). 0.3 * Remove recursive account locking from the files/shadow module. * Fixup popt help text. * Remove dependency on krb5 profile sublibrary for reading config files. 0.2 * Implemented prompting. * Added macros for LU_USERNAME and LU_GROUPNAME, found a bug in the files module while converting to use them. * Switched from getopt() to popt for argument parsing to get autohelp in the various test/demo programs. 0.1 * Finished up most of the internals and the files back-end. * Simple shadow-like programs. README000066400000000000000000000010351471266067600117540ustar00rootroot00000000000000About ===== The libuser library implements a standardized interface for manipulating and administering user and group accounts. The library uses pluggable back-ends to interface to its data sources. Sample applications modeled after those included with the shadow password suite are included. New releases will be available at https://pagure.io/libuser . Bugs ==== Please consider reporting the bug to your distribution's bug tracking system. Otherwise, report bugs at https://pagure.io/libuser . Pull requests are especially welcome. TODO000066400000000000000000000030151471266067600115640ustar00rootroot00000000000000Easy: * Workalikes for various apps on other OSs: http://docs.sun.com/ab2/coll.40.6/REFMAN1/@Ab2PageView/169291 http://docs.sun.com/ab2/coll.40.6/REFMAN1/@Ab2PageView/64438 http://docs.sun.com/ab2/coll.40.6/REFMAN1/@Ab2PageView/64530 http://www.uwsg.iu.edu/usail/man/solaris/logins.1.html Medium: * Add the -o option to luseradd/lusermod/lgroupadd/lgroupmod (bad idea?) * Create variants of the apps that are hard-coded to use files only, for use in batch environments like post-package-install, or maybe add a --local flag, which will be interpreted as "shadow files"/"files".... * Add a shadowGroup schema file if RFC 2307bis doesn't include one, or ask Luke about adding one, and document what we expect an LDAP directory to have in order for the ldap module to not get confused (for now, that's the RFC 2307 schema + inetOrgPerson + TLS). * Make the LDAP module check the server schema for allowed object classes and attributes for new user additions and so on; right now it's kind of a crap shoot to see if the server will reject an operation due to a schema error. Hard: * Figure out how to reconcile lckpwdf() and fcntl() locking when the files being locked may not even be the system's main files. * Write a RADIUS back-end. * Write an NIS or NIS+ back-end using yppasswd.x in glibc, or maybe using the routines declared in /usr/include/rpcsvc/libnis.h * Write a libdbi or ODBC back-end. * Write a hesiod back-end. * Implement an lgpasswd command for local group administration by the group's administrators. apps/000077500000000000000000000000001471266067600120405ustar00rootroot00000000000000apps/apputil.c000066400000000000000000000174211471266067600136670ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004, 2005, 2006, 2007 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #ifdef WITH_SELINUX #include #include #endif #include "../lib/error.h" #include "../lib/user.h" #include "../lib/user_private.h" #include "apputil.h" #ifdef WITH_SELINUX static int check_access(const char *chuser, access_vector_t access) { int status; char * user_context; status = -1; if (getprevcon(&user_context) == 0) { context_t c; const char *user; c = context_new(user_context); user = context_user_get(c); if (strcmp(chuser, user) == 0) status = 0; else { struct av_decision avd; int retval; retval = security_compute_av(user_context, user_context, string_to_security_class("passwd"), access, &avd); if (retval == 0 && (avd.allowed & access) == access) status = 0; } context_free(c); freecon(user_context); } return status; } #endif #if 0 /* Concatenate a string onto another string on the heap. */ static char * lu_strconcat(char *existing, const char *appendee) { if (existing == NULL) { existing = g_strdup(appendee); } else { char *tmp; tmp = g_strconcat(existing, appendee, NULL); g_free(existing); existing = tmp; } return existing; } struct conv_data { lu_prompt_fn *prompt; gpointer callback_data; }; /* PAM callback information. */ static int lu_converse(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr) { struct conv_data *data = appdata_ptr; struct lu_prompt prompts[num_msg]; struct lu_error *error = NULL; struct pam_response *responses; char *pending = NULL, *p; int i; memset(&prompts, 0, sizeof(prompts)); /* Convert the PAM prompts to our own prompter type. */ for (i = 0; i < num_msg; i++) { switch ((*msg)[i].msg_style) { case PAM_PROMPT_ECHO_ON: /* Append this text to any pending output text * we already have. */ prompts[i].prompt = lu_strconcat(pending, (*msg)[i].msg); p = strrchr(prompts[i].prompt, ':'); if (p != NULL) { *p = '\0'; } prompts[i].visible = TRUE; pending = NULL; break; case PAM_PROMPT_ECHO_OFF: /* Append this text to any pending output text * we already have. */ prompts[i].prompt = lu_strconcat(pending, (*msg)[i].msg); p = strrchr(prompts[i].prompt, ':'); if (p != NULL) { *p = '\0'; } prompts[i].visible = FALSE; pending = NULL; break; default: /* Make this pending output text. */ pending = lu_strconcat(pending, (*msg)[i].msg); break; } } g_free(pending); /* Discards trailing PAM_ERROR_MSG or PAM_TEXT_INFO */ /* Prompt the user. */ if (data->prompt(prompts, num_msg, data->callback_data, &error)) { /* Allocate room for responses. This memory will be * freed by the calling application, so use malloc() instead * of g_malloc() and friends. */ responses = calloc(num_msg, sizeof(*responses)); if (responses == NULL) return PAM_BUF_ERR; /* Transcribe the responses into the PAM structure. */ for (i = 0; i < num_msg; i++) { /* Set the response code and text (if we have text), * and free the prompt text. */ responses[i].resp_retcode = PAM_SUCCESS; if (prompts[i].value != NULL) { responses[i].resp = strdup(prompts[i].value); prompts[i].free_value(prompts[i].value); } g_free((gpointer) prompts[i].prompt); } /* Set the return pointer. */ *resp = responses; } if (error != NULL) { lu_error_free(&error); } return PAM_CONV_ERR; } #endif /* Authenticate the user if the invoking user is not privileged. If * authentication fails, exit immediately. */ void lu_authenticate_unprivileged(struct lu_context *ctx, const char *user, const char *appname) { pam_handle_t *pamh; struct pam_conv conv; const void *puser; int ret; /* Don't bother (us and the user) if none of the modules makes use of * elevated privileges and the program is not set*id. */ if (lu_uses_elevated_privileges(ctx) == FALSE && geteuid() == getuid() && getegid() == getgid()) return; #if 0 struct conv_data data; /* Don't bother if none of the modules makes use of elevated * privileges. */ if (lu_uses_elevated_privileges(ctx) == FALSE) { /* Great! We can drop privileges. */ if (setegid(getgid()) == -1) { fprintf(stderr, _("Failed to drop privileges.\n")); goto err; } if (seteuid(getuid()) == -1) { fprintf(stderr, _("Failed to drop privileges.\n")); goto err; } return; } /* Get the address of the glue conversation function. */ lu_get_prompter(ctx, &data.prompt, &data.callback_data); if (data.prompt == NULL) { fprintf(stderr, _("Internal error.\n")); goto err; } conv.conv = lu_converse; conv.appdata_ptr = &data; #endif conv.conv = misc_conv; conv.appdata_ptr = NULL; #ifdef WITH_SELINUX if (is_selinux_enabled() > 0) { /* FIXME: PASSWD_CHSH, PASSWD_PASSWD ? */ if (getuid() == 0) { security_class_t class; access_vector_t perm; class = string_to_security_class("passwd"); perm = string_to_av_perm(class, "chfn"); if (check_access(user, perm) != 0) { char *user_context; if (getprevcon(&user_context) < 0) user_context = NULL; /* FIXME: "change the finger info?" */ fprintf(stderr, _("%s is not authorized to change the finger " "info of %s\n"), user_context ? user_context : _("Unknown user context"), user); if (user_context != NULL) freecon(user_context); goto err; } } /* FIXME: is this right for lpasswd? */ if (!lu_util_fscreate_from_file("/etc/passwd", NULL)) { fprintf(stderr, _("Can't set default context for " "/etc/passwd\n")); goto err; } } #endif /* Start up PAM. */ if (pam_start(appname, user, &conv, &pamh) != PAM_SUCCESS) { fprintf(stderr, _("Error initializing PAM.\n")); goto err; } /* Use PAM to authenticate the user. */ ret = pam_authenticate(pamh, 0); if (ret != PAM_SUCCESS) { if (pam_get_item(pamh, PAM_USER, &puser) != PAM_SUCCESS || puser == NULL) puser = user; fprintf(stderr, _("Authentication failed for %s.\n"), (const char *)puser); goto err_pam; } /* Make sure we authenticated the user we wanted to authenticate. */ ret = pam_get_item(pamh, PAM_USER, &puser); if (ret != PAM_SUCCESS) { fprintf(stderr, _("Internal PAM error `%s'.\n"), pam_strerror(pamh, ret)); goto err_pam; } if (puser == NULL) { fprintf(stderr, _("Unknown user authenticated.\n")); goto err_pam; } if (strcmp(puser, user) != 0) { fprintf(stderr, _("User mismatch.\n")); goto err_pam; } /* Check if the user is allowed to run this program. */ ret = pam_acct_mgmt(pamh, 0); if (ret != PAM_SUCCESS) { if (pam_get_item(pamh, PAM_USER, &puser) != PAM_SUCCESS || puser == NULL) puser = user; fprintf(stderr, _("Authentication failed for %s.\n"), (const char *)puser); goto err_pam; } /* Clean up -- we're done. */ pam_end(pamh, PAM_SUCCESS); return; err_pam: pam_end(pamh, ret); err: exit(1); } apps/apputil.h000066400000000000000000000020771471266067600136750ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef apputil_h #define apputil_h #include #include "../lib/user.h" #ifndef _ #define _(String) gettext(String) #endif #ifndef N_ #define N_(String) (String) #endif void lu_authenticate_unprivileged(struct lu_context *ctx, const char *user, const char *appname) G_GNUC_INTERNAL; #endif apps/lchage.1000066400000000000000000000060531471266067600133510ustar00rootroot00000000000000.\" A man page for lchage .\" Copyright (C) 2005, 2012 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmač .TH lchage 1 "Nov 8 2012" libuser .SH NAME lchage \- Display or change user password policy .SH SYNOPSIS lchage [\fIOPTION\fR]... \fIuser\fR .SH DESCRIPTION Displays or allows changing password policy of \fIuser\fR. .SH OPTIONS .TP \fB\-d\fR, \fB\-\-date\fR=\fIdays\fR Set the date of last password change to \fIdays\fR after Jan 1 1970. Set .I days to -1 to disable password expiration (i.e. to ignore \fB\-\-mindays\fP, and \fB\-\-maxdays\fP and related settings). Set .I days to 0 to enforce password change on next login. (This also disables password expiration until the password is changed.) .TP \fB\-E\fR, \fB\-\-expire\fR=\fIdays\fR Set the account expiration date to \fIdays\fR after Jan 1 1970. Set \fIdays\fR to -1 to disable account expiration. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-I\fR, \fB\-\-inactive\fR=\fIdays\fR Disable the account after \fIdays\fR after password expires (after the user is required to change the password). Set .I days to -1 to keep the account enabled indefinitely after password expiration. .TP \fB\-l\fR, \fB\-\-list\fR Only list current \fIuser\fR's policy and make no changes. .TP \fB\-m\fR, \fB\-\-mindays\fR=\fIdays\fR Require at least \fIdays\fR days between password changes. Set \fIdays\fR to 0 or -1 to disable this requirement. If this value is larger than the value set by \fB\-\-maxdays\fP, the user cannot change the password. .TP \fB\-M\fR, \fB\-\-maxdays\fR=\fIdays\fR Require changing the password after \fIdays\fR since last password change. Set \fIdays\fR to -1 to disable password expiration. .TP \fB\-W\fR, \fB\-\-warndays\fR=\fIdays\fR Start warning the user \fIdays\fR before password expires (before the user is required to change the password). Set .I days to 0 or -1 to disable the warning. .SH EXIT STATUS The exit status is 0 on success, nonzero on error. .SH NOTES Note that \(lqaccount expiration\(rq (set by \fB\-\-expire\fP) is distinct from \(lqpassword expiration\(rq (set by \fB\-\-maxdays\fP). Account expiration happens on a fixed date regardless of password changes. Password expiration is relative to the date of last password change. apps/lchage.c000066400000000000000000000173361471266067600134410ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "apputil.h" #define INVALID_LONG LONG_MIN /* Return the first G_TYPE_LONG value of ATTR if ENT, if exists, or -1 if the attribute is missing or invalid. */ static glong read_ndays(struct lu_ent *ent, const char *attr) { GValueArray *values; GValue *value; values = lu_ent_get(ent, attr); if (values == NULL) return -1; value = g_value_array_get_nth(values, 0); g_assert(G_VALUE_HOLDS_LONG(value)); return g_value_get_long(value); } /* Format a count of days into a string that's intelligible to a user. */ static void date_to_string(glong n_days, char *buf, size_t len) { if ((n_days >= 0) && (n_days < 99999)) { GDate *date; date = g_date_new_dmy(1, G_DATE_JANUARY, 1970); g_date_add_days(date, n_days); g_date_strftime(buf, len, "%x", date); g_date_free(date); } } int main(int argc, const char **argv) { long shadowMin = INVALID_LONG, shadowMax = INVALID_LONG, shadowLastChange = INVALID_LONG, shadowInactive = INVALID_LONG, shadowExpire = INVALID_LONG, shadowWarning = INVALID_LONG; const char *user = NULL; struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_error *error = NULL; int interactive = FALSE; int list_only = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"list", 'l', POPT_ARG_NONE, &list_only, 0, N_("list aging parameters for the user"), NULL}, {"mindays", 'm', POPT_ARG_LONG, &shadowMin, 0, N_("minimum days between password changes"), N_("DAYS")}, {"maxdays", 'M', POPT_ARG_LONG, &shadowMax, 0, N_("maximum days between password changes"), N_("DAYS")}, {"date", 'd', POPT_ARG_LONG, &shadowLastChange, 0, N_("date of last password change in days since 1/1/70"), N_("DAYS")}, {"inactive", 'I', POPT_ARG_LONG, &shadowInactive, 0, N_("number of days after password expiration date when " "account is considered inactive"), N_("DAYS")}, {"expire", 'E', POPT_ARG_LONG, &shadowExpire, 0, N_("password expiration date in days since 1/1/70"), N_("DAYS")}, {"warndays", 'W', POPT_ARG_LONG, &shadowWarning, 0, N_("days before expiration to begin warning user"), N_("DAYS")}, POPT_AUTOHELP POPT_TABLEEND }; /* Set up i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse arguments. */ popt = poptGetContext("lchage", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] user")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } user = poptGetArg(popt); /* We need exactly one argument, and that's the user's name. */ if (user == NULL) { fprintf(stderr, _("No user name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } /* Start up the library. */ ctx = lu_start(user, lu_user, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } ent = lu_ent_new(); /* Look up information about the user. */ if (lu_user_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("User %s does not exist.\n"), user); result = 2; goto done; } if (list_only) { char buf[LINE_MAX]; /* Just print out what we can find out, in a format similar to the chage(1) utility from the shadow suite. To make it a little easier to understand, convert "-1" to "0" in cases where the two have the same meaning. */ if (lu_user_islocked(ctx, ent, &error)) { printf(_("Account is locked.\n")); } else { printf(_("Account is not locked.\n")); } shadowMin = read_ndays(ent, LU_SHADOWMIN); printf(_("Minimum:\t%ld\n"), shadowMin != -1 ? shadowMin : 0); shadowMax = read_ndays(ent, LU_SHADOWMAX); if (shadowMax != -1) printf(_("Maximum:\t%ld\n"), shadowMax); else printf(_("Maximum:\tNone\n")); shadowWarning = read_ndays(ent, LU_SHADOWWARNING); printf(_("Warning:\t%ld\n"), shadowWarning != -1 ? shadowWarning : 0); shadowInactive = read_ndays(ent, LU_SHADOWINACTIVE); if (shadowInactive != -1) printf(_("Inactive:\t%ld\n"), shadowInactive); else printf(_("Inactive:\tNever\n")); shadowLastChange = read_ndays(ent, LU_SHADOWLASTCHANGE); if (shadowLastChange == 0) strcpy(buf, _("Must change password on next login")); else { strcpy(buf, _("Never")); date_to_string(shadowLastChange, buf, sizeof(buf)); } printf(_("Last Change:\t%s\n"), buf); if (shadowLastChange == 0) strcpy(buf, _("Must change password on next login")); else { strcpy(buf, _("Never")); if (shadowLastChange != -1 && shadowMax != -1) date_to_string(shadowLastChange + shadowMax, buf, sizeof(buf)); } printf(_("Password Expires:\t%s\n"), buf); if (shadowLastChange == 0) strcpy(buf, _("Must change password on next login")); else { strcpy(buf, _("Never")); if (shadowLastChange != -1 && shadowMax != -1 && shadowInactive != -1) date_to_string(shadowLastChange + shadowMax + shadowInactive, buf, sizeof(buf)); } printf(_("Password Inactive:\t%s\n"), buf); strcpy(buf, _("Never")); shadowExpire = read_ndays(ent, LU_SHADOWEXPIRE); if (shadowExpire != -1) date_to_string(shadowExpire, buf, sizeof(buf)); printf(_("Account Expires:\t%s\n"), buf); } else { /* Set values using parameters given on the command-line. */ if (shadowLastChange != INVALID_LONG) lu_ent_set_long(ent, LU_SHADOWLASTCHANGE, shadowLastChange); if (shadowMin != INVALID_LONG) lu_ent_set_long(ent, LU_SHADOWMIN, shadowMin); if (shadowMax != INVALID_LONG) lu_ent_set_long(ent, LU_SHADOWMAX, shadowMax); if (shadowWarning != INVALID_LONG) lu_ent_set_long(ent, LU_SHADOWWARNING, shadowWarning); if (shadowInactive != INVALID_LONG) lu_ent_set_long(ent, LU_SHADOWINACTIVE, shadowInactive); if (shadowExpire != INVALID_LONG) lu_ent_set_long(ent, LU_SHADOWEXPIRE, shadowExpire); /* Now actually modify the user's data in the system * information store. */ if (lu_user_modify(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Failed to modify aging information for %s: " "%s\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "change-age", user, AUDIT_NO_ID, 0); result = 3; goto done; } lu_audit_logger(AUDIT_USER_MGMT, "change-age", user, AUDIT_NO_ID, 1); lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); } result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lchfn.1000066400000000000000000000033561471266067600132230ustar00rootroot00000000000000.\" A man page for lchfn .\" Copyright (C) 2004 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lchfn 1 "Sep 20 2004" libuser .SH NAME lchfn \- Change finger information .SH SYNOPSIS lchfn [\fIOPTION\fR]... [\fIuser\fR] .SH DESCRIPTION Displays and allows changing information about \fIuser\fR that is available using the .BR finger (1) command (usually stored in the "gecos" field of \fI/etc/passwd\fR). If the \fIuser\fR argument is not provided, username of the invoking user is used; the \fIuser\fR argument is ignored if .B lchfn is run set-uid to a different user. Entering an empty string (by pressing Enter) at a prompt is interpreted as accepting a default value; to erase an attribute (or to use an empty string as the attribute value), enter a single dot character. .SH OPTIONS .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .SH EXIT STATUS The exit status is 0 on success, 1 on error. apps/lchfn.c000066400000000000000000000177751471266067600133170ustar00rootroot00000000000000/* * Copyright (C) 2001, 2002, 2004, 2006 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "apputil.h" #define NAME_KEY "lchfn/name" #define SURNAME_KEY "lchfn/surname" #define GIVENNAME_KEY "lchfn/givenname" #define OFFICE_KEY "lchfn/office" #define OFFICEPHONE_KEY "lchfn/officephone" #define HOMEPHONE_KEY "lchfn/homephone" #define EMAIL_KEY "lchfn/email" int main(int argc, const char **argv) { const char *user, *gecos; const char *name, *office, *officephone, *homephone; struct lu_context *ctx = NULL; struct lu_error *error = NULL; struct lu_ent *ent = NULL; int interactive = FALSE; int c; int result; struct lu_prompt prompts[7]; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; char **fields = NULL; char *p; size_t fields_len; size_t pcount, i; /* Set up i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse command-line arguments. */ popt = poptGetContext("lchfn", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] [user]")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } user = poptGetArg(popt); /* If no user name was specified, or we're running in a setuid * environment, force the user name to be the current user. */ if ((user == NULL) || (geteuid() != getuid())) { struct passwd *pwd; pwd = getpwuid(getuid()); if (pwd != NULL) { user = g_strdup(pwd->pw_name); } else { fprintf(stderr, _("No user name specified, no name " "for uid %d.\n"), getuid()); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } } /* Give the user some idea of what's going on. */ g_print(_("Changing finger information for %s.\n"), user); /* Start up the library. */ ctx = lu_start(user, lu_user, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Authenticate the user to the "chfn" service. */ lu_authenticate_unprivileged(ctx, user, "chfn"); /* Look up the user's information. */ ent = lu_ent_new(); if (lu_user_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("User %s does not exist.\n"), user); result = 1; goto done; } /* Read the user's GECOS information. */ gecos = lu_ent_get_first_value_strdup(ent, LU_GECOS); if (gecos == NULL) gecos = ""; /* Split the gecos into the prompt structures. */ fields = g_strsplit(gecos, ",", G_N_ELEMENTS(prompts)); /* Count the number of fields we got. */ fields_len = g_strv_length(fields); /* Fill out the prompt structures. */ memset(prompts, 0, sizeof(prompts)); pcount = 0; /* The first prompt is for the full name. */ name = (fields_len > 0) ? fields[0] : NULL; prompts[pcount].key = NAME_KEY; prompts[pcount].prompt = N_("Full Name"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = name; pcount++; /* If we have it, prompt for the user's surname. */ p = lu_ent_get_first_value_strdup(ent, LU_SN); if (p != NULL) { prompts[pcount].key = SURNAME_KEY; prompts[pcount].prompt = N_("Surname"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = p; pcount++; } /* If we have it, prompt for the user's givenname. */ p = lu_ent_get_first_value_strdup(ent, LU_GIVENNAME); if (p != NULL) { prompts[pcount].key = GIVENNAME_KEY; prompts[pcount].prompt = N_("Given Name"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = p; pcount++; } /* Prompt for the user's office number. */ office = (fields_len > 1) ? fields[1] : NULL; prompts[pcount].key = OFFICE_KEY; prompts[pcount].prompt = N_("Office"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = office; pcount++; /* Prompt for the user's office telephone number. */ officephone = (fields_len > 2) ? fields[2] : NULL; prompts[pcount].key = OFFICEPHONE_KEY; prompts[pcount].prompt = N_("Office Phone"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = officephone; pcount++; /* Prompt for the user's home telephone number. */ homephone = (fields_len > 3) ? fields[3] : NULL; prompts[pcount].key = HOMEPHONE_KEY; prompts[pcount].prompt = N_("Home Phone"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = homephone; pcount++; /* If we have it, prompt for the user's email. */ p = lu_ent_get_first_value_strdup(ent, LU_EMAIL); if (p != NULL) { prompts[pcount].key = EMAIL_KEY; prompts[pcount].prompt = N_("E-Mail Address"); prompts[pcount].domain = PACKAGE; prompts[pcount].visible = TRUE; prompts[pcount].default_value = p; pcount++; } /* Sanity check. */ g_assert(pcount <= G_N_ELEMENTS(prompts)); /* Ask the user for new values. */ if (lu_prompt_console(prompts, pcount, NULL, &error) == FALSE) { fprintf(stderr, _("Finger information not changed: input error.\n")); result = 1; goto done; } /* Now iterate over the answers and figure things out. */ for (i = 0; i < pcount; i++) { const char *filtered; if (prompts[i].value == NULL) { filtered = ""; } else if (strcmp(prompts[i].value, ".") == 0) { filtered = ""; } else { filtered = prompts[i].value; } #define ATTR__(KEY, EXTRA, ATTR) \ if (strcmp(prompts[i].key, KEY) == 0) { \ EXTRA; \ if (strlen(filtered) > 0) \ lu_ent_set_string(ent, ATTR, filtered); \ else \ lu_ent_clear(ent, ATTR); \ } #define ATTR(KEY, ATTR_) ATTR__(KEY, , ATTR_) #define NAMED_ATTR(KEY, NAME, ATTR_) ATTR__(KEY, NAME = filtered, ATTR_) NAMED_ATTR(NAME_KEY, name, LU_COMMONNAME); ATTR(SURNAME_KEY, LU_SN); ATTR(GIVENNAME_KEY, LU_GIVENNAME); NAMED_ATTR(OFFICE_KEY, office, LU_ROOMNUMBER); NAMED_ATTR(OFFICEPHONE_KEY, officephone, LU_TELEPHONENUMBER); NAMED_ATTR(HOMEPHONE_KEY, homephone, LU_HOMEPHONE); ATTR(EMAIL_KEY, LU_EMAIL); #undef NAMED_ATTR #undef ATTR #undef ATTR__ } /* Build a new gecos string. */ gecos = g_strjoin(",", name ?: "", office ?: "", officephone ?: "", homephone ?: "", NULL); /* Now we can free the answers. */ for (i = 0; i < pcount; i++) { if (prompts[i].value != NULL) { if (prompts[i].free_value != NULL) { prompts[i].free_value(prompts[i].value); prompts[i].value = NULL; } } } lu_ent_set_string(ent, LU_GECOS, gecos); /* Try to save our changes. */ if (lu_user_modify(ctx, ent, &error)) { g_print(_("Finger information changed.\n")); lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); } else { fprintf(stderr, _("Finger information not changed: %s.\n"), lu_strerror(error)); result = 1; goto done; } result = 0; done: g_strfreev(fields); if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lchsh.1000066400000000000000000000031131471266067600132210ustar00rootroot00000000000000.\" A man page for lchsh .\" Copyright (C) 2004 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lchsh 1 "Sep 20 2004" libuser .SH NAME lchsh \- Change login shell .SH SYNOPSIS lchsh [\fIOPTION\fR]... [\fIuser\fR] .SH DESCRIPTION Displays and allows changing login shell of \fIuser\fR. If the \fIuser\fR argument is not provided, username of the invoking user is used; the \fIuser\fR argument is ignored if .B lchsh is run set-uid to a different user. Entering an empty string (by pressing Enter) at the "New Shell" prompt is interpreted as accepting the current value. .SH OPTIONS .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .SH EXIT STATUS The exit status is 0 on success, 1 on error. .SH BUGS .B lchsh ignores \fI/etc/shells\fR. apps/lchsh.c000066400000000000000000000107231471266067600133100ustar00rootroot00000000000000/* * Copyright (C) 2001,2002, 2004, 2006 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { const char *user; struct lu_context *ctx = NULL; struct lu_error *error = NULL; struct lu_ent *ent = NULL; char *shell; int interactive = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; /* Set up i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse arguments. */ popt = poptGetContext("lchsh", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] [user]")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } user = poptGetArg(popt); /* If no user was specified, or we're setuid, force the user name to * be that of the current user. */ if ((user == NULL) || (geteuid() != getuid())) { struct passwd *pwd; pwd = getpwuid(getuid()); if (pwd != NULL) { user = g_strdup(pwd->pw_name); } else { fprintf(stderr, _("No user name specified, no name for " "uid %d.\n"), getuid()); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } } /* Give the user some idea of what's going on. */ g_print(_("Changing shell for %s.\n"), user); /* Start up the library. */ ctx = lu_start(user, lu_user, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Authenticate the user if we need to. */ lu_authenticate_unprivileged(ctx, user, "chsh"); /* Look up this user's record. */ ent = lu_ent_new(); if (lu_user_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("User %s does not exist.\n"), user); result = 1; goto done; } /* Read the user's shell. */ shell = lu_ent_get_first_value_strdup(ent, LU_LOGINSHELL); if (shell != NULL) { struct lu_prompt prompts[1]; /* Fill in the prompt structure using the user's shell. */ memset(prompts, 0, sizeof(prompts)); prompts[0].key = "lchfn/shell"; prompts[0].prompt = N_("New Shell"); prompts[0].domain = PACKAGE; prompts[0].visible = TRUE; prompts[0].default_value = shell; /* Prompt for a new shell. */ if (lu_prompt_console(prompts, G_N_ELEMENTS(prompts), NULL, &error) == FALSE) { fprintf(stderr, _("Shell not changed: %s\n"), lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "change-shell", user, AUDIT_NO_ID, 0); result = 1; goto done; } /* Modify the in-memory structure's shell attribute. */ lu_ent_set_string(ent, LU_LOGINSHELL, prompts[0].value); if (prompts[0].free_value != NULL) { prompts[0].free_value(prompts[0].value); prompts[0].value = NULL; } /* Modify the user's record in the information store. */ if (lu_user_modify(ctx, ent, &error)) { g_print(_("Shell changed.\n")); lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); lu_audit_logger(AUDIT_USER_MGMT, "change-shell", user, AUDIT_NO_ID, 1); } else { fprintf(stderr, _("Shell not changed: %s\n"), lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "change-shell", user, AUDIT_NO_ID, 0); result = 1; goto done; } } result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lgroupadd.1000066400000000000000000000033241471266067600141050ustar00rootroot00000000000000.\" A man page for lgroupadd .\" Copyright (C) 2005 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lgroupadd 1 "Jan 11 2005" libuser .SH NAME lgroupadd \- Add an user group .SH SYNOPSIS lgroupadd [\fIOPTION\fR]... \fIgroup\fR .SH DESCRIPTION Adds a new user group with name \fIgroup\fR. .SH OPTIONS .TP \fB\-g\fR, \fB\-\-gid\fR=\fIgid\fR Use group ID \fIgid\fR for the newly created group. A group ID is selected automatically if this option is not present. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-r\fR, \fB\-\-reserved\fR The group is a system group. Groups that are not marked as system groups usually have automatically selected group IDs above a certain value (configured as .B LU_GIDNUMBER in \fBlibuser.conf\fP\fR(5)\fP). This information is also passed to the .B libuser backends. .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/lgroupadd.c000066400000000000000000000074101471266067600141670ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { const char *name, *gid_number_str = NULL; gid_t gidNumber = LU_VALUE_INVALID_ID; struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_error *error = NULL; int interactive = FALSE; int system_account = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"gid", 'g', POPT_ARG_STRING, &gid_number_str, 0, N_("gid for new group"), N_("NUM")}, {"reserved", 'r', POPT_ARG_NONE, &system_account, 0, N_("create a system group"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; /* Set up i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse arguments. */ popt = poptGetContext("lgroupadd", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] group")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } name = poptGetArg(popt); /* We require a group name to be specified. */ if (name == NULL) { fprintf(stderr, _("No group name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } if (gid_number_str != NULL) { intmax_t val; char *p; errno = 0; val = strtoimax(gid_number_str, &p, 10); if (errno != 0 || *p != 0 || p == gid_number_str || (gid_t)val != val || (gid_t)val == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Invalid group ID %s\n"), gid_number_str); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } gidNumber = val; } /* Start up the library. */ ctx = lu_start(NULL, 0, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Create a group entity object holding sensible defaults for a * new group. */ ent = lu_ent_new(); lu_group_default(ctx, name, system_account, ent); /* If the user specified a particular GID number, override the * default. */ if (gidNumber != LU_VALUE_INVALID_ID) lu_ent_set_id(ent, LU_GIDNUMBER, gidNumber); /* Try to create the group. */ if (lu_group_add(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Group creation failed: %s\n"), lu_strerror(error)); lu_audit_logger(AUDIT_ADD_GROUP, "add-group", name, AUDIT_NO_ID, 0); result = 2; goto done; } lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); lu_audit_logger(AUDIT_ADD_GROUP, "add-group", name, AUDIT_NO_ID, 1); result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lgroupdel.1000066400000000000000000000024141471266067600141200ustar00rootroot00000000000000.\" A man page for lgroupdel .\" Copyright (C) 2005 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lgroupdel 1 "Jan 11 2005" libuser .SH NAME lgroupdel \- Delete an user group .SH SYNOPSIS lgroupdel [\fIOPTION\fR]... \fIgroup\fR .SH DESCRIPTION Deletes the user group with name \fIgroup\fR. .SH OPTIONS .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/lgroupdel.c000066400000000000000000000057451471266067600142140ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_error *error = NULL; const char *group; int interactive = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; /* Set up for i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse arguments. */ popt = poptGetContext("lgroupdel", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] group")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } group = poptGetArg(popt); /* The caller has to specify a group name. */ if (group == NULL) { fprintf(stderr, _("No group name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } /* Start up the library. */ ctx = lu_start(NULL, 0, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Look up the group structure. */ ent = lu_ent_new(); if (lu_group_lookup_name(ctx, group, ent, &error) == FALSE) { fprintf(stderr, _("Group %s does not exist.\n"), group); result = 2; goto done; } /* Delete the group. */ if (lu_group_delete(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Group %s could not be deleted: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_DEL_GROUP, "delete-group", group, AUDIT_NO_ID, 0); result = 3; goto done; } lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); lu_audit_logger(AUDIT_DEL_GROUP, "delete-group", group, AUDIT_NO_ID, 1); result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lgroupmod.1000066400000000000000000000053071471266067600141370ustar00rootroot00000000000000.\" A man page for lgroupmod .\" Copyright (C) 2005 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lgroupmod 1 "Jan 11 2005" libuser .SH NAME lgroupmod \- Modify an user group .SH SYNOPSIS lgroupmod [\fIOPTION\fR]... \fIgroup\fR .SH DESCRIPTION Modifies the user group with name \fIgroup\fR. .SH OPTIONS .TP \fB\-A\fR, \fB\-\-admin-add\fR=\fIlist\fR Add users in comma-separated \fIlist\fR among \fIgroup\fR's administrators. .TP \fB\-a\fR, \fB\-\-admin-remove\fR=\fIlist\fR Remove users in comma-separated \fIlist\fR from \fIgroup\fR's administrators. Removing users that are not currently among \fIgroup\fR's administrators silently succeeds. .TP \fB\-g\fR, \fB\-\-gid\fR=\fIgid\fR Change \fIgroup\fR's group ID to \fIgid\fR. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-L\fR, \fB\-\-lock\fR Lock \fIgroup\fR. This prevents users from using the group password with .BR newgrp (1) to become a member of \fIgroup\fR. .TP \fB\-M\fR, \fB\-\-member-add\fR=\fIlist\fR Add users in comma-separated \fIlist\fR among \fIgroup\fR's members. .TP \fB\-m\fR, \fB\-\-member-remove\fR=\fIlist\fR Remove users in comma-separated \fIlist\fR from \fIgroup\fR's members. Removing users that are not currently among \fIgroup\fR's members silently succeeds. .TP \fB\-n\fR, \fB\-\-name\fR=\fIname\fR Rename \fIgroup\fR to \fIname\fR. .TP \fB\-P\fR, \fB\-\-plainpassword\fR=\fIpassword\fR Set \fIgroup\fR's password to \fIpassword\fR. Note that the password can be viewed while running .BR lgroupmod using tools such as .BR ps (1)\fR. .TP \fB\-p\fR, \fB\-\-password\fR=\fIencrypted\fR Set \fIgroup\fR's password to the password represented by the hash \fIencrypted\fR. Note that the hash can be viewed while running .BR lgroupmod using tools such as .BR ps (1)\fR. .TP \fB\-U\fR, \fB\-\-unlock\fR Unlock \fIgroup\fR. .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/lgroupmod.c000066400000000000000000000222531471266067600142200ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { const char *userPassword = NULL, *cryptedUserPassword = NULL, *gid = NULL, *addAdmins = NULL, *remAdmins = NULL, *addMembers = NULL, *remMembers = NULL, *group, *gid_number_str = NULL; char **admins, **members; gid_t gidNumber = LU_VALUE_INVALID_ID; gid_t oldGidNumber = LU_VALUE_INVALID_ID; struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_ent *user_ent; struct lu_error *error = NULL; GPtrArray *users = NULL; GValue val; int change = FALSE, lock = FALSE, unlock = FALSE; int interactive = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"gid", 'g', POPT_ARG_STRING, &gid_number_str, 0, N_("set GID for group"), N_("NUM")}, {"name", 'n', POPT_ARG_STRING, &gid, 0, N_("change group to have given name"), N_("NAME")}, {"plainpassword", 'P', POPT_ARG_STRING, &userPassword, 0, N_("plaintext password for use with group"), N_("STRING")}, {"password", 'p', POPT_ARG_STRING, &cryptedUserPassword, 0, N_("pre-hashed password for use with group"), N_("STRING")}, {"admin-add", 'A', POPT_ARG_STRING, &addAdmins, 0, N_("list of administrators to add"), N_("STRING")}, {"admin-remove", 'a', POPT_ARG_STRING, &remAdmins, 0, N_("list of administrators to remove"), N_("STRING")}, {"member-add", 'M', POPT_ARG_STRING, &addMembers, 0, N_("list of group members to add"), N_("STRING")}, {"member-remove", 'm', POPT_ARG_STRING, &remMembers, 0, N_("list of group members to remove"), N_("STRING")}, {"lock", 'L', POPT_ARG_NONE, &lock, 0, N_("lock group"), NULL}, {"unlock", 'U', POPT_ARG_NONE, &unlock, 0, N_("unlock group"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); popt = poptGetContext("lgroupmod", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] group")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } group = poptGetArg(popt); if (group == NULL) { fprintf(stderr, _("No group name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } if (gid_number_str != NULL) { intmax_t val; char *p; errno = 0; val = strtoimax(gid_number_str, &p, 10); if (errno != 0 || *p != 0 || p == gid_number_str || (gid_t)val != val || (gid_t)val == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Invalid group ID %s\n"), gid_number_str); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } gidNumber = val; } ctx = lu_start(NULL, 0, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } if (lock && unlock) { fprintf(stderr, _("Both -L and -U specified.\n")); result = 2; goto done; } ent = lu_ent_new(); if (lu_group_lookup_name(ctx, group, ent, &error) == FALSE) { fprintf(stderr, _("Group %s does not exist.\n"), group); result = 3; goto done; } if (userPassword) { if (lu_group_setpass(ctx, ent, userPassword, FALSE, &error) == FALSE) { fprintf(stderr, _("Failed to set password for group " "%s: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_GRP_CHAUTHTOK, "changing-group-passwd", group, AUDIT_NO_ID, 0); result = 4; goto done; } lu_audit_logger(AUDIT_GRP_CHAUTHTOK, "changing-group-passwd", group, AUDIT_NO_ID, 1); } if (cryptedUserPassword) { if (lu_group_setpass(ctx, ent, cryptedUserPassword, TRUE, &error) == FALSE) { fprintf(stderr, _("Failed to set password for group " "%s: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_GRP_CHAUTHTOK, "changing-group-passwd", group, AUDIT_NO_ID, 0); result = 5; goto done; } lu_audit_logger(AUDIT_GRP_CHAUTHTOK, "changing-group-passwd", group, AUDIT_NO_ID, 1); } if (lock) { if (lu_group_lock(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Group %s could not be locked: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-lock", group, AUDIT_NO_ID, 0); result = 6; goto done; } lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-lock", group, AUDIT_NO_ID, 1); } if (unlock) { if (lu_group_unlock(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Group %s could not be unlocked: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-lock", group, AUDIT_NO_ID, 0); result = 7; goto done; } lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-lock", group, AUDIT_NO_ID, 1); } change = gid || addAdmins || remAdmins || addMembers || remMembers; if (gid != NULL) { if (lu_ent_get(ent, LU_GROUPNAME) != NULL) lu_ent_set_string(ent, LU_GROUPNAME, gid); else { lu_ent_clear(ent, LU_GROUPNAME); gid = group; } } else gid = group; if (addAdmins) { memset(&val, 0, sizeof(val)); g_value_init(&val, G_TYPE_STRING); admins = g_strsplit(addAdmins, ",", 0); if (admins) { for (c = 0; admins && admins[c]; c++) { g_value_set_string(&val, admins[c]); lu_ent_add(ent, LU_ADMINISTRATORNAME, &val); g_value_reset(&val); } g_strfreev(admins); } g_value_unset(&val); } if (remAdmins) { memset(&val, 0, sizeof(val)); g_value_init(&val, G_TYPE_STRING); admins = g_strsplit(remAdmins, ",", 0); if (admins) { for (c = 0; admins && admins[c]; c++) { g_value_set_string(&val, admins[c]); lu_ent_del(ent, LU_ADMINISTRATORNAME, &val); g_value_reset(&val); } g_strfreev(admins); } g_value_unset(&val); } if (addMembers) { memset(&val, 0, sizeof(val)); g_value_init(&val, G_TYPE_STRING); members = g_strsplit(addMembers, ",", 0); if (members) { for (c = 0; members && members[c]; c++) { g_value_set_string(&val, members[c]); lu_ent_add(ent, LU_MEMBERNAME, &val); g_value_reset(&val); } g_strfreev(members); } g_value_unset(&val); } if (remMembers) { memset(&val, 0, sizeof(val)); g_value_init(&val, G_TYPE_STRING); members = g_strsplit(remMembers, ",", 0); if (members) { for (c = 0; members && members[c]; c++) { g_value_set_string(&val, members[c]); lu_ent_del(ent, LU_MEMBERNAME, &val); g_value_reset(&val); } g_strfreev(members); } g_value_unset(&val); } if (change && lu_group_modify(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Group %s could not be modified: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-members", group, AUDIT_NO_ID, 0); result = 8; goto done; } lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-members", group, AUDIT_NO_ID, 1); if (gidNumber != LU_VALUE_INVALID_ID) { users = lu_users_enumerate_by_group_full(ctx, gid, &error); oldGidNumber = lu_ent_get_first_id(ent, LU_GIDNUMBER); lu_ent_set_id(ent, LU_GIDNUMBER, gidNumber); if (error != NULL) lu_error_free(&error); if (lu_group_modify(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Group %s could not be modified: %s\n"), group, lu_strerror(error)); lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-id", group, AUDIT_NO_ID, 0); result = 8; goto done; } lu_audit_logger(AUDIT_GRP_MGMT, "changing-group-id", group, AUDIT_NO_ID, 1); } lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); if (oldGidNumber != LU_VALUE_INVALID_ID && gidNumber != LU_VALUE_INVALID_ID && users != NULL) { size_t i; for (i = 0; i < users->len; i++) { user_ent = g_ptr_array_index(users, i); if (lu_ent_get_first_id(user_ent, LU_GIDNUMBER) == oldGidNumber) { lu_ent_set_id(user_ent, LU_GIDNUMBER, gidNumber); lu_user_modify(ctx, user_ent, &error); if (error != NULL) lu_error_free(&error); } lu_ent_free(user_ent); } g_ptr_array_free(users, TRUE); lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); } result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lid.1000066400000000000000000000034161471266067600126760ustar00rootroot00000000000000.\" A man page for lid .\" Copyright (C) 2005, 2007 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lid 1 "Dec 6 2007" libuser .SH NAME lid \- Display user's groups or group's users .SH SYNOPSIS lid [\fIOPTION\fR]... [\fIname\fR] .SH DESCRIPTION Displays information about groups containing user \fIname\fR, or users contained in group \fIname\fR. By default .B lid lists groups containing user \fIname\fR, or groups containing the invoking user if \fIname\fR is not specified; the mode of operation can be changed using the \fB\-g\fR option. .SH OPTIONS .TP \fB\-g\fR, \fB\-\-group\fR List users in a group \fIname\fR, or in the invoking user's primary group if \fIname\fR is not specified. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-n\fR, \fB\-\-onlynames\fR List only group or user names. By default the corresponging user or group IDs are listed too. .SH EXIT STATUS The exit status is 0 on success, 1 on error. apps/lid.c000066400000000000000000000130631471266067600127570ustar00rootroot00000000000000/* * Copyright (C) 2001, 2002, 2004, 2006, 2009 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "apputil.h" static void do_nameonly(struct lu_context *ctx, const char *name, GValueArray *(*enumerate) (struct lu_context *, const char *, struct lu_error **)) { GValueArray *values; struct lu_error *error; error = NULL; values = enumerate(ctx, name, &error); if (error != NULL) { fprintf(stderr, _("Error looking up %s: %s\n"), name, lu_strerror(error)); lu_error_free(&error); exit(1); } if (values != NULL) { size_t i; for (i = 0; i < values->n_values; i++) { GValue *value; value = g_value_array_get_nth(values, i); g_print(" %s\n", g_value_get_string(value)); } g_value_array_free(values); } } static void do_full(struct lu_context *ctx, const char *name, GPtrArray *(*enumerate_full) (struct lu_context *, const char *, struct lu_error **), const char *name_attribute, const char *id_attribute, const char *id_descr) { GPtrArray *entities; struct lu_error *error; error = NULL; entities = enumerate_full(ctx, name, &error); if (error != NULL) { fprintf(stderr, _("Error looking up %s: %s\n"), name, lu_strerror(error)); lu_error_free(&error); exit(1); } if (entities != NULL) { struct lu_ent *ent; size_t i; for (i = 0; i < entities->len; i++) { id_t id; const char *ent_name; ent = g_ptr_array_index(entities, i); ent_name = lu_ent_get_first_string(ent, name_attribute); id = lu_ent_get_first_id(ent, id_attribute); if (id != LU_VALUE_INVALID_ID) g_print(" %s(%s=%jd)\n", ent_name, id_descr, (intmax_t)id); else g_print(" %s\n", ent_name); lu_ent_free(ent); } g_ptr_array_free(entities, TRUE); } } int main(int argc, const char **argv) { const char *name; struct lu_context *ctx = NULL; struct lu_error *error = NULL; struct lu_ent *ent = NULL; int interactive = FALSE; int groupflag = FALSE, nameonly = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"group", 'g', POPT_ARG_NONE, &groupflag, 0, N_("list members of a named group instead of the group " "memberships for the named user"), NULL}, {"onlynames", 'n', POPT_ARG_NONE, &nameonly, 0, N_("only list membership information by name, and not " "UID/GID"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); popt = poptGetContext("lid", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] user")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } name = poptGetArg(popt); if (name == NULL) { if (groupflag) { struct group *grp; grp = getgrgid(getgid()); if (grp != NULL) { fprintf(stderr, _("No group name specified, " "using %s.\n"), grp->gr_name); name = g_strdup(grp->gr_name); } else { fprintf(stderr, _("No group name specified, " "no name for gid %d.\n"), getgid()); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } } else { struct passwd *pwd; pwd = getpwuid(getuid()); if (pwd != NULL) { fprintf(stderr, _("No user name specified, " "using %s.\n"), pwd->pw_name); name = g_strdup(pwd->pw_name); } else { fprintf(stderr, _("No user name specified, " "no name for uid %d.\n"), getuid()); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } } } ctx = lu_start(name, groupflag ? lu_user : lu_group, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } ent = lu_ent_new(); if ((groupflag ? lu_group_lookup_name : lu_user_lookup_name) (ctx, name, ent, &error) == FALSE) { if (error != NULL) { fprintf(stderr, _("Error looking up %s: %s\n"), name, lu_strerror(error)); lu_error_free(&error); } else fprintf(stderr, _("%s does not exist\n"), name); result = 1; goto done; } if (nameonly) do_nameonly(ctx, name, groupflag ? lu_users_enumerate_by_group : lu_groups_enumerate_by_user); else { if (groupflag) do_full(ctx, name, lu_users_enumerate_by_group_full, LU_USERNAME, LU_UIDNUMBER, "uid"); else do_full(ctx, name, lu_groups_enumerate_by_user_full, LU_GROUPNAME, LU_GIDNUMBER, "gid"); } result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lnewusers.1000066400000000000000000000051541471266067600141560ustar00rootroot00000000000000.\" A man page for lnewusers .\" Copyright (C) 2005, 2008 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lnewusers 1 "Jul 13 2008" libuser .SH NAME lnewusers \- Create new user accounts .SH SYNOPSIS lnewusers [\fIOPTION\fR]... .SH DESCRIPTION Creates new user accounts using data read from standard input. The input data consists of lines, each line has 7 colon-separated fields: .IP "User name" .IP "Plaintext password" .IP "User ID" .B lnewusers refuses to create users with user ID 0 (the \fBroot\fR user ID). .IP Group If this field is a valid group ID, it is interpreted as a group ID, otherwise as a group name. If the field is empty, a group name equal to user name is used. If the specified group does not exist, it is automatically created. If the group is specified with a group ID, the created group has group name equal to the user name. .IP \f[SM]GECOS\fR The \f[SM]GECOS\fR field is traditionally used to store user's real name and other information. .IP "Home directory" If this field is empty, a default specified by .B libuser configuration, or \fB/home/\fIusername\fR if .B libuser configuration does not specify a default, is used. .IP "Login shell" If this field is empty, a default specified by .B libuser configuration is used. .PP Errors in user specifications are reported and processing continues on the next line. .SH OPTIONS .TP \fB\-f\fR, \fB\-\-file\fR=\fIfile\fR Read account data from \fIfile\fR instead of standard input. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-M\fR, \fB\-\-nocreatehome\fR Don't create home directories. .TP \fB\-n\fR, \fB\-\-nocreatemail\fR Don't create mail spool files. .SH EXIT STATUS The exit status is 0 on success, nonzero on fatal error. Errors in user specifications are not reflected in the exit status. apps/lnewusers.c000066400000000000000000000217231471266067600142400ustar00rootroot00000000000000/* * Copyright (C) 2001, 2002, 2004, 2006 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "apputil.h" int main(int argc, const char **argv) { struct lu_context *ctx = NULL; struct lu_error *error = NULL; struct lu_ent *ent = NULL; struct lu_ent *groupEnt = NULL; int interactive = FALSE, nocreatehome = FALSE, nocreatemail = FALSE; int c; int result; char *file = NULL; FILE *fp = stdin; char buf[LINE_MAX]; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"file", 'f', POPT_ARG_STRING, &file, 0, N_("file with user information records"), N_("PATH")}, {"nocreatehome", 'M', POPT_ARG_NONE, &nocreatehome, 0, N_("don't create home directories"), NULL}, {"nocreatemail", 'n', POPT_ARG_NONE, &nocreatemail, 0, N_("don't create mail spools"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; /* Initialize i18n support. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse arguments. */ popt = poptGetContext("lnewusers", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...]")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } /* Start up the library. */ ctx = lu_start(NULL, lu_user, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Open the file we're going to look at. */ if (file != NULL) { fp = fopen(file, "r"); if (fp == NULL) { fprintf(stderr, _("Error opening `%s': %s.\n"), file, strerror(errno)); result = 2; goto done; } } else { fp = stdin; } ent = lu_ent_new(); groupEnt = lu_ent_new(); while (fgets(buf, sizeof(buf), fp)) { gboolean creategroup, dubious_homedir; char **fields, *homedir, *gidstring, *p; intmax_t imax; uid_t uid; gid_t gid; /* Strip off the end-of-line terminators. */ p = strchr(buf, '\r'); if (p != NULL) *p = '\0'; p = strchr(buf, '\n'); if (p != NULL) *p = '\0'; /* Make sure the line splits into *exactly* seven fields. */ fields = g_strsplit(buf, ":", 7); if (g_strv_length(fields) != 7) { fprintf(stderr, _("Error creating account for `%s': line " "improperly formatted.\n"), buf); g_strfreev(fields); continue; } errno = 0; imax = strtoimax(fields[2], &p, 10); if (errno != 0 || *p != 0 || p == fields[2] || (uid_t)imax != imax || (uid_t)imax == LU_VALUE_INVALID_ID) { g_print(_("Invalid user ID %s\n"), fields[2]); g_strfreev(fields); continue; } /* Sorry, but we're bastards here. No root accounts. */ uid = imax; if (uid == 0) { g_print(_("Refusing to create account with UID 0.\n")); g_strfreev(fields); continue; } /* Try to figure out if the field is the name of a group, or * a gid. If it's just empty, make it the same as the user's * name. FIXME: provide some way to set a default other than * the user's own name, like "users" or something. */ if (strlen(fields[3]) > 0) { gidstring = fields[3]; } else { gidstring = fields[0]; } /* Try to convert the field to a number. */ errno = 0; imax = strtoimax(gidstring, &p, 10); gid = LU_VALUE_INVALID_ID; if (errno != 0 || *p != '\0' || p == gidstring || (gid_t)imax != imax) { /* It's not a number, so it's a group name -- * see if it's being used. */ if (lu_group_lookup_name(ctx, gidstring, ent, &error)) { /* Retrieve the group's GID. */ gid = lu_ent_get_first_id(ent, LU_GIDNUMBER); creategroup = FALSE; } else { /* Mark that we need to create a group for the * user to be in. */ creategroup = TRUE; } } else { /* It's a group number -- see if it's being used. */ gid = imax; if (gid == LU_VALUE_INVALID_ID) { g_print(_("Invalid group ID %s\n"), gidstring); g_strfreev(fields); continue; } if (lu_group_lookup_id(ctx, gid, ent, &error)) { /* Retrieve the group's GID. */ gid = lu_ent_get_first_id(ent, LU_GIDNUMBER); creategroup = FALSE; } else { /* Mark that we need to create a group for the * user to be in. */ creategroup = TRUE; } } /* If we need to create a group, create a template group and * try to apply what the user has asked us to. */ if (creategroup) { /* If we got a GID, then we need to use the user's name, * otherwise we need to use the default group name. */ if (gid != LU_VALUE_INVALID_ID) { lu_group_default(ctx, fields[0], FALSE, ent); lu_ent_set_id(ent, LU_GIDNUMBER, gid); } else { lu_group_default(ctx, gidstring, FALSE, ent); } /* Try to create the group, and if it works, get its * GID, which we need to give to this user. */ if (lu_group_add(ctx, ent, &error)) { lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); gid = lu_ent_get_first_id(ent, LU_GIDNUMBER); g_assert(gid != LU_VALUE_INVALID_ID); } else { /* Aargh! Abandon all hope. */ fprintf(stderr, _("Error creating group for `%s' with " "GID %jd: %s\n"), fields[0], imax, lu_strerror(error)); g_strfreev(fields); continue; } } /* Create a new user record, and set the user's primary GID. */ lu_user_default(ctx, fields[0], FALSE, ent); lu_ent_set_id(ent, LU_UIDNUMBER, uid); lu_ent_set_id(ent, LU_GIDNUMBER, gid); /* Set other fields if we've got them. */ if (strlen(fields[4]) > 0) lu_ent_set_string(ent, LU_GECOS, fields[4]); dubious_homedir = 0; if (strlen(fields[5]) > 0) { homedir = g_strdup(fields[5]); lu_ent_set_string(ent, LU_HOMEDIRECTORY, homedir); } else { const char *home; home = lu_ent_get_first_string(ent, LU_HOMEDIRECTORY); if (home != NULL) homedir = g_strdup(home); else { homedir = g_strconcat("/home/", fields[0], (const gchar *)NULL); if (strcmp(fields[0], ".") == 0 || strcmp(fields[0], "..") == 0) dubious_homedir = 1; } } if (strlen(fields[6]) > 0) lu_ent_set_string(ent, LU_LOGINSHELL, fields[6]); /* Now try to add the user's account. */ if (dubious_homedir) fprintf(stderr, _("Refusing to use dangerous home directory `%s' " "for %s by default\n"), homedir, fields[0]); else if (lu_user_add(ctx, ent, &error)) { lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); /* Unless the nocreatehomedirs flag was given, attempt * to create the user's home directory. */ if (!nocreatehome) { if (lu_homedir_populate(ctx, NULL, homedir, uid, gid, 0700, &error) == FALSE) { fprintf(stderr, _("Error creating home " "directory for %s: %s\n"), fields[0], lu_strerror(error)); if (error) { lu_error_free(&error); } } } /* Unless the nocreatemail flag was given, give the * user a mail spool. */ if (!nocreatemail) { if (!lu_mail_spool_create(ctx, ent, &error)) { fprintf(stderr, _("Error creating mail spool " "for %s: %s\n"), fields[0], lu_strerror(error)); if (error) { lu_error_free(&error); } } } /* Set the password after creating the home directory to prevent the user from seeing an incomplete home, and to prevent the user from interfering with the creation of the home directory. */ if (!lu_user_setpass(ctx, ent, fields[1], FALSE, &error)) { fprintf(stderr, _("Error setting initial password for " "%s: %s\n"), fields[0], lu_strerror(error)); if (error) { lu_error_free(&error); } } lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); } else { fprintf(stderr, _("Error creating user account for %s: %s\n"), fields[0], lu_strerror(error)); if (error) { lu_error_free(&error); } } g_free(homedir); g_strfreev(fields); lu_ent_clear_all(ent); lu_ent_clear_all(groupEnt); } result = 0; done: if (groupEnt) lu_ent_free(groupEnt); if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lpasswd.1000066400000000000000000000045221471266067600136020ustar00rootroot00000000000000.\" A man page for lpasswd .\" Copyright (C) 2005 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lpasswd 1 "Jan 12 2005" libuser .SH NAME lpasswd \- Change group or user password .SH SYNOPSIS lpasswd [\fIOPTION\fR]... [\fIname\fR] .SH DESCRIPTION Changes password of user or group \fIname\fR. If the \fIname\fR argument is not provided, username of the invoking user is used; the \fIname\fR argument is ignored if .B lpasswd is run set-uid to a different user. Entering an empty password (by pressing Enter) aborts the password setting operation. .SH OPTIONS .TP \fB\-F\fR, \fB\-\-plainpassword-fd\fR=\fIfd\fR Read password from file descriptor \fIfd\fR, terminated by end of file, \fB'\\r'\fR or \fB'\\n'\fR. .TP \fB\-f\fR, \fB\-\-password-fd\fR=\fIfd\fR Read password hash from file descriptor \fIfd\fR, terminated by end of file, \fB'\\r'\fR or \fB'\\n'\fR. .TP \fB\-g\fR, \fB\-\-group\fR Change password of group \fIname\fR. By default the password of user \fIname\fR is changed. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-P\fR, \fB\-\-plainpassword\fR=\fIpassword\fR Set the password to \fIpassword\fR. Note that the password can be viewed while running .BR lpasswd using tools such as .BR ps (1)\fR. .TP \fB\-p\fR, \fB\-\-password\fR=\fIencrypted\fR Set the password to the password represented by the hash \fIencrypted\fR. Note that the hash can be viewed while running .BR lpasswd using tools such as .BR ps (1)\fR. .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/lpasswd.c000066400000000000000000000144201471266067600136620ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "apputil.h" int main(int argc, const char **argv) { struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_error *error = NULL; char *password = NULL, *cryptedPassword = NULL; const char *user; int c; int result; int plain_fd = -1, crypted_fd = -1; int interactive = 0, groupflag = 0; poptContext popt; gboolean is_crypted; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"group", 'g', POPT_ARG_NONE, &groupflag, 0, N_("set group password instead of user password"), NULL}, {"plainpassword", 'P', POPT_ARG_STRING, &password, 0, N_("new plain password"), N_("STRING")}, {"password", 'p', POPT_ARG_STRING, &cryptedPassword, 0, N_("new crypted password"), N_("STRING")}, {"plainpassword-fd", 'F', POPT_ARG_INT, &plain_fd, 0, N_("read new plain password from given descriptor"), N_("NUM")}, {"password-fd", 'f', POPT_ARG_INT, &crypted_fd, 0, N_("read new crypted password from given descriptor"), N_("NUM")}, POPT_AUTOHELP POPT_TABLEEND }; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); popt = poptGetContext("lpasswd", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] user")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } user = poptGetArg(popt); if ((user == NULL) || (geteuid() != getuid())) { struct passwd *pwd; pwd = getpwuid(getuid()); if (pwd != NULL) { user = g_strdup(pwd->pw_name); fprintf(stderr, _("Changing password for %s.\n"), user); } else { fprintf(stderr, _("No user name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } } ctx = lu_start(user, groupflag ? lu_group : lu_user, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } lu_authenticate_unprivileged(ctx, user, "passwd"); if ((password == NULL) && (cryptedPassword == NULL) && (plain_fd == -1) && (crypted_fd == -1)) { do { struct lu_prompt prompts[2]; memset(&prompts, 0, sizeof(prompts)); prompts[0].key = "lpasswd/password1"; prompts[0].prompt = N_("New password"); prompts[0].domain = PACKAGE; prompts[1].key = "lpasswd/password2"; prompts[1].prompt = N_("New password (confirm)"); prompts[1].domain = PACKAGE; if (lu_prompt_console(prompts, G_N_ELEMENTS(prompts), NULL, &error)) { if (prompts[0].value && strlen(prompts[0].value) && prompts[1].value && strlen(prompts[1].value)) { if (strcmp(prompts[0].value, prompts[1].value) == 0) { password = g_strdup(prompts[0].value); prompts[0].free_value(prompts[0].value); prompts[1].free_value(prompts[1].value); } else { fprintf(stderr, _("Passwords " "do not match, try " "again.\n")); } } else { fprintf(stderr, _("Password change " "canceled.\n")); result = 1; goto done; } } if (error) { lu_error_free(&error); } } while (password == NULL); } ent = lu_ent_new(); if (!groupflag) { if (lu_user_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("User %s does not exist.\n"), user); result = 2; goto done; } } else { if (lu_group_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("Group %s does not exist.\n"), user); result = 2; goto done; } } if (plain_fd != -1) { char buf[LINE_MAX + 1]; ssize_t i; i = read(plain_fd, buf, sizeof(buf) - 1); if (i < 0) { fprintf(stderr, _("Error reading from file descriptor %d.\n"), plain_fd); result = 1; goto done; } while ((i > 0) && ((buf[i - 1] == '\r') || (buf[i - 1] == '\n'))) i--; buf[i] = '\0'; password = g_strdup(buf); is_crypted = FALSE; } else if (crypted_fd != -1) { char buf[LINE_MAX + 1]; ssize_t i; i = read(crypted_fd, buf, sizeof(buf) - 1); if (i < 0) { fprintf(stderr, _("Error reading from file descriptor %d.\n"), crypted_fd); result = 1; goto done; } while ((i > 0) && ((buf[i - 1] == '\r') || (buf[i - 1] == '\n'))) i--; buf[i] = '\0'; password = g_strdup(buf); is_crypted = TRUE; } else if (cryptedPassword != NULL) { password = g_strdup(cryptedPassword); is_crypted = TRUE; } else { is_crypted = FALSE; /* the password variable is already set */ } if (!groupflag) { if (lu_user_setpass(ctx, ent, password, is_crypted, &error) == FALSE) { fprintf(stderr, _("Error setting password for user " "%s: %s.\n"), user, lu_strerror(error)); result = 3; goto done; } lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); } else { if (lu_group_setpass(ctx, ent, password, is_crypted, &error) == FALSE) { fprintf(stderr, _("Error setting password for group " "%s: %s.\n"), user, lu_strerror(error)); result = 3; goto done; } lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); } fprintf(stderr, _("Password changed.\n")); result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/luseradd.1000066400000000000000000000116671471266067600137400ustar00rootroot00000000000000.\" A man page for luseradd .\" Copyright (C) 2005, 2009 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH luseradd 1 2009-12-09 libuser .SH NAME luseradd \- Add an user .SH SYNOPSIS luseradd [\fIOPTION\fR]... \fIuser\fR .SH DESCRIPTION Adds an user with name \fIuser\fR. .SH OPTIONS .TP \fB\-c\fR, \fB\-\-gecos\fR=\fIgecos\fR Set the \f[SM]GECOS\fR field to \fIgecos\fR. The \f[SM]GECOS\fR field is traditionally used to store user's real name and other information. .TP \fB\-d\fR, \fB\-\-directory\fR=\fIdirectory\fR Set user's home directory to \fIdirectory\fR. If this option is not present, a default specified by .B libuser configuration is used. .TP \fB\-g\fR, \fB\-\-gid\fR=\fIgroup\fR Set user's primary group to \fIgroup\fR. \fIgroup\fR can either be a group ID of an existing group, or a group name; if \fIgroup\fR is a group name and the group does not exist, it is created. If the \fB\-\-gid\fR option is not specified, the default group name is \fIuser\fR. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-k\fR, \fB\-\-skeleton\fR=\fIdirectory\fR Populate the newly created user's home directory with a copy of \fIdirectory\fR. If this option is not present, a default directory specified by .B libuser configuration, or \fB/etc/skel\fR if .B libuser configuration does not specify a default, is used. .TP \fB\-M\fR, \fB\-\-nocreatehome\fR Don't create a home directory and a mail spool for the newly created user. .TP \fB\-n\fR, \fB\-\-nocreategroup\fR If a group is not specified using \fB\-g\fR, use group name "users" instead of \fIuser\fR. Note that despite the name of the option, the group will still be created if it does not exist. .TP \fB\-P\fR, \fB\-\-plainpassword\fR=\fIpassword\fR Set \fIuser\fR's password to \fIpassword\fR. Note that the password can be viewed while running .BR luseradd using tools such as .BR ps (1)\fR. .TP \fB\-p\fR, \fB\-\-password\fR=\fIencrypted\fR Set \fIuser\fR's password to the password represented by the hash \fIencrypted\fR. Note that the hash can be viewed while running .BR luseradd using tools such as .BR ps (1)\fR. .TP \fB\-r\fR, \fB\-\-reserved\fR The user is a system user. Users that are not marked as system user usually have automatically selected user IDs above a certain value (configured as .B LU_UIDNUMBER in \fBlibuser.conf\fP\fR(5)\fP). This information is also passed to the .B libuser backends. This option implies the \fB\-M\fR option. .TP \fB\-s\fR, \fB\-\-shell\fR=\fIshell\fR Set user's login shell to \fIshell\fR. If this option is not present, a default specified by .B libuser configuration is used. .TP \fB\-u\fR, \fB\-\-uid\fR=\fIuid\fR Use user ID \fIuid\fR for the newly created user. An user ID is selected automatically if this option is not present. .TP \fB\-\-commonname\fP=\fIname\fP Use common name .I name for the newly created user. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-givenname\fP=\fIname\fP Use given name .I name for the newly created user. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-homephone\fP=\fIphone\fP Use home telephone number .I phone for the newly created user. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-roomnumber\fP=\fIroom\fP Use room number .I room for the newly created user. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-surname\fP=\fIname\fP Use surname .I name for the newly created user. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-telephonenumber\fP=\fIphone\fP Use telephone number .I phone for the newly created user. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/luseradd.c000066400000000000000000000252711471266067600140160ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004, 2006, 2009 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { const char *userPassword = NULL, *cryptedUserPassword = NULL, *gecos = NULL, *homeDirectory = NULL, *loginShell = NULL, *skeleton = NULL, *name, *gid = NULL, *uid_number_str = NULL, *commonName = NULL, *givenName = NULL, *surname = NULL, *roomNumber = NULL, *telephoneNumber = NULL, *homePhone = NULL; struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_ent *groupEnt = NULL; struct lu_error *error = NULL; uid_t uidNumber = LU_VALUE_INVALID_ID; gid_t gidNumber; int dont_create_group = FALSE, dont_create_home = FALSE, system_account = FALSE, interactive = FALSE, create_group; int c; int result; intmax_t imax; char *p; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"reserved", 'r', POPT_ARG_NONE, &system_account, 0, N_("create a system user"), NULL}, {"gecos", 'c', POPT_ARG_STRING, &gecos, 0, N_("GECOS information for new user"), N_("STRING")}, {"directory", 'd', POPT_ARG_STRING, &homeDirectory, 0, N_("home directory for new user"), N_("STRING")}, {"skeleton", 'k', POPT_ARG_STRING, &skeleton, 0, N_("directory with files for the new user"), N_("STRING")}, {"shell", 's', POPT_ARG_STRING, &loginShell, 0, N_("shell for new user"), N_("STRING")}, {"uid", 'u', POPT_ARG_STRING, &uid_number_str, 0, N_("uid for new user"), N_("NUM")}, {"gid", 'g', POPT_ARG_STRING, &gid, 0, N_("group for new user"), N_("STRING")}, {"nocreatehome", 'M', POPT_ARG_NONE, &dont_create_home, 0, N_("don't create home directory for user"), NULL}, {"nocreategroup", 'n', POPT_ARG_NONE, &dont_create_group, 0, N_("don't create group with same name as user"), NULL}, {"plainpassword", 'P', POPT_ARG_STRING, &userPassword, 0, N_("plaintext password for use with group"), N_("STRING")}, {"password", 'p', POPT_ARG_STRING, &cryptedUserPassword, 0, N_("pre-hashed password for use with group"), N_("STRING")}, {"commonname", 0, POPT_ARG_STRING, &commonName, 0, N_("common name for new user"), N_("STRING")}, {"givenname", 0, POPT_ARG_STRING, &givenName, 0, N_("given name for new user"), N_("STRING")}, {"surname", 0, POPT_ARG_STRING, &surname, 0, N_("surname for new user"), N_("STRING")}, {"roomnumber", 0, POPT_ARG_STRING, &roomNumber, 0, N_("room number for new user"), N_("STRING")}, {"telephonenumber", 0, POPT_ARG_STRING, &telephoneNumber, 0, N_("telephone number for new user"), N_("STRING")}, {"homephone", 0, POPT_ARG_STRING, &homePhone, 0, N_("home telephone number for new user"), N_("STRING")}, POPT_AUTOHELP POPT_TABLEEND }; /* Initialize i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Parse command-line arguments. */ popt = poptGetContext("luseradd", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] user")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } /* Force certain flags one way or another. */ if (system_account) { dont_create_home = TRUE; } /* We require at least the user's name (I suppose we could just * make one up, but that could get weird). */ name = poptGetArg(popt); if (name == NULL) { fprintf(stderr, _("No user name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } if (uid_number_str != NULL) { errno = 0; imax = strtoimax(uid_number_str, &p, 10); if (errno != 0 || *p != 0 || p == uid_number_str || (uid_t)imax != imax || (uid_t)imax == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Invalid user ID %s\n"), uid_number_str); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } uidNumber = imax; } /* Initialize the library. */ ctx = lu_start(NULL, 0, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Select a group name for the user to be in. */ if (gid == NULL) { if (dont_create_group) gid = "users"; else gid = name; /* Consider "gid" a group name even if it is composed of digits. */ gidNumber = LU_VALUE_INVALID_ID; } else { /* Try to convert the given GID to a number. */ errno = 0; imax = strtoimax(gid, &p, 10); if (errno == 0 && *p == 0 && p != gid && (gid_t)imax == imax) { gidNumber = imax; if (gidNumber == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Invalid group ID %s\n"), gid); result = 1; goto done; } } else /* It's not a number, so it's a group name. */ gidNumber = LU_VALUE_INVALID_ID; } /* Check if the group exists. */ groupEnt = lu_ent_new(); if (gidNumber == LU_VALUE_INVALID_ID) { if (lu_group_lookup_name(ctx, gid, groupEnt, &error)) { /* Retrieve the group's GID. */ gidNumber = lu_ent_get_first_id(groupEnt, LU_GIDNUMBER); g_assert(gidNumber != LU_VALUE_INVALID_ID); create_group = FALSE; } else { /* No such group, we need to create one. */ create_group = TRUE; } } else { if (lu_group_lookup_id(ctx, gidNumber, groupEnt, &error)) { create_group = FALSE; } else { fprintf(stderr, _("Group %jd does not exist\n"), (intmax_t)gidNumber); result = 1; goto done; } } if (create_group) { g_assert(gidNumber == LU_VALUE_INVALID_ID); if (error) lu_error_free(&error); /* Create the group template. */ lu_group_default(ctx, gid, FALSE, groupEnt); /* Try to add the group. */ if (lu_group_add(ctx, groupEnt, &error)) lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); else { /* Aargh! Abandon all hope. */ fprintf(stderr, _("Error creating group `%s': %s\n"), gid, lu_strerror(error)); if (error) { lu_error_free(&error); } lu_audit_logger(AUDIT_ADD_GROUP, "add-group", name, AUDIT_NO_ID, 0); result = 1; goto done; } lu_audit_logger(AUDIT_ADD_GROUP, "add-group", name, AUDIT_NO_ID, 1); } /* Retrieve the group ID. */ gidNumber = lu_ent_get_first_id(groupEnt, LU_GIDNUMBER); if (gidNumber == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Error creating group `%s': %s\n"), gid, lu_strerror(error)); if (error) { lu_error_free(&error); } result = 1; goto done; } g_assert(gidNumber != LU_VALUE_INVALID_ID); lu_ent_free(groupEnt); /* Create the user record. */ ent = lu_ent_new(); lu_user_default(ctx, name, system_account, ent); /* Modify the default UID if we had one passed in. */ if (uidNumber != LU_VALUE_INVALID_ID) lu_ent_set_id(ent, LU_UIDNUMBER, uidNumber); /* Use the GID we've created, or the one which was passed in. */ if (gidNumber != LU_VALUE_INVALID_ID) lu_ent_set_id(ent, LU_GIDNUMBER, gidNumber); #define PARAM(ATTR, VAR) \ if ((VAR) != NULL) \ lu_ent_set_string(ent, (ATTR), (VAR)); PARAM(LU_GECOS, gecos); PARAM(LU_HOMEDIRECTORY, homeDirectory); PARAM(LU_LOGINSHELL, loginShell); PARAM(LU_COMMONNAME, commonName); PARAM(LU_GIVENNAME, givenName); PARAM(LU_SN, surname); PARAM(LU_ROOMNUMBER, roomNumber); PARAM(LU_TELEPHONENUMBER, telephoneNumber); PARAM(LU_HOMEPHONE, homePhone); #undef PARAM /* Moment-of-truth time. */ if (lu_user_add(ctx, ent, &error) == FALSE) { fprintf(stderr, _("Account creation failed: %s.\n"), lu_strerror(error)); lu_audit_logger(AUDIT_ADD_USER, "add-user", name, AUDIT_NO_ID, 0); result = 3; goto done; } lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); lu_audit_logger(AUDIT_ADD_USER, "add-user", name, AUDIT_NO_ID, 1); /* If we don't have the the don't-create-home flag, create the user's * home directory. */ if (!dont_create_home) { /* Read the user's UID. */ uidNumber = lu_ent_get_first_id(ent, LU_UIDNUMBER); g_assert(uidNumber != LU_VALUE_INVALID_ID); /* Read the user's GID. */ gidNumber = lu_ent_get_first_id(ent, LU_GIDNUMBER); g_assert(gidNumber != LU_VALUE_INVALID_ID); /* Read the user's home directory. */ homeDirectory = lu_ent_get_first_string(ent, LU_HOMEDIRECTORY); if (lu_homedir_populate(ctx, skeleton, homeDirectory, uidNumber, gidNumber, 0700, &error) == FALSE) { fprintf(stderr, _("Error creating %s: %s.\n"), homeDirectory, lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "add-home-dir", name, uidNumber, 0); result = 7; goto done; } lu_audit_logger(AUDIT_USER_MGMT, "add-home-dir", name, uidNumber, 1); /* Create a mail spool for the user. */ if (lu_mail_spool_create(ctx, ent, &error) != TRUE) { fprintf(stderr, _("Error creating mail spool: %s\n"), lu_strerror(error)); result = 8; goto done; } } /* Set the password after creating the home directory to prevent the user from seeing an incomplete home, and to prevent the user from interfering with the creation of the home directory. */ if (userPassword != NULL) { if (lu_user_setpass(ctx, ent, userPassword, FALSE, &error) == FALSE) { fprintf(stderr, _("Error setting password for user " "%s: %s.\n"), name, lu_strerror(error)); result = 3; goto done; } } if (cryptedUserPassword != NULL) { if (lu_user_setpass(ctx, ent, cryptedUserPassword, TRUE, &error) == FALSE) { fprintf(stderr, _("Error setting password for user " "%s: %s.\n"), name, lu_strerror(error)); lu_audit_logger(AUDIT_USER_CHAUTHTOK, "updating-password", name, uidNumber, 0); result = 3; goto done; } lu_audit_logger(AUDIT_USER_CHAUTHTOK, "updating-password", name, uidNumber, 1); } lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/luserdel.1000066400000000000000000000030341471266067600137410ustar00rootroot00000000000000.\" A man page for luserdel .\" Copyright (C) 2005, 2009 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH luserdel 1 "May 2009" libuser .SH NAME luserdel \- Delete an user .SH SYNOPSIS luserdel [\fIOPTION\fR]... \fIuser\fR .SH DESCRIPTION Deletes the user with name \fIuser\fR. .SH OPTIONS .TP \fB\-G\fR, \fB\-\-dontremovegroup\fR By default the user's primary group is removed if it has group name \fIuser\fR (user's private group). This option disables this behavior. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-r\fR, \fB\-\-removehome\fR Remove user's home directory and mail spool after deleting the user. .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/luserdel.c000066400000000000000000000116321471266067600140260ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_error *error = NULL; const char *user; int interactive = FALSE; int remove_home = 0, dont_remove_group = 0; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"dontremovegroup", 'G', POPT_ARG_NONE, &dont_remove_group, 0, N_("don't remove the user's private group, if the user has " "one"), NULL}, {"removehome", 'r', POPT_ARG_NONE, &remove_home, 0, N_("remove the user's home directory"), NULL}, POPT_AUTOHELP POPT_TABLEEND }; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); popt = poptGetContext("luserdel", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] user")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } user = poptGetArg(popt); if (user == NULL) { fprintf(stderr, _("No user name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } ctx = lu_start(NULL, 0, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } ent = lu_ent_new(); if (lu_user_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("User %s does not exist.\n"), user); result = 2; goto done; } if (lu_user_delete(ctx, ent, &error) == FALSE) { fprintf(stderr, _("User %s could not be deleted: %s.\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_DEL_USER, "delete-user", user, AUDIT_NO_ID, 0); result = 3; goto done; } lu_audit_logger(AUDIT_DEL_USER, "delete-user", user, AUDIT_NO_ID, 1); lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); if (!dont_remove_group) { struct lu_ent *group_ent; gid_t gid; const char *tmp; gid = lu_ent_get_first_id(ent, LU_GIDNUMBER); if (gid == LU_VALUE_INVALID_ID) { fprintf(stderr, _("%s did not have a gid number.\n"), user); result = 4; goto done; } group_ent = lu_ent_new(); if (lu_group_lookup_id(ctx, gid, group_ent, &error) == FALSE) { fprintf(stderr, _("No group with GID %jd exists, not " "removing.\n"), (intmax_t)gid); result = 5; goto done; } tmp = lu_ent_get_first_string(group_ent, LU_GROUPNAME); if (tmp == NULL) { fprintf(stderr, _("Group with GID %jd did not have a " "group name.\n"), (intmax_t)gid); result = 6; goto done; } if (strcmp(tmp, user) == 0) { if (lu_group_delete(ctx, group_ent, &error) == FALSE) { fprintf(stderr, _("Group %s could not be " "deleted: %s.\n"), tmp, lu_strerror(error)); lu_audit_logger_with_group (AUDIT_DEL_GROUP, "delete-group", user, AUDIT_NO_ID, tmp, 0); result = 7; goto done; } } lu_audit_logger_with_group (AUDIT_DEL_GROUP, "delete-group", user, AUDIT_NO_ID, tmp, 1); lu_ent_free(group_ent); lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); } if (remove_home) { if (lu_homedir_remove_for_user(ent, &error) == FALSE) { fprintf(stderr, _("Error removing home directory: %s.\n"), lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "deleting-home-directory", user, AUDIT_NO_ID, 0); result = 9; goto done; } lu_audit_logger(AUDIT_USER_MGMT, "deleting-home-directory", user, AUDIT_NO_ID, 1); /* Delete the user's mail spool. */ if (lu_mail_spool_remove(ctx, ent, &error) != TRUE) { fprintf(stderr, _("Error removing mail spool: %s"), lu_strerror(error)); result = 1; goto done; } } result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } apps/lusermod.1000066400000000000000000000077631471266067600137710ustar00rootroot00000000000000.\" A man page for lusermod .\" Copyright (C) 2005, 2008, 2009 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH lusermod 1 2009-12-11 libuser .SH NAME lusermod \- Modify an user .SH SYNOPSIS lusermod [\fIOPTION\fR]... \fIuser\fR .SH DESCRIPTION Modifies the user with name \fIuser\fR. .SH OPTIONS .TP \fB\-c\fR, \fB\-\-gecos\fR=\fIgecos\fR Set \fIuser\fR's \f[SM]GECOS\fR field to \fIgecos\fR. The \f[SM]GECOS\fR field is traditionally used to store user's real name and other information. .TP \fB\-d\fR, \fB\-\-directory\fR=\fIdirectory\fR Set \fIuser\fR's home directory to \fIdirectory\fR. .TP \fB\-g\fR, \fB\-\-gid\fR=\fIgid\fR Change \fIuser\fR's primary group ID to \fIgid\fR. If group with ID .I gid does not exist, a warning is printed, but the operation is performed anyway. .TP \fB\-i\fR, \fB\-\-interactive\fR Ask all questions when connecting to the user database, even if default answers are set up in .B libuser configuration. .TP \fB\-L\fR, \fB\-\-lock\fR Lock \fIuser\fR's account. This prevents logging in using \fIuser\fR's password. .TP \fB\-l\fR, \fB\-\-login\fR=\fIname\fR Rename \fIuser\fR to \fIname\fR. .TP \fB\-m\fR, \fB\-\-movedirectory\fR After changing \fIuser\fR's home directory (using the \fB\-d\fR option), move the old home directory to the new location. .TP \fB\-P\fR, \fB\-\-plainpassword\fR=\fIpassword\fR Set \fIuser\fR's password to \fIpassword\fR. Note that the password can be viewed while running .BR lusermod using tools such as .BR ps (1)\fR. .TP \fB\-p\fR, \fB\-\-password\fR=\fIencrypted\fR Set \fIuser\fR's password to the password represented by the hash \fIencrypted\fR. Note that the hash can be viewed while running .BR lusermod using tools such as .BR ps (1)\fR. .TP \fB\-s\fR, \fB\-\-shell\fR=\fIshell\fR Set \fIuser\fR's login shell to \fIshell\fR. .TP \fB\-U\fR, \fB\-\-unlock\fR Unlock \fIuser\fR's account. .TP \fB\-u\fR, \fB\-\-uid\fR=\fIuid\fR Change \fIuser\fR's user ID to \fIuid\fR. .TP \fB\-\-commonname\fP=\fIname\fP Set \fIuser\fP's common name to \fIname\fP. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-givenname\fP=\fIname\fP Set \fIuser\fP's given name to \fIname\fP. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-homephone\fP=\fIphone\fP Set \fIuser\fP's home telephone number to \fIphone\fP. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-roomnumber\fP=\fIroom\fP Set \fIuser\fP's room number to \fIroom\fP. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-surname\fP=\fIname\fP Set \fIuser\fP's surname to \fIname\fP. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .TP \fB\-\-telephonenumber\fP=\fIphone\fP Set \fIuser\fP's telephone number to \fIphone\fP. This attribute is only supported in some backends (e.g.LDAP), and its support may have further limitations (e.g. LDAP schema rules). .SH EXIT STATUS The exit status is 0 on success, nonzero on error. apps/lusermod.c000066400000000000000000000313151471266067600140410ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004, 2009 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include "../lib/user_private.h" #include "apputil.h" int main(int argc, const char **argv) { const char *userPassword = NULL, *cryptedUserPassword = NULL, *uid = NULL, *user, *gecos = NULL, *homeDirectory = NULL, *loginShell = NULL, *gid_number_str = NULL, *uid_number_str = NULL, *commonName = NULL, *givenName = NULL, *surname = NULL, *roomNumber = NULL, *telephoneNumber = NULL, *homePhone = NULL; char *old_uid, *oldHomeDirectory; uid_t uidNumber = LU_VALUE_INVALID_ID; gid_t gidNumber = LU_VALUE_INVALID_ID; struct lu_context *ctx = NULL; struct lu_ent *ent = NULL; struct lu_error *error = NULL; GPtrArray *groups = NULL; GValue *value; int change, move_home = FALSE, lock = FALSE, unlock = FALSE; int interactive = FALSE; int c; int result; poptContext popt; struct poptOption options[] = { {"interactive", 'i', POPT_ARG_NONE, &interactive, 0, N_("prompt for all information"), NULL}, {"gecos", 'c', POPT_ARG_STRING, &gecos, 0, N_("GECOS information"), N_("STRING")}, {"directory", 'd', POPT_ARG_STRING, &homeDirectory, 0, N_("home directory"), N_("STRING")}, {"movedirectory", 'm', POPT_ARG_NONE, &move_home, 0, N_("move home directory contents"), NULL}, {"shell", 's', POPT_ARG_STRING, &loginShell, 0, N_("set shell for user"), N_("STRING")}, {"uid", 'u', POPT_ARG_STRING, &uid_number_str, 0, N_("set UID for user"), N_("NUM")}, {"gid", 'g', POPT_ARG_STRING, &gid_number_str, 0, N_("set primary GID for user"), N_("NUM")}, {"login", 'l', POPT_ARG_STRING, &uid, 0, N_("change login name for user"), N_("STRING")}, {"plainpassword", 'P', POPT_ARG_STRING, &userPassword, 0, N_("plaintext password for the user"), N_("STRING")}, {"password", 'p', POPT_ARG_STRING, &cryptedUserPassword, 0, N_("pre-hashed password for the user"), N_("STRING")}, {"lock", 'L', POPT_ARG_NONE, &lock, 0, N_("lock account"), NULL}, {"unlock", 'U', POPT_ARG_NONE, &unlock, 0, N_("unlock account"), NULL}, {"commonname", 0, POPT_ARG_STRING, &commonName, 0, N_("set common name for user"), N_("STRING")}, {"givenname", 0, POPT_ARG_STRING, &givenName, 0, N_("set given name for user"), N_("STRING")}, {"surname", 0, POPT_ARG_STRING, &surname, 0, N_("set surname for user"), N_("STRING")}, {"roomnumber", 0, POPT_ARG_STRING, &roomNumber, 0, N_("set room number for user"), N_("STRING")}, {"telephonenumber", 0, POPT_ARG_STRING, &telephoneNumber, 0, N_("set telephone number for user"), N_("STRING")}, {"homephone", 0, POPT_ARG_STRING, &homePhone, 0, N_("set home telephone number for user"), N_("STRING")}, POPT_AUTOHELP POPT_TABLEEND }; /* Set up i18n. */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); /* Start up the library. */ popt = poptGetContext("lusermod", argc, argv, options, 0); poptSetOtherOptionHelp(popt, _("[OPTION...] user")); c = poptGetNextOpt(popt); if (c != -1) { fprintf(stderr, _("Error parsing arguments: %s.\n"), poptStrerror(c)); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } /* We need to have been passed a user name on the command-line. We * could just delete some randomly-selected victim^H^H^H^H^H^Huser, * but that would probably upset most system administrators. */ user = poptGetArg(popt); if (user == NULL) { fprintf(stderr, _("No user name specified.\n")); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } if (gid_number_str != NULL) { intmax_t val; char *p; errno = 0; val = strtoimax(gid_number_str, &p, 10); if (errno != 0 || *p != 0 || p == gid_number_str || (gid_t)val != val || (gid_t)val == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Invalid group ID %s\n"), gid_number_str); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } gidNumber = val; } if (uid_number_str != NULL) { intmax_t val; char *p; errno = 0; val = strtoimax(uid_number_str, &p, 10); if (errno != 0 || *p != 0 || p == uid_number_str || (uid_t)val != val || (uid_t)val == LU_VALUE_INVALID_ID) { fprintf(stderr, _("Invalid user ID %s\n"), uid_number_str); poptPrintUsage(popt, stderr, 0); result = 1; goto done; } uidNumber = val; } /* Start up the library. */ ctx = lu_start(NULL, 0, NULL, NULL, interactive ? lu_prompt_console : lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, _("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); result = 1; goto done; } /* Sanity-check arguments. */ if (lock && unlock) { fprintf(stderr, _("Both -L and -U specified.\n")); result = 2; goto done; } /* Look up the user's record. */ ent = lu_ent_new(); if (lu_user_lookup_name(ctx, user, ent, &error) == FALSE) { fprintf(stderr, _("User %s does not exist.\n"), user); result = 3; goto done; } /* If the user's password needs to be changed, try to change it. */ if (userPassword != NULL) { if (lu_user_setpass(ctx, ent, userPassword, FALSE, &error) == FALSE) { fprintf(stderr, _("Failed to set password for user %s: %s.\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_USER_CHAUTHTOK, "updating-password", user, uidNumber, 0); result = 5; goto done; } lu_audit_logger(AUDIT_USER_CHAUTHTOK, "updating-password", user, uidNumber, 0); } /* If we need to change a user's crypted password, try to change it, * though it might fail if an underlying mechanism doesn't support * using them. */ if (cryptedUserPassword != NULL) { if (lu_user_setpass(ctx, ent, cryptedUserPassword, TRUE, &error) == FALSE) { fprintf(stderr, _("Failed to set password for user %s: %s.\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_USER_CHAUTHTOK, "updating-password", user, uidNumber, 0); result = 6; goto done; } lu_audit_logger(AUDIT_USER_CHAUTHTOK, "updating-password", user, uidNumber, 0); } /* If we need to lock/unlock the user's account, do that. */ if (lock) { if (lu_user_lock(ctx, ent, &error) == FALSE) { fprintf(stderr, _("User %s could not be locked: %s.\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_USER_CHAUTHTOK, "locking-account", user, uidNumber, 0); result = 7; goto done; } lu_audit_logger(AUDIT_USER_CHAUTHTOK, "locking-account", user, uidNumber, 0); } if (unlock) { if (lu_user_unlock(ctx, ent, &error) == FALSE) { fprintf(stderr, _("User %s could not be unlocked: %s.\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_USER_CHAUTHTOK, "unlocking-account", user, uidNumber, 0); result = 8; goto done; } lu_audit_logger(AUDIT_USER_CHAUTHTOK, "unlocking-account", user, uidNumber, 0); } /* Determine if we actually need to change anything. */ change = uid || gecos || homeDirectory || loginShell || commonName || givenName || surname || roomNumber || telephoneNumber || homePhone || uidNumber != LU_VALUE_INVALID_ID || gidNumber != LU_VALUE_INVALID_ID; /* Change the user's UID and GID. */ if (uidNumber != LU_VALUE_INVALID_ID) lu_ent_set_id(ent, LU_UIDNUMBER, uidNumber); if (gidNumber != LU_VALUE_INVALID_ID) { struct lu_ent *group_ent; group_ent = lu_ent_new(); if (lu_group_lookup_id(ctx, gidNumber, group_ent, &error) == FALSE) { fprintf(stderr, _("Warning: Group with ID %jd does not " "exist.\n"), (intmax_t)gidNumber); if (error != NULL) lu_error_free(&error); } lu_ent_free(group_ent); lu_ent_set_id(ent, LU_GIDNUMBER, gidNumber); } /* Change the user's shell and GECOS information. */ #define PARAM(ATTR, VAR) \ if ((VAR) != NULL) \ lu_ent_set_string(ent, (ATTR), (VAR)); PARAM(LU_LOGINSHELL, loginShell); PARAM(LU_GECOS, gecos); PARAM(LU_COMMONNAME, commonName); PARAM(LU_GIVENNAME, givenName); PARAM(LU_SN, surname); PARAM(LU_ROOMNUMBER, roomNumber); PARAM(LU_TELEPHONENUMBER, telephoneNumber); PARAM(LU_HOMEPHONE, homePhone); #undef PARAM /* If the user changed names or home directories, we need to keep track * of the old values. */ old_uid = NULL; if (uid != NULL) { old_uid = lu_ent_get_first_value_strdup(ent, LU_USERNAME); lu_ent_set_string(ent, LU_USERNAME, uid); groups = lu_groups_enumerate_by_user_full(ctx, old_uid, &error); if (error) lu_error_free(&error); } oldHomeDirectory = NULL; if (homeDirectory != NULL) { oldHomeDirectory = lu_ent_get_first_value_strdup(ent, LU_HOMEDIRECTORY); lu_ent_set_string(ent, LU_HOMEDIRECTORY, homeDirectory); } /* If we need to change anything about the user, do it. */ if (change && (lu_user_modify(ctx, ent, &error) == FALSE)) { fprintf(stderr, _("User %s could not be modified: %s.\n"), user, lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "modify-account", user, uidNumber, 0); result = 9; goto done; } lu_audit_logger(AUDIT_USER_MGMT, "modify-account", user, uidNumber, 1); lu_nscd_flush_cache(LU_NSCD_CACHE_PASSWD); /* If the user's name changed, we need to update supplemental * group membership information. */ if (change && (old_uid != NULL)) { size_t i; for (i = 0; groups != NULL && i < groups->len; i++) { struct lu_ent *group; const char *username; GValueArray *members, *admins; size_t j; group = g_ptr_array_index(groups, i); /* Get a list of the group's members. */ members = lu_ent_get(group, LU_MEMBERNAME); admins = lu_ent_get(group, LU_ADMINISTRATORNAME); /* Search for this user in the member list. */ for (j = 0; (members != NULL) && (j < members->n_values); j++) { value = g_value_array_get_nth(members, j); username = g_value_get_string(value); /* If it holds the user's old name, then * set its value to the new name. */ if (strcmp(old_uid, username) == 0) { /* Modifies the entity in-place. */ g_value_set_string(value, uid); break; } } /* Do the same for the administrator list. */ for (j = 0; (admins != NULL) && (j < admins->n_values); j++) { value = g_value_array_get_nth(admins, j); username = g_value_get_string(value); /* If it holds the user's old name, then * set its value to the new name. */ if (strcmp(old_uid, username) == 0) { /* Modifies the entity in-place. */ g_value_set_string(value, uid); break; } } /* Save the changes to the group. */ if (lu_group_modify(ctx, group, &error) == FALSE) { fprintf(stderr, _("Group %s could not be " "modified: %s.\n"), lu_ent_get_first_string(group, LU_GROUPNAME), lu_strerror(error)); lu_audit_logger_with_group(AUDIT_USER_MGMT, "update-member-in-group", user, uidNumber, lu_ent_get_first_string(group, LU_GROUPNAME),0); } else lu_audit_logger_with_group(AUDIT_USER_MGMT, "update-member-in-group", user, uidNumber, lu_ent_get_first_string(group, LU_GROUPNAME),1); lu_ent_free(group); } g_ptr_array_free(groups, TRUE); lu_nscd_flush_cache(LU_NSCD_CACHE_GROUP); } g_free(old_uid); /* If we need to move the user's directory, we do that now. */ if (change && move_home) { if (oldHomeDirectory == NULL) { fprintf(stderr, _("No old home directory for %s.\n"), user); result = 10; goto done; } if (homeDirectory == NULL) { fprintf(stderr, _("No new home directory for %s.\n"), user); result = 11; goto done; } if (lu_homedir_move(oldHomeDirectory, homeDirectory, &error) == FALSE) { fprintf(stderr, _("Error moving %s to %s: %s.\n"), oldHomeDirectory, homeDirectory, lu_strerror(error)); lu_audit_logger(AUDIT_USER_MGMT, "moving-home-dir", user, uidNumber, 0); result = 12; goto done; } lu_audit_logger(AUDIT_USER_MGMT, "moving-home-dir", user, uidNumber, 1); } g_free(oldHomeDirectory); result = 0; done: if (ent) lu_ent_free(ent); if (ctx) lu_end(ctx); poptFreeContext(popt); return result; } autogen.sh000077500000000000000000000004171471266067600131000ustar00rootroot00000000000000#!/bin/sh set -x -e mkdir -p admin m4 gtkdocize --docdir docs/reference libtoolize --force autopoint -f aclocal -Wall -I m4 autoconf -Wall autoheader -Wall automake -Wall --add-missing # ./configure --with-ldap --with-sasl --enable-gtk-doc --enable-Werror --with-selinux configure.ac000066400000000000000000000122761471266067600133730ustar00rootroot00000000000000AC_INIT([libuser], [0.62], [https://pagure.io/libuser], , [https://pagure.io/libuser]) AC_PREREQ([2.63b]) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([lib/user.c]) AC_CONFIG_AUX_DIR([admin]) AM_INIT_AUTOMAKE([no-dist-gzip dist-xz subdir-objects -Wall]) AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC AM_PROG_CC_C_O AM_PROG_AR AC_CHECK_PROG([YACC], [bison -y], [bison -y], [:]) AC_PATH_PROG([NSCD], [nscd], [/usr/sbin/nscd], [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin]) AC_ARG_VAR([NSCD], [Path to nscd]) AC_SYS_LARGEFILE LT_INIT([disable-static]) PKG_CHECK_MODULES(GLIB,[glib-2.0 gmodule-no-export-2.0]) PKG_CHECK_MODULES(GOBJECT,[glib-2.0 gobject-2.0]) PKG_CHECK_MODULES(GMODULE,[glib-2.0 gmodule-no-export-2.0 gobject-2.0]) AC_DEFINE(G_DISABLE_DEPRECATED,, [Stay away from deprecated glib functionality.]) # GValueArray is a part of external API of the library; warnings about it being # deprecated do no good. AC_DEFINE([GLIB_VERSION_MIN_REQUIRED], [GLIB_VERSION_2_30], [Shut up warnings about deprecated GValueArray]) AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.18.2]) LIBSAVE="$LIBS" AC_SEARCH_LIBS([crypt], [crypt]) CRYPT_LIBS="$LIBS" LIBS="$LIBSAVE" AC_SUBST(CRYPT_LIBS) AC_ARG_WITH([popt], AS_HELP_STRING([--with-popt=DIR], [use popt headers and libraries under DIR]), [if test "x$withval" != x -a "x$withval" != xyes -a "x$withval" != xno -a \ "x$withval" != x/usr ; then CPPFLAGS="$CPPFLAGS -I$popt/include" LDFLAGS="$LDFLAGS -L$popt/lib" fi]) AC_ARG_WITH([ldap], AS_HELP_STRING([--with-ldap=DIR], [use OpenLDAP 2.x headers and libraries under DIR]), [if test "x$withval" != x -a "x$withval" != xno ; then ldap=$withval else ldap=no fi ],ldap=no) build_ldap=no if test x$ldap != xno ; then LIBSAVE="$LIBS" if test x$ldap != xyes -a x$ldap != x/usr ; then CPPFLAGS="$CPPFLAGS -I$ldap/include" LDFLAGS="$LDFLAGS -L$ldap/lib" fi AC_SEARCH_LIBS([ldap_sasl_interactive_bind_s], [ldap]) AC_CHECK_FUNC(ldap_sasl_interactive_bind_s,[ AC_CHECK_FUNC(ldap_set_option,[ AC_CHECK_FUNC(ldap_start_tls_s,[ AC_CHECK_FUNC(ldap_modify_ext_s,[ AC_CHECK_FUNC(ldap_delete_ext_s,[ build_ldap=yes])])])])]) LIBS="$LIBSAVE" fi AM_CONDITIONAL([LDAP], [test $build_ldap = yes]) AC_ARG_WITH([sasl], AS_HELP_STRING([--with-sasl=DIR], [use Cyrus SASL headers and libraries under DIR]), [if test "x$withval" != x -a "x$withval" != xno ; then sasl=$withval else sasl=no fi ],sasl=no) build_sasl=no if test x$sasl != xno ; then LIBSAVE="$LIBS" if test x$sasl != xyes -a x$sasl != x/usr ; then CPPFLAGS="$CPPFLAGS -I$sasl/include" LDFLAGS="$LDFLAGS -L$sasl/lib" fi AC_SEARCH_LIBS([sasl_setpass], [sasl2], [build_sasl=yes]) AC_CHECK_FUNCS_ONCE([sasl_user_exists]) LIBS="$LIBSAVE" fi AM_CONDITIONAL([SASL], [test $build_sasl = yes]) AC_ARG_WITH([python], AS_HELP_STRING([--with-python], [build Python modules (default is YES)]), [], [with_python=yes]) AM_CONDITIONAL([WITH_PYTHON], [test $with_python != no]) if test $with_python != no ; then AM_PATH_PYTHON PYINCLUDEDIR=`$PYTHON -c 'import sysconfig; print(sysconfig.get_path("include"))'` fi AC_SUBST(PYINCLUDEDIR) AC_ARG_WITH([selinux], AS_HELP_STRING([--with-selinux], [work with SELinux extensions (default is NO)]), [selinux=$withval], [selinux=no]) if test "x$selinux" != xno ; then SELINUX_LIBS=-lselinux AC_DEFINE([WITH_SELINUX], [1], [Define to 1 to use SELinux extensions]) fi AC_SUBST(SELINUX_LIBS) AC_ARG_WITH(audit, AS_HELP_STRING([--with-audit],[log using Linux Audit in addition to syslog]), use_audit=$withval, use_audit=auto) if test x$use_audit != xno ; then AC_SEARCH_LIBS([audit_open], [audit]) if test x$ac_cv_search_audit_open = xno ; then if test x$use_audit != xauto ; then AC_MSG_ERROR([requested Linux Audit, but libaudit was not found]) fi else AC_DEFINE(WITH_AUDIT,1,[Define if you want to use Linux Audit.]) AUDIT_LIBS=-laudit fi fi AC_SUBST(AUDIT_LIBS) AC_C_CONST AC_TYPE_UID_T AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_SIZE_T AC_CHECK_FUNCS([__secure_getenv secure_getenv]) # Modify CFLAGS after all tests are run (some of them could fail because # of the -Werror). if test "$GCC" = yes ; then AC_CACHE_CHECK([for available GCC warning flags], [mitr_cv_prog_gcc_warnings], [mitr_cv_prog_gcc_warnings="" for i in -Wall -Wcast-align -Wmissing-noreturn -Wnested-externs dnl -Wpointer-arith -Wstrict-prototypes -Wundef; do oldcflags=$CFLAGS CFLAGS="$CFLAGS $i" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [mitr_cv_prog_gcc_warnings="$mitr_cv_prog_gcc_warnings $i"]) CFLAGS=$oldcflags done]) CFLAGS="$CFLAGS $mitr_cv_prog_gcc_warnings" AC_MSG_CHECKING([whether we should use -Werror]) AC_ARG_ENABLE([Werror], AS_HELP_STRING([--enable-Werror], [use -Werror if compiling with gcc (default is NO)]), [], enable_Werror=no) if test "x$enable_Werror" != xno; then CFLAGS="$CFLAGS -Werror" fi AC_MSG_RESULT([$enable_Werror]) fi GTK_DOC_CHECK([1.14],[--flavour no-tmpl --docdir docs/reference]) AC_CONFIG_FILES([Makefile po/Makefile.in docs/Makefile docs/reference/Makefile libuser.pc]) AC_OUTPUT docs/000077500000000000000000000000001471266067600120255ustar00rootroot00000000000000docs/.cvsignore000066400000000000000000000000141471266067600140200ustar00rootroot00000000000000Makefile.in docs/Makefile.am000066400000000000000000000013061471266067600140610ustar00rootroot00000000000000SUBDIRS = reference man_MANS = libuser.conf.5 SGML_OUTPUTS = sgml/libuser.html sgml/libuser-1.html sgml/libuser-2.html \ sgml/libuser.txt CLEANFILES = $(man_MANS) $(SGML_OUTPUTS) EXTRA_DIST = attributes.txt libuser.conf.5.in rfc2307.txt sgml/libuser.sgml \ $(SGML_OUTPUTS) all: sgml/libuser.txt sgml/libuser.html libuser.conf.5: $(srcdir)/libuser.conf.5.in Makefile sed 's,@sysconfdir\@,$(sysconfdir),g' \ < $(srcdir)/libuser.conf.5.in > $@ sgml/libuser.txt: $(abs_srcdir)/sgml/libuser.sgml [ -d sgml ] || mkdir sgml cd sgml; sgml2txt $(abs_srcdir)/sgml/libuser.sgml sgml/libuser.html: $(abs_srcdir)/sgml/libuser.sgml [ -d sgml ] || mkdir sgml cd sgml; sgml2html $(abs_srcdir)/sgml/libuser.sgml docs/attributes.txt000066400000000000000000000006341471266067600147570ustar00rootroot00000000000000Users: objectclass = posixAccount (files) uid userPassword uidNumber gidNumber gecos homeDirectory loginShell objectclass = shadowAccount (shadow) uid shadowLastChange shadowMin shadowMax shadowWarning shadowInactive shadowExpire shadowFlag Groups: objectclass = posixGroup (files) cn gidNumber memberUid objectclass = shadowGroup (shadow) cn userPassword administratorUid memberUid docs/libuser.conf.5.in000066400000000000000000000245701471266067600151210ustar00rootroot00000000000000'\" t .\" A man page for libuser.conf -*- nroff -*- .\" Copyright (C) 2005, 2008, 2010 Red Hat, Inc. .\" .\" This 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 program 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 .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free Software .\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. .\" .\" Author: Miloslav Trmac .TH libuser.conf 5 2010-02-08 libuser .SH NAME libuser.conf \- configuration for libuser and libuser utilities .SH FILE FORMAT .B libuser.conf is a text file. Leading and trailing white space on each line is ignored. Lines starting with .B # are ignored. The file defines variables grouped into sections. Each section starts with a section header: .RS \fB[\fIsection name\fB]\fR .RE A single section header can appear more than once in the file. The lines following a section header define variables from that section: .RS .I variable .B = .I value .RE The .I value can be empty. A .I variable can have more than one value, specified by using more than one line defining that \fIvariable\fR. All currently defined variables accept only the first value and ignore the others, if any. .SH \fB[defaults]\fR .TP .B create_modules A list of module names to use when creating user or group entries, unless the application specifies a different list. The module names in the list can be separated using space, tab or comma. Default value is \fBfiles shadow\fR. .TP .B crypt_style The algorithm to use for password encryption when creating new passwords. The current algorithm may be retained when changing a password of an existing user, depending on the application. Possible values are \fBdes\fR, \fBmd5\fR, \fBblowfish\fR, .B sha256, \fBsha512\fR, and \fByescrypt\fR, all case-insensitive. Unrecognized values are treated as \fBdes\fR. Default value is \fBdes\fR. .TP \fBhash_rounds_min\fR, \fBhash_rounds_max\fR These variables specify an inclusive range of hash rounds used when .B crypt_style is .B sha256 or \fBsha512\fR. A number of hash rounds is chosen from this interval randomly. A larger number of rounds makes password checking, and brute-force attempts to guess the password by reversing the hash, more CPU-intensive. The number of rounds is restricted to the interval [1000, 999999999]. If only one of the above variables is specified, the number of rounds used is specified by the other variable. If neither variable is specified, the number of rounds is chosen by \fBlibc\fR. .TP .B mailspooldir The directory containing user's mail spool files. Default value is \fB/var/mail\fR. .TP .B moduledir The directory containing .B libuser modules. Default value uses the modules installed with \fBlibuser\fR, corresponding to the architecture of the .B libuser library, e.g. \fB/usr/lib/libuser\fR or \fB/usr/lib64/libuser\fR (assuming .B libuser was configured with \fB--prefix=/usr\fR). .TP .B modules A list of module names to use when not creating user or group entries, unless the application specifies a different list. The module names in the list can be separated using space, tab or comma. Default value is \fBfiles shadow\fR. .TP .B skeleton The directory containing files to copy to newly created home directories. Default value is \fB/etc/skel\fR. .SH \fB[import]\fR .TP .B login_defs A path to the .I login.defs file from \fBshadow\fR. If this variable is defined, the variables from the named file are used in place of some .B libuser variables. Variables explicitly defined in .I libuser.conf are not affected by contents of \fIlogin.defs\fR. The following variables are imported: .TS tab(,); l|l -|- lb|lb. Variable,Imported as ENCRYPT_METHOD,defaults/crypt_style GID_MIN,groupdefaults/LU_GIDNUMBER MAIL_DIR,defaults/mailspooldir MD5_CRYPT_ENAB,defaults/crypt_style PASS_MAX_DAYS,userdefaults/LU_SHADOWMAX PASS_MIN_DAYS,userdefaults/LU_SHADOWMIN PASS_WARN_AGE,userdefaults/LU_SHADOWWARNING SHA_CRYPT_MIN_ROUNDS,defaults/hash_rounds_min SHA_CRYPT_MAX_ROUNDS,defaults/hash_rounds_max UID_MIN,userdefaults/LU_UIDNUMBER .TE The following variables are .I not imported: \fBCREATE_HOME\fR, \fBGID_MAX\fR, \fBMAIL_FILE\fR, \fBSYSLOG_SG_ENAB\fR, \fBUID_MAX\fR, \fBUMASK\fR, \fBUSERDEL_CMD\fR, \fBUSERGROUPS_ENAB\fR .TP .B default_useradd A path to the .I default/useradd file from .B useradd in \fBshadow\fR. If this variable is defined, the variables from the named file are used in place of some .B libuser variables. Variables explicitly defined in .I libuser.conf are not affected by contents of \fIdefault/useradd\fR. The following variables are imported: .TS tab(,); l|l -|- lb|lb. Variable,Imported as EXPIRE,userdefaults/LU_SHADOWEXPIRE GROUP,userdefaults/LU_GIDNUMBER HOME,userdefaults/LU_HOMEDIRECTORY INACTIVE,userdefaults/LU_SHADOWINACTIVE SHELL,userdefaults/LU_LOGINSHELL SKEL,defaults/skeleton .TE The .B HOME variable value has .B /%n appended to it before importing. .SH \fB[userdefaults]\fR This section defines attribute values of newly created user entities. There is one special variable: .TP .B LU_UIDNUMBER A decimal number, the first allowed UID value for regular users (not system users). Default value is \fB500\fR. .P All other variables have the same names as the attribute names from \fB\fR and define attribute values. Either the macro name (e.g. \fBLU_GECOS\fR) or the macro content (e.g. \fBpw_gecos\fR) can be used; if both are used, the one appearing later in the configuration file is used. The .B % character in the value of the variable introduces an escape sequence: .B %n is replaced by the user name, .B %d is replaced by current date in days since the epoch, .B %u is replaced by the user's UID. There is no way to escape the .B % character and avoid this substitution. After the .B userdefaults section is processed, modules may define additional attributes or even override the attributes defined in this section. .SH \fB[groupdefaults]\fR The .B groupdefaults section is similar to \fBuserdefaults\fR. There is one special variable: .TP .B LU_GIDNUMBER A decimal number, the first allowed GID value for regular groups (not system groups). Default value is \fB500\fR. .P The other variables follow the same rules as in the .B userdefaults section, except that .B %n and .B %u are replaced by the group name and group's GID, respectively. After the .B groupdefaults section is processed, modules may define additional attributes or even override the attributes defined in this section. .SH \fB[files]\fR Configures the .B files module, which manages .I /etc/group and \fI/etc/passwd\fR. The configuration variables are probably useful only for .B libuser development. .TP .B directory The directory containing the .I group and .I passwd files. Default value is \fB/etc\fR. .TP .B nonroot Allow module initialization when not invoked as the .B root user if the value is \fByes\fR. .TP .B allow_id_duplicates Allow to use duplicate uid/gid.The default value is \fBno\fR. .SH \fB[shadow]\fR Configures the .B files module, which manages .I /etc/gshadow and \fI/etc/shadow\fR. The configuration variables are probably useful only for .B libuser development. .TP .B directory The directory containing the .I gshadow and .I shadow files. Default value is \fB/etc\fR. .TP .B nonroot Allow module initialization when not invoked as the .B root user if the value is \fByes\fR. .SH \fB[ldap]\fR Configures the .B ldap module, which manages an user database accessible using LDAP. .TP .B userBranch The LDAP suffix for user entities. Default value is \fBou=People\fR. .TP .B groupBranch The LDAP suffix for group entities. Default value is \fBou=Group\fR. .TP .B server A domain name or an URI of the LDAP server. The URI can use the \fBldap\fR, .B ldapi or the .B ldaps protocol. When a simple domain name is used, the connection fails if TLS can not be used; an URI using the .B ldap protocol allows connection without TLS. TLS is never used with the .B ldapi protocol. Default value is \fBldap\fR. .TP .B basedn The base DN of the server. Default value is \fBdc=example,dc=com\fR. .TP .B binddn A DN for binding to the server. If the value is empty or binding using this DN fails, a DN of \fBuid=\fIuser\fR,\fIuserBranch\fR,\fIbasedn\fR is used, where .I userBranch and .I basedn are variables from this section and .I user is the user name of the invoking user, unless overridden by the .B user variable from this section. Default value is \fBcn=manager,dc=example,dc=com\fR. .TP .B user The SASLv2 identity for authenticating to the LDAP server, also overrides the user name for generating a bind DN. Default value is the name of the invoking user. .TP .B password The password used for a simple bind by default. If not specified, there is no default and the user must supply the password each time. .B IT IS STRONGLY RECOMMENDED NOT TO STORE A PASSWORD IN THE SYSTEM-WIDE .I @sysconfdir@/libuser.conf .B FILE. The configuration file is world-readable by default, and setuid programs that prompt for a server name could be used to send the password to an attacker-controlled server. .TP .B authuser The SASLv2 authorization user, if non-empty. Default value is empty. .TP .B bindtype The list of bind types to use, separated by commas. Allowed bind types are \fBsimple\fR, \fBsasl\fR, and \fBsasl/\fImechanism\fR, where .I mechanism is a SASL mechanism. The bind types (but not necessarily \fImechanism\fR) are case-insensitive. If more than one bind type is specified, their relative order is ignored. Default value is \fBsimple,sasl\fR. .SH \fB[sasl]\fR Configures the .B sasl module, which manages a SASLv2 user database. .TP .B appname Name of the SASLv2 application. Default value is empty. .TP .B domain Domain used by libuser for the SASLv2 authentication object. Default value is empty. .SH BUGS Invalid lines in the configuration file (or the imported .B shadow configuration files) are silently ignored. .SH FILES .TP .I @sysconfdir@/libuser.conf The default location of the configuration file. Can be overridden by the .I LIBUSER_CONF environment variable, except in set-uid or set-gid programs. docs/reference/000077500000000000000000000000001471266067600137635ustar00rootroot00000000000000docs/reference/.cvsignore000066400000000000000000000002131471266067600157570ustar00rootroot00000000000000Makefile.in html html.stamp libuser.interfaces libuser.prerequisites libuser-unused.txt libuser-undocumented.txt sgml.stamp tmpl.stamp xml docs/reference/Makefile.am000066400000000000000000000057431471266067600160300ustar00rootroot00000000000000## Process this file with automake to produce Makefile.in # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=libuser # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level XML file. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/lib # Extra options to pass to gtkdoc-scangobj. Normally not needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS=--deprecated-guards=LU_DISABLE_DEPRECATED # Extra options to supply to gtkdoc-mkdb # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Normally not needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/lib/*.h CFILE_GLOB=$(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES=internal.h user_private.h # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.xml building.xml changes-2.0.xml content_files= # Files where gtk-doc abbrevations (#GtkWidget) are expanded # e.g. expand_content_files=running.xml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= GTKDOC_LIBS= # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(srcdir)/gtk-doc.make # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk docs/reference/libuser-docs.sgml000066400000000000000000000022111471266067600172360ustar00rootroot00000000000000 ]> libuser Reference Manual libuser API Index Index of deprecated API docs/reference/libuser-overrides.txt000066400000000000000000000000001471266067600201570ustar00rootroot00000000000000docs/reference/libuser-sections.txt000066400000000000000000000052121471266067600200160ustar00rootroot00000000000000
config lu_cfg_read lu_cfg_read_single lu_cfg_read_keys
value LU_VALUE_INVALID_ID lu_value_strdup lu_value_init_set_attr_from_string lu_value_init_set_id lu_value_get_id lu_values_equal
entity lu_ent lu_ent_t LU_USERNAME LU_USERPASSWORD LU_UIDNUMBER LU_GIDNUMBER LU_GECOS LU_HOMEDIRECTORY LU_LOGINSHELL LU_GROUPNAME LU_GROUPPASSWORD LU_MEMBERNAME LU_ADMINISTRATORNAME LU_SHADOWNAME LU_SHADOWPASSWORD LU_SHADOWLASTCHANGE LU_SHADOWMIN LU_SHADOWMAX LU_SHADOWWARNING LU_SHADOWINACTIVE LU_SHADOWEXPIRE LU_SHADOWFLAG LU_COMMONNAME LU_GIVENNAME LU_SN LU_ROOMNUMBER LU_TELEPHONENUMBER LU_HOMEPHONE LU_EMAIL lu_ent_new lu_ent_free lu_ent_copy lu_ent_commit lu_ent_revert lu_ent_add lu_ent_add_current lu_ent_clear lu_ent_clear_all lu_ent_clear_all_current lu_ent_clear_current lu_ent_del lu_ent_del_current lu_ent_dump lu_ent_get lu_ent_get_first_string lu_ent_get_first_string_current lu_ent_get_first_value_strdup lu_ent_get_first_value_strdup_current lu_ent_get_first_id lu_ent_get_first_id_current lu_ent_get_attributes lu_ent_get_attributes_current lu_ent_get_current lu_ent_has lu_ent_has_current lu_ent_set lu_ent_set_current lu_ent_set_string lu_ent_set_string_current lu_ent_set_id lu_ent_set_id_current lu_ent_set_long lu_ent_set_long_current
error lu_status lu_error lu_error_t LU_ERROR_CHECK lu_error_new lu_error_free lu_error_is_success lu_error_is_warning lu_error_is_error lu_strerror
fs lu_homedir_move lu_homedir_populate lu_homedir_remove lu_homedir_remove_for_user lu_homedir_remove_for_user_if_owned lu_mail_spool_create lu_mail_spool_remove LU_NSCD_CACHE_GROUP LU_NSCD_CACHE_PASSWD lu_nscd_flush_cache
prompt lu_prompt lu_prompt_console lu_prompt_console_quiet
user lu_entity_type lu_context lu_context_t lu_start lu_end lu_set_prompter lu_get_prompter lu_set_modules lu_get_modules lu_uses_elevated_privileges lu_user_lookup_name lu_user_lookup_id lu_user_default lu_user_add lu_user_modify lu_user_delete lu_user_setpass lu_user_removepass lu_user_lock lu_user_unlock lu_user_unlock_nonempty lu_user_islocked lu_users_enumerate lu_users_enumerate_by_group lu_users_enumerate_full lu_users_enumerate_by_group_full lu_group_lookup_name lu_group_lookup_id lu_group_default lu_group_add lu_group_modify lu_group_delete lu_group_setpass lu_group_removepass lu_group_lock lu_group_unlock lu_group_unlock_nonempty lu_group_islocked lu_groups_enumerate lu_groups_enumerate_by_user lu_groups_enumerate_full lu_groups_enumerate_by_user_full
docs/reference/libuser.types000066400000000000000000000000001471266067600165040ustar00rootroot00000000000000docs/sgml/000077500000000000000000000000001471266067600127675ustar00rootroot00000000000000docs/sgml/libuser.sgml000066400000000000000000000176531471266067600153340ustar00rootroot00000000000000
libuser 0.52.2 Nalin Dahyabhai 28 September 2004 This is the libuser administrator and programmer's guide. It first describes the motivation for the existence of this library, and then delves into the library interface used by both libuser modules and applications. Introduction

This section describes libuser: why it was written, and how it works. How the library is to be used will be described later. Motivation

When proper nsswitch functionality was introduced into glibc 2.0, it became possible to supply third-party facilities which would allow the standard C library (and by extension, all of a system's binaries) to pull information about users, protocols, and services from a variety of sources the glibc authors might not have anticipated.

The most common use for a new nsswitch module is supplementing the user and group databases, extending the data sources accessed over a network to a centrally-managed information store. This, along with the ability to authenticate users using networked servers (functionality provided by the increasingly-ubiquitous Linux-PAM library) and an enterprise-class networked filesystem, allows a properly-configured Linux workstation to participate as a full-fledged client in a large-scale network.

The facilities provided by PAM allow a user to log in and change her authentication tokens. The nsswitch interface allows any user (even unprivileged users like nobody) to look up information needed to run applications.

However, there are certain functions supplied by traditional isolated systems which such a networked workstation can't provide. Users have no method for modifying their non-essential information (chfn is broken), and the system administrator who previously had total power over the user and group databases must now perform all administration at the server using tools which are designed for general modification of the information store (hand-editing zone files for hesiod databases, ldapmodify, kadmin) instead of the traditionally-used tools. Alternative Solutions

The software which comes closest to meeting these needs is pwdb. However, the pwdb library has a few design limitations which make it unsuitable for this purpose. Like the standard files-based mechanisms, pwdb assumes that the superuser wields full power over the databases it interfaces with. The current version of pwdb provides no facilities for managing groups(?). The current version of pwdb can not be extended easily by third parties due to its reliance on static linking. The libuser Library

The libuser library implements a fully-modular system for reading, modifying, creating, and removing user and group accounts and account information. Modules which provide access to information stores can request information from the accessing user in order to authenticate to the information store. System Administration

This section describes libuser's configuration file and bundled applications which may be of use to system administrators. Configuration

The libuser configuration file is named libuser.conf and usually lives in /etc. Its format is the common format used by numerous other programs. Sections are marked by the section name enclosed in square brackets ([section]), and configuration directives within these sections are of the form key = value.

The defaults, userdefaults, and groupdefaults sections are used by the library itself. The defaults section specifies the directory where modules can be found (moduledir) and lists the modules to be consulted when looking up user information.

There are two lists of modules because libuser separates an account's authentication information from other information. This is done to allow different information stores to be used for these functions, and because some information stores can only hold authentication data (for example, shadow).

For the info_modules and auth_modules lists, order is only important for account creation -- the library will attempt to create a data entry for the user in each of the modules until one of them succeeds (so if you prefer new accounts to be created in your LDAP directory, then you'd make sure "ldap" was listed before "files"). For looking up account information, the order determines precedence because the library stops searching after a module returns success (so again, you'd want "ldap" listed before "files"). Account modifications and deletions go straight to the information store which is known to hold the user's information. Modules

Specific modules implement access to specific information stores. The modules included in the source distribution are the files and shadow modules. Modules can supply and manipulate either (or both) of two distinct types of data about a user: generic user information (the UID, home directory, etc.), and authentication-related information. files

The files module implements both information and authentication data stores using the standard passwd and group files.

This module uses the files section of the configuration file to store configuration data. It presently recognizes these flags: directory - the directory the passwd and group files are to be stored in shadow

The shadow module implements only an authentication data store using the shadow and the gshadow files. While the format of these files (and even the existence of the gshadow file) varies between OSs, this module supports the same file formats used by the shadow password suite.

This module uses the shadow section of the configuration file to store configuration data. It presently recognizes these flags: directory - the directory the shadow and gshadow files are to be stored in. ldap

The ldap module implements both information and authentication data stores using an LDAP directory and a schema which (should) conform to RFC2307. The module expects the client and server to support access using LDAPv3 with TLS; TLS is not required if the server is specified by URI.

This module uses the ldap section of the configuration file to store configuration data. It presently recognizes these flags: server - the hostname or URI of the LDAP server basedn - the distinguished name which is the root of your tree user - the user name with which to perform SASL binds authuser - the authorization user name with which to perform SASL binds binddn - the distinguished name to connect as for administrative access userBranch - the distinguished name (relative to the basedn) under which user account data is kept groupBranch - the distinguished name (relative to the basedn) under which group account data is kept Applications

Sample testbed applications which mimic the behavior of certain parts of the shadow password suite are included in the libuser distribution. To allow them to be used alongside existing utilities, their names have been prefixed with the letter 'l'.

As of this writing (version 0.7), this list of tools includes workalikes for useradd, usermod, userdel, groupadd, groupmod, groupdel, and chage. It should be noted that none of these tools provide a means for modifying the defaults they use, and no functions for creating, populating, moving, or deleting user home directories are implemented.

lib/000077500000000000000000000000001471266067600116435ustar00rootroot00000000000000lib/common.c000066400000000000000000000130311471266067600132750ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2008 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "config.h" #include #include #include #include "internal.h" #include "user_private.h" /* Populate the fields of a user structure with non-name, non-ID data. */ gboolean lu_common_user_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)is_system; (void)error; g_return_val_if_fail(name != NULL, FALSE); if (lu_ent_get(ent, LU_USERPASSWORD) == NULL) lu_ent_set_string(ent, LU_USERPASSWORD, LU_COMMON_DEFAULT_PASSWORD); if (lu_ent_get(ent, LU_SHADOWPASSWORD) == NULL) lu_ent_set_string(ent, LU_SHADOWPASSWORD, LU_COMMON_DEFAULT_PASSWORD); if (lu_ent_get(ent, LU_GECOS) == NULL) lu_ent_set_string(ent, LU_GECOS, name); if (lu_ent_get(ent, LU_HOMEDIRECTORY) == NULL && lu_ent_get(ent, LU_DUBIOUS_HOMEDIRECTORY) == NULL) { char *tmp; tmp = g_strdup_printf("/home/%s", name); if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) lu_ent_set_string(ent, LU_DUBIOUS_HOMEDIRECTORY, tmp); else lu_ent_set_string(ent, LU_HOMEDIRECTORY, tmp); g_free(tmp); } if (lu_ent_get(ent, LU_LOGINSHELL) == NULL) lu_ent_set_string(ent, LU_LOGINSHELL, LU_COMMON_DEFAULT_SHELL); return TRUE; } /* Populate the fields of a group structure with non-name, non-ID data. */ gboolean lu_common_group_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)is_system; (void)error; g_return_val_if_fail(name != NULL, FALSE); if (lu_ent_get(ent, LU_SHADOWPASSWORD) == NULL) lu_ent_set_string(ent, LU_SHADOWPASSWORD, LU_COMMON_DEFAULT_PASSWORD); return TRUE; } /* Populate the fields of a user structure with non-name, non-ID data. */ gboolean lu_common_suser_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)is_system; (void)error; g_return_val_if_fail(name != NULL, FALSE); if (lu_ent_get(ent, LU_SHADOWPASSWORD) == NULL) lu_ent_set_string(ent, LU_SHADOWPASSWORD, LU_COMMON_DEFAULT_PASSWORD); if (lu_ent_get(ent, LU_SHADOWLASTCHANGE) == NULL) lu_util_update_shadow_last_change(ent); if (lu_ent_get(ent, LU_SHADOWMIN) == NULL) lu_ent_set_long(ent, LU_SHADOWMIN, 0); if (lu_ent_get(ent, LU_SHADOWMAX) == NULL) lu_ent_set_long(ent, LU_SHADOWMAX, 99999); if (lu_ent_get(ent, LU_SHADOWWARNING) == NULL) lu_ent_set_long(ent, LU_SHADOWWARNING, 7); if (lu_ent_get(ent, LU_SHADOWINACTIVE) == NULL) lu_ent_set_long(ent, LU_SHADOWINACTIVE, -1); if (lu_ent_get(ent, LU_SHADOWEXPIRE) == NULL) lu_ent_set_long(ent, LU_SHADOWEXPIRE, -1); if (lu_ent_get(ent, LU_SHADOWFLAG) == NULL) lu_ent_set_long(ent, LU_SHADOWFLAG, -1); return TRUE; } gboolean lu_common_sgroup_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { g_return_val_if_fail(name != NULL, FALSE); return lu_common_group_default(module, name, is_system, ent, error); } #ifdef WITH_AUDIT static int audit_fd = 0; /* result - 1 is "success" and 0 is "failed" */ void lu_audit_logger(int type, const char *op, const char *name, unsigned int id, unsigned int result) { if (audit_fd == 0) { /* First time through */ audit_fd = audit_open(); if (audit_fd < 0) { /* You get these only when the kernel doesn't have * audit compiled in. */ if ( (errno == EINVAL) || (errno == EPROTONOSUPPORT) || (errno == EAFNOSUPPORT)) return; fputs("Cannot open audit interface - aborting.\n", stderr); exit(EXIT_FAILURE); } } if (audit_fd < 0) return; audit_log_acct_message(audit_fd, type, NULL, op, name, id, NULL, NULL, NULL, (int) result); } /* result - 1 is "success" and 0 is "failed" */ void lu_audit_logger_with_group (int type, const char *op, const char *name, unsigned int id, const char *grp, unsigned int result) { int len; char enc_group[(LOGIN_NAME_MAX*2)+1], buf[1024]; if (audit_fd == 0) { /* First time through */ audit_fd = audit_open(); if (audit_fd < 0) { /* You get these only when the kernel doesn't have * audit compiled in. */ if ( (errno == EINVAL) || (errno == EPROTONOSUPPORT) || (errno == EAFNOSUPPORT)) return; fputs("Cannot open audit interface - aborting.\n", stderr); exit(EXIT_FAILURE); } } if (audit_fd < 0) return; len = strnlen(grp, sizeof(enc_group)/2); if (audit_value_needs_encoding(grp, len)) { snprintf(buf, sizeof(buf), "%s grp=%s", op, audit_encode_value(enc_group, grp, len)); } else { snprintf(buf, sizeof(buf), "%s grp=\"%s\"", op, grp); } audit_log_acct_message(audit_fd, type, NULL, buf, name, id, NULL, NULL, NULL, (int) result); } #endif lib/config.c000066400000000000000000000472141471266067600132640ustar00rootroot00000000000000/* Copyright (C) 2000-2002, 2005, 2008 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include "user_private.h" #include "internal.h" /** * SECTION:config * @short_description: Routines for reading configuration information for the * libuser library. * @include: libuser/config.h * * These routines allow an application or module to read configuration data * from the libuser configuration. */ #if defined(HAVE_SECURE_GETENV) # define safe_getenv(string) secure_getenv(string) #elif defined(HAVE___SECURE_GETENV) # define safe_getenv(string) __secure_getenv(string) #else # error Neither secure_getenv not __secure_getenv are available #endif struct config_config { struct lu_string_cache *cache; GTree *sections; /* GList of "struct config_key" for each section */ }; /* A (key, values) pair. */ struct config_key { char *key; GList *values; }; /* Compare two section names */ static int compare_section_names(gconstpointer a, gconstpointer b) { return g_ascii_strcasecmp(a, b); } /* Compare a struct config_key to a string */ static int compare_key_string(gconstpointer xa, gconstpointer b) { const struct config_key *a; a = xa; return g_ascii_strcasecmp(a->key, b); } /* Return TRUE if section/key is defined. */ static gboolean key_defined(struct config_config *config, const char *section, const char *key) { GList *sect; /* NULL (empty list) if not found */ sect = g_tree_lookup(config->sections, section); return g_list_find_custom(sect, key, compare_key_string) != NULL; } /* Add value to section/key (all in config->cache). */ static void key_add_cached(struct config_config *config, char *section, char *key, char *value) { GList *sect, *k; struct config_key *ck; /* NULL (empty list) if not found */ sect = g_tree_lookup(config->sections, section); k = g_list_find_custom(sect, key, compare_key_string); if (k != NULL) ck = k->data; else { ck = g_malloc(sizeof (*ck)); ck->key = key; ck->values = NULL; sect = g_list_append(sect, ck); g_tree_insert(config->sections, section, sect); } if (g_list_index(ck->values, value) == -1) ck->values = g_list_append(ck->values, value); } /* Open a file and read it to memory, appending a terminating '\0'. Return data for g_free (), or NULL on error. */ static char * read_file(const char *filename, struct lu_error **error) { int fd; struct stat st; char *data, *dest; size_t left; /* Try to open the file. */ fd = open(filename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("could not open configuration file `%s': %s"), filename, strerror(errno)); goto err; } if (fstat(fd, &st) == -1) { lu_error_new(error, lu_error_stat, _("could not stat configuration file `%s': %s"), filename, strerror(errno)); goto err_fd; } /* Read the file's contents in. */ left = st.st_size; assert (sizeof (off_t) >= sizeof (size_t)); if ((off_t)left != st.st_size) { lu_error_new(error, lu_error_generic, _("configuration file `%s' is too large"), filename); goto err_fd; } data = g_malloc(st.st_size + 1); dest = data; while (left != 0) { ssize_t res; res = read(fd, dest, left); if (res == 0) break; if (res == -1) { if (errno == EINTR) continue; lu_error_new(error, lu_error_read, _("could not read configuration file " "`%s': %s"), filename, strerror(errno)); goto err_data; } dest += res; left -= res; } close(fd); *dest = 0; return data; err_data: g_free(data); err_fd: close(fd); err: return NULL; } /* Process a line, and assuming it contains a value, return the key and value * it provides us. If we encounter a section start, change the section. */ static void process_line(char *line, struct lu_string_cache *cache, char **section, char **key, char **value) { char *equals, *p, *tmp; g_return_if_fail(line != NULL); g_return_if_fail(cache != NULL); g_return_if_fail(section != NULL); g_return_if_fail(key != NULL); g_return_if_fail(value != NULL); /* By default, return that we found nothing. */ *key = NULL; *value = NULL; /* Skip initial whitespace. */ while (isspace((unsigned char)*line) && (*line != '\0')) line++; /* If it's a comment, bail. */ if (*line == '#') { return; } /* If it's the beginning of a section, process it and clear the key * and value values. */ if (*line == '[') { line++; p = strchr(line, ']'); if (p) { tmp = g_strndup(line, p - line); *section = cache->cache(cache, tmp); g_free(tmp); } return; } /* If the line contains a value, split the key and the value, trim off * any additional whitespace, and return them. */ equals = strchr(line, '='); if (equals != NULL) { /* Trim any trailing whitespace off the key name. */ for (p = equals; p != line && isspace((unsigned char)p[-1]); p--) ; /* Save the key. */ tmp = g_strndup(line, p - line); *key = cache->cache(cache, tmp); g_free(tmp); /* Skip over any whitespace after the equal sign. */ for (line = equals + 1; isspace((unsigned char)*line) && *line != '\0'; line++) ; /* Trim off any trailing whitespace. */ p = strchr(line, '\0'); while (p != line && isspace((unsigned char)p[-1])) p--; /* Save the value. */ tmp = g_strndup(line, p - line); *value = cache->cache(cache, tmp); g_free(tmp); } } /* Forward declarations */ static gboolean import_login_defs(struct config_config *config, const char *filename, struct lu_error **error); static gboolean import_default_useradd(struct config_config *config, const char *filename, struct lu_error **error); /* Initialize the configuration structure. */ gboolean lu_cfg_init(struct lu_context *context, struct lu_error **error) { const char *filename = SYSCONFDIR "/libuser.conf"; struct config_config *config; char *data, *line, *xstrtok_ptr, *section = NULL; g_assert(context != NULL); /* Allow the LIBUSER_CONF environment variable to override where * we get the configuration file is, but only if we can trust the * environment. */ if ((getuid() == geteuid()) && (getgid() == getegid())) { const char *t; t = safe_getenv("LIBUSER_CONF"); if (t != NULL) filename = t; } data = read_file(filename, error); if (data == NULL) goto err; /* Create a new structure to save the data. */ config = g_malloc0(sizeof(struct config_config)); config->cache = lu_string_cache_new(FALSE); config->sections = g_tree_new(compare_section_names); context->config = config; for (line = strtok_r(data, "\n", &xstrtok_ptr); line != NULL; line = strtok_r(NULL, "\n", &xstrtok_ptr)) { char *key = NULL, *value = NULL; /* See what this line contains. */ process_line(line, config->cache, §ion, &key, &value); if (section && key && value && strlen(section) && strlen(key)) key_add_cached(config, section, key, value); } g_free(data); filename = lu_cfg_read_single(context, "import/login_defs", NULL); if (filename != NULL) { if (import_login_defs(config, filename, error) == FALSE) goto err; } filename = lu_cfg_read_single(context, "import/default_useradd", NULL); if (filename != NULL) { if (import_default_useradd(config, filename, error) == FALSE) goto err; } return TRUE; err: return FALSE; } /* Deallocate xsection */ static gboolean destroy_section (gpointer xkey, gpointer xsection, gpointer data) { GList *section, *key; (void)xkey; (void)data; section = xsection; for (key = section; key != NULL; key = key->next) { struct config_key *ck; ck = key->data; g_list_free(ck->values); g_free(ck); } g_list_free(section); return FALSE; } /* Free a configuration context structure. */ void lu_cfg_done(struct lu_context *context) { struct config_config *config; g_assert(context != NULL); g_assert(context->config != NULL); config = context->config; g_tree_foreach(config->sections, destroy_section, NULL); /* The values in the tree now point to deallocated memory. */ g_tree_destroy(config->sections); config->cache->free(config->cache); g_free(config); context->config = NULL; } /** * lu_cfg_read: * @context: A valid libuser library context. * @key: The value to be read from the configuration. The key should be of the * form "section/key" for most purposes. For example, the #files module uses * keys of the form "files/foo" for all of its configuration data. * @default_value: A default value to be returned in case none are found. Can * be %NULL. * * Reads the list of values for a given key from the configuration space. * * Returns: A #GList of values, formatted as strings. The list must be freed * by calling g_list_free(). */ GList * lu_cfg_read(struct lu_context *context, const char *key, const char *default_value) { struct config_config *config; char *section, *slash; GList *sect, *ret = NULL, *k; g_assert(context != NULL); g_assert(context->config != NULL); g_assert(key != NULL); g_assert(strlen(key) > 0); config = context->config; slash = strchr(key, '/'); if (slash == NULL) goto end; section = g_strndup(key, slash - key); /* NULL (empty list) if not found */ sect = g_tree_lookup(config->sections, section); g_free(section); k = g_list_find_custom(sect, slash + 1, compare_key_string); if (k != NULL) { struct config_key *ck; ck = k->data; ret = g_list_copy(ck->values); } end: /* If we still don't have data, return the default answer. */ if (ret == NULL) { if (default_value != NULL) { char *def; def = context->scache->cache(context->scache, default_value); ret = g_list_append(ret, def); } } return ret; } /** * lu_cfg_read_keys: * @context: A valid libuser library context. * @parent_key: The parent key under which the caller wishes to know which * subkeys are present. * * Read the names of all of the keys in a specified section of the configuration * space. This function is typically used for walking the configuration space. * * Returns: A #GList of string representations of key names. The list must be * freed using g_list_free(). */ GList * lu_cfg_read_keys(struct lu_context * context, const char *parent_key) { struct config_config *config; GList *sect, *ret = NULL; g_assert(context != NULL); g_assert(context->config != NULL); g_assert(parent_key != NULL); g_assert(strlen(parent_key) > 0); config = context->config; /* NULL (empty list) if not found */ for (sect = g_tree_lookup(config->sections, parent_key); sect != NULL; sect = sect->next) { struct config_key *ck; ck = sect->data; ret = g_list_append(ret, ck->key); } return ret; } /** * lu_cfg_read_single: * @context: A valid libuser library context. * @key: The value to be read from the configuration. The key should be of the * form "section/key" for most purposes. For example, the #files module uses * keys of the form "files/foo" for all of its configuration data. * @default_value: A default value to be returned in case none are found. Can * be %NULL. * * Read a single value set for a given key in the configuration space. This is * a convenience function. Additional values, if any, will be ignored. * * Returns: A string representation of one of the values set for the key. This * string must not be freed. */ const char * lu_cfg_read_single(struct lu_context *context, const char *key, const char *default_value) { GList *answers; const char *ret; g_assert(context != NULL); g_assert(context->config != NULL); /* Read the whole list. */ answers = lu_cfg_read(context, key, NULL); if (answers && answers->data) { /* Save the first value, and free the list. */ ret = context->scache->cache(context->scache, answers->data); g_list_free(answers); } else ret = context->scache->cache(context->scache, default_value); return ret; } /* shadow config file compatibility */ /* Add value to section/key. */ static void key_add(struct config_config *config, const char *section, const char *key, const char *value) { struct lu_string_cache *cache; cache = config->cache; key_add_cached(config, cache->cache(cache, section), cache->cache(cache, key), cache->cache(cache, value)); } #define ATTR_DEFINED(CONFIG, SECTION, KEY) \ (key_defined(CONFIG, SECTION, KEY) || key_defined(CONFIG, SECTION, #KEY)) struct handle_login_defs_key_data { struct config_config *config; GHashTable *hash; /* login.defs key (char *) => value (char *) */ }; /* Convert a single /etc/login.defs key to config */ static void handle_login_defs_key(gpointer xkey, gpointer xvalue, gpointer xv) { static const struct conversion { gboolean number; const char *shadow, *section, *key, *key2; } conv[] = { /* ENCRYPT_METHOD values are upper-case, crypt_style values are case-insensitive. */ { FALSE, "ENCRYPT_METHOD", "defaults", "crypt_style", NULL }, { TRUE, "GID_MIN", "groupdefaults", LU_GIDNUMBER, G_STRINGIFY_ARG(LU_GIDNUMBER) }, { FALSE, "MAIL_DIR", "defaults", "mailspooldir", NULL }, { TRUE, "PASS_MAX_DAYS", "userdefaults", LU_SHADOWMAX, G_STRINGIFY_ARG(LU_SHADOWMAX) }, { TRUE, "PASS_MIN_DAYS", "userdefaults", LU_SHADOWMIN, G_STRINGIFY_ARG(LU_SHADOWMIN) }, { TRUE, "PASS_WARN_AGE", "userdefaults", LU_SHADOWWARNING, G_STRINGIFY_ARG(LU_SHADOWWARNING) }, { TRUE, "SHA_CRYPT_MIN_ROUNDS", "defaults", "hash_rounds_min", NULL }, { TRUE, "SHA_CRYPT_MAX_ROUNDS", "defaults", "hash_rounds_max", NULL }, { TRUE, "UID_MIN", "userdefaults", LU_UIDNUMBER, G_STRINGIFY_ARG(LU_UIDNUMBER) }, }; const char *key, *value; struct handle_login_defs_key_data *v; size_t i; value = xvalue; key = xkey; v = xv; /* This is the only case that requires value conversion */ if (strcmp (key, "MD5_CRYPT_ENAB") == 0) { if (g_hash_table_lookup(v->hash, "ENCRYPT_METHOD") == NULL && !key_defined(v->config, "defaults", "crypt_style")) key_add(v->config, "defaults", "crypt_style", g_ascii_strcasecmp(value, "yes") == 0 ? "md5" : "des"); return; } for (i = 0; i < G_N_ELEMENTS(conv); i++) { if (strcmp (key, conv[i].shadow) != 0) continue; if (!key_defined(v->config, conv[i].section, conv[i].key) && (conv[i].key2 == NULL || !key_defined(v->config, conv[i].section, conv[i].key2))) { /* We need roughly 0.3 characters per bit, this just is an obvious upper bound. */ char buf[sizeof(intmax_t) * CHAR_BIT + 1]; if (conv[i].number != 0) { intmax_t num; char *end; errno = 0; num = strtoimax(value, &end, 0); if (errno != 0 || *end != 0 || end == value) break; /* Ignore this invalid value */ snprintf(buf, sizeof(buf), "%jd", num); value = buf; } key_add(v->config, conv[i].section, conv[i].key, value); } break; } /* Unimplemented: CREATE_HOME, GID_MAX, MAIL_FILE, SYSLOG_SG_ENAB, UID_MAX, UMASK, USERDEL_CMD, USERGROUPS_ENAB */ } /* Import data from /etc/login.defs if libuser.conf doesn't specify the values. */ static gboolean import_login_defs(struct config_config *config, const char *filename, struct lu_error **error) { char *data, *line, *xstrtok_ptr; struct handle_login_defs_key_data v; data = read_file(filename, error); if (data == NULL) goto err; v.hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); for (line = strtok_r(data, "\n", &xstrtok_ptr); line != NULL; line = strtok_r(NULL, "\n", &xstrtok_ptr)) { char *p, *key, *value; while (*line == ' ' || *line == '\t') line++; if (*line == 0 || *line == '#') continue; p = strpbrk(line, " \t"); if (p == NULL) continue; key = g_strndup(line, p - line); for (line = p; *line == ' ' || *line == '\t' || *line == '"'; line++) ; /* Note that shadow doesn't require that the quotes are either both present or both absent. */ p = strchr(line, '"'); if (p == NULL) { for (p = strchr(line, '\0'); p != line && (p[-1] == ' ' || p[-1] == '\t'); p--) ; } value = g_strndup(line, p - line); /* May replace an older value if there are multiple definitions; that's what shadow does. */ g_hash_table_insert(v.hash, key, value); } g_free(data); v.config = config; g_hash_table_foreach(v.hash, handle_login_defs_key, &v); g_hash_table_destroy(v.hash); return TRUE; err: return FALSE; } /* Convert a single /etc/default/useradd to config */ static void handle_default_useradd_key(gpointer xkey, gpointer xvalue, gpointer xconfig) { const char *key, *value; struct config_config *config; value = xvalue; key = xkey; config = xconfig; if (strcmp(key, "EXPIRE") == 0) { if (!ATTR_DEFINED(config, "userdefaults", LU_SHADOWEXPIRE)) { intmax_t day; char buf[sizeof (day) * CHAR_BIT + 1]; if (*value == 0) day = -1; else { time_t t; t = lu_get_date(value, NULL); if (t == -1) day = -1; else day = (t + (24 * 3600) / 2) / (24 * 3600); } snprintf(buf, sizeof(buf), "%jd", day); key_add(config, "userdefaults", LU_SHADOWEXPIRE, buf); } } else if (strcmp(key, "GROUP") == 0) { if (!ATTR_DEFINED(config, "userdefaults", LU_GIDNUMBER)) { char buf[LINE_MAX * 4]; intmax_t val; char *p; int rv; errno = 0; val = strtoimax(value, &p, 10); if (errno != 0 || *p != 0 || p == value || (gid_t)val != val) { struct group grp, *g; rv = getgrnam_r(value, &grp, buf, sizeof(buf), &g); if (rv == 0 && g != NULL) value = g->gr_name; /* else ignore the entry */ } key_add(config, "userdefaults", LU_GIDNUMBER, value); } } else if (strcmp(key, "HOME") == 0) { if (!ATTR_DEFINED(config, "userdefaults", LU_HOMEDIRECTORY)) { char *dir; dir = g_strconcat(value, "/%n", NULL); key_add(config, "userdefaults", LU_HOMEDIRECTORY, dir); g_free(dir); } } else if (strcmp(key, "INACTIVE") == 0) { if (!ATTR_DEFINED(config, "userdefaults", LU_SHADOWINACTIVE)) key_add(config, "userdefaults", LU_SHADOWINACTIVE, value); } else if (strcmp(key, "SHELL") == 0) { if (!ATTR_DEFINED(config, "userdefaults", LU_LOGINSHELL)) key_add(config, "userdefaults", LU_LOGINSHELL, value); } else if (strcmp(key, "SKEL") == 0) { if (!key_defined(config, "defaults", "skeleton")) key_add(config, "defaults", "skeleton", value); } } static gboolean import_default_useradd(struct config_config *config, const char *filename, struct lu_error **error) { GHashTable *hash; char *data, *line, *xstrtok_ptr; data = read_file(filename, error); if (data == NULL) goto err; hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); for (line = strtok_r(data, "\n", &xstrtok_ptr); line != NULL; line = strtok_r(NULL, "\n", &xstrtok_ptr)) { char *p, *key, *value; p = strchr(line, '='); if (p == NULL) continue; key = g_strndup(line, p - line); value = g_strdup(p + 1); /* May replace an older value if there are multiple definitions; that's what shadow does. */ g_hash_table_insert(hash, key, value); } g_free(data); g_hash_table_foreach(hash, handle_default_useradd_key, config); g_hash_table_destroy(hash); return TRUE; err: return FALSE; } lib/config.h000066400000000000000000000022761471266067600132700ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef libuser_config_h #define libuser_config_h #include #include G_BEGIN_DECLS struct lu_context; GList *lu_cfg_read(struct lu_context *context, const char *key, const char *default_value); const char *lu_cfg_read_single(struct lu_context *context, const char *key, const char *default_value); GList *lu_cfg_read_keys(struct lu_context *context, const char *parent_key); G_END_DECLS #endif lib/entity.c000066400000000000000000000756551471266067600133450ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004, 2005 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "user_private.h" #include "internal.h" /** * SECTION:entity * @short_description: Functions for manipulating #lu_ent structures. * @include: libuser/error.h * * entity.h declares functions for manipulating #lu_ent * structures, which are used by libuser, its modules, and applications to hold * data about a particular user or group account. */ /** * lu_ent_new: * * Creates a new, empty struct #lu_ent. * * Returns: The created entity, which should be deallocated by lu_ent_free() */ struct lu_ent * lu_ent_new() { struct lu_ent *ent; ent = g_malloc0(sizeof(struct lu_ent)); ent->magic = LU_ENT_MAGIC; ent->cache = lu_string_cache_new(TRUE); ent->current = g_array_new(FALSE, TRUE, sizeof(struct lu_attribute)); ent->pending = g_array_new(FALSE, TRUE, sizeof(struct lu_attribute)); ent->modules = g_value_array_new(1); return ent; } struct lu_ent * lu_ent_new_typed(enum lu_entity_type entity_type) { struct lu_ent *ret; ret = lu_ent_new(); ret->type = entity_type; return ret; } /** * lu_ent_free: * @ent: The entity to free * * Frees an struct #lu_ent, including all strings it owns. */ void lu_ent_free(struct lu_ent *ent) { size_t i; struct lu_attribute *attr; g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); /* Free the cache. */ ent->cache->free(ent->cache); /* Free each current attribute. */ for (i = 0; i < ent->current->len; i++) { attr = &g_array_index(ent->current, struct lu_attribute, i); /* Free the values array in this attribute; the array free * will get the rest. */ g_value_array_free(attr->values); attr->name = 0; attr->values = NULL; } g_array_free(ent->current, TRUE); /* Free each pending attribute. */ for (i = 0; i < ent->pending->len; i++) { attr = &g_array_index(ent->pending, struct lu_attribute, i); /* Free the values array in this attribute; the array free * will get the rest. */ g_value_array_free(attr->values); attr->name = 0; attr->values = NULL; } g_array_free(ent->pending, TRUE); /* Free the module list. */ g_value_array_free(ent->modules); memset(ent, 0, sizeof(struct lu_ent)); g_free(ent); } /* Dump a set of attributes */ static void lu_ent_dump_attributes(GArray *attrs, FILE *fp) { size_t i; for (i = 0; i < attrs->len; i++) { struct lu_attribute *attribute; size_t j; attribute = &g_array_index(attrs, struct lu_attribute, i); for (j = 0; j < attribute->values->n_values; j++) { GValue *value; value = g_value_array_get_nth(attribute->values, j); fprintf(fp, " %s = ", g_quark_to_string(attribute->name)); if (G_VALUE_HOLDS_STRING(value)) fprintf(fp, "`%s'\n", g_value_get_string(value)); else if (G_VALUE_HOLDS_LONG(value)) fprintf(fp, "%ld\n", g_value_get_long(value)); else if (G_VALUE_HOLDS_INT64(value)) fprintf(fp, "%lld\n", (long long)g_value_get_int64(value)); else fprintf(fp, "???\n"); } } } /** * lu_ent_dump: * @ent: The entity to dump * @fp: Destination file * * Dumps a struct #lu_ent to a file in text form, for debugging. */ void lu_ent_dump(struct lu_ent *ent, FILE *fp) { size_t i; g_return_if_fail(ent != NULL); fprintf(fp, "dump of struct lu_ent at %p:\n", ent); fprintf(fp, " magic = %08x\n", ent->magic); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail((ent->type == lu_user) || (ent->type == lu_group)); switch (ent->type) { case lu_invalid: fprintf(fp, " type = invalid\n"); break; case lu_user: fprintf(fp, " type = user\n"); break; case lu_group: fprintf(fp, " type = group\n"); break; default: fprintf(fp, " type = UNKNOWN\n"); break; } /* Print the module list. */ fprintf(fp, " modules = ("); for (i = 0; i < ent->modules->n_values; i++) { GValue *value; value = g_value_array_get_nth(ent->modules, i); if (i > 0) fprintf(fp, ", "); if (G_VALUE_HOLDS_STRING(value)) fprintf(fp, "`%s'", g_value_get_string(value)); else fprintf(fp, "?"); } fprintf(fp, ")\n"); /* Print the current data values. */ lu_ent_dump_attributes(ent->current, fp); fprintf(fp, "\n"); lu_ent_dump_attributes(ent->pending, fp); } /* Add a module to the list of modules kept for this entity. */ void lu_ent_add_module(struct lu_ent *ent, const char *source) { size_t i; g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(ent->modules != NULL); for (i = 0; i < ent->modules->n_values; i++) { GValue *val; val = g_value_array_get_nth(ent->modules, i); /* We only add strings, so there had better be only strings * in this list, otherwise someone is messing with us. */ g_assert(G_VALUE_HOLDS_STRING(val)); if (strcmp(g_value_get_string(val), source) == 0) break; } /* If we fell of the end of the array, then the new value is not * in there, so we should add it. */ if (i >= ent->modules->n_values) { GValue value; /* Initialize a value with the string. */ memset(&value, 0, sizeof(value)); g_value_init(&value, G_TYPE_STRING); g_value_set_string(&value, source); g_value_array_append(ent->modules, &value); g_value_unset(&value); } } /* Clear the list of modules which affect this module, by freeing the array * we use to keep track of them and allocating a new one. */ void lu_ent_clear_modules(struct lu_ent *ent) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_value_array_free(ent->modules); ent->modules = g_value_array_new(1); } /* Remove all attributes from an object. This function takes the address * of whichever list we want cleared. */ static void clear_attribute_list(GArray *dest) { int i; for (i = dest->len - 1; i >= 0; i--) { struct lu_attribute *attr; attr = &g_array_index(dest, struct lu_attribute, i); g_value_array_free(attr->values); attr->values = NULL; g_array_remove_index_fast(dest, i); } } /* Copy all attributes from source to dest, wiping out whatever was already * in the destination array. */ static void copy_attributes(GArray *source, GArray *dest) { size_t i; /* First, clear the destination list of all attributes. */ clear_attribute_list(dest); /* Now copy all of the attributes and their values. */ for (i = 0; i < source->len; i++) { struct lu_attribute *attr, newattr; attr = &g_array_index(source, struct lu_attribute, i); /* Copy the attribute name, then its values, into the holding * area. */ memset(&newattr, 0, sizeof(newattr)); newattr.name = attr->name; newattr.values = g_value_array_copy(attr->values); /* Now append the attribute to the array. */ g_array_append_val(dest, newattr); } } /** * lu_ent_revert: * @ent: an entity * * Replaces all attributes with changes pending by their current values, * forgetting the pending changes. */ void lu_ent_revert(struct lu_ent *entity) { copy_attributes(entity->current, entity->pending); } /** * lu_ent_commit: * @ent: An entity * * Sets pending attribute changes as current values of the entity. */ void lu_ent_commit(struct lu_ent *entity) { copy_attributes(entity->pending, entity->current); } /** * lu_ent_copy: * @source: The entity to copy * @dest: The destination space, must be already allocated by lu_ent_new() * * Copies one struct #lu_ent over another. */ void lu_ent_copy(struct lu_ent *source, struct lu_ent *dest) { g_return_if_fail(source != NULL); g_return_if_fail(dest != NULL); g_return_if_fail(source->magic == LU_ENT_MAGIC); g_return_if_fail(dest->magic == LU_ENT_MAGIC); dest->type = source->type; copy_attributes(source->current, dest->current); copy_attributes(source->pending, dest->pending); g_value_array_free(dest->modules); dest->modules = g_value_array_copy(source->modules); } /* Return a GQark for lower-cased attribute */ static GQuark quark_from_attribute(const char *attribute) { GQuark quark; char *lower; lower = g_ascii_strdown(attribute, -1); quark = g_quark_from_string(lower); g_free(lower); return quark; } static GValueArray * lu_ent_get_int(GArray *list, const char *attribute) { GQuark aquark; size_t i; g_return_val_if_fail(list != NULL, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); aquark = quark_from_attribute(attribute); for (i = 0; i < list->len; i++) { struct lu_attribute *attr; attr = &g_array_index(list, struct lu_attribute, i); if (attr != NULL) { if (attr->name == aquark) { g_assert(attr->values != NULL); g_assert(attr->values->n_values > 0); return attr->values; } } } return NULL; } /* Return a read-only pointer to the first string value of ATTRIBUTE in LIST if any, or NULL if ATTRIBUTE doesn't exist or on error. */ static const char * lu_ent_get_first_string_int(GArray *list, const char *attribute) { GValueArray *vals; GValue *v; vals = lu_ent_get_int(list, attribute); if (vals == NULL) return NULL; v = g_value_array_get_nth(vals, 0); if (!G_VALUE_HOLDS_STRING(v)) return NULL; return g_value_get_string(v); } /* Return a string representation of the first value of ATTRIBUTE in LIST if any, or NULL if ATTRIBUTE doesn't exist or on error. The caller should call g_free() on the result. */ static char * lu_ent_get_first_value_strdup_int(GArray *list, const char *attribute) { GValueArray *vals; vals = lu_ent_get_int(list, attribute); if (vals == NULL) return NULL; return lu_value_strdup(g_value_array_get_nth(vals, 0)); } /* Return an id_t contents of the first value of ATTRIBUTE in LIST if any, or LU_VALUE_INVALID_ID if ATTRIBUTE doesn't exist or on error. */ static id_t lu_ent_get_first_id_int(GArray *list, const char *attribute) { GValueArray *vals; vals = lu_ent_get_int(list, attribute); if (vals == NULL) return LU_VALUE_INVALID_ID; return lu_value_get_id(g_value_array_get_nth(vals, 0)); } static gboolean lu_ent_has_int(GArray *list, const char *attribute) { g_return_val_if_fail(list != NULL, FALSE); g_return_val_if_fail(attribute != NULL, FALSE); g_return_val_if_fail(strlen(attribute) > 0, FALSE); return (lu_ent_get_int(list, attribute) != NULL) ? TRUE : FALSE; } static void lu_ent_clear_int(GArray *list, const char *attribute) { int i; struct lu_attribute *attr = NULL; GQuark aquark; g_return_if_fail(list != NULL); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); aquark = quark_from_attribute(attribute); for (i = list->len - 1; i >= 0; i--) { attr = &g_array_index(list, struct lu_attribute, i); if (attr->name == aquark) break; } if (i >= 0) { g_value_array_free(attr->values); attr->values = NULL; g_array_remove_index(list, i); } } /* Delete all existing values of ATTR in LIST and return a GValueArray to which new values should be appended. */ static GValueArray * lu_ent_set_prepare(GArray *list, const char *attr) { GValueArray *dest; dest = lu_ent_get_int(list, attr); if (dest == NULL) { struct lu_attribute newattr; memset(&newattr, 0, sizeof(newattr)); newattr.name = quark_from_attribute(attr); newattr.values = g_value_array_new(0); dest = newattr.values; g_array_append_val(list, newattr); } while (dest->n_values > 0) g_value_array_remove(dest, dest->n_values - 1); return dest; } static void lu_ent_set_int(GArray *list, const char *attr, const GValueArray *values) { GValueArray *dest, *copy; g_return_if_fail(list != NULL); g_return_if_fail(attr != NULL); g_return_if_fail(strlen(attr) > 0); if (values->n_values == 0) { lu_ent_clear_int(list, attr); return; } dest = lu_ent_set_prepare(list, attr); copy = g_value_array_copy(values); lu_util_append_values(dest, copy); g_value_array_free(copy); } /* Replace current value of ATTR in LIST with a single string VALUE */ static void lu_ent_set_string_int(GArray *list, const char *attr, const char *value) { GValueArray *dest; GValue v; g_return_if_fail(list != NULL); g_return_if_fail(attr != NULL); g_return_if_fail(strlen(attr) > 0); g_return_if_fail(value != NULL); dest = lu_ent_set_prepare(list, attr); memset(&v, 0, sizeof(v)); g_value_init(&v, G_TYPE_STRING); g_value_set_string(&v, value); g_value_array_append(dest, &v); g_value_unset(&v); } /* Replace current value of ATTR in LIST with a single id_t VALUE */ static void lu_ent_set_id_int(GArray *list, const char *attr, id_t value) { GValueArray *dest; GValue v; g_return_if_fail(list != NULL); g_return_if_fail(attr != NULL); g_return_if_fail(strlen(attr) > 0); g_return_if_fail(value != LU_VALUE_INVALID_ID); dest = lu_ent_set_prepare(list, attr); memset(&v, 0, sizeof(v)); lu_value_init_set_id(&v, value); g_value_array_append(dest, &v); g_value_unset(&v); } /* Replace current value of ATTR in LIST with a single long VALUE */ static void lu_ent_set_long_int(GArray *list, const char *attr, long value) { GValueArray *dest; GValue v; g_return_if_fail(list != NULL); g_return_if_fail(attr != NULL); g_return_if_fail(strlen(attr) > 0); dest = lu_ent_set_prepare(list, attr); memset(&v, 0, sizeof(v)); g_value_init(&v, G_TYPE_LONG); g_value_set_long(&v, value); g_value_array_append(dest, &v); g_value_unset(&v); } static void lu_ent_add_int(GArray *list, const char *attr, const GValue *value) { GValueArray *dest; size_t i; g_return_if_fail(list != NULL); g_return_if_fail(value != NULL); g_return_if_fail(attr != NULL); g_return_if_fail(strlen(attr) > 0); dest = lu_ent_get_int(list, attr); if (dest == NULL) { struct lu_attribute newattr; memset(&newattr, 0, sizeof(newattr)); newattr.name = quark_from_attribute(attr); newattr.values = g_value_array_new(1); dest = newattr.values; g_array_append_val(list, newattr); } for (i = 0; i < dest->n_values; i++) { GValue *current; current = g_value_array_get_nth(dest, i); if (G_VALUE_TYPE(value) == G_VALUE_TYPE(current) && lu_values_equal(value, current)) break; } if (i >= dest->n_values) g_value_array_append(dest, value); } static void lu_ent_clear_all_int(GArray *list) { clear_attribute_list(list); } static void lu_ent_del_int(GArray *list, const char *attr, const GValue *value) { GValueArray *dest; size_t i; g_return_if_fail(list != NULL); g_return_if_fail(value != NULL); g_return_if_fail(attr != NULL); g_return_if_fail(strlen(attr) > 0); dest = lu_ent_get_int(list, attr); if (dest != NULL) { for (i = 0; i < dest->n_values; i++) { GValue *tvalue; tvalue = g_value_array_get_nth(dest, i); if (G_VALUE_TYPE(value) == G_VALUE_TYPE(tvalue) && lu_values_equal(value, tvalue)) break; } if (i < dest->n_values) { g_value_array_remove(dest, i); if (dest->n_values == 0) lu_ent_clear_int(list, attr); } } } static GList * lu_ent_get_attributes_int(GArray *list) { size_t i; GList *ret = NULL; g_return_val_if_fail(list != NULL, NULL); for (i = 0; i < list->len; i++) { struct lu_attribute *attr; attr = &g_array_index(list, struct lu_attribute, i); ret = g_list_prepend(ret, (char*)g_quark_to_string(attr->name)); } return g_list_reverse(ret); } /** * lu_ent_get: * @ent: An entity * @attribute: Attribute name * * Returns values associated with a pending attribute in a struct #lu_ent. * * Returns: a #GValueArray of values, valid at least until they are modified or * deleted. The array is never empty and it should not be freed by the caller. * Returns %NULL if the attribute is not present at all or on error. */ GValueArray * lu_ent_get(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); return lu_ent_get_int(ent->pending, attribute); } /** * lu_ent_get_current: * @ent: An entity * @attribute: Attribute name * * Returns values associated with a current attribute in a struct #lu_ent. * * Returns: a #GValueArray of values, valid at least until they are modified or * deleted. The array is never empty and it should not be freed by the caller. * Returns %NULL if the attribute is not present at all or on error. */ GValueArray * lu_ent_get_current(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); return lu_ent_get_int(ent->current, attribute); } /** * lu_ent_get_first_string: * @ent: An entity * @attribute: Attribute name * * Returns the first string associated with a pending attribute in a struct * #lu_ent. * * Returns: a string pointer valid at least the value is modified or deleted if * the attribute is present and the first value is a string. Returns %NULL if * the attribute is not present, the first value is not a string, or on error. */ const char * lu_ent_get_first_string(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); return lu_ent_get_first_string_int(ent->pending, attribute); } /** * lu_ent_get_first_string_current: * @ent: An entity * @attribute: Attribute name * * Returns the first string associated with a current attribute in a struct * #lu_ent. * * Returns: a string pointer valid at least the value is modified or deleted if * the attribute is present and the first value is a string. Returns %NULL if * the attribute is not present, the first value is not a string, or on error. */ const char * lu_ent_get_first_string_current(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); return lu_ent_get_first_string_int(ent->current, attribute); } /** * lu_ent_get_first_value_strdup: * @ent: An entity * @attribute: Attribute name * * Returns a string representation (as if by lu_value_strdup()) of the first * value associated with a pending attribute in a struct #lu_ent. * * Returns: a string, should be freed by g_free() if the attribute is present. * Returns %NULL if the attribute is not present or on error. */ char * lu_ent_get_first_value_strdup(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); return lu_ent_get_first_value_strdup_int(ent->pending, attribute); } /** * lu_ent_get_first_value_strdup_current: * @ent: An entity * @attribute: Attribute name * * Returns a string representation (as if by lu_value_strdup()) of the first * value associated with a current attribute in a struct #lu_ent. * * Returns: a string, should be freed by g_free() if the attribute is present. * Returns %NULL if the attribute is not present or on error. */ char * lu_ent_get_first_value_strdup_current(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); g_return_val_if_fail(attribute != NULL, NULL); g_return_val_if_fail(strlen(attribute) > 0, NULL); return lu_ent_get_first_value_strdup_int(ent->current, attribute); } /** * lu_ent_get_first_id: * @ent: An entity * @attribute: Attribute name * * Returns the first #id_t value associated with a pending attribute in a struct * #lu_ent. * * Returns: ID value the attribute is present and can be converted into #id_t. * Returns %LU_VALUE_INVALID_ID if the attribute is not present, the first * value cannot be converted, or on error. */ id_t lu_ent_get_first_id(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, LU_VALUE_INVALID_ID); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, LU_VALUE_INVALID_ID); g_return_val_if_fail(attribute != NULL, LU_VALUE_INVALID_ID); g_return_val_if_fail(strlen(attribute) > 0, LU_VALUE_INVALID_ID); return lu_ent_get_first_id_int(ent->pending, attribute); } /** * lu_ent_get_first_id_current: * @ent: An entity * @attribute: Attribute name * * Returns the first #id_t value associated with a current attribute in a struct * #lu_ent. * * Returns: ID value the attribute is present and can be converted into #id_t. * Returns %LU_VALUE_INVALID_ID if the attribute is not present, the first * value cannot be converted, or on error. */ id_t lu_ent_get_first_id_current(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, LU_VALUE_INVALID_ID); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, LU_VALUE_INVALID_ID); g_return_val_if_fail(attribute != NULL, LU_VALUE_INVALID_ID); g_return_val_if_fail(strlen(attribute) > 0, LU_VALUE_INVALID_ID); return lu_ent_get_first_id_int(ent->current, attribute); } /** * lu_ent_has: * @ent: An entity * @attribute: Attribute name * * Checks if a struct #lu_ent has at least one pending attribute @attribute. * * Returns: %TRUE if @attribute has a value in @ent. */ gboolean lu_ent_has(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, FALSE); g_return_val_if_fail(attribute != NULL, FALSE); g_return_val_if_fail(strlen(attribute) > 0, FALSE); return lu_ent_has_int(ent->pending, attribute); } /** * lu_ent_has_current: * @ent: An entity * @attribute: Attribute name * * Checks if a struct #lu_ent has at least one current attribute @attribute. * * Returns: %TRUE if @attribute has a value in @ent. */ gboolean lu_ent_has_current(struct lu_ent *ent, const char *attribute) { g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, FALSE); g_return_val_if_fail(attribute != NULL, FALSE); g_return_val_if_fail(strlen(attribute) > 0, FALSE); return lu_ent_has_int(ent->current, attribute); } /** * lu_ent_set: * @ent: An entity * @attr: Attribute name * @values: An array of values * * Replaces all pending attributes @attr in a struct #lu_ent by a copy of * @values. If @values is empty, it removes the pending attribute completely. */ void lu_ent_set(struct lu_ent *ent, const char *attribute, const GValueArray *values) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_set_int(ent->pending, attribute, values); } /** * lu_ent_set_current: * @ent: An entity * @attr: Attribute name * @values: An array of values * * Replaces all current attributes @attr in a struct #lu_ent by a copy of * @values. If @values is empty, it removes the pending attribute completely. */ void lu_ent_set_current(struct lu_ent *ent, const char *attribute, const GValueArray *values) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_set_int(ent->current, attribute, values); } /** * lu_ent_set_string: * @ent: An entity * @attr: Attribute name * @value: A string * * Replaces all pending attributes @attr in a struct #lu_ent by a copy of * string @value. */ void lu_ent_set_string(struct lu_ent *ent, const char *attribute, const char *value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); g_return_if_fail(value != NULL); lu_ent_set_string_int(ent->pending, attribute, value); } /** * lu_ent_set_string_current: * @ent: An entity * @attr: Attribute name * @value: A string * * Replaces all current attributes @attr in a struct #lu_ent by a copy of * string @value. */ void lu_ent_set_string_current(struct lu_ent *ent, const char *attribute, const char *value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); g_return_if_fail(value != NULL); lu_ent_set_string_int(ent->current, attribute, value); } /** * lu_ent_set_id: * @ent: An entity * @attr: Attribute name * @value: An #id_t value * * Replaces all pending attributes @attr in a struct #lu_ent by an id_t @value. */ void lu_ent_set_id(struct lu_ent *ent, const char *attribute, id_t value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); g_return_if_fail(value != LU_VALUE_INVALID_ID); lu_ent_set_id_int(ent->pending, attribute, value); } /** * lu_ent_set_id_current: * @ent: An entity * @attr: Attribute name * @value: An #id_t value * * Replaces all current attributes @attr in a struct #lu_ent by an id_t @value. */ void lu_ent_set_id_current(struct lu_ent *ent, const char *attribute, id_t value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); g_return_if_fail(value != LU_VALUE_INVALID_ID); lu_ent_set_id_int(ent->current, attribute, value); } /** * lu_ent_set_long: * @ent: An entity * @attr: Attribute name * @value: A value * * Replaces all pending attributes @attr in a struct #lu_ent by a long @value. */ void lu_ent_set_long(struct lu_ent *ent, const char *attribute, long value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_set_long_int(ent->pending, attribute, value); } /** * lu_ent_set_long_current: * @ent: An entity * @attr: Attribute name * @value: A value * * Replaces all current attributes @attr in a struct #lu_ent by a long @value. */ void lu_ent_set_long_current(struct lu_ent *ent, const char *attribute, long value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_set_long_int(ent->current, attribute, value); } /** * lu_ent_add: * @ent: An entity * @attr: Attribute name * @value: New attribute value * * Appends @value to pending attribute @attr in a struct #lu_ent if @value is * not yet in the list of @attr values. */ void lu_ent_add(struct lu_ent *ent, const char *attribute, const GValue *value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_add_int(ent->pending, attribute, value); } /** * lu_ent_add_current: * @ent: An entity * @attr: Attribute name * @value: New attribute value * * Appends @value to current attribute @attr in a struct #lu_ent if @value is * not yet in the list of @attr values. */ void lu_ent_add_current(struct lu_ent *ent, const char *attribute, const GValue *value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_add_int(ent->current, attribute, value); } /** * lu_ent_clear: * @ent: An entity * @attr: Attribute name * * Removes all values of pending attribute @attribute from a struct #lu_ent. */ void lu_ent_clear(struct lu_ent *ent, const char *attribute) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_clear_int(ent->pending, attribute); } /** * lu_ent_clear_current: * @ent: An entity * @attr: Attribute name * * Removes all values of current attribute @attribute from a struct #lu_ent. */ void lu_ent_clear_current(struct lu_ent *ent, const char *attribute) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); lu_ent_clear_int(ent->current, attribute); } /** * lu_ent_clear_all: * @ent: an entity * * Removes all pending attributes from a struct #lu_ent. */ void lu_ent_clear_all(struct lu_ent *ent) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); lu_ent_clear_all_int(ent->pending); } /** * lu_ent_clear_all_current: * @ent: an entity * * Removes all current attributes from a struct #lu_ent. */ void lu_ent_clear_all_current(struct lu_ent *ent) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); lu_ent_clear_all_int(ent->current); } /** * lu_ent_del: * @ent: An entity * @attr: Attribute name * @value: Attribute value * * Removes a pending attribute @attr value @value from a struct #lu_ent, if * present. */ void lu_ent_del(struct lu_ent *ent, const char *attribute, const GValue *value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); g_return_if_fail(value != NULL); lu_ent_del_int(ent->pending, attribute, value); } /** * lu_ent_del_current: * @ent: An entity * @attr: Attribute name * @value: Attribute value * * Removes a current attribute @attr value @value from a struct #lu_ent, if * present. */ void lu_ent_del_current(struct lu_ent *ent, const char *attribute, const GValue *value) { g_return_if_fail(ent != NULL); g_return_if_fail(ent->magic == LU_ENT_MAGIC); g_return_if_fail(attribute != NULL); g_return_if_fail(strlen(attribute) > 0); g_return_if_fail(value != NULL); lu_ent_del_int(ent->current, attribute, value); } /** * lu_ent_get_attributes: * @ent: An entity * * Returns a list of all pending attributes in a struct #lu_ent. * * Returns: a #GList of attribute names. The list (but not the strings in the * list) should be freed by the caller. */ GList * lu_ent_get_attributes(struct lu_ent *ent) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); return lu_ent_get_attributes_int(ent->pending); } /** * lu_ent_get_attributes_current: * @ent: An entity * * Returns a list of all current attributes in a struct #lu_ent. * * Returns: a #GList of attribute names. The list (but not the strings in the * list) should be freed by the caller. */ GList * lu_ent_get_attributes_current(struct lu_ent *ent) { g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, NULL); return lu_ent_get_attributes_int(ent->current); } lib/entity.h000066400000000000000000000213161471266067600133330ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef libuser_entity_h #define libuser_entity_h #include #include #include #include G_BEGIN_DECLS /** * lu_ent: * * An opaque structure used to hold data about a particular user or group * account. * * Each struct lu_ent contains two sets of attributes: pending and current. * The pending attributes are modified by default, the current attributes are * modified by functions ending with _current. * * Each attribute contains a list of values. The list is never empty; removing * the last entry from the list removes the list completely. */ struct lu_ent; #ifndef LU_DISABLE_DEPRECATED /** * lu_ent_t: * * An alias for struct #lu_ent. * Deprecated: 0.57.3: Use struct #lu_ent directly. */ typedef struct lu_ent lu_ent_t; #endif /* Attributes carried by all user structures. */ /** * LU_USERNAME: * * User name, a %G_TYPE_STRING. */ #define LU_USERNAME "pw_name" /** * LU_USERPASSWORD: * * User password, a %G_TYPE_STRING. If shadow passwords are used, this is the * placeholder password. * * Don't modify passwords by changing this attribute directly, use one of the * specialized functions. */ #define LU_USERPASSWORD "pw_passwd" /** * LU_UIDNUMBER: * * User ID, an #id_t. */ #define LU_UIDNUMBER "pw_uid" /** * LU_GIDNUMBER: * * Group ID, an #id_t. */ #define LU_GIDNUMBER "pw_gid" /** * LU_GECOS: * * Usually user's real name, a %G_TYPE_STRING. Often contains user's real name, * office name, office phone, home phone, separated by commas. */ #define LU_GECOS "pw_gecos" /** * LU_HOMEDIRECTORY: * * User's home directory, a %G_TYPE_STRING. */ #define LU_HOMEDIRECTORY "pw_dir" /** * LU_LOGINSHELL: * * User's login shell, a %G_TYPE_STRING. */ #define LU_LOGINSHELL "pw_shell" /* Attributes carried by group structures. */ /** * LU_GROUPNAME: * * Group name, a %G_TYPE_STRING. */ #define LU_GROUPNAME "gr_name" /** * LU_GROUPPASSWORD: * * Group password, a %G_TYPE_STRING. * * Don't modify passwords by changing this attribute directly, use one of the * specialized functions. */ #define LU_GROUPPASSWORD "gr_passwd" /* #define LU_GIDNUMBER "gr_gid" */ /** * LU_MEMBERNAME: * * Group member names; each member is represented by a separate %G_TYPE_STRING * value. */ #define LU_MEMBERNAME "gr_mem" /** * LU_ADMINISTRATORNAME: * * Group administrator names; each administrator is represented by a separate * %G_TYPE_STRING value. */ #define LU_ADMINISTRATORNAME "gr_adm" /* Attributes carried by shadow user structures. */ /** * LU_SHADOWNAME: * * User name, a %G_TYPE_STRING. Note that %LU_SHADOWNAME is not distinct from * %LU_USERNAME. */ #define LU_SHADOWNAME LU_USERNAME /** * LU_SHADOWPASSWORD: * * User password in the shadow file, a %G_TYPE_STRING. * * Don't modify passwords by changing this attribute directly, use one of the * specialized functions. */ #define LU_SHADOWPASSWORD "sp_pwdp" /** * LU_SHADOWLASTCHANGE: * * The number of days since the epoch to the day when the password was last * changed, a %G_TYPE_LONG. * * May be -1 to indicate that the field exists without a value. This should be * handled the same as if the attribute was missing altogether, and consistently * with shadow(5). */ #define LU_SHADOWLASTCHANGE "sp_lstchg" /** * LU_SHADOWMIN: * * Minimum password lifetime in days before it can be changed, a %G_TYPE_LONG. * * May be -1 to indicate that the field exists without a value. This should be * handled the same as if the attribute was missing altogether, and consistently * with shadow(5). */ #define LU_SHADOWMIN "sp_min" /** * LU_SHADOWMAX: * * Maximum password lifetime in days before it must be changed, a %G_TYPE_LONG. * * May be -1 to indicate that the field exists without a value. This should be * handled the same as if the attribute was missing altogether, and consistently * with shadow(5). */ #define LU_SHADOWMAX "sp_max" /** * LU_SHADOWWARNING: * * Days before the password lifetime expires when the user should start to be * warned, a %G_TYPE_LONG. * * May be -1 to indicate that the field exists without a value. This should be * handled the same as if the attribute was missing altogether, and consistently * with shadow(5). */ #define LU_SHADOWWARNING "sp_warn" /** * LU_SHADOWINACTIVE: * * Days after the password lifetime expires when the user account is disabled * (because it is considered inactive), a %G_TYPE_LONG. -1 to disable inactive * account disabling. */ #define LU_SHADOWINACTIVE "sp_inact" /** * LU_SHADOWEXPIRE: * * The number of days since the epoch to the day when the account expires and * is disabled, a %G_TYPE_LONG. -1 to disable account expiration. */ #define LU_SHADOWEXPIRE "sp_expire" /** * LU_SHADOWFLAG: * * A reserved value "for future use", a %G_TYPE_LONG. In most cases the value * is -1. */ #define LU_SHADOWFLAG "sp_flag" /* Additional fields carried by some structures. If they have them, * it's safe to change them. */ /** * LU_COMMONNAME: * * User's real name, a %G_TYPE_STRING. */ #define LU_COMMONNAME "cn" /** * LU_GIVENNAME: * * User's given name, a %G_TYPE_STRING. */ #define LU_GIVENNAME "givenName" /** * LU_SN: * * User's surname, a %G_TYPE_STRING. */ #define LU_SN "sn" /** * LU_ROOMNUMBER: * * User's room number, a %G_TYPE_STRING. */ #define LU_ROOMNUMBER "roomNumber" /** * LU_TELEPHONENUMBER: * * User's telephone number, a %G_TYPE_STRING. */ #define LU_TELEPHONENUMBER "telephoneNumber" /** * LU_HOMEPHONE: * * User's home telephone number, a %G_TYPE_STRING. */ #define LU_HOMEPHONE "homePhone" /** * LU_EMAIL: * * User's email address, a %G_TYPE_STRING. */ #define LU_EMAIL "mail" struct lu_ent *lu_ent_new(void); void lu_ent_free(struct lu_ent *ent); void lu_ent_copy(struct lu_ent *source, struct lu_ent *dest); void lu_ent_revert(struct lu_ent *ent); void lu_ent_commit(struct lu_ent *ent); GValueArray *lu_ent_get_current(struct lu_ent *ent, const char *attribute); const char *lu_ent_get_first_string_current(struct lu_ent *ent, const char *attribute); char *lu_ent_get_first_value_strdup_current(struct lu_ent *ent, const char *attribute); id_t lu_ent_get_first_id_current(struct lu_ent *ent, const char *attribute); gboolean lu_ent_has_current(struct lu_ent *ent, const char *attribute); void lu_ent_set_current(struct lu_ent *ent, const char *attr, const GValueArray *values); void lu_ent_set_string_current(struct lu_ent *ent, const char *attr, const char *value); void lu_ent_set_id_current(struct lu_ent *ent, const char *attr, id_t value); void lu_ent_set_long_current(struct lu_ent *ent, const char *attr, long int value); void lu_ent_add_current(struct lu_ent *ent, const char *attr, const GValue *value); void lu_ent_clear_current(struct lu_ent *ent, const char *attr); void lu_ent_clear_all_current(struct lu_ent *ent); void lu_ent_del_current(struct lu_ent *ent, const char *attr, const GValue *value); GList *lu_ent_get_attributes_current(struct lu_ent *ent); GValueArray *lu_ent_get(struct lu_ent *ent, const char *attribute); const char *lu_ent_get_first_string(struct lu_ent *ent, const char *attribute); char *lu_ent_get_first_value_strdup(struct lu_ent *ent, const char *attribute); id_t lu_ent_get_first_id(struct lu_ent *ent, const char *attribute); gboolean lu_ent_has(struct lu_ent *ent, const char *attribute); void lu_ent_set(struct lu_ent *ent, const char *attr, const GValueArray *values); void lu_ent_set_string(struct lu_ent *ent, const char *attr, const char *value); void lu_ent_set_id(struct lu_ent *ent, const char *attr, id_t value); void lu_ent_set_long(struct lu_ent *ent, const char *attr, long int value); void lu_ent_add(struct lu_ent *ent, const char *attr, const GValue *value); void lu_ent_clear(struct lu_ent *ent, const char *attr); void lu_ent_clear_all(struct lu_ent *ent); void lu_ent_del(struct lu_ent *ent, const char *attr, const GValue *value); GList *lu_ent_get_attributes(struct lu_ent *ent); void lu_ent_dump(struct lu_ent *ent, FILE *fp); G_END_DECLS #endif lib/error.c000066400000000000000000000146331471266067600131470ustar00rootroot00000000000000/* Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include "user.h" #include "user_private.h" /** * SECTION:error * @short_description: Functions for allocating and manipulating #lu_error * structures. * @include: libuser/error.h * * error.h includes declarations for allocating and * manipulating #lu_error structures. These structures hold error and status * information passed between libuser, its modules, and applications. * * A struct #lu_error contains an error code and a human-readable, possibly * translated error string. The error string uses the encoding specified by * the %LC_CTYPE locale category. */ /** * lu_strerror: * @error: An error * * Converts an #lu_error structure to a string describing the error. If the * @error->string is %NULL, returns a text representation of @error->code. * * Returns: An error string valid at least until @error is freed. */ const char * lu_strerror(struct lu_error *error) { if (error != NULL) { if (error->string != NULL) { return error->string; } switch (error->code) { case lu_success: return _("success"); case lu_warning_config_disabled: return _("module disabled by configuration"); case lu_error_generic: return _("generic error"); case lu_error_privilege: return _("not enough privileges"); case lu_error_access_denied: return _("access denied"); case lu_error_name_bad: return _("bad user/group name"); case lu_error_id_bad: return _("bad user/group id"); case lu_error_name_used: return _("user/group name in use"); case lu_error_id_used: return _("user/group id in use"); case lu_error_terminal: return _("error manipulating terminal attributes"); case lu_error_open: return _("error opening file"); case lu_error_lock: return _("error locking file"); case lu_error_stat: return _("error statting file"); case lu_error_read: return _("error reading file"); case lu_error_write: return _("error writing to file"); case lu_error_search: return _("data not found in file"); case lu_error_init: return _("internal initialization error"); case lu_error_module_load: return _("error loading module"); case lu_error_module_sym: return _("error resolving symbol in module"); case lu_error_module_version: return _("library/module version mismatch"); case lu_error_unlock_empty: return _("unlocking would make the password " "field empty"); case lu_error_invalid_attribute_value: return _("invalid attribute value"); case lu_error_invalid_module_combination: return _("invalid module combination"); case lu_error_homedir_not_owned: return _("user's home directory not owned by " "them"); default: break; } } return _("unknown error"); } /** * lu_error_is_success: * @status: An error code * * Check if the error code held by an error structure is a success code. * * Returns: a #gboolean indicating whether or not the error is a success code. */ gboolean lu_error_is_success(enum lu_status status) { switch (status) { case lu_success: return TRUE; default: return FALSE; } } /** * lu_error_is_warning: * @status: An error code * * Check if the error code held by an error structure is a warning code. * * Returns: a #gboolean indicating whether or not the error is a warning code. */ gboolean lu_error_is_warning(enum lu_status status) { switch (status) { case lu_warning_config_disabled: return TRUE; default: return FALSE; } } /** * lu_error_is_error: * @status: An error code * * Check if the error code held by an error structure is an error code. * * Returns: a #gboolean indicating whether or not the error is an error code. */ gboolean lu_error_is_error(enum lu_status status) { switch (status) { case lu_error_generic: case lu_error_privilege: case lu_error_access_denied: case lu_error_name_bad: case lu_error_id_bad: case lu_error_name_used: case lu_error_id_used: case lu_error_terminal: case lu_error_open: case lu_error_lock: case lu_error_stat: case lu_error_read: case lu_error_write: case lu_error_search: case lu_error_init: case lu_error_module_load: case lu_error_module_sym: case lu_error_module_version: case lu_error_unlock_empty: case lu_error_invalid_attribute_value: case lu_error_invalid_module_combination: case lu_error_homedir_not_owned: return TRUE; default: return FALSE; } } /** * lu_error_new: * @error: A pointer to a struct #lu_error * which will hold the newly-created * error structure. It must point to #NULL before calling this function. * @code: An error code * @fmt: Format string describing the error. If #NULL, a default string is used. * @...: Arguments for @fmt, if necessary * * Creates a new #lu_error structure. */ void lu_error_new(struct lu_error **error, enum lu_status code, const char *fmt, ...) { if (error != NULL) { struct lu_error *ret; g_assert(*error == NULL); ret = g_malloc0(sizeof(struct lu_error)); ret->code = code; if (fmt != NULL) { va_list args; va_start(args, fmt); ret->string = g_strdup_vprintf(fmt, args); va_end(args); } else ret->string = g_strdup(lu_strerror(ret)); *error = ret; } } /** * lu_error_free: * @error: A pointer to a pointer to the structure to be freed. The pointer is * set to %NULL after the error is freed. * * Frees an #lu_error structure. */ void lu_error_free(struct lu_error **error) { if (error != NULL) { g_free((*error)->string); memset(*error, 0, sizeof(**error)); g_free(*error); *error = NULL; } } lib/error.h000066400000000000000000000114151471266067600131470ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef libuser_error_h #define libuser_error_h #include #include #include G_BEGIN_DECLS /** * lu_status: * @lu_success: Success. * @lu_warning_config_disabled: Module disabled by configuration. * @lu_error_generic: Generic error. * @lu_error_privilege: Not enough privileges. * @lu_error_access_denied: Access denied. * @lu_error_name_bad: Bad user/group name. * @lu_error_id_bad: Bad user/group id. * @lu_error_name_used: User/group name in use. * @lu_error_id_used: User/group id in use. * @lu_error_terminal: Error manipulating terminal attributes. * @lu_error_open: Error opening file. * @lu_error_lock: Error locking file. * @lu_error_stat: Error statting file. * @lu_error_read: Error reading file. * @lu_error_write: Error writing to file. * @lu_error_search: Data not found in file. * @lu_error_init: Internal initialization error. * @lu_error_module_load: Error loading module. * @lu_error_module_sym: Error resolving symbol in module. * @lu_error_module_version: Library/module version mismatch. * @lu_error_unlock_empty: Unlocking would make the password field empty. * Since: 0.53 * @lu_error_invalid_attribute_value: Invalid attribute value. * Since: 0.56 * @lu_error_invalid_module_combination: Invalid module combination. * Since: 0.57 * @lu_error_homedir_not_owned: User's home directory not owned by them. * Since: 0.60 * * Program-readable error/status codes. Note that new ones may be added in the * future, even for existing operations. */ enum lu_status { /* Non-fatal. */ lu_success = 0, lu_warning_config_disabled, /* Fatal. */ lu_error_generic, lu_error_privilege, lu_error_access_denied, /* Data validation errors. */ lu_error_name_bad, lu_error_id_bad, lu_error_name_used, lu_error_id_used, /* Terminal manipulation errors. */ lu_error_terminal, /* File I/O errors. */ lu_error_open, lu_error_lock, lu_error_stat, lu_error_read, lu_error_write, lu_error_search, /* Initialization or module-loading errors. */ lu_error_init, lu_error_module_load, lu_error_module_sym, lu_error_module_version, /* Since 0.53 */ lu_error_unlock_empty, /* Since 0.56 */ lu_error_invalid_attribute_value, /* Since 0.57 */ lu_error_invalid_module_combination, /* Since 0.60 */ lu_error_homedir_not_owned, }; #ifndef __GTK_DOC_IGNORE__ #ifndef LU_DISABLE_DEPRECATED typedef enum lu_status lu_status_t; #endif #endif /** * lu_error: * @code: A program-readable error code. * @string: A human-readable, possibly translated error string. The error * string uses the encoding specified by the %LC_CTYPE locale category. * * Error and status information. */ struct lu_error { enum lu_status code; char *string; }; #ifndef LU_DISABLE_DEPRECATED /** * lu_error_t: * * An alias for struct #lu_error. * Deprecated: 0.57.3: Use struct #lu_error directly. */ typedef struct lu_error lu_error_t; #endif /** * LU_ERROR_CHECK: * @err_p_p: A pointer to a struct #lu_error * which will be checked. * * Checks that the given pointer to a pointer to a struct does not already * point to a valid #lu_error structure, and calls abort() on failure. This * macro is used by many internal functions to check that an error has not * already occurred when they are invoked. */ #define LU_ERROR_CHECK(err_p_p) \ do { \ struct lu_error **__err = (err_p_p); \ if ((__err == NULL) || (*__err != NULL)) { \ if(__err == NULL) { \ fprintf(stderr, "libuser fatal error: %s() called with NULL " #err_p_p "\n", __FUNCTION__); \ } else \ if(*__err != NULL) { \ fprintf(stderr, "libuser fatal error: %s() called with non-NULL *" #err_p_p "\n", __FUNCTION__); \ } \ abort(); \ } \ } while(0) void lu_error_new(struct lu_error **error, enum lu_status code, const char *fmt, ...) G_GNUC_PRINTF(3, 4); const char *lu_strerror(struct lu_error *error); gboolean lu_error_is_success(enum lu_status status); gboolean lu_error_is_warning(enum lu_status status); gboolean lu_error_is_error(enum lu_status status); void lu_error_free(struct lu_error **error); G_END_DECLS #endif lib/fs.c000066400000000000000000001017601471266067600124240ustar00rootroot00000000000000/* Copyright (C) 2000-2002, 2004, 2005, 2006, 2007, 2012 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "error.h" #include "fs.h" #include "user.h" #include "user_private.h" /** * SECTION:fs * @short_description: Utilities for modifying the file system and other * aspects of user/group management. * @include: libuser/fs.h * * These routines allow an application to work with home directories, mail * spools and nscd caches. */ /* Return current umask value */ static mode_t current_umask(void) { mode_t value; value = umask(S_IRWXU | S_IRWXG | S_IRWXO); umask(value); return value; } /* What should the ownership and permissions of the copied files be? */ struct copy_access_options { /* Preserve ownership and permissions of the original unmodified; otherwise, use matchpathcon() for SELinux contexts and apply the following fields.. */ gboolean preserve_source; uid_t uid; /* UID to use for the copy if !preserve_source. */ /* GID to use for the copy if !preserve_source and original is owned by GID 0. */ gid_t gid; mode_t umask; /* umask to apply to modes if !preserve_source */ }; /* Return an UID appropriate for a copy of ST given OPTIONS. */ static uid_t uid_for_copy(const struct copy_access_options *options, const struct stat *st) { if (options->preserve_source) return st->st_uid; return options->uid; } /* Return a GID appropriate for a copy of ST given OPTIONS. */ static gid_t gid_for_copy(const struct copy_access_options *options, const struct stat *st) { if (options->preserve_source) return st->st_gid; if (st->st_gid != 0) /* Skeleton wants us to us a different group */ return st->st_gid; return options->gid; } /* Return a mode_t value appropriate for a copy of ST given OPTIONS. */ static mode_t mode_for_copy(const struct copy_access_options *options, const struct stat *st) { if (options->preserve_source) return st->st_mode; return st->st_mode & ~options->umask; } /* Copy symlink SYMLINK_NAME in SRC_DIR_FD, which corresponds to SRC_PATH, to SYMLINK_NAME in DEST_DIR_FD, which corresponds to DEST_PATH. Use ACCESS_OPTIONS. Use SRC_STAT for data about SRC_PATH. On return from this function, SELinux fscreate context is unspecified. Note that SRC_PATH should only be used for error messages, not to access the files; if the user is still logged in, a directory in the path may be replaced by a symbolic link, redirecting the access outside of SRC_DIR_FD/SYMLINK_NAME. Likewise for DEST_*. */ static gboolean copy_symlink(int src_dir_fd, const char *src_path, int dest_dir_fd, const char *dest_path, const char *symlink_name, const struct stat *src_stat, const struct copy_access_options *access_options, struct lu_error **error) { char buf[PATH_MAX]; ssize_t len; struct timespec timebuf[2]; LU_ERROR_CHECK(error); /* In the worst case here, we end up with a wrong SELinux context for a symbolic link due to a path name lookup race. That's unfortunate, but symlink contents are more or less public anyway... (A possible improvement would be to use Linux-only O_PATH to open src_path first, then see if it is a symlink, and "upgrade" to an O_RDONLY if not. But O_PATH is available only in Linux >= 2.6.39.) The symlinkat()/fchownat()/utimensat() calls are also not safe against an user meddling; we might be able to ensure the fchownat()/utimensat() are done on the same file using O_PATH again, but symlinkat()/the rest is definitely unatomic. Rely on having an unwritable the parent directory, same as in the mkdirat()/openat() case of lu_homedir_copy_and_close(). */ if (access_options->preserve_source) { if (!lu_util_fscreate_from_lfile(src_path, error)) return FALSE; } else if (!lu_util_fscreate_for_path(dest_path, src_stat->st_mode & S_IFMT, error)) return FALSE; len = readlinkat(src_dir_fd, symlink_name, buf, sizeof(buf) - 1); if (len == -1) { lu_error_new(error, lu_error_generic, _("Error reading `%s': %s"), src_path, strerror(errno)); return FALSE; } buf[len] = '\0'; if (symlinkat(buf, dest_dir_fd, symlink_name) == -1) { lu_error_new(error, lu_error_generic, _("Error creating `%s': %s"), dest_path, strerror(errno)); return FALSE; } if (fchownat(dest_dir_fd, symlink_name, uid_for_copy(access_options, src_stat), gid_for_copy(access_options, src_stat), AT_SYMLINK_NOFOLLOW) == -1 && errno != EPERM && errno != EOPNOTSUPP) { lu_error_new(error, lu_error_generic, _("Error changing owner of `%s': %s"), dest_path, strerror(errno)); return FALSE; } timebuf[0] = src_stat->st_atim; timebuf[1] = src_stat->st_mtim; utimensat(dest_dir_fd, symlink_name, timebuf, AT_SYMLINK_NOFOLLOW); return TRUE; } /* Copy SRC_FD, which corresponds to SRC_PATH, to DEST_NAME in DEST_DIR_FD, which corresponds to DEST_PATH. Use ACCESS_OPTIONS. Use SRC_STAT for data about SRC_PATH. On return from this function, SELinux fscreate context is unspecified. Note that SRC_PATH should only be used for error messages, not to access the files; if the user is still logged in, a directory in the path may be replaced by a symbolic link, redirecting the access outside of SRC_FD. Likewise for DEST_*. */ static gboolean copy_regular_file(int src_fd, const char *src_path, int dest_dir_fd, const char *dest_name, const char *dest_path, const struct stat *src_stat, const struct copy_access_options *access_options, struct lu_error **error) { int dest_fd; struct timespec timebuf[2]; gboolean ret = FALSE; LU_ERROR_CHECK(error); if (access_options->preserve_source) { if (!lu_util_fscreate_from_fd(src_fd, src_path, error)) return FALSE; } else if (!lu_util_fscreate_for_path(dest_path, src_stat->st_mode & S_IFMT, error)) return FALSE; /* Start with absolutely restrictive permissions; the original file may be e.g. a hardlink to /etc/shadow. */ dest_fd = openat(dest_dir_fd, dest_name, O_EXCL | O_CREAT | O_WRONLY | O_NOFOLLOW, 0); if (dest_fd == -1) { lu_error_new(error, lu_error_open, _("Error writing `%s': %s"), dest_path, strerror(errno)); return FALSE; } /* Now just copy the data. */ for (;;) { unsigned char buf[BUFSIZ]; ssize_t left; unsigned char *p; left = read(src_fd, &buf, sizeof(buf)); if (left == -1) { if (errno == EINTR) continue; lu_error_new(error, lu_error_read, _("Error reading `%s': %s"), src_path, strerror(errno)); goto err_dest_fd; } if (left == 0) break; p = buf; while (left > 0) { ssize_t out; out = write(dest_fd, p, left); if (out == -1) { if (errno == EINTR) continue; lu_error_new(error, lu_error_write, _("Error writing `%s': %s"), dest_path, strerror(errno)); goto err_dest_fd; } p += out; left -= out; } } /* Set the ownership; permissions are still restrictive. */ if (fchown(dest_fd, uid_for_copy(access_options, src_stat), gid_for_copy(access_options, src_stat)) == -1 && errno != EPERM) { lu_error_new(error, lu_error_generic, _("Error changing owner of `%s': %s"), dest_path, strerror(errno)); goto err_dest_fd; } /* Set the desired mode. Do this explicitly to preserve S_ISGID and other bits. Do this after chown, because chown is permitted to reset these bits. */ if (fchmod(dest_fd, mode_for_copy(access_options, src_stat)) == -1) { lu_error_new(error, lu_error_generic, _("Error setting mode of `%s': %s"), dest_path, strerror(errno)); goto err_dest_fd; } timebuf[0] = src_stat->st_atim; timebuf[1] = src_stat->st_mtim; futimens(dest_fd, timebuf); ret = TRUE; /* Fall through */ err_dest_fd: close(dest_fd); return ret; } /* Forward declaration. */ static gboolean lu_copy_dir_and_close(int src_dir_fd, GString *src_path_buf, int dest_parent_fd, const char *dest_dir_name, GString *dest_path_buf, const struct stat *src_dir_stat, const struct copy_access_options *access_options, struct lu_error **error); /* Copy ENT_NAME in SRC_DIR_FD, which corresponds to SRC_PATH_BUF, to DEST_DIR_FD, which corresponds to DEST_PATH_BUF. Use ACCESS_OPTIONS. On return from this function, SELinux fscreate context is unspecified. This function may temporarily modify SRC_PATH_BUF and DEST_PATH_BUF, but they will be unchanged on return. Note that SRC_PATH_BUF should only be used for error messages, not to access the files; if the user is still logged in, a directory in the path may be replaced by a symbolic link, redirecting the access outside of SRC_DIR_FD. Likewise for DEST_*. */ static gboolean copy_dir_entry(int src_dir_fd, GString *src_path_buf, int dest_dir_fd, GString *dest_path_buf, const char *ent_name, const struct copy_access_options *access_options, struct lu_error **error) { struct stat st; int ifd; gboolean ret = FALSE; LU_ERROR_CHECK(error); /* Open the input entry first, then we can fstat() it and be certain that it is still the same file. O_NONBLOCK protects us against FIFOs and perhaps side-effects of the open() of a device file if there ever was one here, and doesn't matter for regular files or directories. */ ifd = openat(src_dir_fd, ent_name, O_RDONLY | O_CLOEXEC | O_NOFOLLOW | O_NONBLOCK); if (ifd == -1) { int saved_errno; saved_errno = errno; if (errno != ELOOP || fstatat(src_dir_fd, ent_name, &st, AT_SYMLINK_NOFOLLOW) != 0 || !S_ISLNK(st.st_mode)) { lu_error_new(error, lu_error_open, _("Error opening `%s': %s"), src_path_buf->str, strerror(saved_errno)); return FALSE; } return copy_symlink(src_dir_fd, src_path_buf->str, dest_dir_fd, dest_path_buf->str, ent_name, &st, access_options, error); } if (fstat(ifd, &st) != 0) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), src_path_buf->str, strerror(errno)); goto err_ifd; } g_assert(!S_ISLNK(st.st_mode)); if (S_ISDIR(st.st_mode)) { ret = lu_copy_dir_and_close(ifd, src_path_buf, dest_dir_fd, ent_name, dest_path_buf, &st, access_options, error); ifd = -1; } else if (S_ISREG(st.st_mode)) ret = copy_regular_file(ifd, src_path_buf->str, dest_dir_fd, ent_name, dest_path_buf->str, &st, access_options, error); else /* Note that we don't copy device specials. */ ret = TRUE; /* Fall through */ err_ifd: if (ifd != -1) close(ifd); return ret; } /* Copy SRC_DIR_FD, which corresponds to SRC_PATH_BUF, to DEST_DIR_NAME under DEST_PARENT_FD, which corresponds to DEST_PATH_BUF. Use ACCESS_OPTIONS. Use SRC_DIR_STAT for data about SRC_PATH_BUF. In every case, even on error, close SRC_DIR_FD. DEST_PARENT_FD may be AT_FDCWD. On return from this function, SELinux fscreate context is unspecified. This function may temporarily modify SRC_PATH_BUF and DEST_PATH_BUF, but they will be unchanged on return. Note that SRC_PATH_BUF should only be used for error messages, not to access the files; if the user is still logged in, a directory in the path may be replaced by a symbolic link, redirecting the access outside of SRC_PARENT_FD/SRC_DIR_NAME. Likewise for DEST_*. */ static gboolean lu_copy_dir_and_close(int src_dir_fd, GString *src_path_buf, int dest_parent_fd, const char *dest_dir_name, GString *dest_path_buf, const struct stat *src_dir_stat, const struct copy_access_options *access_options, struct lu_error **error) { size_t orig_src_path_buf_len, orig_dest_path_buf_len; struct dirent *ent; DIR *dir; int dest_dir_fd; struct timespec timebuf[2]; gboolean ret = FALSE; LU_ERROR_CHECK(error); orig_src_path_buf_len = src_path_buf->len; orig_dest_path_buf_len = dest_path_buf->len; if (*dest_path_buf->str != '/') { lu_error_new(error, lu_error_generic, _("Home directory path `%s' is not absolute"), dest_path_buf->str); goto err_src_dir_fd; } dir = fdopendir(src_dir_fd); if (dir == NULL) { lu_error_new(error, lu_error_generic, _("Error reading `%s': %s"), src_path_buf->str, strerror(errno)); goto err_src_dir_fd; } if (access_options->preserve_source) { if (!lu_util_fscreate_from_fd(src_dir_fd, src_path_buf->str, error)) goto err_dir; } else if (!lu_util_fscreate_for_path(dest_path_buf->str, src_dir_stat->st_mode & S_IFMT, error)) goto err_dir; /* Create the directory. It starts owned by us (presumbaly root), with fairly restrictive permissions that still allow us to use the directory. */ if (mkdirat(dest_parent_fd, dest_dir_name, S_IRWXU) == -1) { lu_error_new(error, lu_error_generic, _("Error creating `%s': %s"), dest_path_buf->str, strerror(errno)); goto err_dir; } /* FIXME: O_SEARCH would be ideal here, but Linux doesn't currently provide it. */ dest_dir_fd = openat(dest_parent_fd, dest_dir_name, O_RDONLY | O_CLOEXEC | O_DIRECTORY | O_NOFOLLOW); if (dest_dir_fd == -1) { lu_error_new(error, lu_error_open, _("Error opening `%s': %s"), dest_path_buf->str, strerror(errno)); goto err_dir; } /* The openat() after mkdirat() is not 100% safe; we may be modifying ownership/permissions of another user's directory that was moved to dest_dir_name in the mean time! (Although why there would exist an another user's directory, assuming lack hardlinks of directories, is not clear.) There's no way to do this completely atomically; so, rely on permissions of the parent directory (write access to parent is required to rename directories). This holds for the top-level directory, and for the others we achieve this by creating them root-owned and S_IRWXU, and only applying the original ownership and permissions after finishing other work. See also the comment in copy_symlink(). */ while ((ent = readdir(dir)) != NULL) { if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) continue; /* Build the path of the source file or directory and its corresponding member in the new tree. */ g_string_append_c(src_path_buf, '/'); g_string_append(src_path_buf, ent->d_name); g_string_append_c(dest_path_buf, '/'); g_string_append(dest_path_buf, ent->d_name); if (!copy_dir_entry(src_dir_fd, src_path_buf, dest_dir_fd, dest_path_buf, ent->d_name, access_options, error)) goto err_dest_dir_fd; g_string_truncate(src_path_buf, orig_src_path_buf_len); g_string_truncate(dest_path_buf, orig_dest_path_buf_len); } /* Set the ownership on the directory. Permissions are still fairly restrictive. */ if (fchown(dest_dir_fd, uid_for_copy(access_options, src_dir_stat), gid_for_copy(access_options, src_dir_stat)) == -1 && errno != EPERM) { lu_error_new(error, lu_error_generic, _("Error changing owner of `%s': %s"), dest_path_buf->str, strerror(errno)); goto err_dest_dir_fd; } /* Set the desired mode. Do this explicitly to preserve S_ISGID and other bits. Do this after chown, because chown is permitted to reset these bits. */ if (fchmod(dest_dir_fd, mode_for_copy(access_options, src_dir_stat)) == -1) { lu_error_new(error, lu_error_generic, _("Error setting mode of `%s': %s"), dest_path_buf->str, strerror(errno)); goto err_dest_dir_fd; } timebuf[0] = src_dir_stat->st_atim; timebuf[1] = src_dir_stat->st_mtim; futimens(dest_dir_fd, timebuf); ret = TRUE; /* Fall through */ err_dest_dir_fd: close(dest_dir_fd); err_dir: closedir(dir); src_dir_fd = -1; err_src_dir_fd: if (src_dir_fd != -1) close(src_dir_fd); g_string_truncate(src_path_buf, orig_src_path_buf_len); g_string_truncate(dest_path_buf, orig_dest_path_buf_len); return ret; } /* Copy SRC_DIR to DEST_DIR. Use ACCESS_OPTIONS. Return TRUE on error. To be secure, neither SRC_DIR nor DEST_DIR should contain any user-controlled parent directories in the path. SRC_DIR may be an user-owned directory, or even a symlink, but its parent should not be user-writable (so that the user can't replace it with a symlink or change the symlink). */ static gboolean lu_homedir_copy(const char *src_dir, const char *dest_dir, const struct copy_access_options *access_options, struct lu_error **error) { lu_security_context_t fscreate; int fd; struct stat st; GString *src_path_buf, *dest_path_buf; gboolean ret; LU_ERROR_CHECK(error); ret = FALSE; if (!lu_util_fscreate_save(&fscreate, error)) goto err; fd = open(src_dir, O_RDONLY | O_CLOEXEC | O_DIRECTORY); if (fd == -1) { lu_error_new(error, lu_error_open, _("Error opening `%s': %s"), src_dir, strerror(errno)); goto err_fscreate; } if (fstat(fd, &st) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), src_dir, strerror(errno)); goto err_fd; } src_path_buf = g_string_new(src_dir); dest_path_buf = g_string_new(dest_dir); ret = lu_copy_dir_and_close(fd, src_path_buf, AT_FDCWD, dest_dir, dest_path_buf, &st, access_options, error); g_string_free(dest_path_buf, TRUE); g_string_free(src_path_buf, TRUE); goto err_fscreate; err_fd: close(fd); err_fscreate: lu_util_fscreate_restore(fscreate); err: return ret; } /** * lu_homedir_populate: * @ctx: A context * @skeleton: Path to a "skeleton" directory, or %NULL for the system default * @directory: The home directory to populate * @owner: UID to use for contents of the new home directory * @group: GID to use for contents of the new home directory that have GID set * to 0 in the skeleton director * @mode: Mode to use for the top-level directory, also affected by umask * @error: Filled with #lu_error if an error occurs * * Creates a new home directory for an user. * * If you want to use this in a hostile environment, ensure that no untrusted * user has write permission to any parent of @skeleton or @directory. Usually * /home is only writable by root, which is safe. * * Returns: %TRUE on success */ gboolean lu_homedir_populate(struct lu_context *ctx, const char *skeleton, const char *directory, uid_t owner, gid_t group, mode_t mode, struct lu_error **error) { struct copy_access_options access_options; LU_ERROR_CHECK(error); g_return_val_if_fail(ctx != NULL, FALSE); g_return_val_if_fail(directory != NULL, FALSE); if (skeleton == NULL) skeleton = lu_cfg_read_single(ctx, "defaults/skeleton", "/etc/skel"); access_options.preserve_source = FALSE; access_options.uid = owner; access_options.gid = group; access_options.umask = current_umask(); if (!lu_homedir_copy(skeleton, directory, &access_options, error)) return FALSE; /* Now reconfigure the toplevel directory as desired. The directory thus might have incorrect owner/permissions for a while; this is OK because the contents are public anyway (every users sees them on first access), and write access is not allowed because the skeleton is not writable. */ /* Set the ownership on the top-level directory manually again, lu_homedir_copy() would have preserved st.st_gid if it were not root for some reason; our API promises to use precisely "owner" and "group". */ if (chown(directory, owner, group) == -1 && errno != EPERM) { lu_error_new(error, lu_error_generic, _("Error changing owner of `%s': %s"), directory, strerror(errno)); return FALSE; } /* Set modes as required instead of preserving st.st_mode. Do this after chown, because chown is permitted to reset these bits. */ if (chmod(directory, mode & ~access_options.umask) == -1) { lu_error_new(error, lu_error_generic, _("Error setting mode of `%s': %s"), directory, strerror(errno)); return FALSE; } return TRUE; } /* Recursively remove directory DIR_NAME under PARENT_FD, which corresponds to PATH_BUF. Before doing anything, if REQUIRED_TOPLEVEL_UID is not LU_VALUE_INVALID_ID, make sure that DIR_NAME is owned by that UID, or fail with lu_error_homedir_not_owned. Return TRUE on sucess. PARENT_FD may be AT_FDCWD. This function may temporarily modify PATH_BUF, but it will be unchanged on return. Note that PATH_BUF should only be used for error messages, not to access the files; if the user is still logged in, a directory in the path may be replaced by a symbolic link, redirecting the access outside of PARENT_FD/DIR_NAME. */ static gboolean remove_subdirectory(int parent_fd, const char *dir_name, GString *path_buf, uid_t required_toplevel_uid, struct lu_error **error) { size_t orig_path_buf_len; int dir_fd; struct dirent *ent; DIR *dir; LU_ERROR_CHECK(error); orig_path_buf_len = path_buf->len; dir_fd = openat(parent_fd, dir_name, O_RDONLY | O_CLOEXEC | O_DIRECTORY | O_NOFOLLOW); if (dir_fd == -1) { lu_error_new(error, lu_error_open, _("Error opening `%s': %s"), path_buf->str, strerror(errno)); return FALSE; } if (required_toplevel_uid != LU_VALUE_INVALID_ID) { struct stat st; if (fstat(dir_fd, &st) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), path_buf->str, strerror(errno)); goto err_dir_fd; } if (st.st_uid != required_toplevel_uid) { lu_error_new(error, lu_error_homedir_not_owned, _("`%s' is not owned by UID `%d'"), path_buf->str, required_toplevel_uid); goto err_dir_fd; } } dir = fdopendir(dir_fd); if (dir == NULL) { lu_error_new(error, lu_error_open, _("Error opening `%s': %s"), path_buf->str, strerror(errno)); goto err_dir_fd; } /* Iterate over all of its contents. */ while ((ent = readdir(dir)) != NULL) { struct stat st; /* Skip over the self and parent hard links. */ if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) continue; /* Generate the full path of the next victim. */ g_string_append_c(path_buf, '/'); g_string_append(path_buf, ent->d_name); /* What we do next depends on whether or not the next item to remove is a directory. */ if (fstatat(dir_fd, ent->d_name, &st, AT_SYMLINK_NOFOLLOW) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), path_buf->str, strerror(errno)); goto err_dir; } if (S_ISDIR(st.st_mode)) { /* We descend into subdirectories... */ if (remove_subdirectory(dir_fd, ent->d_name, path_buf, LU_VALUE_INVALID_ID, error) == FALSE) goto err_dir; } else { /* ... and unlink everything else. */ if (unlinkat(dir_fd, ent->d_name, 0) == -1) { lu_error_new(error, lu_error_generic, _("Error removing `%s': %s"), path_buf->str, strerror(errno)); goto err_dir; } } g_string_truncate(path_buf, orig_path_buf_len); } closedir(dir); /* As a final step, remove the directory itself. */ if (unlinkat(parent_fd, dir_name, AT_REMOVEDIR) == -1) { lu_error_new(error, lu_error_generic, _("Error removing `%s': %s"), path_buf->str, strerror(errno)); return FALSE; } return TRUE; err_dir: closedir(dir); g_string_truncate(path_buf, orig_path_buf_len); return FALSE; err_dir_fd: close(dir_fd); return FALSE; } /** * lu_homedir_remove: * @directory: Path to the root of the directory tree * @error: Filled with #lu_error if an error occurs * * Recursively removes a user's home (or really, any) directory. * * If you want to use this in a hostile environment, ensure that no untrusted * user has write permission to any parent of @directory. * * Returns: %TRUE on success */ gboolean lu_homedir_remove(const char *directory, struct lu_error ** error) { gboolean ret; GString *path_buf; LU_ERROR_CHECK(error); g_return_val_if_fail(directory != NULL, FALSE); path_buf = g_string_new(directory); ret = remove_subdirectory(AT_FDCWD, directory, path_buf, LU_VALUE_INVALID_ID, error); g_string_free(path_buf, TRUE); return ret; } /* Recursively remove the home directory of user ENT if the top-level directory is owned by REQUIRED_TOPLEVEL_UID or if REQUIRED_TOPLEVEL_UID is LU_VALUE_INVALID_ID. Otherwise fail with lu_error_homedir_not_owned. Return TRUE on sucess. If you want to use this in a hostile environment, ensure that no untrusted user has write permission to any parent of ENT's home directory. */ static gboolean homedir_remove_for_user(struct lu_ent *ent, uid_t required_toplevel_uid, struct lu_error **error) { gboolean ret; const char *home; GString *path_buf; LU_ERROR_CHECK(error); g_assert(ent->type == lu_user); home = lu_ent_get_first_string(ent, LU_HOMEDIRECTORY); if (home == NULL) { lu_error_new(error, lu_error_generic, _("user object had no %s attribute"), LU_HOMEDIRECTORY); return FALSE; } path_buf = g_string_new(home); ret = remove_subdirectory(AT_FDCWD, home, path_buf, required_toplevel_uid, error); g_string_free(path_buf, TRUE); return ret; } /** * lu_homedir_remove_for_user: * @ent: An entity describing the user * @error: Filled with #lu_error if an error occurs * * Recursively removes the home directory of user @ent. * * If you want to use this in a hostile environment, ensure that no untrusted * user has write permission to any parent of @ent's home directory. * * Returns: %TRUE on success */ gboolean lu_homedir_remove_for_user(struct lu_ent *ent, struct lu_error **error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return homedir_remove_for_user(ent, LU_VALUE_INVALID_ID, error); } /** * lu_homedir_remove_for_user_if_owned: * @ent: An entity describing the user * @error: Filled with #lu_error if an error occurs * * Recursively removes the home directory of user @ent, only if the directory * is owned by @ent. Otherwise fails with %lu_error_homedir_not_owned. * * If you want to use this in a hostile environment, ensure that no untrusted * user has write permission to any parent of @ent's home directory. * * Returns: %TRUE on success */ gboolean lu_homedir_remove_for_user_if_owned(struct lu_ent *ent, struct lu_error **error) { uid_t uid; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); uid = lu_ent_get_first_id(ent, LU_UIDNUMBER); if (uid == LU_VALUE_INVALID_ID) { lu_error_new(error, lu_error_generic, _("user object had no %s attribute"), LU_UIDNUMBER); return FALSE; } return homedir_remove_for_user(ent, uid, error); } /** * lu_homedir_move: * @oldhome: Path to the old home directory * @newhome: Path to the new home directory * @error: Filled with #lu_error if an error occurs * * Moves user's home directory to @newhome. * * Currently implemented by first creating a copy, then deleting the original, * expect this to take a long time. * * If you want to use this in a hostile environment, ensure that no untrusted * user has write permission to any parent of @oldhome or @newhome. Usually * /home is only writable by root, which is safe; user's write permission to * @oldhome itself is OK. * * Returns: %TRUE on success */ gboolean lu_homedir_move(const char *oldhome, const char *newhome, struct lu_error ** error) { struct copy_access_options access_options; LU_ERROR_CHECK(error); g_return_val_if_fail(oldhome != NULL, FALSE); g_return_val_if_fail(newhome != NULL, FALSE); access_options.preserve_source = TRUE; if (!lu_homedir_copy(oldhome, newhome, &access_options, error)) return FALSE; return lu_homedir_remove(oldhome, error); } /** * lu_nscd_flush_cache: * @table: Name of the relevant nscd table * * Flushes the specified nscd cache to make the changes performed by other * libuser functions immediately visible. */ void lu_nscd_flush_cache (const char *table) { static char *const envp[] = { NULL }; g_return_if_fail(table != NULL); posix_spawn_file_actions_t fa; char *argv[4]; pid_t pid; if (posix_spawn_file_actions_init(&fa) != 0 || posix_spawn_file_actions_addopen(&fa, STDERR_FILENO, "/dev/null", O_RDWR, 0) != 0) return; argv[0] = NSCD; argv[1] = "-i"; argv[2] = (char *)table; argv[3] = NULL; if (posix_spawn(&pid, argv[0], &fa, NULL, argv, envp) != 0) return; posix_spawn_file_actions_destroy(&fa); /* Wait for the spawned process to exit */ while (waitpid(pid, NULL, 0) == -1 && errno == EINTR) ; /* Nothing */ } /* Return mail spool path for an USER. Returns: A path for g_free (), or NULL on error */ static char * mail_spool_path(struct lu_context *ctx, struct lu_ent *ent, struct lu_error **error) { const char *spooldir; char *p, *username; LU_ERROR_CHECK(error); /* Now get the user's login. */ username = lu_ent_get_first_value_strdup(ent, LU_USERNAME); if (username == NULL) { lu_error_new(error, lu_error_name_bad, _("Missing user name")); return NULL; } /* Get the location of the spool directory. */ spooldir = lu_cfg_read_single(ctx, "defaults/mailspooldir", "/var/mail"); p = g_strconcat(spooldir, "/", username, (const gchar *)NULL); g_free(username); return p; } /** * lu_mail_spool_create: * @ctx: A context * @ent: An entity representing the relevant user * @error: Filled with #lu_error if an error occurs * * Creates a mail spool for the specified user. * * Returns: %TRUE on success */ gboolean lu_mail_spool_create(struct lu_context *ctx, struct lu_ent *ent, struct lu_error **error) { uid_t uid; gid_t gid; char *spool_path; struct lu_ent *groupEnt; struct lu_error *err2; int fd; LU_ERROR_CHECK(error); g_return_val_if_fail(ctx != NULL, FALSE); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); spool_path = mail_spool_path(ctx, ent, error); if (spool_path == NULL) goto err; /* Find the GID of the owner of the file. */ gid = LU_VALUE_INVALID_ID; groupEnt = lu_ent_new(); err2 = NULL; if (lu_group_lookup_name(ctx, "mail", groupEnt, &err2)) gid = lu_ent_get_first_id(groupEnt, LU_GIDNUMBER); if (err2 != NULL) lu_error_free(&err2); lu_ent_free(groupEnt); /* Er, okay. Check with libc. */ if (gid == LU_VALUE_INVALID_ID) { struct group grp, *err; char buf[LINE_MAX * 4]; if ((getgrnam_r("mail", &grp, buf, sizeof(buf), &err) == 0) && (err == &grp)) { gid = grp.gr_gid; } } /* Aiieee. Use the user's group. */ if (gid == LU_VALUE_INVALID_ID) gid = lu_ent_get_first_id(ent, LU_GIDNUMBER); if (gid == LU_VALUE_INVALID_ID) { lu_error_new(error, lu_error_generic, _("Cannot determine GID to use for mail spool")); goto err_spool_path; } /* Now get the user's UID. */ uid = lu_ent_get_first_id(ent, LU_UIDNUMBER); if (uid == LU_VALUE_INVALID_ID) { lu_error_new(error, lu_error_generic, _("Cannot determine UID to use for mail spool")); goto err_spool_path; } fd = open(spool_path, O_WRONLY | O_CREAT, 0); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), spool_path, strerror(errno)); goto err_spool_path; } if (fchown(fd, uid, gid) == -1) { lu_error_new(error, lu_error_generic, _("Error changing owner of `%s': %s"), spool_path, strerror(errno)); goto err_fd; } if (fchmod(fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP) == -1) { lu_error_new(error, lu_error_generic, _("Error changing mode of `%s': %s"), spool_path, strerror(errno)); goto err_fd; } close(fd); g_free(spool_path); return TRUE; err_fd: close(fd); err_spool_path: g_free(spool_path); err: return FALSE; } /** * lu_mail_spool_remove: * @ctx: A context * @ent: An entity representing the relevant user * @error: Filled with #lu_error if an error occurs * * Creates a mail spool for the specified user. * * Returns: %TRUE on success */ gboolean lu_mail_spool_remove(struct lu_context *ctx, struct lu_ent *ent, struct lu_error **error) { char *p; LU_ERROR_CHECK(error); g_return_val_if_fail(ctx != NULL, FALSE); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); p = mail_spool_path(ctx, ent, error); if (p == NULL) return FALSE; if (unlink(p) != 0 && errno != ENOENT) { lu_error_new(error, lu_error_generic, _("Error removing `%s': %s"), p, strerror (errno)); g_free(p); return FALSE; } g_free(p); return TRUE; } lib/fs.h000066400000000000000000000037141471266067600124310ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2012 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef libuser_fs_h #define libuser_fs_h #include #include G_BEGIN_DECLS struct lu_context; struct lu_ent; struct lu_error; gboolean lu_homedir_populate(struct lu_context *ctx, const char *skeleton, const char *directory, uid_t owner, gid_t group, mode_t mode, struct lu_error **error); gboolean lu_homedir_move(const char *oldhome, const char *newhome, struct lu_error **error); gboolean lu_homedir_remove(const char *directory, struct lu_error **error); gboolean lu_homedir_remove_for_user(struct lu_ent *ent, struct lu_error **error); gboolean lu_homedir_remove_for_user_if_owned(struct lu_ent *ent, struct lu_error **error); /** * LU_NSCD_CACHE_PASSWD: * * Name of the NSCD cache containing user data. */ #define LU_NSCD_CACHE_PASSWD "passwd" /** * LU_NSCD_CACHE_GROUP: * * Name of the NSCD cache containing group data. */ #define LU_NSCD_CACHE_GROUP "group" void lu_nscd_flush_cache(const char *table); gboolean lu_mail_spool_create(struct lu_context *ctx, struct lu_ent *ent, struct lu_error **error); gboolean lu_mail_spool_remove(struct lu_context *ctx, struct lu_ent *ent, struct lu_error **error); G_END_DECLS #endif lib/getdate.y000066400000000000000000000517441471266067600134650ustar00rootroot00000000000000%{ /* ** Originally written by Steven M. Bellovin while ** at the University of North Carolina at Chapel Hill. Later tweaked by ** a couple of people on Usenet. Completely overhauled by Rich $alz ** and Jim Berets in August, 1990; ** ** This grammar has 13 shift/reduce conflicts. ** ** This code is in the public domain and has no copyright. */ #ifdef HAVE_CONFIG_H # include #endif /* Since the code of getdate.y is not included in the Emacs executable itself, there is no need to #define static in this file. Even if the code were included in the Emacs executable, it probably wouldn't do any harm to #undef it here; this will only cause problems if we try to write to a static variable, which I don't think this code needs to do. */ #ifdef emacs # undef static #endif #include #include #include #include #include #define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) #include "lib/internal.h" #define EPOCH 1970 #define HOUR(x) ((x) * 60) #define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ /* ** An entry in the lexical lookup table. */ typedef struct _TABLE { const char *name; int type; int value; } TABLE; /* ** Meridian: am, pm, or 24-hour style. */ typedef enum _MERIDIAN { MERam, MERpm, MER24 } MERIDIAN; struct global { int DayOrdinal; int DayNumber; int HaveDate; int HaveDay; int HaveRel; int HaveTime; int HaveZone; int Timezone; int Day; int Hour; int Minutes; int Month; int Seconds; int Year; MERIDIAN Meridian; int RelDay; int RelHour; int RelMinutes; int RelMonth; int RelSeconds; int RelYear; }; union YYSTYPE; static int yylex (union YYSTYPE *lvalp, const char **yyInput); static int yyerror (const char **yyInput, struct global *yy, char *s); static int yyparse (const char **yyInput, struct global *yy); #define YYENABLE_NLS 0 #define YYLTYPE_IS_TRIVIAL 0 %} %name-prefix "lu_gd" %define api.pure %parse-param { const char **yyInput } %lex-param { const char **yyInput } %parse-param { struct global *yy } %union { int Number; enum _MERIDIAN Meridian; } %token tAGO tDAY tDAY_UNIT tDAYZONE tDST tHOUR_UNIT tID %token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT %token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE %type tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tMINUTE_UNIT %type tMONTH tMONTH_UNIT %type tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE %type tMERIDIAN o_merid %expect 13 %% spec : /* NULL */ | spec item ; item : time { yy->HaveTime++; } | zone { yy->HaveZone++; } | date { yy->HaveDate++; } | day { yy->HaveDay++; } | rel { yy->HaveRel++; } | number ; time : tUNUMBER tMERIDIAN { yy->Hour = $1; yy->Minutes = 0; yy->Seconds = 0; yy->Meridian = $2; } | tUNUMBER ':' tUNUMBER o_merid { yy->Hour = $1; yy->Minutes = $3; yy->Seconds = 0; yy->Meridian = $4; } | tUNUMBER ':' tUNUMBER tSNUMBER { yy->Hour = $1; yy->Minutes = $3; yy->Meridian = MER24; yy->HaveZone++; yy->Timezone = ($4 < 0 ? -$4 % 100 + (-$4 / 100) * 60 : - ($4 % 100 + ($4 / 100) * 60)); } | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid { yy->Hour = $1; yy->Minutes = $3; yy->Seconds = $5; yy->Meridian = $6; } | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER { yy->Hour = $1; yy->Minutes = $3; yy->Seconds = $5; yy->Meridian = MER24; yy->HaveZone++; yy->Timezone = ($6 < 0 ? -$6 % 100 + (-$6 / 100) * 60 : - ($6 % 100 + ($6 / 100) * 60)); } ; zone : tZONE { yy->Timezone = $1; } | tDAYZONE { yy->Timezone = $1 - 60; } | tZONE tDST { yy->Timezone = $1 - 60; } ; day : tDAY { yy->DayOrdinal = 1; yy->DayNumber = $1; } | tDAY ',' { yy->DayOrdinal = 1; yy->DayNumber = $1; } | tUNUMBER tDAY { yy->DayOrdinal = $1; yy->DayNumber = $2; } ; date : tUNUMBER '/' tUNUMBER { yy->Month = $1; yy->Day = $3; } | tUNUMBER '/' tUNUMBER '/' tUNUMBER { /* Interpret as YY->YY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. The goal in recognizing YY->YY/MM/DD is solely to support legacy machine-generated dates like those in an RCS log listing. If you want portability, use the ISO 8601 format. */ if ($1 >= 1000) { yy->Year = $1; yy->Month = $3; yy->Day = $5; } else { yy->Month = $1; yy->Day = $3; yy->Year = $5; } } | tUNUMBER tSNUMBER tSNUMBER { /* ISO 8601 format. yy->yy-mm-dd. */ yy->Year = $1; yy->Month = -$2; yy->Day = -$3; } | tUNUMBER tMONTH tSNUMBER { /* e.g. 17-JUN-1992. */ yy->Day = $1; yy->Month = $2; yy->Year = -$3; } | tMONTH tUNUMBER { yy->Month = $1; yy->Day = $2; } | tMONTH tUNUMBER ',' tUNUMBER { yy->Month = $1; yy->Day = $2; yy->Year = $4; } | tUNUMBER tMONTH { yy->Month = $2; yy->Day = $1; } | tUNUMBER tMONTH tUNUMBER { yy->Month = $2; yy->Day = $1; yy->Year = $3; } ; rel : relunit tAGO { yy->RelSeconds = -yy->RelSeconds; yy->RelMinutes = -yy->RelMinutes; yy->RelHour = -yy->RelHour; yy->RelDay = -yy->RelDay; yy->RelMonth = -yy->RelMonth; yy->RelYear = -yy->RelYear; } | relunit ; relunit : tUNUMBER tYEAR_UNIT { yy->RelYear += $1 * $2; } | tSNUMBER tYEAR_UNIT { yy->RelYear += $1 * $2; } | tYEAR_UNIT { yy->RelYear++; } | tUNUMBER tMONTH_UNIT { yy->RelMonth += $1 * $2; } | tSNUMBER tMONTH_UNIT { yy->RelMonth += $1 * $2; } | tMONTH_UNIT { yy->RelMonth++; } | tUNUMBER tDAY_UNIT { yy->RelDay += $1 * $2; } | tSNUMBER tDAY_UNIT { yy->RelDay += $1 * $2; } | tDAY_UNIT { yy->RelDay++; } | tUNUMBER tHOUR_UNIT { yy->RelHour += $1 * $2; } | tSNUMBER tHOUR_UNIT { yy->RelHour += $1 * $2; } | tHOUR_UNIT { yy->RelHour++; } | tUNUMBER tMINUTE_UNIT { yy->RelMinutes += $1 * $2; } | tSNUMBER tMINUTE_UNIT { yy->RelMinutes += $1 * $2; } | tMINUTE_UNIT { yy->RelMinutes++; } | tUNUMBER tSEC_UNIT { yy->RelSeconds += $1 * $2; } | tSNUMBER tSEC_UNIT { yy->RelSeconds += $1 * $2; } | tSEC_UNIT { yy->RelSeconds++; } ; number : tUNUMBER { if (yy->HaveTime && yy->HaveDate && !yy->HaveRel) yy->Year = $1; else { if ($1>10000) { yy->HaveDate++; yy->Day= ($1)%100; yy->Month= ($1/100)%100; yy->Year = $1/10000; } else { yy->HaveTime++; if ($1 < 100) { yy->Hour = $1; yy->Minutes = 0; } else { yy->Hour = $1 / 100; yy->Minutes = $1 % 100; } yy->Seconds = 0; yy->Meridian = MER24; } } } ; o_merid : /* NULL */ { $$ = MER24; } | tMERIDIAN { $$ = $1; } ; %% /* Month and day table. */ static TABLE const MonthDayTable[] = { { "january", tMONTH, 1 }, { "february", tMONTH, 2 }, { "march", tMONTH, 3 }, { "april", tMONTH, 4 }, { "may", tMONTH, 5 }, { "june", tMONTH, 6 }, { "july", tMONTH, 7 }, { "august", tMONTH, 8 }, { "september", tMONTH, 9 }, { "sept", tMONTH, 9 }, { "october", tMONTH, 10 }, { "november", tMONTH, 11 }, { "december", tMONTH, 12 }, { "sunday", tDAY, 0 }, { "monday", tDAY, 1 }, { "tuesday", tDAY, 2 }, { "tues", tDAY, 2 }, { "wednesday", tDAY, 3 }, { "wednes", tDAY, 3 }, { "thursday", tDAY, 4 }, { "thur", tDAY, 4 }, { "thurs", tDAY, 4 }, { "friday", tDAY, 5 }, { "saturday", tDAY, 6 }, { NULL, 0, 0 } }; /* Time units table. */ static TABLE const UnitsTable[] = { { "year", tYEAR_UNIT, 1 }, { "month", tMONTH_UNIT, 1 }, { "fortnight", tDAY_UNIT, 14 }, { "week", tDAY_UNIT, 7 }, { "day", tDAY_UNIT, 1 }, { "hour", tHOUR_UNIT, 1 }, { "minute", tMINUTE_UNIT, 1 }, { "min", tMINUTE_UNIT, 1 }, { "second", tSEC_UNIT, 1 }, { "sec", tSEC_UNIT, 1 }, { NULL, 0, 0 } }; /* Assorted relative-time words. */ static TABLE const OtherTable[] = { { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, { "today", tMINUTE_UNIT, 0 }, { "now", tMINUTE_UNIT, 0 }, { "last", tUNUMBER, -1 }, { "this", tMINUTE_UNIT, 0 }, { "next", tUNUMBER, 2 }, { "first", tUNUMBER, 1 }, /* { "second", tUNUMBER, 2 }, */ { "third", tUNUMBER, 3 }, { "fourth", tUNUMBER, 4 }, { "fifth", tUNUMBER, 5 }, { "sixth", tUNUMBER, 6 }, { "seventh", tUNUMBER, 7 }, { "eighth", tUNUMBER, 8 }, { "ninth", tUNUMBER, 9 }, { "tenth", tUNUMBER, 10 }, { "eleventh", tUNUMBER, 11 }, { "twelfth", tUNUMBER, 12 }, { "ago", tAGO, 1 }, { NULL, 0, 0 } }; /* The timezone table. */ static TABLE const TimezoneTable[] = { { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ { "utc", tZONE, HOUR ( 0) }, { "wet", tZONE, HOUR ( 0) }, /* Western European */ { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ { "wat", tZONE, HOUR ( 1) }, /* West Africa */ { "at", tZONE, HOUR ( 2) }, /* Azores */ { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ { "cat", tZONE, HOUR (10) }, /* Central Alaska */ { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ { "nt", tZONE, HOUR (11) }, /* Nome */ { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ { "cet", tZONE, -HOUR (1) }, /* Central European */ { "met", tZONE, -HOUR (1) }, /* Middle European */ { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ { "fwt", tZONE, -HOUR (1) }, /* French Winter */ { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ { NULL, 0, 0 } }; /* Military timezone table. */ static TABLE const MilitaryTable[] = { { "a", tZONE, HOUR ( 1) }, { "b", tZONE, HOUR ( 2) }, { "c", tZONE, HOUR ( 3) }, { "d", tZONE, HOUR ( 4) }, { "e", tZONE, HOUR ( 5) }, { "f", tZONE, HOUR ( 6) }, { "g", tZONE, HOUR ( 7) }, { "h", tZONE, HOUR ( 8) }, { "i", tZONE, HOUR ( 9) }, { "k", tZONE, HOUR ( 10) }, { "l", tZONE, HOUR ( 11) }, { "m", tZONE, HOUR ( 12) }, { "n", tZONE, HOUR (- 1) }, { "o", tZONE, HOUR (- 2) }, { "p", tZONE, HOUR (- 3) }, { "q", tZONE, HOUR (- 4) }, { "r", tZONE, HOUR (- 5) }, { "s", tZONE, HOUR (- 6) }, { "t", tZONE, HOUR (- 7) }, { "u", tZONE, HOUR (- 8) }, { "v", tZONE, HOUR (- 9) }, { "w", tZONE, HOUR (-10) }, { "x", tZONE, HOUR (-11) }, { "y", tZONE, HOUR (-12) }, { "z", tZONE, HOUR ( 0) }, { NULL, 0, 0 } }; /* ARGSUSED */ static int yyerror (const char **yyInput, struct global *yy, char *s) { (void)yyInput; (void)yy; (void)s; return 0; } static int ToHour (int Hours, MERIDIAN Meridian) { switch (Meridian) { case MER24: if (Hours < 0 || Hours > 23) return -1; return Hours; case MERam: if (Hours < 1 || Hours > 12) return -1; if (Hours == 12) Hours = 0; return Hours; case MERpm: if (Hours < 1 || Hours > 12) return -1; if (Hours == 12) Hours = 0; return Hours + 12; default: abort (); } /* NOTREACHED */ } static int ToYear (int Year) { if (Year < 0) Year = -Year; /* XPG4 suggests that years 00-68 map to 2000-2068, and years 69-99 map to 1969-1999. */ if (Year < 69) Year += 2000; else if (Year < 100) Year += 1900; return Year; } static int LookupWord (YYSTYPE *lvalp, char *buff) { register char *p; register char *q; register const TABLE *tp; int i; int abbrev; /* Make it lowercase. */ for (p = buff; *p; p++) if (isupper ((unsigned char)*p)) *p = tolower ((unsigned char)*p); if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) { lvalp->Meridian = MERam; return tMERIDIAN; } if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) { lvalp->Meridian = MERpm; return tMERIDIAN; } /* See if we have an abbreviation for a month. */ if (strlen (buff) == 3) abbrev = 1; else if (strlen (buff) == 4 && buff[3] == '.') { abbrev = 1; buff[3] = '\0'; } else abbrev = 0; for (tp = MonthDayTable; tp->name; tp++) { if (abbrev) { if (strncmp (buff, tp->name, 3) == 0) { lvalp->Number = tp->value; return tp->type; } } else if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } } for (tp = TimezoneTable; tp->name; tp++) if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } if (strcmp (buff, "dst") == 0) return tDST; for (tp = UnitsTable; tp->name; tp++) if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } /* Strip off any plural and try the units table again. */ i = strlen (buff) - 1; if (buff[i] == 's') { buff[i] = '\0'; for (tp = UnitsTable; tp->name; tp++) if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } buff[i] = 's'; /* Put back for "this" in OtherTable. */ } for (tp = OtherTable; tp->name; tp++) if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } /* Military timezones. */ if (buff[1] == '\0' && isalpha ((unsigned char)*buff)) { for (tp = MilitaryTable; tp->name; tp++) if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } } /* Drop out any periods and try the timezone table again. */ for (i = 0, p = q = buff; *q; q++) if (*q != '.') *p++ = *q; else i++; *p = '\0'; if (i) for (tp = TimezoneTable; tp->name; tp++) if (strcmp (buff, tp->name) == 0) { lvalp->Number = tp->value; return tp->type; } return tID; } static int yylex (YYSTYPE *lvalp, const char **yyInput) { register char c; register char *p; char buff[20]; int Count; int sign; for (;;) { while (isspace ((unsigned char)**yyInput)) (*yyInput)++; if (ISDIGIT (c = **yyInput) || c == '-' || c == '+') { if (c == '-' || c == '+') { sign = c == '-' ? -1 : 1; if (!ISDIGIT (*++*yyInput)) /* skip the '-' sign */ continue; } else sign = 0; for (lvalp->Number = 0; ISDIGIT (c = *(*yyInput)++);) lvalp->Number = 10 * lvalp->Number + c - '0'; (*yyInput)--; if (sign < 0) lvalp->Number = -lvalp->Number; return sign ? tSNUMBER : tUNUMBER; } if (isalpha ((unsigned char)c)) { for (p = buff; (c = *(*yyInput)++, isalpha ((unsigned char)c)) || c == '.';) if (p < &buff[sizeof buff - 1]) *p++ = c; *p = '\0'; (*yyInput)--; return LookupWord (lvalp, buff); } if (c != '(') return *(*yyInput)++; Count = 0; do { c = *(*yyInput)++; if (c == '\0') return c; if (c == '(') Count++; else if (c == ')') Count--; } while (Count > 0); } } #define TM_YEAR_ORIGIN 1900 /* Yield A - B, measured in seconds. */ static long difftm (struct tm *a, struct tm *b) { int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); int by = b->tm_year + (TM_YEAR_ORIGIN - 1); long days = ( /* difference in day of year */ a->tm_yday - b->tm_yday /* + intervening leap days */ + ((ay >> 2) - (by >> 2)) - (ay / 100 - by / 100) + ((ay / 100 >> 2) - (by / 100 >> 2)) /* + difference in years * 365 */ + (long) (ay - by) * 365 ); return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) + (a->tm_min - b->tm_min)) + (a->tm_sec - b->tm_sec)); } time_t lu_get_date (const char *p, const time_t *now) { struct tm tm, tm0, *tmp; struct global yy; time_t Start; Start = now ? *now : time ((time_t *) NULL); tmp = localtime (&Start); memset (&yy, 0, sizeof(yy)); yy.Year = tmp->tm_year + TM_YEAR_ORIGIN; yy.Month = tmp->tm_mon + 1; yy.Day = tmp->tm_mday; yy.Hour = tmp->tm_hour; yy.Minutes = tmp->tm_min; yy.Seconds = tmp->tm_sec; yy.Meridian = MER24; yy.RelSeconds = 0; yy.RelMinutes = 0; yy.RelHour = 0; yy.RelDay = 0; yy.RelMonth = 0; yy.RelYear = 0; yy.HaveDate = 0; yy.HaveDay = 0; yy.HaveRel = 0; yy.HaveTime = 0; yy.HaveZone = 0; if (yyparse (&p, &yy) || yy.HaveTime > 1 || yy.HaveZone > 1 || yy.HaveDate > 1 || yy.HaveDay > 1) return -1; tm.tm_year = ToYear (yy.Year) - TM_YEAR_ORIGIN + yy.RelYear; tm.tm_mon = yy.Month - 1 + yy.RelMonth; tm.tm_mday = yy.Day + yy.RelDay; if (yy.HaveTime || (yy.HaveRel && !yy.HaveDate && !yy.HaveDay)) { tm.tm_hour = ToHour (yy.Hour, yy.Meridian); if (tm.tm_hour < 0) return -1; tm.tm_min = yy.Minutes; tm.tm_sec = yy.Seconds; } else { tm.tm_hour = tm.tm_min = tm.tm_sec = 0; } tm.tm_hour += yy.RelHour; tm.tm_min += yy.RelMinutes; tm.tm_sec += yy.RelSeconds; tm.tm_isdst = -1; tm0 = tm; Start = mktime (&tm); if (Start == (time_t) -1) { /* Guard against falsely reporting errors near the time_t boundaries when parsing times in other time zones. For example, if the min time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead of UTC, then the min localtime value is 1970-01-01 08:00:00; if we apply mktime to 1970-01-01 00:00:00 we will get an error, so we apply mktime to 1970-01-02 08:00:00 instead and adjust the time zone by 24 hours to compensate. This algorithm assumes that there is no DST transition within a day of the time_t boundaries. */ if (yy.HaveZone) { tm = tm0; if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) { tm.tm_mday++; yy.Timezone -= 24 * 60; } else { tm.tm_mday--; yy.Timezone += 24 * 60; } Start = mktime (&tm); } if (Start == (time_t) -1) return Start; } if (yy.HaveDay && !yy.HaveDate) { tm.tm_mday += ((yy.DayNumber - tm.tm_wday + 7) % 7 + 7 * (yy.DayOrdinal - (0 < yy.DayOrdinal))); Start = mktime (&tm); if (Start == (time_t) -1) return Start; } if (yy.HaveZone) { long delta = yy.Timezone * 60L + difftm (&tm, gmtime (&Start)); if ((Start + delta < Start) != (delta < 0)) return -1; /* time_t overflow */ Start += delta; } return Start; } #if defined (TEST) /* ARGSUSED */ int main (ac, av) int ac; char *av[]; { char buff[MAX_BUFF_LEN + 1]; time_t d; (void) printf ("Enter date, or blank line to exit.\n\t> "); (void) fflush (stdout); buff[MAX_BUFF_LEN] = 0; while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) { d = lu_get_date (buff, (time_t *) NULL); if (d == -1) (void) printf ("Bad format - couldn't convert.\n"); else (void) printf ("%s", ctime (&d)); (void) printf ("\t> "); (void) fflush (stdout); } exit (0); /* NOTREACHED */ } #endif /* defined (TEST) */ lib/internal.h000066400000000000000000000042651471266067600136370ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2005, 2007 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ /* gtkdoc: private_header */ #ifndef internal_h #define internal_h #include #include struct lu_ent; struct lu_error; struct lu_context; /* An internal attribute checked (and removed) only in lu_user_add(), contains a default LU_HOMEDIRECTORY value that we refuse to use. In that case, LU_HOMEDIRECTORY is not set by default, and exists only if the user has explicitly defined it. */ #define LU_DUBIOUS_HOMEDIRECTORY "__pw_dir_invalid!*/\\:" /* Configuration initialization and shutdown. */ gboolean lu_cfg_init(struct lu_context *context, struct lu_error **error) G_GNUC_INTERNAL; void lu_cfg_done(struct lu_context *context) G_GNUC_INTERNAL; /* Set the sources of record for a given entity structure. */ void lu_ent_add_module(struct lu_ent *ent, const char *source) G_GNUC_INTERNAL; void lu_ent_clear_modules(struct lu_ent *ent) G_GNUC_INTERNAL; gboolean lu_modules_load(struct lu_context *ctx, const char *module_list, GValueArray **names, struct lu_error **error) G_GNUC_INTERNAL; int lu_module_unload(gpointer key, gpointer value, gpointer data) G_GNUC_INTERNAL; gint lu_strcasecmp(gconstpointer v1, gconstpointer v2) G_GNUC_INTERNAL; gint lu_strcmp(gconstpointer v1, gconstpointer v2) G_GNUC_INTERNAL; long lu_util_shadow_current_date_or_minus_1(void) G_GNUC_INTERNAL; /* Only for compatibility with shadow. */ time_t lu_get_date(const char *, const time_t *) G_GNUC_INTERNAL; #endif lib/misc.c000066400000000000000000000242431471266067600127470ustar00rootroot00000000000000/* Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "user_private.h" #include "internal.h" /** * SECTION:value * @short_description: Simplified interface to GValue types used in libuser * entities. * @include: libuser/user.h * * Libuser entities store attribute values as #GValue, which allows representing * any possible data type. Only a few types are needed in practice; the only * types applications should hard-code are %G_TYPE_LONG and %G_TYPE_STRING * (%G_TYPE_STRING can usually be used as a fallback for other number types). * * The only currently used data types that are not conveniently supported using * the above types are #uid_t and #gid_t (which can be together represented in * #id_t), because they can support values outside of the range of #glong. * Helper functions are provided to convert values between #id_t and #GValue, * even if the value is stored using %G_TYPE_STRING. The #GValue types used * for storing #id_t values are an internal implementation detail of libuser * and applications should not rely on them. * * Values of each attribute are expected to have a specific type, documented in * the documentation of the specific attribute name. Using other types (e.g. * using %G_TYPE_STRING for %LU_UIDNUMBER) is not allowed and results in * undefined behavior. You can use lu_value_strdup() and * lu_value_init_set_attr_from_string() for conversion between strings and * values appropriate for a specific attribute. */ /** * lu_value_strdup: * @value: #GValue * * Converts @value, of any type used by libuser, to a string. Preferable to * hard-coding checks for expected value types. * * Returns: string, should be freed by g_free() */ char * lu_value_strdup(const GValue *value) { char *ret; if (G_VALUE_HOLDS_STRING(value)) ret = g_value_dup_string(value); else if (G_VALUE_HOLDS_LONG(value)) ret = g_strdup_printf("%ld", g_value_get_long(value)); else if (G_VALUE_HOLDS_INT64(value)) ret = g_strdup_printf("%lld", (long long)g_value_get_int64(value)); else { g_assert_not_reached(); ret = NULL; } return ret; } /** * lu_values_equal: * @a: #GValue * @b: #GValue * * Check whether @a and @b have the same type and value. * * Returns: #TRUE if @a and @b have the same type and value */ int lu_values_equal(const GValue *a, const GValue *b) { g_return_val_if_fail(G_VALUE_TYPE(a) == G_VALUE_TYPE(b), FALSE); if (G_VALUE_HOLDS_STRING(a)) return strcmp(g_value_get_string(a), g_value_get_string(b)) == 0; else if (G_VALUE_HOLDS_LONG(a)) return g_value_get_long(a) == g_value_get_long(b); else if (G_VALUE_HOLDS_INT64(a)) return g_value_get_int64(a) == g_value_get_int64(b); else { g_assert_not_reached(); return FALSE; } } /** * lu_value_init_set_id: * @value: #GValue * @id: User or group ID. * * Initializes a zero-filled (uninitialized) @value with an unspecified type and * sets it to @id. */ void lu_value_init_set_id(GValue *value, id_t id) { /* Don't unnecessarily change behavior when long is enough. Only when long isn't enough, we fail in more interesting ways instead of silently corrupting data. The (intmax_t) casts are needed to handle the (Linux) case when id_t is "unsigned long', otherwise the comparison would be (unsigned long)(long)id == id, which is always true. */ if ((intmax_t)(long)id == (intmax_t)id) { g_value_init(value, G_TYPE_LONG); g_value_set_long(value, id); } else { /* FIXME: check that int64 is enough */ g_value_init(value, G_TYPE_INT64); g_value_set_int64(value, id); } } /** * lu_value_get_id: * @value: #GValue * * Get the contents of @value. @value should be initialized by * lu_value_init_set_id() or use %G_TYPE_LONG or %G_TYPE_STRING. * * If @value does not contain a valid #id_t value, %LU_VALUE_INVALID_ID * is returned. * * Returns: ID value or %LU_VALUE_INVALID_ID */ id_t lu_value_get_id(const GValue *value) { long long val; if (G_VALUE_HOLDS_LONG(value)) val = g_value_get_long(value); else if (G_VALUE_HOLDS_INT64(value)) val = g_value_get_int64(value); else if (G_VALUE_HOLDS_STRING(value)) { const char *src; char *end; src = g_value_get_string(value); errno = 0; val = strtoll(src, &end, 10); if (errno != 0 || *end != 0 || end == src) g_return_val_if_reached(LU_VALUE_INVALID_ID); } else g_return_val_if_reached(LU_VALUE_INVALID_ID); g_return_val_if_fail((id_t)val == val, LU_VALUE_INVALID_ID); g_return_val_if_fail(val != LU_VALUE_INVALID_ID, LU_VALUE_INVALID_ID); return val; } /* Check whether NAME is within LIST, which is a NUL-separated sequence of strings, terminated by double NUL. */ static gboolean attr_in_list(const char *attr, const char *list) { size_t attr_len; attr_len = strlen(attr); while (*list != '\0') { size_t s_len; s_len = strlen(list); if (attr_len == s_len && strcmp(attr, list) == 0) return TRUE; list += s_len + 1; } return FALSE; } /** * lu_value_init_set_attr_from_string: * @value: #GValue * @attr: Attribute name * @string: The string to convert * @error: Filled with a #lu_error if an error occurs, or %NULL if @attr is * unknown * * Initializes a zero-filled (uninitialized) @value for storing a value of * attribute @attr and sets it to the contents of @string. To see whether a * specific type is used for an attribute, see the documentation of that * attribute. * * The error messages returned from this function don't contain the input * string, to allow the caller to output at least partially usable error * message without disclosing the invalid string in * e.g. /etc/shadow, which might be somebody's misplaced * password. * * Returns: %TRUE on success, %FALSE on error or if @attr is unknown */ gboolean lu_value_init_set_attr_from_string(GValue *value, const char *attr, const char *string, struct lu_error **error) { LU_ERROR_CHECK(error); #define A(NAME) NAME "\0" if (attr_in_list(attr, A(LU_USERNAME) A(LU_USERPASSWORD) A(LU_GECOS) A(LU_HOMEDIRECTORY) A(LU_LOGINSHELL) A(LU_GROUPNAME) A(LU_GROUPPASSWORD) A(LU_MEMBERNAME) A(LU_ADMINISTRATORNAME) A(LU_SHADOWNAME) A(LU_SHADOWPASSWORD) A(LU_COMMONNAME) A(LU_GIVENNAME) A(LU_SN) A(LU_ROOMNUMBER) A(LU_TELEPHONENUMBER) A(LU_HOMEPHONE) A(LU_EMAIL))) { g_value_init(value, G_TYPE_STRING); g_value_set_string(value, string); } else if (attr_in_list(attr, A(LU_SHADOWLASTCHANGE) A(LU_SHADOWMIN) A(LU_SHADOWMAX) A(LU_SHADOWWARNING) A(LU_SHADOWINACTIVE) A(LU_SHADOWEXPIRE) A(LU_SHADOWFLAG))) { long l; char *p; errno = 0; l = strtol(string, &p, 10); if (errno != 0 || *p != 0 || p == string) { lu_error_new(error, lu_error_invalid_attribute_value, _("invalid number")); return FALSE; } g_value_init(value, G_TYPE_LONG); g_value_set_long(value, l); } else if (attr_in_list(attr, A(LU_UIDNUMBER) A(LU_GIDNUMBER))) { intmax_t imax; char *p; errno = 0; imax = strtoimax(string, &p, 10); if (errno != 0 || *p != 0 || p == string || (id_t)imax != imax || imax == LU_VALUE_INVALID_ID) { lu_error_new(error, lu_error_invalid_attribute_value, _("invalid ID")); return FALSE; } lu_value_init_set_id(value, imax); } else { *error = NULL; return FALSE; } #undef A return TRUE; } /** * lu_set_prompter: * @context: A context * @prompter: A new function to user for getting information from the user * @callback_data: Data for @prompter * * Changes the prompter function in a context */ void lu_set_prompter(struct lu_context *context, lu_prompt_fn * prompter, gpointer prompter_data) { g_assert(prompter != NULL); context->prompter = prompter; context->prompter_data = prompter_data; } /** * lu_get_prompter: * @context: A context * @prompter: If not %NULL, points to a place where the current prompter * function will be stored * @callback_data: If not %NULL, points to a place where the current prompter * function data will be stored * * Gets current prompter function from a context. */ void lu_get_prompter(struct lu_context *context, lu_prompt_fn **prompter, gpointer *prompter_data) { if (prompter != NULL) { *prompter = context->prompter; } if (prompter_data != NULL) { *prompter_data = context->prompter_data; } } /** * lu_set_modules: * @context: A context * @list: A list of modules (separated by whitespace or commas) * @error: Filled with a #lu_error if an error occurs * * Replaces the current set of modules for queries in @context to @list. * * Returns: %TRUE on success, %FALSE on failure */ gboolean lu_set_modules(struct lu_context * context, const char *list, struct lu_error ** error) { return lu_modules_load(context, list, &context->module_names, error); } /** * lu_get_modules: * @context: A context * * Returns a list of modules for queries in @context. * * Returns: A list of modules separated by spaces, or %NULL if the list of * modules is empty. The list should not be freed by the caller. */ const char * lu_get_modules(struct lu_context *context) { char *tmp = NULL, *ret = NULL; size_t i; for (i = 0; i < context->module_names->n_values; i++) { GValue *value; value = g_value_array_get_nth(context->module_names, i); if (tmp) { char *p; p = g_strconcat(tmp, " ", g_value_get_string(value), NULL); g_free(tmp); tmp = p; } else { tmp = g_value_dup_string(value); } } if (tmp) { ret = context->scache->cache(context->scache, tmp); g_free(tmp); } return ret; } lib/modules.c000066400000000000000000000152211471266067600134600ustar00rootroot00000000000000/* Copyright (C) 2000-2002, 2005 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "user_private.h" #include "internal.h" #define SEPARATORS "\t ," static gboolean load_one_module(struct lu_context *ctx, const char *module_dir, char *module_name, struct lu_error **error) { char *tmp, *symbol, *module_file; GModule *handle; lu_module_init_t module_init; struct lu_module *module; LU_ERROR_CHECK(error); /* Generate the file name. */ tmp = g_strconcat(PACKAGE "_", module_name, NULL); module_file = g_module_build_path(module_dir, tmp); g_free(tmp); /* Open the module. */ handle = g_module_open(module_file, G_MODULE_BIND_LOCAL); if (handle == NULL) { /* If the open failed, we return an error. */ lu_error_new(error, lu_error_module_load, "%s", g_module_error()); goto err_module_file; } /* Determine the name of the module's initialization function and try * to find it. */ symbol = g_strconcat(PACKAGE "_", module_name, "_init", NULL); g_module_symbol(handle, symbol, (gpointer)&module_init); /* If we couldn't find the entry point, error out. */ if (module_init == NULL) { lu_error_new(error, lu_error_module_sym, _("no initialization function %s in `%s'"), symbol, module_file); g_free(symbol); goto err_handle; } g_free(symbol); /* Ask the module to allocate the a module structure and hand it back * to us. */ module = module_init(ctx, error); if (module == NULL) { g_assert(*error != NULL); goto err_handle; } /* Check that the module interface version is right, too. */ if (module->version != LU_MODULE_VERSION) { lu_error_new(error, lu_error_module_version, _("module version mismatch in `%s'"), module_file); /* Don't call module->close, the pointer might not be there */ goto err_handle; } /* For safety's sake, make sure that all functions provided by the * module exist. This can often mean a useless round trip, but it * simplifies the logic of the library greatly. */ #define M(MEMBER) \ do { \ if (module->MEMBER == NULL) { \ lu_error_new(error, lu_error_module_sym, \ _("module `%s' does not define `%s'"), \ module_file, #MEMBER); \ goto err_module; \ } \ } while (0) M(valid_module_combination); M(uses_elevated_privileges); M(user_lookup_name); M(user_lookup_id); M(user_default); M(user_add_prep); M(user_add); M(user_mod); M(user_del); M(user_lock); M(user_unlock); M(user_unlock_nonempty); M(user_is_locked); M(user_setpass); M(user_removepass); M(users_enumerate); M(users_enumerate_by_group); M(users_enumerate_full); M(group_lookup_name); M(group_lookup_id); M(group_default); M(group_add_prep); M(group_add); M(group_mod); M(group_del); M(group_lock); M(group_unlock); M(group_unlock_nonempty); M(group_is_locked); M(group_setpass); M(group_removepass); M(groups_enumerate); M(groups_enumerate_by_user); M(groups_enumerate_full); M(close); #undef M g_free(module_file); /* Initialize the last two fields in the module structure and add it to the module tree. */ module->lu_context = ctx; module->module_handle = handle; module_name = ctx->scache->cache(ctx->scache, module_name); g_tree_insert(ctx->modules, module_name, module); return TRUE; err_module: if (module->close != NULL) module->close(module); err_handle: g_module_close(handle); err_module_file: g_free(module_file); return FALSE; } gboolean lu_modules_load(struct lu_context *ctx, const char *module_list, GValueArray **names, struct lu_error **error) { char *q, *modlist; const char *module_dir; char *module_name; GValueArray *our_names; size_t i; LU_ERROR_CHECK(error); g_assert(ctx != NULL); g_assert(module_list != NULL); g_assert(names != NULL); /* Build a GValueArray for the module names. */ our_names = g_value_array_new(0); /* Figure out where the modules would be. */ module_dir = lu_cfg_read_single(ctx, "defaults/moduledir", MODULEDIR); /* Load the modules. */ modlist = g_strdup(module_list); for (module_name = strtok_r(modlist, SEPARATORS, &q); module_name != NULL; module_name = strtok_r(NULL, SEPARATORS, &q)) { GValue value; /* Only load the module if it's not already loaded. */ if (g_tree_lookup(ctx->modules, module_name) == NULL) { if (load_one_module(ctx, module_dir, module_name, error) == FALSE) { /* The module initializer may report a warning, which is not fatal. */ if (!lu_error_is_warning((*error)->code)) goto error; lu_error_free(error); continue; } } /* Record that we loaded the module. */ memset(&value, 0, sizeof(value)); g_value_init(&value, G_TYPE_STRING); g_value_set_string(&value, module_name); g_value_array_append(our_names, &value); g_value_unset(&value); } for (i = 0; i < our_names->n_values; i++) { GValue *value; struct lu_module *module; value = g_value_array_get_nth(our_names, i); module = g_tree_lookup(ctx->modules, g_value_get_string(value)); g_assert(module != NULL); if (module->valid_module_combination(module, our_names, error) == FALSE) goto error; } g_free(modlist); if (*names != NULL) g_value_array_free(*names); *names = our_names; return TRUE; error: /* Modules loaded before the failure are kept loaded, but the list of used modules does not change. */ g_value_array_free(our_names); g_free(modlist); return FALSE; } /* Unload a given module, implemented as a callback for a GTree where the * module's name is a key, and the module structure is the value. */ int lu_module_unload(gpointer key, gpointer value, gpointer data) { (void)key; (void)data; /* Give the module a chance to clean itself up. */ if (value != NULL) { struct lu_module *module; GModule *handle; module = (struct lu_module *) value; handle = module->module_handle; module->close(module); /* Unload the module. */ if (handle != NULL) g_module_close(handle); } return 0; } lib/prompt.c000066400000000000000000000112071471266067600133310ustar00rootroot00000000000000/* Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include "user.h" #include "user_private.h" /** * SECTION:prompt * @short_description: Sample prompter functions for use with the libuser * library. * @include: libuser/prompt.h * * prompt.h declares two predefined prompter functions which applications can * use instead of providing their own. These should suffice for most * command-line applications. Authors of graphical applications are encouraged * to supply graphical implementations. */ /** * lu_prompt_console: * @prompts: An array of #lu_prompt structures. * @count: The number of elements in the @prompts array. * @callback_data: Ignored. * @error: The location to store error information in the event of an error. * * Prompts the user using a text console. * * Returns: A #gboolean indicating success or failure. */ gboolean lu_prompt_console(struct lu_prompt *prompts, int count, gpointer callback_data, struct lu_error **error) { int i, is_tty; (void)callback_data; LU_ERROR_CHECK(error); if (count > 0) { g_assert(prompts != NULL); } is_tty = isatty(fileno(stdin)); for (i = 0; i < count; i++) { char buf[LINE_MAX], *p; struct termios otermios, ntermios; if (prompts[i].prompt) { g_print("%s", prompts[i].domain ? dgettext(prompts[i].domain, prompts[i].prompt) : prompts[i].prompt); } if (prompts[i].visible && prompts[i].default_value) { g_print(" [%s]: ", prompts[i].default_value); } else { g_print(": "); } prompts[i].value = NULL; prompts[i].free_value = NULL; if (prompts[i].visible == FALSE && is_tty) { if (tcgetattr(fileno(stdin), &otermios) == -1) { lu_error_new(error, lu_error_terminal, _("error reading terminal attributes")); return FALSE; } ntermios = otermios; ntermios.c_lflag &= ~ECHO; if (tcsetattr(fileno(stdin), TCSADRAIN, &ntermios) == -1) { lu_error_new(error, lu_error_terminal, _("error setting terminal attributes")); return FALSE; } } if (fgets(buf, sizeof(buf), stdin) == NULL) { lu_error_new(error, lu_error_terminal, _("error reading from terminal")); return FALSE; } if (prompts[i].visible == FALSE && is_tty) { if (tcsetattr(fileno(stdin), TCSADRAIN, &otermios) == -1) { lu_error_new(error, lu_error_terminal, _("error setting terminal attributes")); return FALSE; } g_print("\n"); } p = strchr(buf, '\r'); if (p != NULL) *p = '\0'; p = strchr(buf, '\n'); if (p != NULL) *p = '\0'; prompts[i].value = (strlen(buf) > 0) ? g_strdup(buf) : (prompts[i].default_value ? g_strdup(prompts[i].default_value) : g_strdup("")); prompts[i].free_value = (void *) g_free; } return TRUE; } /** * lu_prompt_console_quiet: * @prompts: An array of #lu_prompt structures. * @count: The number of elements in the @prompts array. * @callback_data: Ignored. * @error: The location to store error information in the event of an error. * * Prompts the user using a text console. Unlike lu_prompt_console(), this * function will not prompt users for a question for which the calling * application or module supplies a default, and will simply return the * default. * * Returns: A #gboolean indicating success or failure. */ gboolean lu_prompt_console_quiet(struct lu_prompt * prompts, int count, gpointer callback_data, struct lu_error ** error) { int i; gboolean ret = TRUE; LU_ERROR_CHECK(error); if (count > 0) { g_return_val_if_fail(prompts != NULL, FALSE); } for (i = 0; (i < count) && ret; i++) { if (prompts[i].default_value) { prompts[i].value = g_strdup(prompts[i].default_value); prompts[i].free_value = (void *) g_free; } else { ret = ret && lu_prompt_console(&prompts[i], 1, callback_data, error); } } return ret; } lib/prompt.h000066400000000000000000000053651471266067600133460ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef libuser_prompt_h #define libuser_prompt_h #include #include G_BEGIN_DECLS /** * lu_prompt: * @key: An invariant string of the form "module/name", which describes the * information being prompted for. The calling application may use this value * as an index into a hash table used to cache answers to particular queries. * @prompt: The text of a prompt to display. This *may* be translated for the * current locale by a module. * @domain: The text domain which contains this prompt's translations. This may * be the default libuser domain, or a module-specific text domain which the * module which provided this prompt bound for gettext when it was loaded. * @visible: Whether or not the user's response should be echoed to the screen * (in a console app) or visible in an entry field (in a GUI app). * @default_value: A default value, given as a string. This will only contain a * value if the string is visible, but the reverse won't necessarily be true * (default_value -> visible). * @value: The user's response. This is set by the prompter function. * @free_value: A function which can free the user's response. This is set by * the prompter function. If NULL, the response will not be freed, ever. * * The type of data passed to a prompter function. The library uses these * when it needs to prompt the user for information. */ struct lu_prompt { const char *key; const char *prompt; const char *domain; gboolean visible; const char *default_value; char *value; void (*free_value) (void *); }; /* A prompter function. */ typedef gboolean (lu_prompt_fn)(struct lu_prompt * prompts, int count, gpointer callback_data, struct lu_error ** error); gboolean lu_prompt_console(struct lu_prompt *prompts, int count, gpointer callback_data, struct lu_error **error); gboolean lu_prompt_console_quiet(struct lu_prompt *prompts, int count, gpointer callback_data, struct lu_error **error); G_END_DECLS #endif lib/scache.c000066400000000000000000000041301471266067600132330ustar00rootroot00000000000000/* Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include "user_private.h" #include "internal.h" static char * lu_string_cache_cache(struct lu_string_cache *cache, const char *string) { char *ret; if (string == NULL) { return NULL; } if ((ret = g_tree_lookup(cache->tree, (char *) string)) == NULL) { ret = g_strdup(string); g_tree_insert(cache->tree, ret, ret); } return ret; } static int get_keys(gpointer key, gpointer value, gpointer data) { GList **list = data; (void)value; if (key) { *list = g_list_append(*list, key); } return 0; } static void lu_string_cache_free(struct lu_string_cache *cache) { GList *list = NULL, *i; g_return_if_fail(cache != NULL); g_tree_foreach(cache->tree, get_keys, &list); g_tree_destroy(cache->tree); for (i = list; i; i = g_list_next(i)) { char *tmp; if ((tmp = i->data) != NULL) { memset(tmp, '\0', strlen(tmp)); g_free(tmp); } } g_list_free(list); memset(cache, 0, sizeof(struct lu_string_cache)); g_free(cache); } struct lu_string_cache * lu_string_cache_new(gboolean case_sensitive) { struct lu_string_cache *cache; cache = g_malloc0(sizeof(struct lu_string_cache)); if (case_sensitive) { cache->tree = g_tree_new(lu_strcmp); } else { cache->tree = g_tree_new(lu_strcasecmp); } cache->cache = lu_string_cache_cache; cache->free = lu_string_cache_free; return cache; } lib/user.c000066400000000000000000001772651471266067600130070ustar00rootroot00000000000000/* Copyright (C) 2000-2002, 2004, 2005, 2006, 2007 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include "user_private.h" #include "internal.h" /** * SECTION:user * @short_description: Functions for initializing the library, looking up * information, and making changes to the system information store. * @include: libuser/user.h * * user.h contains declarations for functions which start * up and shut down the libuser library, and for functions which perform lookup * queries and modifications of the system information store. */ #define DEFAULT_ID 500 enum lu_dispatch_id { uses_elevated_privileges = 0x0003, user_lookup_name, user_lookup_id, user_default, user_add_prep, user_add, user_mod, user_del, user_lock, user_unlock, user_unlock_nonempty, user_is_locked, user_setpass, user_removepass, users_enumerate, users_enumerate_by_group, users_enumerate_full, group_lookup_name, group_lookup_id, group_default, group_add_prep, group_add, group_mod, group_del, group_lock, group_unlock, group_unlock_nonempty, group_is_locked, group_setpass, group_removepass, groups_enumerate, groups_enumerate_full, groups_enumerate_by_user, }; /** * lu_start: * @authname: Suggested client name to use when connecting to servers, or %NULL * @auth_type: Whether auth_name is a user or a group * @modules: A list of modules to use for queries (separated by whitespace or * commas), or %NULL to use modules specified in the config file * @create_modules: A list of modules to use for entity creation (separated by * whitespace or commas), or %NULL to use modules specified in the config file * @prompter: A function to use for getting information from the user * @callback_data: Data for @prompter * @error: Filled with a #lu_error if an error occurs * * Initializes the libuser library. * * Returns: a context which should be freed by lu_end() on success, %NULL on * failure */ struct lu_context * lu_start(const char *auth_name, enum lu_entity_type auth_type, const char *modules, const char *create_modules, lu_prompt_fn *prompter, gpointer prompter_data, struct lu_error **error) { struct lu_context *ctx; LU_ERROR_CHECK(error); /* Register our message domain with gettext. */ bindtextdomain(PACKAGE, LOCALEDIR); /* Initialize the gtype system if it's not already initialized. */ g_type_init(); /* Allocate space for the context. */ ctx = g_malloc0(sizeof(struct lu_context)); ctx->scache = lu_string_cache_new(TRUE); /* Create a configuration structure. */ if (lu_cfg_init(ctx, error) == FALSE) /* If there's an error, lu_cfg_init() sets it. */ goto err_scache; ctx->auth_name = ctx->scache->cache(ctx->scache, auth_name); ctx->auth_type = auth_type; ctx->prompter = prompter; ctx->prompter_data = prompter_data; ctx->modules = g_tree_new(lu_strcasecmp); /* Read the list of default modules, if the application didn't specify * any that we should be using. */ if (modules == NULL) { modules = lu_cfg_read_single(ctx, "defaults/modules", "files shadow"); } if (create_modules == NULL) { create_modules = lu_cfg_read_single(ctx, "defaults/create_modules", "files shadow"); } /* Load the modules. */ if (!lu_modules_load(ctx, modules, &ctx->module_names, error)) goto err_modules; /* lu_module_load sets errors */ if (!lu_modules_load(ctx, create_modules, &ctx->create_module_names, error)) goto err_module_names; /* lu_module_load sets errors */ return ctx; err_module_names: g_value_array_free(ctx->module_names); g_tree_foreach(ctx->modules, lu_module_unload, NULL); err_modules: g_tree_destroy(ctx->modules); err_scache: ctx->scache->free(ctx->scache); g_free(ctx); return NULL; } /** * lu_end: * @context: a context * * Destroys a libuser library context */ void lu_end(struct lu_context *context) { g_assert(context != NULL); g_tree_foreach(context->modules, lu_module_unload, NULL); g_tree_destroy(context->modules); g_value_array_free(context->create_module_names); g_value_array_free(context->module_names); lu_cfg_done(context); context->scache->free(context->scache); memset(context, 0, sizeof(struct lu_context)); g_free(context); } static const char * extract_name(struct lu_ent *ent) { const char *name; g_return_val_if_fail(ent != NULL, NULL); g_return_val_if_fail((ent->type == lu_user) || (ent->type == lu_group), NULL); name = lu_ent_get_first_string(ent, ent->type == lu_user ? LU_USERNAME : LU_GROUPNAME); if (name == NULL) return NULL; return ent->cache->cache(ent->cache, name); } static gboolean lu_name_allowed(struct lu_ent *ent, struct lu_error **error) { const char *sdata; size_t len, i; g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail((ent->type == lu_user) || (ent->type == lu_group), FALSE); sdata = extract_name(ent); if (sdata == NULL) { lu_error_new(error, lu_error_name_bad, _("name is not set")); return FALSE; } len = strlen(sdata); if (len == 0) { lu_error_new(error, lu_error_name_bad, _("name is too short")); return FALSE; } if (len > UT_NAMESIZE) { lu_error_new(error, lu_error_name_bad, _("name is too long (%zu > %d)"), len, UT_NAMESIZE); return FALSE; } for (i = 0; sdata[i] != '\0'; i++) { if ((sdata[i] & 0x80) != 0) { lu_error_new(error, lu_error_name_bad, _("name contains non-ASCII characters")); return FALSE; } } for (i = 0; sdata[i] != '\0'; i++) { if ((sdata[i] == 0x7f) || (sdata[i] < 0x20)) { lu_error_new(error, lu_error_name_bad, _("name contains control characters")); return FALSE; } } for (i = 0; sdata[i] != '\0'; i++) { if (g_ascii_isspace(sdata[i])) { lu_error_new(error, lu_error_name_bad, _("name contains whitespace")); return FALSE; } } /* SUSv3 (3.426) says "To be portable across ..., the value is composed of characters from the portable filename character set. The hyphen should not be used as the first character of a portable user name. Note: "the value _is_ composed", not "should be" composed. We don't have to allow more. */ if (sdata[0] == '-') { lu_error_new(error, lu_error_name_bad, _("name starts with a hyphen")); return FALSE; } for (i = 0; sdata[i] != '\0'; i++) { if (!((sdata[i] >= 'a' && sdata[i] <= 'z') || (sdata[i] >= 'A' && sdata[i] <= 'Z') || (sdata[i] >= '0' && sdata[i] <= '9') || sdata[i] == '.' || sdata[i] == '-' || sdata[i] == '_' /* Allow trailing $ for samba machine accounts. */ || (sdata[i] == '$' && sdata[i + 1] == '\0'))) { lu_error_new(error, lu_error_name_bad, _("name contains invalid char `%c'"), sdata[i]); return FALSE; } } return TRUE; } static id_t extract_id(struct lu_ent *ent) { g_return_val_if_fail(ent != NULL, LU_VALUE_INVALID_ID); g_return_val_if_fail((ent->type == lu_user) || (ent->type == lu_group), LU_VALUE_INVALID_ID); return lu_ent_get_first_id(ent, ent->type == lu_user ? LU_UIDNUMBER : LU_GIDNUMBER); } static uid_t convert_user_name_to_id(struct lu_context *context, const char *sdata, struct lu_error **error) { struct lu_ent *ent; uid_t ret = LU_VALUE_INVALID_ID; char buf[LINE_MAX * 4]; struct passwd *err, passwd; if ((getpwnam_r(sdata, &passwd, buf, sizeof(buf), &err) == 0) && (err == &passwd)) return passwd.pw_uid; ent = lu_ent_new(); if (lu_user_lookup_name(context, sdata, ent, error) == TRUE) { ret = extract_id(ent); if (ret == LU_VALUE_INVALID_ID) lu_error_new(error, lu_error_generic, _("user %s has no UID"), sdata); } else if (*error == NULL) lu_error_new(error, lu_error_generic, _("user %s not found"), sdata); lu_ent_free(ent); return ret; } static gid_t convert_group_name_to_id(struct lu_context *context, const char *sdata, struct lu_error **error) { struct lu_ent *ent; gid_t ret = LU_VALUE_INVALID_ID; char buf[LINE_MAX * 4]; struct group *err, group; if ((getgrnam_r(sdata, &group, buf, sizeof(buf), &err) == 0) && (err == &group)) return group.gr_gid; ent = lu_ent_new(); if (lu_group_lookup_name(context, sdata, ent, error) == TRUE) { ret = extract_id(ent); if (ret == LU_VALUE_INVALID_ID) lu_error_new(error, lu_error_generic, _("group %s has no GID"), sdata); } else if (*error == NULL) lu_error_new(error, lu_error_generic, _("group %s not found"), sdata); lu_ent_free(ent); return ret; } static gboolean ent_has_name_and_id(struct lu_ent *ent, struct lu_error **error) { const char *name; id_t id; g_return_val_if_fail(ent->type == lu_user || ent->type == lu_group, FALSE); name = extract_name(ent); id = extract_id(ent); if (name != NULL && id != LU_VALUE_INVALID_ID) return TRUE; if (id != LU_VALUE_INVALID_ID) lu_error_new(error, lu_error_generic, ent->type == lu_user ? _("user %jd has no name") : _("group %jd has no name"), (intmax_t)id); else if (name != NULL) lu_error_new(error, lu_error_generic, ent->type == lu_user ? _("user %s has no UID") : _("group %s has no GID"), name); else lu_error_new(error, lu_error_generic, ent->type == lu_user ? _("user has neither a name nor an UID") : _("group has neither a name nor a GID")); return FALSE; } static gboolean lu_refresh_int(struct lu_context *context, struct lu_ent *entity, struct lu_error **error); static gboolean lu_refresh_user(struct lu_context *context, struct lu_ent *entity, struct lu_error **error) { g_return_val_if_fail(entity->type == lu_user, FALSE); return lu_refresh_int(context, entity, error); } static gboolean lu_refresh_group(struct lu_context *context, struct lu_ent *entity, struct lu_error **error) { g_return_val_if_fail(entity->type == lu_group, FALSE); return lu_refresh_int(context, entity, error); } static gboolean run_single(struct lu_context *context, struct lu_module *module, enum lu_dispatch_id id, const char *sdata, id_t ldata, struct lu_ent *entity, gpointer *ret, struct lu_error **error) { GPtrArray *ptrs; size_t i; g_assert(context != NULL); g_assert(module != NULL); LU_ERROR_CHECK(error); switch (id) { case user_lookup_name: g_return_val_if_fail(sdata != NULL, FALSE); g_return_val_if_fail(strlen(sdata) > 0, FALSE); g_return_val_if_fail(entity != NULL, FALSE); if (module->user_lookup_name(module, sdata, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case user_lookup_id: g_return_val_if_fail(entity != NULL, FALSE); if (module->user_lookup_id(module, ldata, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case user_default: g_return_val_if_fail(entity != NULL, FALSE); if (module->user_default(module, sdata, ldata, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case user_add: g_return_val_if_fail(entity != NULL, FALSE); if (module->user_add(module, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case user_add_prep: g_return_val_if_fail(entity != NULL, FALSE); if (lu_name_allowed(entity, error) == FALSE) { return FALSE; } else if (module->user_add_prep(module, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case user_mod: g_return_val_if_fail(entity != NULL, FALSE); if (lu_name_allowed(entity, error) == FALSE) return FALSE; return module->user_mod(module, entity, error); case user_del: g_return_val_if_fail(entity != NULL, FALSE); return module->user_del(module, entity, error); case user_lock: g_return_val_if_fail(entity != NULL, FALSE); return module->user_lock(module, entity, error); case user_unlock: g_return_val_if_fail(entity != NULL, FALSE); return module->user_unlock(module, entity, error); case user_unlock_nonempty: g_return_val_if_fail(entity != NULL, FALSE); return module->user_unlock_nonempty(module, entity, error); case user_is_locked: g_return_val_if_fail(entity != NULL, FALSE); return module->user_is_locked(module, entity, error); case user_setpass: g_return_val_if_fail(entity != NULL, FALSE); g_return_val_if_fail(sdata != NULL, FALSE); return module->user_setpass(module, entity, sdata, error); case user_removepass: g_return_val_if_fail(entity != NULL, FALSE); return module->user_removepass(module, entity, error); case users_enumerate: g_return_val_if_fail(ret != NULL, FALSE); *ret = module->users_enumerate(module, sdata, error); return TRUE; case users_enumerate_by_group: g_return_val_if_fail(sdata != NULL, FALSE); g_return_val_if_fail(strlen(sdata) > 0, FALSE); g_return_val_if_fail(ret != NULL, FALSE); *ret = module->users_enumerate_by_group(module, sdata, ldata, error); return TRUE; case users_enumerate_full: g_return_val_if_fail(ret != NULL, FALSE); *ret = module->users_enumerate_full(module, sdata, error); if (*ret) { ptrs = *ret; for (i = 0; i < ptrs->len; i++) { lu_ent_add_module(g_ptr_array_index(ptrs, i), module->name); } } return TRUE; case group_lookup_name: g_return_val_if_fail(sdata != NULL, FALSE); g_return_val_if_fail(strlen(sdata) > 0, FALSE); g_return_val_if_fail(entity != NULL, FALSE); if (module->group_lookup_name(module, sdata, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case group_lookup_id: g_return_val_if_fail(entity != NULL, FALSE); if (module->group_lookup_id(module, ldata, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case group_default: g_return_val_if_fail(entity != NULL, FALSE); if (module->group_default(module, sdata, ldata, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case group_add: g_return_val_if_fail(entity != NULL, FALSE); if (module->group_add(module, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case group_add_prep: g_return_val_if_fail(entity != NULL, FALSE); if (lu_name_allowed(entity, error) == FALSE) { return FALSE; } else if (module->group_add_prep(module, entity, error)) { lu_ent_add_module(entity, module->name); return TRUE; } return FALSE; case group_mod: g_return_val_if_fail(entity != NULL, FALSE); if (lu_name_allowed(entity, error) == FALSE) return FALSE; return module->group_mod(module, entity, error); case group_del: g_return_val_if_fail(entity != NULL, FALSE); return module->group_del(module, entity, error); case group_lock: g_return_val_if_fail(entity != NULL, FALSE); return module->group_lock(module, entity, error); case group_unlock: g_return_val_if_fail(entity != NULL, FALSE); return module->group_unlock(module, entity, error); case group_unlock_nonempty: g_return_val_if_fail(entity != NULL, FALSE); return module->group_unlock_nonempty(module, entity, error); case group_is_locked: g_return_val_if_fail(entity != NULL, FALSE); return module->group_is_locked(module, entity, error); case group_setpass: g_return_val_if_fail(entity != NULL, FALSE); g_return_val_if_fail(sdata != NULL, FALSE); return module->group_setpass(module, entity, sdata, error); case group_removepass: g_return_val_if_fail(entity != NULL, FALSE); return module->group_removepass(module, entity, error); case groups_enumerate: g_return_val_if_fail(ret != NULL, FALSE); *ret = module->groups_enumerate(module, sdata, error); return TRUE; case groups_enumerate_by_user: g_return_val_if_fail(sdata != NULL, FALSE); g_return_val_if_fail(strlen(sdata) > 0, FALSE); g_return_val_if_fail(ret != NULL, FALSE); *ret = module->groups_enumerate_by_user(module, sdata, ldata, error); return TRUE; case groups_enumerate_full: g_return_val_if_fail(ret != NULL, FALSE); *ret = module->groups_enumerate_full(module, sdata, error); if (*ret) { ptrs = *ret; for (i = 0; i < ptrs->len; i++) { lu_ent_add_module(g_ptr_array_index(ptrs, i), module->name); } } return TRUE; case uses_elevated_privileges: return module->uses_elevated_privileges(module); default: g_assert_not_reached(); /* not reached */ } g_assert_not_reached(); } static gboolean logic_and(gboolean a, gboolean b) { return a && b; } static gboolean logic_or(gboolean a, gboolean b) { return a || b; } static void remove_duplicate_values(GValueArray *array) { size_t i; for (i = 0; i < array->n_values; i++) { size_t j; GValue *ivalue; ivalue = g_value_array_get_nth(array, i); for (j = i + 1; j < array->n_values; j++) { GValue *jvalue; jvalue = g_value_array_get_nth(array, j); if (G_VALUE_TYPE(ivalue) == G_VALUE_TYPE(jvalue) && lu_values_equal(ivalue, jvalue)) { g_value_array_remove(array, j); j--; } } } } static int compare_strings(gconstpointer a, gconstpointer b, gpointer data) { (void)data; return strcmp(a, b); } static GPtrArray * merge_ent_array_duplicates(GPtrArray *array) { GPtrArray *ret; size_t i; GTree *users, *groups; g_return_val_if_fail(array != NULL, NULL); users = g_tree_new_full(compare_strings, NULL, g_free, NULL); groups = g_tree_new_full(compare_strings, NULL, g_free, NULL); /* A structure to hold the new list. */ ret = g_ptr_array_new(); /* Iterate over every entity in the incoming list. */ for (i = 0; i < array->len; i++) { struct lu_ent *current, *saved; char *key; GValueArray *values; GValue *value; GTree *tree; current = g_ptr_array_index(array, i); key = NULL; values = NULL; tree = NULL; /* Get the name of the user or group. */ if (current->type == lu_user) { key = lu_ent_get_first_value_strdup(current, LU_USERNAME); tree = users; } else if (current->type == lu_group) { key = lu_ent_get_first_value_strdup(current, LU_GROUPNAME); tree = groups; } else { g_warning("Unknown entity(%zu) type: %d.\n", i, current->type); g_assert_not_reached(); } /* Check if there's already an entity with that name. */ saved = g_tree_lookup(tree, key); /* If it's not in there, add this one. */ if (saved == NULL) { g_tree_insert(tree, key, current); g_ptr_array_add(ret, current); } else { GList *attributes, *list; const char *attr; size_t j; g_free (key); /* Merge all of its data into the existing one; first, * the current data. */ attributes = lu_ent_get_attributes_current(current); list = attributes; while (attributes != NULL) { attr = (const char *)attributes->data; values = lu_ent_get_current(current, attr); if (values != NULL) { for (j = 0; j < values->n_values; j++) { value = g_value_array_get_nth( values, j); lu_ent_add_current(saved, attr, value); } } attributes = g_list_next(attributes); } g_list_free(list); /* Merge the pending data. */ attributes = lu_ent_get_attributes(current); list = attributes; while (attributes != NULL) { attr = (const char *)attributes->data; values = lu_ent_get(current, attr); if (values != NULL) { for (j = 0; j < values->n_values; j++) { value = g_value_array_get_nth( values, j); lu_ent_add(saved, attr, value); } } attributes = g_list_next(attributes); } g_list_free(list); /* Now merge the entity's list of modules. */ lu_util_append_values(saved->modules, current->modules); remove_duplicate_values(saved->modules); lu_ent_free(current); } } g_tree_destroy(users); g_tree_destroy(groups); g_ptr_array_free(array, TRUE); return ret; } static gboolean run_list(struct lu_context *context, GValueArray *list, gboolean (*logic_function)(gboolean a, gboolean b), enum lu_dispatch_id id, const char *sdata, id_t ldata, struct lu_ent *entity, gpointer ret, struct lu_error **firsterror) { gboolean success; struct lu_error *lasterror = NULL; size_t i; LU_ERROR_CHECK(firsterror); g_assert(context != NULL); g_assert(context->module_names != NULL); g_assert(list != NULL); g_assert(entity != NULL); g_assert(logic_function != NULL); g_assert((id == user_lookup_name) || (id == user_lookup_id) || (id == user_default) || (id == user_add_prep) || (id == user_add) || (id == user_mod) || (id == user_del) || (id == user_lock) || (id == user_unlock) || (id == user_unlock_nonempty) || (id == user_is_locked) || (id == user_setpass) || (id == user_removepass) || (id == users_enumerate) || (id == users_enumerate_by_group) || (id == users_enumerate_full) || (id == group_lookup_name) || (id == group_lookup_id) || (id == group_default) || (id == group_add_prep) || (id == group_add) || (id == group_mod) || (id == group_del) || (id == group_lock) || (id == group_unlock) || (id == group_unlock_nonempty) || (id == group_is_locked) || (id == group_setpass) || (id == group_removepass) || (id == groups_enumerate) || (id == groups_enumerate_by_user) || (id == groups_enumerate_full) || (id == uses_elevated_privileges)); success = FALSE; for (i = 0; i < list->n_values; i++) { struct lu_module *module; gpointer scratch; GValue *value; gboolean tsuccess; value = g_value_array_get_nth(list, i); module = g_tree_lookup(context->modules, g_value_get_string(value)); g_assert(module != NULL); scratch = NULL; tsuccess = run_single(context, module, id, sdata, ldata, entity, &scratch, &lasterror); if (scratch != NULL) switch (id) { GPtrArray *ptr_array, *tmp_ptr_array; GValueArray *value_array, *tmp_value_array; size_t j; case users_enumerate: case users_enumerate_by_group: case groups_enumerate: case groups_enumerate_by_user: tmp_value_array = scratch; value_array = *(GValueArray **)ret; if (value_array == NULL) { value_array = g_value_array_new(0); } if (tmp_value_array != NULL) { lu_util_append_values(value_array, tmp_value_array); g_value_array_free(tmp_value_array); } remove_duplicate_values(value_array); *(GValueArray **)ret = value_array; break; case users_enumerate_full: case groups_enumerate_full: /* FIXME: do some kind of merging here. */ tmp_ptr_array = scratch; ptr_array = *(GPtrArray **)ret; if (ptr_array == NULL) { ptr_array = g_ptr_array_new(); } if (tmp_ptr_array != NULL) { for (j = 0; j < tmp_ptr_array->len; j++) { struct lu_ent *tmp_ent; tmp_ent = g_ptr_array_index(tmp_ptr_array, j); g_ptr_array_add(ptr_array, tmp_ent); } g_ptr_array_free(tmp_ptr_array, TRUE); } /* remove_duplicate_ptrs(ptr_array); */ *(GPtrArray **)ret = ptr_array; break; case user_lookup_name: case user_lookup_id: case user_default: case user_add_prep: case user_add: case user_mod: case user_del: case group_lookup_name: case group_lookup_id: case group_default: case group_add_prep: case group_add: case group_mod: case group_del: case uses_elevated_privileges: break; default: g_assert_not_reached(); /* never reached */ break; } if (i == 0) { success = tsuccess; } else { success = logic_function(success, tsuccess); } if (*firsterror == NULL) { /* Make this the error we report. */ *firsterror = lasterror; lasterror = NULL; } else if (lasterror != NULL) /* Already have an error, discard. */ lu_error_free(&lasterror); } return success; } static gboolean lu_refresh_int(struct lu_context *context, struct lu_ent *entity, struct lu_error **error) { enum lu_dispatch_id id = 0; const char *sdata; gpointer scratch = NULL; g_return_val_if_fail((entity->type == lu_user) || (entity->type == lu_group), FALSE); if (entity->type == lu_user) { id = user_lookup_name; } else if (entity->type == lu_group) { id = group_lookup_name; } else { g_assert_not_reached(); } sdata = extract_name(entity); if (sdata == NULL) return FALSE; if (run_list(context, entity->modules, logic_and, id, sdata, LU_VALUE_INVALID_ID, entity, &scratch, error)) { lu_ent_revert(entity); return TRUE; } return FALSE; } static gboolean lu_dispatch(struct lu_context *context, enum lu_dispatch_id id, const char *sdata, id_t ldata, struct lu_ent *entity, gpointer ret, struct lu_error **error) { struct lu_ent *tmp; gboolean success; GValueArray *values = NULL; GPtrArray *ptrs = NULL; gpointer scratch = NULL; LU_ERROR_CHECK(error); g_assert(context != NULL); tmp = lu_ent_new(); if (entity != NULL) { lu_ent_copy(entity, tmp); } success = FALSE; switch (id) { case user_lookup_id: case group_lookup_id: /* Make sure data items are right for this call. */ sdata = NULL; g_assert(ldata != LU_VALUE_INVALID_ID); /* Run the list. */ if (run_list(context, context->module_names, logic_or, id, sdata, ldata, tmp, &scratch, error)) { /* Got a match on that ID, convert it to a * name and look it up by name. */ const char *attr = NULL; if (id == user_lookup_id) { attr = LU_USERNAME; id = user_lookup_name; } if (id == group_lookup_id) { attr = LU_GROUPNAME; id = group_lookup_name; } sdata = lu_ent_get_first_string_current(tmp, attr); if (sdata != NULL) sdata = tmp->cache->cache(tmp->cache, sdata); else { /* No values for the right attribute. */ break; } } else { /* No match on that ID. */ break; } /* no break: fall through on successful ID->name conversion */ case user_lookup_name: case group_lookup_name: /* Make sure data items are right for this call. */ g_assert(sdata != NULL); /* Run the list. */ if (run_list(context, context->module_names, logic_or, id, sdata, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { if (entity != NULL) { lu_ent_revert(tmp); lu_ent_copy(tmp, entity); } success = TRUE; } break; case user_default: case group_default: /* Make sure we have both name and boolean here. */ if (sdata == NULL) { free(tmp); return FALSE; } /* Run the checks and preps. */ if (run_list(context, context->create_module_names, logic_and, id, sdata, ldata, tmp, &scratch, error)) { if (entity != NULL) { lu_ent_copy(tmp, entity); } success = TRUE; } break; case user_add_prep: case group_add_prep: /* Make sure we have both name and ID here. */ if (ent_has_name_and_id(tmp, error) == FALSE) break; /* Run the checks and preps. */ if (run_list(context, context->create_module_names, logic_and, id, NULL, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { if (entity != NULL) { lu_ent_copy(tmp, entity); } success = TRUE; } break; case user_add: case group_add: /* Make sure we have both name and ID here. */ if (ent_has_name_and_id(tmp, error) == FALSE) break; /* Add the account. */ if (run_list(context, context->create_module_names, logic_and, id, NULL, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { if (entity != NULL) { lu_ent_copy(tmp, entity); } success = TRUE; } break; case user_mod: case group_mod: /* Make sure we have both name and ID here. */ /* FIXME: this checks current, not pending values */ if (ent_has_name_and_id(tmp, error) == FALSE) break; /* Make the changes. */ g_assert(entity != NULL); if (run_list(context, entity->modules, logic_and, id, NULL, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { lu_ent_commit(tmp); lu_ent_copy(tmp, entity); success = TRUE; } break; case user_del: case user_lock: case user_unlock: case user_unlock_nonempty: case group_del: case group_lock: case group_unlock: case group_unlock_nonempty: /* Make sure we have both name and ID here. */ if (ent_has_name_and_id(tmp, error) == FALSE) break; /* Make the changes. */ g_assert(entity != NULL); if (run_list(context, entity->modules, logic_and, id, NULL, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { lu_ent_revert(tmp); lu_ent_copy(tmp, entity); success = TRUE; } break; case user_setpass: case group_setpass: /* Make sure we have a valid password. */ if (sdata == NULL) { free(tmp); return FALSE; } /* no break: fall through */ case user_removepass: case group_removepass: /* Make the changes. */ g_assert(entity != NULL); if (run_list(context, entity->modules, logic_and, id, sdata, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { lu_ent_revert(tmp); lu_ent_copy(tmp, entity); success = TRUE; } break; case user_is_locked: case group_is_locked: /* Make sure we have both name and ID here. */ if (ent_has_name_and_id(tmp, error) == FALSE) break; /* Run the checks. */ g_assert(entity != NULL); if (run_list(context, entity->modules, logic_or, id, NULL, LU_VALUE_INVALID_ID, tmp, &scratch, error)) { lu_ent_copy(tmp, entity); success = TRUE; } break; case users_enumerate_by_group: case groups_enumerate_by_user: /* Make sure we have both name and ID here. */ if (sdata == NULL) { free(tmp); return FALSE; } if (id == users_enumerate_by_group) ldata = convert_group_name_to_id(context, sdata, error); else if (id == groups_enumerate_by_user) ldata = convert_user_name_to_id(context, sdata, error); else g_assert_not_reached(); if (ldata == LU_VALUE_INVALID_ID) break; /* no break: fall through */ case users_enumerate: case groups_enumerate: /* Get the lists. */ if (run_list(context, context->module_names, logic_or, id, sdata, ldata, tmp, &values, error)) { *(GValueArray **)ret = values; success = TRUE; } break; case users_enumerate_full: case groups_enumerate_full: /* Get the lists. */ if (run_list(context, context->module_names, logic_or, id, sdata, ldata, tmp, &ptrs, error)) { if (ptrs != NULL) { size_t i; for (i = 0; i < ptrs->len; i++) { struct lu_ent *ent; ent = g_ptr_array_index(ptrs, i); lu_ent_revert(ent); } } *(GPtrArray **)ret = ptrs; success = TRUE; } /* Clean up results. */ if (*(GPtrArray **)ret != NULL) { *(GPtrArray **)ret = merge_ent_array_duplicates(*(GPtrArray **)ret); } break; case uses_elevated_privileges: if (run_list(context, context->module_names, logic_or, id, sdata, ldata, tmp, &scratch, error)) { success = TRUE; } break; default: g_assert_not_reached(); break; } lu_ent_free(tmp); if (success) { switch (id) { /* user_lookup_id was converted into user_lookup_name above; this case label is included only for completeness. */ case user_lookup_id: case user_lookup_name: g_assert(entity != NULL); entity->type = lu_user; break; /* group_lookup_id was converted into group_lookup_name above; this case label is included only for completeness. */ case group_lookup_name: case group_lookup_id: g_assert(entity != NULL); entity->type = lu_group; break; default: break; } if ((error != NULL) && (*error != NULL)) { lu_error_free(error); } } return success; } /** * lu_uses_elevated_privileges: * @context: A context * * Checks if any module uses elevated privileges (e.g. modifies files that * normal users can't modify). * * Returns: %TRUE if at least one module uses elevated privileges */ /* FIXME: error status, if any, is not reported to the caller */ gboolean lu_uses_elevated_privileges (struct lu_context *context) { struct lu_error *error = NULL; gboolean ret = lu_dispatch(context, uses_elevated_privileges, NULL, 0, NULL, NULL, &error); if (error != NULL) { lu_error_free(&error); } return ret; } /** * lu_user_lookup_name: * @context: A context * @name: User name * @ent: An entity filled with received information * @error: Filled with a #lu_error if an error occurs * * Looks up an user by name. * * Returns: %TRUE on success. If the user doesn't exist, returns %FALSE without * setting @error. */ gboolean lu_user_lookup_name(struct lu_context * context, const char *name, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(name != NULL, FALSE); return lu_dispatch(context, user_lookup_name, name, 0, ent, NULL, error); } /** * lu_group_lookup_name: * @context: A context * @name: Group name * @ent: An entity filled with received information * @error: Filled with a #lu_error if an error occurs * * Looks up a group by name. * * Returns: %TRUE on success. If the group doesn't exist, returns %FALSE * without setting @error. */ gboolean lu_group_lookup_name(struct lu_context * context, const char *name, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(name != NULL, FALSE); return lu_dispatch(context, group_lookup_name, name, 0, ent, NULL, error); } /** * lu_user_lookup_id: * @context: A context * @uid: User ID * @ent: An entity filled with received information * @error: Filled with a #lu_error if an error occurs * * Looks up an user by UID. * * Returns: %TRUE on success. If the user doesn't exist, returns %FALSE without * setting @error. */ gboolean lu_user_lookup_id(struct lu_context * context, uid_t uid, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); return lu_dispatch(context, user_lookup_id, NULL, uid, ent, NULL, error); } /** * lu_group_lookup_id: * @context: A context * @gid: Group ID * @ent: An entity filled with received information * @error: Filled with a #lu_error if an error occurs * * Looks up a group by GID. * * Returns: %TRUE on success. If the group doesn't exist, returns %FALSE * without setting @error. */ gboolean lu_group_lookup_id(struct lu_context * context, gid_t gid, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); return lu_dispatch(context, group_lookup_id, NULL, gid, ent, NULL, error); } /** * lu_user_add: * @context: A context * @ent: An entity describing the user, on success updated with resulting * account * @error: Filled with a #lu_error if an error occurs * * Creates an user in all modules specified for entity creation. * * Returns: %TRUE on success */ gboolean lu_user_add(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { const char *dubious_home; gboolean ret = FALSE; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); dubious_home = lu_ent_get_first_string(ent, LU_DUBIOUS_HOMEDIRECTORY); if (dubious_home != NULL) { if (lu_ent_get(ent, LU_HOMEDIRECTORY) == NULL) { lu_error_new(error, lu_error_name_bad, _("Refusing to use dangerous home " "directory `%s' by default"), dubious_home); return FALSE; } /* LU_DUBIOUS_HOMEDIRECTORY is purely internal, make sure it won't get saved anywhere. */ lu_ent_clear(ent, LU_DUBIOUS_HOMEDIRECTORY); } if (lu_dispatch(context, user_add_prep, NULL, LU_VALUE_INVALID_ID, ent, NULL, error)) { ret = lu_dispatch(context, user_add, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_user(context, ent, error); } return ret; } /** * lu_group_add: * @context: A context * @ent: An entity describing the group, on success updated with resulting * account * @error: Filled with a #lu_error if an error occurs * * Creates a group in all modules specified for entity creation. * * Returns: %TRUE on success */ gboolean lu_group_add(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { gboolean ret = FALSE; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); if (lu_dispatch(context, group_add_prep, NULL, LU_VALUE_INVALID_ID, ent, NULL, error)) { ret = lu_dispatch(context, group_add, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_group(context, ent, error); } return ret; } /** * lu_user_modify: * @context: A context * @ent: An entity with pending modifications, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Modifies an user entity. * * Returns: %TRUE on success */ gboolean lu_user_modify(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return lu_dispatch(context, user_mod, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_user(context, ent, error); } /** * lu_group_modify: * @context: A context * @ent: An entity with pending modifications, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Modifies a group entity. * * Returns: %TRUE on success */ gboolean lu_group_modify(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); return lu_dispatch(context, group_mod, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_group(context, ent, error); } /** * lu_user_delete: * @context: A context * @ent: An entity describing the user * @error: Filled with a #lu_error if an error occurs * * Deletes an user. * * Returns: %TRUE on success */ gboolean lu_user_delete(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return lu_dispatch(context, user_del, NULL, LU_VALUE_INVALID_ID, ent, NULL, error); } /** * lu_group_delete: * @context: A context * @ent: An entity describing the group * @error: Filled with a #lu_error if an error occurs * * Deletes a group. * * Returns: %TRUE on success */ gboolean lu_group_delete(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); return lu_dispatch(context, group_del, NULL, LU_VALUE_INVALID_ID, ent, NULL, error); } /** * lu_user_lock: * @context: A context * @ent: An entity describing the user, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Locks an user account. * * Returns: %TRUE on success */ gboolean lu_user_lock(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return lu_dispatch(context, user_lock, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_user(context, ent, error); } /** * lu_user_unlock: * @context: A context * @ent: An entity describing the user, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Unlocks an user account. * * Returns: %TRUE on success */ gboolean lu_user_unlock(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return lu_dispatch(context, user_unlock, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_user(context, ent, error); } /** * lu_user_unlock_nonempty: * @context: A context * @ent: An entity describing the user, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Unlocks an user account. If unlocking the account would result in an empty * password field, it fails with %lu_error_unlock_empty. Note that the * password can still be empty. * * Returns: %TRUE on success */ gboolean lu_user_unlock_nonempty(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return lu_dispatch(context, user_unlock_nonempty, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_user(context, ent, error); } /** * lu_user_islocked: * @context: A context * @ent: An entity describing the user * @error: Filled with a #lu_error if an error occurs * * Checks if an user account is locked. * * Returns: %TRUE if the account is locked in at least one module */ gboolean lu_user_islocked(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); return lu_dispatch(context, user_is_locked, NULL, LU_VALUE_INVALID_ID, ent, NULL, error); } /** * lu_user_setpass: * @context: A context * @ent: An entity describing the user, on success updated with current * information and %LU_SHADOWLASTCHANGE * @newpass: New password * @crypted: Non-zero if @newpass is already encrypted * @error: Filled with an #lu_error if an error occurs * * Changes an user's password. * * Returns: %TRUE on success */ gboolean lu_user_setpass(struct lu_context * context, struct lu_ent * ent, const char *password, gboolean is_crypted, struct lu_error ** error) { gboolean ret; char *tmp; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); if (is_crypted) { tmp = g_strconcat(LU_CRYPTED, password, NULL); } else { tmp = g_strdup(password); } ret = lu_dispatch(context, user_setpass, tmp, LU_VALUE_INVALID_ID, ent, NULL, error); g_free(tmp); if (ret) ret = lu_refresh_user(context, ent, error); if (ret) { lu_util_update_shadow_last_change(ent); ret = lu_user_modify(context, ent, error); } return ret; } /** * lu_user_removepass: * @context: A context * @ent: An entity describing the user, on success updated with current * information and %LU_SHADOWLASTCHANGE * @error: Filled with an #lu_error if an error occurs * * Changes an user's password to an empty string. * * Returns: %TRUE on success */ gboolean lu_user_removepass(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { gboolean ret; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_user, FALSE); ret = lu_dispatch(context, user_removepass, NULL, LU_VALUE_INVALID_ID, ent, NULL, error); if (ret) ret = lu_refresh_user(context, ent, error); if (ret) { lu_util_update_shadow_last_change(ent); ret = lu_user_modify(context, ent, error); } return ret; } /** * lu_group_lock: * @context: A context * @ent: An entity describing the group, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Locks a group account * * Returns: %TRUE on success */ gboolean lu_group_lock(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); return lu_dispatch(context, group_lock, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_group(context, ent, error); } /** * lu_group_unlock: * @context: A context * @ent: An entity describing the group, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Unlocks a group account. * * Returns: %TRUE on success */ gboolean lu_group_unlock(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); return lu_dispatch(context, group_unlock, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_group(context, ent, error); } /** * lu_group_unlock_nonempty: * @context: A context * @ent: An entity describing the group, on success updated with current * information * @error: Filled with a #lu_error if an error occurs * * Unlocks a group account. If unlocking the account would result in an empty * password field, it fails with %lu_error_unlock_empty. Note that the * password can still be empty. * * Returns: %TRUE on success */ gboolean lu_group_unlock_nonempty(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); return lu_dispatch(context, group_unlock_nonempty, NULL, LU_VALUE_INVALID_ID, ent, NULL, error) && lu_refresh_group(context, ent, error); } /** * lu_group_islocked: * @context: A context * @ent: An entity describing the group * @error: Filled with a #lu_error if an error occurs * * Checks if a group account is locked. * * Returns: %TRUE if the account is locked in at least one module */ gboolean lu_group_islocked(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); return lu_dispatch(context, group_is_locked, NULL, LU_VALUE_INVALID_ID, ent, NULL, error); } /** * lu_group_setpass: * @context: A context * @ent: An entity describing the group, on success updated with current * information and %LU_SHADOWLASTCHANGE * @newpass: New password * @crypted: Non-zero if @newpass is already encrypted * @error: Filled with an #lu_error if an error occurs * * Changes a group password. * * Returns: %TRUE on success */ gboolean lu_group_setpass(struct lu_context * context, struct lu_ent * ent, const char *password, gboolean is_crypted, struct lu_error ** error) { gboolean ret; char *tmp; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); if (is_crypted) { tmp = g_strconcat(LU_CRYPTED, password, NULL); } else { tmp = g_strdup(password); } ret = lu_dispatch(context, group_setpass, tmp, LU_VALUE_INVALID_ID, ent, NULL, error); g_free(tmp); if (ret) ret = lu_refresh_group(context, ent, error); return ret; } /** * lu_group_removepass: * @context: A context * @ent: An entity describing the group, on success udpated with current * information and %LU_SHADOWLASTCHANGE * @error: Filled with in #lu_error if an error occurs * * Changes a group password to an empty string. * * Returns: %TRUE on success */ gboolean lu_group_removepass(struct lu_context * context, struct lu_ent * ent, struct lu_error ** error) { gboolean ret; LU_ERROR_CHECK(error); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->type == lu_group, FALSE); ret = lu_dispatch(context, group_removepass, NULL, LU_VALUE_INVALID_ID, ent, NULL, error); if (ret) ret = lu_refresh_group(context, ent, error); return ret; } /** * lu_users_enumerate: * @context: A context * @pattern: A glob-like pattern for user name * @error: Filled with a #lu_error if an error occurs * * Returns a list of all users matching a pattern. * * Returns: An array of strings, each representing one user name. The array * should be freed by the caller. */ GValueArray * lu_users_enumerate(struct lu_context * context, const char *pattern, struct lu_error ** error) { GValueArray *ret = NULL; LU_ERROR_CHECK(error); lu_dispatch(context, users_enumerate, pattern, LU_VALUE_INVALID_ID, NULL, &ret, error); return ret; } /** * lu_groups_enumerate: * @context: A context * @pattern: A glob-like pattern for group name * @error: Filled with a #lu_error if an error occurs * * Returns a list of all groups matching a pattern. * * Returns: An array of strings, each representing one group name. The array * should be freed by the caller. */ GValueArray * lu_groups_enumerate(struct lu_context * context, const char *pattern, struct lu_error ** error) { GValueArray *ret = NULL; LU_ERROR_CHECK(error); lu_dispatch(context, groups_enumerate, pattern, LU_VALUE_INVALID_ID, NULL, &ret, error); return ret; } /** * lu_users_enumerate_by_group: * @context: A context * @group: Group name * @error: Filled with a #lu_error if an error occurs * * Returns a list of all members of a group @group. * * Returns: An array of strings, each representing one user name. The array * should be freed by the caller. */ GValueArray * lu_users_enumerate_by_group(struct lu_context * context, const char *group, struct lu_error ** error) { GValueArray *ret = NULL; LU_ERROR_CHECK(error); lu_dispatch(context, users_enumerate_by_group, group, LU_VALUE_INVALID_ID, NULL, &ret, error); return ret; } /** * lu_groups_enumerate_by_user: * @context: A context * @user: User name * @error: Filled with a #lu_error if an error occurs * * Returns a list of all groups containing an user @user. * * Returns: An array of strings, each representing one group name. The array * should be freed by the caller. */ GValueArray * lu_groups_enumerate_by_user(struct lu_context * context, const char *user, struct lu_error ** error) { GValueArray *ret = NULL; LU_ERROR_CHECK(error); lu_dispatch(context, groups_enumerate_by_user, user, LU_VALUE_INVALID_ID, NULL, &ret, error); return ret; } /** * lu_users_enumerate_full: * @context: A context * @pattern: A glob-like pattern for user name * @error: Filled with a #lu_error if an error occurs * * Returns a list of entities, one for each user matching a pattern. * * Returns: A list of pointers to user entities. The entities and the * list should be freed by the caller. */ GPtrArray * lu_users_enumerate_full(struct lu_context * context, const char *pattern, struct lu_error ** error) { GPtrArray *ret = NULL; LU_ERROR_CHECK(error); lu_dispatch(context, users_enumerate_full, pattern, LU_VALUE_INVALID_ID, NULL, &ret, error); return ret; } /** * lu_groups_enumerate_full: * @context: A context * @pattern: A glob-like pattern for group name * @error: Filled with a #lu_error if an error occurs * * Returns a list of entities, one for each group matching a pattern. * * Returns: a list of pointers to group entities. The entities and the * list should be freed by the caller. */ GPtrArray * lu_groups_enumerate_full(struct lu_context * context, const char *pattern, struct lu_error ** error) { GPtrArray *ret = NULL; LU_ERROR_CHECK(error); lu_dispatch(context, groups_enumerate_full, pattern, LU_VALUE_INVALID_ID, NULL, &ret, error); return ret; } /** * lu_users_enumerate_by_group_full: * @context: A context * @group: Group name * @error: Filled with a #lu_error if an error occurs * * Returns a list of entities, one for each member of a group @group. * * Returns: A list of pointers to user entities. The entities and the * list should be freed by the caller. */ GPtrArray * lu_users_enumerate_by_group_full(struct lu_context * context, const char * group, struct lu_error ** error) { GPtrArray *ret = NULL; GValueArray *names; size_t i; LU_ERROR_CHECK(error); /* We may have the membership information stored in one module, but the user information in a different module, so don't just let each module load its own information; only get the list of users, and then look for the users in all modules. */ names = lu_users_enumerate_by_group(context, group, error); if (*error != NULL) return NULL; ret = g_ptr_array_new(); for (i = 0; i < names->n_values; i++) { const char *name; struct lu_error *err2; struct lu_ent *ent; name = g_value_get_string(g_value_array_get_nth(names, i)); ent = lu_ent_new(); err2 = NULL; if (lu_user_lookup_name(context, name, ent, &err2)) g_ptr_array_add(ret, ent); else { lu_ent_free(ent); /* Silently ignore the error and return at least some results. */ if (err2 != NULL) lu_error_free(&err2); } } g_value_array_free(names); return ret; } /** * lu_groups_enumerate_by_user_full: * @context: A context * @user: User name * @error: Filled with a #lu_error if an error occurs * * Returns a list of entities, one for each group containing an user @user. * * Returns: a list of pointers to group entities. The entities and the * list should be freed by the caller. */ GPtrArray * lu_groups_enumerate_by_user_full(struct lu_context * context, const char *user, struct lu_error ** error) { GPtrArray *ret = NULL; GValueArray *names; size_t i; LU_ERROR_CHECK(error); /* We may have the membership information stored in one module, but the group information in a different module, so don't just let each module load its own information; only get the list of groups, and then look for the users in all modules. */ names = lu_groups_enumerate_by_user(context, user, error); if (*error != NULL) return NULL; ret = g_ptr_array_new(); for (i = 0; i < names->n_values; i++) { const char *name; struct lu_error *err2; struct lu_ent *ent; name = g_value_get_string(g_value_array_get_nth(names, i)); ent = lu_ent_new(); err2 = NULL; if (lu_group_lookup_name(context, name, ent, &err2)) g_ptr_array_add(ret, ent); else { lu_ent_free(ent); /* Silently ignore the error and return at least some results. */ if (err2 != NULL) lu_error_free(&err2); } } g_value_array_free(names); return ret; } id_t lu_get_first_unused_id(struct lu_context *ctx, enum lu_entity_type type, id_t id) { struct lu_ent *ent; char buf[LINE_MAX * 4]; g_return_val_if_fail(ctx != NULL, (id_t)-1); ent = lu_ent_new(); if (type == lu_user) { struct lu_error *error = NULL; do { struct passwd pwd, *err; /* There may be read-only sources of user information * on the system, and we want to avoid allocating an ID * that's already in use by a service we can't write * to, so check with NSS first. FIXME: use growing * buffers here. */ if ((getpwuid_r(id, &pwd, buf, sizeof(buf), &err) == 0) && (err == &pwd)) { id++; continue; } if (lu_user_lookup_id(ctx, id, ent, &error)) { lu_ent_free(ent); ent = lu_ent_new(); id++; continue; } if (error) { lu_error_free(&error); } break; } while (id != (id_t)-1); } else if (type == lu_group) { struct lu_error *error = NULL; do { struct group grp, *err; int rv; /* There may be read-only sources of user information * on the system, and we want to avoid allocating an ID * that's already in use by a service we can't write * to, so check with NSS first. */ rv = getgrgid_r(id, &grp, buf, sizeof(buf), &err); if (rv == 0 && err == &grp) { id++; continue; } if (lu_group_lookup_id(ctx, id, ent, &error)) { lu_ent_free(ent); ent = lu_ent_new(); id++; continue; } if (error) { lu_error_free(&error); } break; } while (id != (id_t)-1); } if (id == (id_t)-1) id = 0; lu_ent_free(ent); return id; } /* Replace all instances of OLD in g_malloc()'ed STRING by NEW. Change LU_HOMEDIRECTORY *KEY to LU_DUBIOUS_HOMEDIRECTORY if the substitution results in a new "." or ".." directory component. */ static char * replace_all(char *string, const char *old, const char *new, const char **key) { char *pos; pos = strstr(string, old); if (pos != NULL) { size_t old_len; old_len = strlen(old); do { char *new_string, *prefix, *p; prefix = g_strndup(string, pos - string); new_string = g_strconcat(prefix, new, pos + old_len, NULL); p = new_string + (pos - string); g_free(prefix); g_free(string); string = new_string; if (strcmp(*key, LU_HOMEDIRECTORY) == 0) { while (p > new_string && p[-1] != '/') p--; if (*p == '.' && (p[1] == '\0' || p[1] == '/' || (p[1] == '.' && (p[2] == '\0' || p[2] == '/')))) /* A new "." or ".." pathname component appeared. */ *key = LU_DUBIOUS_HOMEDIRECTORY; } pos = strstr(string, old); } while (pos != NULL); } return string; } static gboolean lu_default_int(struct lu_context *context, const char *name, enum lu_entity_type type, gboolean is_system, struct lu_ent *ent) { GList *keys, *p; GValue value; char *cfgkey, id_replacement[sizeof (intmax_t) * CHAR_BIT + 1]; char shadow_date_replacement[sizeof (intmax_t) * CHAR_BIT + 1]; const char *top, *idkey, *idkeystring, *val; id_t id = DEFAULT_ID; struct group grp, *err; struct lu_error *error = NULL; gpointer macguffin = NULL; size_t i; g_return_val_if_fail(context != NULL, FALSE); g_return_val_if_fail(name != NULL, FALSE); g_return_val_if_fail(strlen(name) > 0, FALSE); g_return_val_if_fail((type == lu_user) || (type == lu_group), FALSE); g_return_val_if_fail(ent != NULL, FALSE); g_return_val_if_fail(ent->magic == LU_ENT_MAGIC, FALSE); /* Clear out and initialize the record. */ lu_ent_clear_all(ent); lu_ent_clear_modules(ent); ent->type = type; /* Set the name of the user/group. */ if (ent->type == lu_user) { char buf[LINE_MAX * 4]; lu_ent_set_string(ent, LU_USERNAME, name); /* Additionally, pick a default default group. */ /* FIXME: handle arbitrarily long lines. */ if ((getgrnam_r("users", &grp, buf, sizeof(buf), &err) == 0) && (err == &grp)) lu_ent_set_id(ent, LU_GIDNUMBER, grp.gr_gid); } else if (ent->type == lu_group) lu_ent_set_string(ent, LU_GROUPNAME, name); /* Figure out which part of the configuration we need to iterate over * to initialize the structure. */ if (type == lu_user) { top = "userdefaults"; idkey = LU_UIDNUMBER; idkeystring = G_STRINGIFY_ARG(LU_UIDNUMBER); } else { top = "groupdefaults"; idkey = LU_GIDNUMBER; idkeystring = G_STRINGIFY_ARG(LU_GIDNUMBER); } /* The system flag determines where we will start searching for * unused IDs to assign to this entity. */ if (is_system) { id = 1; } else { cfgkey = g_strconcat(top, "/", idkey, (const gchar *)NULL); val = lu_cfg_read_single(context, cfgkey, NULL); g_free(cfgkey); if (val == NULL) { cfgkey = g_strconcat(top, "/", idkeystring, (const gchar *)NULL); val = lu_cfg_read_single(context, cfgkey, NULL); g_free(cfgkey); } if (val != NULL) { intmax_t imax; char *end; errno = 0; imax = strtoimax(val, &end, 10); if (errno == 0 && *end == 0 && end != val && (id_t)imax == imax) id = imax; else id = DEFAULT_ID; } } /* Search for a free ID. */ id = lu_get_first_unused_id(context, type, id); if (id != 0 && id != (id_t)-1) { /* Add this ID to the entity. */ lu_ent_set_id(ent, idkey, id); sprintf(id_replacement, "%jd", (intmax_t)id); } else /* Otherwise the user must specify an ID. */ id_replacement[0] = 0; sprintf(shadow_date_replacement, "%ld", lu_util_shadow_current_date_or_minus_1()); /* Now iterate to find the rest. */ memset(&value, 0, sizeof(value)); keys = lu_cfg_read_keys(context, top); for (p = keys; p && p->data; p = g_list_next(p)) { static const struct { const char *realkey, *configkey; } keymap[] = { {LU_USERNAME, G_STRINGIFY_ARG(LU_USERNAME)}, {LU_USERPASSWORD, G_STRINGIFY_ARG(LU_USERPASSWORD)}, {LU_UIDNUMBER, G_STRINGIFY_ARG(LU_UIDNUMBER)}, {LU_GIDNUMBER, G_STRINGIFY_ARG(LU_GIDNUMBER)}, {LU_GECOS, G_STRINGIFY_ARG(LU_GECOS)}, {LU_HOMEDIRECTORY, G_STRINGIFY_ARG(LU_HOMEDIRECTORY)}, {LU_LOGINSHELL, G_STRINGIFY_ARG(LU_LOGINSHELL)}, {LU_GROUPNAME, G_STRINGIFY_ARG(LU_GROUPNAME)}, {LU_GROUPPASSWORD, G_STRINGIFY_ARG(LU_GROUPPASSWORD)}, {LU_MEMBERNAME, G_STRINGIFY_ARG(LU_MEMBERNAME)}, {LU_ADMINISTRATORNAME, G_STRINGIFY_ARG(LU_ADMINISTRATORNAME)}, {LU_SHADOWNAME, G_STRINGIFY_ARG(LU_SHADOWNAME)}, {LU_SHADOWPASSWORD, G_STRINGIFY_ARG(LU_SHADOWPASSWORD)}, {LU_SHADOWLASTCHANGE, G_STRINGIFY_ARG(LU_SHADOWLASTCHANGE)}, {LU_SHADOWMIN, G_STRINGIFY_ARG(LU_SHADOWMIN)}, {LU_SHADOWMAX, G_STRINGIFY_ARG(LU_SHADOWMAX)}, {LU_SHADOWWARNING, G_STRINGIFY_ARG(LU_SHADOWWARNING)}, {LU_SHADOWINACTIVE, G_STRINGIFY_ARG(LU_SHADOWINACTIVE)}, {LU_SHADOWEXPIRE, G_STRINGIFY_ARG(LU_SHADOWEXPIRE)}, {LU_SHADOWFLAG, G_STRINGIFY_ARG(LU_SHADOWFLAG)}, {LU_COMMONNAME, G_STRINGIFY_ARG(LU_COMMONNAME)}, {LU_GIVENNAME, G_STRINGIFY_ARG(LU_GIVENNAME)}, {LU_SN, G_STRINGIFY_ARG(LU_SN)}, {LU_ROOMNUMBER, G_STRINGIFY_ARG(LU_ROOMNUMBER)}, {LU_TELEPHONENUMBER, G_STRINGIFY_ARG(LU_TELEPHONENUMBER)}, {LU_HOMEPHONE, G_STRINGIFY_ARG(LU_HOMEPHONE)}, {LU_EMAIL, G_STRINGIFY_ARG(LU_EMAIL)}, }; char *tmp; const char *key; gboolean ok; /* Possibly map the key to an internal name. */ key = p->data; for (i = 0; i < G_N_ELEMENTS(keymap); i++) { if (strcmp(key, keymap[i].configkey) == 0) { key = keymap[i].realkey; break; } } /* Skip over the key which represents the user/group ID, * because we only used it as a starting point. */ if (g_ascii_strcasecmp(idkey, key) == 0) { continue; } /* Generate the key and read the value for the item. */ cfgkey = g_strconcat(top, "/", (const gchar *)p->data, (const gchar *)NULL); val = lu_cfg_read_single(context, cfgkey, NULL); /* Create a copy of the value to mess with. */ g_assert(val != NULL); tmp = g_strdup(val); tmp = replace_all(tmp, "%n", name, &key); tmp = replace_all(tmp, "%d", shadow_date_replacement, &key); if (id_replacement[0] != 0) tmp = replace_all(tmp, "%u", id_replacement, &key); ok = lu_value_init_set_attr_from_string(&value, key, tmp, &error); if (ok == FALSE) { if (error == NULL) { /* Whatever this attribute is, default to a string. */ g_value_init(&value, G_TYPE_STRING); g_value_set_string(&value, tmp); ok = TRUE; } else { g_warning(_("Invalid default value of field " "%s: %s"), cfgkey, lu_strerror(error)); lu_error_free(&error); } } g_free(tmp); g_free(cfgkey); if (ok != FALSE) { /* Add the transformed value. */ lu_ent_clear(ent, key); lu_ent_add(ent, key, &value); g_value_unset(&value); } } if (keys != NULL) { g_list_free(keys); } /* Now let the modules do their thing. */ lu_dispatch(context, (type == lu_user) ? user_default : group_default, name, is_system, ent, &macguffin, &error); if (error != NULL) { lu_error_free(&error); } /* Make the pending set be the same as the current set. */ lu_ent_commit(ent); return TRUE; } /** * lu_user_default: * @ctx: A context * @name: New user name * @system_account: Non-zero if the user is a system user * @ent: An entity * * Fills out an user entity as specified by the config file and modules * to prepare for creation of the user. * * Returns: %TRUE on success */ gboolean lu_user_default(struct lu_context *context, const char *name, gboolean system_account, struct lu_ent *ent) { return lu_default_int(context, name, lu_user, system_account, ent); } /** * lu_group_default: * @ctx: A context * @name: New group name * @system_account: Non-zero if the group is a system group * @ent: An entity * * Fills out a group entity as specified by the config file and modules * to prepare for creation of the group. * * Returns: %TRUE on success */ gboolean lu_group_default(struct lu_context *context, const char *name, gboolean system_account, struct lu_ent *ent) { return lu_default_int(context, name, lu_group, system_account, ent); } lib/user.h000066400000000000000000000153161471266067600130000ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef libuser_user_h #define libuser_user_h #include #include #include "config.h" #include "entity.h" #include "error.h" #include "fs.h" #include "prompt.h" G_BEGIN_DECLS /** * LU_VALUE_INVALID_ID: * * An #id_t value that matches no valid user or group ID. */ /* (id_t)-1 is used by setreuid() to indicate "not a valid ID", so it should be safe to use for error indication. */ #define LU_VALUE_INVALID_ID ((id_t)-1) /** * lu_context: * * An opaque structure manipulated by the library, containing caller-related * state (to allow several independent callers in a single process). */ struct lu_context; #ifndef LU_DISABLE_DEPRECATED /** * lu_context_t: * * An alias for struct #lu_context. * Deprecated: 0.57.3: Use struct #lu_context directly. */ typedef struct lu_context lu_context_t; #endif /** * lu_entity_type: * @lu_user: An user. * @lu_group: A group of users. * * Defines whether we are talking about an user or a group in cases where it is * ambiguous. */ enum lu_entity_type { /*< private >*/ lu_invalid, /*< public >*/ lu_user, lu_group, }; #ifndef __GTK_DOC_IGNORE__ #ifndef LU_DISABLE_DEPRECATED typedef enum lu_entity_type lu_entity_type_t; #endif #endif char *lu_value_strdup(const GValue *value); int lu_values_equal(const GValue *a, const GValue *b); void lu_value_init_set_id(GValue *value, id_t id); id_t lu_value_get_id(const GValue *value); gboolean lu_value_init_set_attr_from_string(GValue *value, const char *attr, const char *string, struct lu_error **error); struct lu_context *lu_start(const char *authname, enum lu_entity_type auth_type, const char *modules, const char *create_modules, lu_prompt_fn *prompter, gpointer callback_data, struct lu_error **error); void lu_end(struct lu_context *context); void lu_set_prompter(struct lu_context *context, lu_prompt_fn *prompter, gpointer callback_data); void lu_get_prompter(struct lu_context *context, lu_prompt_fn ** prompter, gpointer *callback_data); gboolean lu_set_modules(struct lu_context *context, const char *list, struct lu_error **error); const char *lu_get_modules(struct lu_context *context); gboolean lu_uses_elevated_privileges (struct lu_context *context); gboolean lu_user_default(struct lu_context *ctx, const char *name, gboolean system_account, struct lu_ent *ent); gboolean lu_group_default(struct lu_context *ctx, const char *name, gboolean system_account, struct lu_ent *ent); gboolean lu_user_lookup_name(struct lu_context *context, const char *name, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_lookup_name(struct lu_context *context, const char *name, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_lookup_id(struct lu_context *context, uid_t uid, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_lookup_id(struct lu_context *context, gid_t gid, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_add(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_add(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_modify(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_modify(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_delete(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_delete(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_lock(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_lock(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_unlock(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_unlock(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_unlock_nonempty(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_unlock_nonempty(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_islocked(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_islocked(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_user_setpass(struct lu_context *context, struct lu_ent *ent, const char *newpass, gboolean crypted, struct lu_error **error); gboolean lu_group_setpass(struct lu_context *context, struct lu_ent *ent, const char *newpass, gboolean crypted, struct lu_error **error); gboolean lu_user_removepass(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); gboolean lu_group_removepass(struct lu_context *context, struct lu_ent *ent, struct lu_error **error); GValueArray *lu_users_enumerate(struct lu_context *context, const char *pattern, struct lu_error **error); GValueArray *lu_groups_enumerate(struct lu_context *context, const char *pattern, struct lu_error **error); GValueArray *lu_users_enumerate_by_group(struct lu_context *context, const char *group, struct lu_error **error); GValueArray *lu_groups_enumerate_by_user(struct lu_context *context, const char *user, struct lu_error **error); GPtrArray *lu_users_enumerate_full(struct lu_context *context, const char *pattern, struct lu_error **error); GPtrArray *lu_groups_enumerate_full(struct lu_context *context, const char *pattern, struct lu_error **error); GPtrArray *lu_users_enumerate_by_group_full(struct lu_context *context, const char *group, struct lu_error **error); GPtrArray *lu_groups_enumerate_by_user_full(struct lu_context *context, const char *user, struct lu_error **error); G_END_DECLS #endif lib/user_private.h000066400000000000000000000337631471266067600145400ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2007 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ /* * The interfaces defined in this file are in even more flux than the others, * because this is where the module interface is defined. If you include it * in your code, bad things can happen. */ #ifndef libuser_user_private_h #define libuser_user_private_h #include #include #include #include #include #include #ifdef WITH_SELINUX #include #endif #ifdef WITH_AUDIT #include #endif #include "user.h" G_BEGIN_DECLS #define LU_ENT_MAGIC 0x00000006 #define LU_MODULE_VERSION 0x000e0000 #define _(String) dgettext(PACKAGE_NAME, String) #define N_(String) String /* A crypt hash is at least 64 bits of data, encoded 6 bits per printable * character, and we assume that all crypt algorithms generate strings at * least this long. */ #define LU_CRYPTED "{CRYPT}" #define LU_CRYPT_SIZE howmany(64,6) #define LU_CRYPT_INVALID(String) \ ((strlen(String) > 0) && \ (String[0] != '!') && \ (strlen(String) < LU_CRYPT_SIZE)) #define LU_COMMON_DEFAULT_PASSWORD "!!" #define LU_COMMON_DEFAULT_SHADOW_PASSWORD "x" #define LU_COMMON_DEFAULT_SHELL "/bin/bash" /* Well-known module names */ #define LU_MODULE_NAME_FILES "files" #define LU_MODULE_NAME_LDAP "ldap" #define LU_MODULE_NAME_SHADOW "shadow" /* A string cache structure. Useful for side-stepping most issues with * whether or not returned strings should be freed. */ struct lu_string_cache { GTree *tree; char *(*cache) (struct lu_string_cache *, const char *); void (*free) (struct lu_string_cache *); }; /* A function to create a new cache. */ struct lu_string_cache *lu_string_cache_new(gboolean case_sensitive); struct lu_attribute { GQuark name; GValueArray *values; }; /* An entity structure. */ struct lu_ent { u_int32_t magic; enum lu_entity_type type; /* User or group? */ struct lu_string_cache *cache; /* String cache for attribute values, typically case-sensitive. */ GArray *current, *pending; /* Current and pending attribute names and values, stored as a GArray of lu_attribute structures. */ GValueArray *modules; /* Names of modules this user's info was looked up in or initialized using. */ }; /* A context structure. */ struct lu_context { struct lu_string_cache *scache; /* A string cache. */ char *auth_name; /* Suggested client name to use when connecting to servers, for convenience purposes only. */ enum lu_entity_type auth_type; /* Whether auth_name is a user or group. */ void *config; /* Opaque config structure used by the lu_cfg family of functions. */ lu_prompt_fn *prompter; /* Pointer to the prompter function. */ gpointer prompter_data; /* Application-specific data to be passed to the prompter function. */ GValueArray *module_names; /* Names of loaded modules. */ GValueArray *create_module_names; /* Names of modules to use to create accounts -- usually a subset of all modules. */ GTree *modules; /* A tree, keyed by module name, of module structures. */ }; /* A module structure. */ struct lu_module { u_int32_t version; /* Should be LU_MODULE_VERSION. */ GModule *module_handle; /* Pointer to the module data kept by GModule. */ struct lu_string_cache *scache; /* A string cache. */ const char *name; /* Name of the module. */ struct lu_context *lu_context; /* Context the module was opened in. */ void *module_context; /* Module-private data. */ /* Check if the current list of module combinations (array of module names) is valid. Note that this can be called several times during the lifetime of the module (probably at least twice, for "modules" and "create_modules"). */ gboolean(*valid_module_combination) (struct lu_module *module, GValueArray *names, struct lu_error **error); /* A function for telling if the module makes use of elevated * privileges (i.e., modifying files which normal users can't. */ gboolean(*uses_elevated_privileges) (struct lu_module * module); /* Functions for looking up users by name or ID. */ gboolean(*user_lookup_name) (struct lu_module * module, const char *name, struct lu_ent * ent, struct lu_error ** error); gboolean(*user_lookup_id) (struct lu_module * module, uid_t uid, struct lu_ent * ent, struct lu_error ** error); /* Populate a user entry with default information. */ gboolean(*user_default) (struct lu_module * module, const char *name, gboolean is_system, struct lu_ent * ent, struct lu_error ** error); /* Make last-minute preparations for adding an account (default * part two, as it might have been called). */ gboolean(*user_add_prep) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Create the account. */ gboolean(*user_add) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Modify the account, making the data store reflect any pending * data changes. */ gboolean(*user_mod) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Remove the account. */ gboolean(*user_del) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Lock, unlock, check the status, or set the password on the account * of the user. */ gboolean(*user_lock) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*user_unlock) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*user_unlock_nonempty) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*user_is_locked) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*user_setpass) (struct lu_module * module, struct lu_ent * ent, const char *newpass, struct lu_error ** error); gboolean(*user_removepass) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Search for users, returning the names of all users, just the names * of users in a given group, or all users with their data. */ GValueArray* (*users_enumerate) (struct lu_module * module, const char *pattern, struct lu_error ** error); GValueArray* (*users_enumerate_by_group) (struct lu_module * module, const char *group, gid_t gid, struct lu_error ** error); GPtrArray* (*users_enumerate_full) (struct lu_module * module, const char *pattern, struct lu_error ** error); /* Search for a group by name or ID. */ gboolean(*group_lookup_name) (struct lu_module * module, const char *name, struct lu_ent * ent, struct lu_error ** error); gboolean(*group_lookup_id) (struct lu_module * module, gid_t gid, struct lu_ent * ent, struct lu_error ** error); /* Populate a group with sensible defaults. */ gboolean(*group_default) (struct lu_module * module, const char *name, gboolean is_system, struct lu_ent * ent, struct lu_error ** error); /* Prepare to add a group (default part two, possibly). */ gboolean(*group_add_prep) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Add the group to the data stores. */ gboolean(*group_add) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Modify the group entry, committing any pending changes. */ gboolean(*group_mod) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Delete the group. */ gboolean(*group_del) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Lock, unlock, check if locked, or set the password for a group. */ gboolean(*group_lock) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*group_unlock) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*group_unlock_nonempty) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*group_is_locked) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); gboolean(*group_setpass) (struct lu_module * module, struct lu_ent * ent, const char *newpass, struct lu_error ** error); gboolean(*group_removepass) (struct lu_module * module, struct lu_ent * ent, struct lu_error ** error); /* Look up all group names, just the groups a particular user is in, * or all groups, with full information. */ GValueArray* (*groups_enumerate) (struct lu_module * module, const char *pattern, struct lu_error ** error); GValueArray* (*groups_enumerate_by_user) (struct lu_module * module, const char *user, uid_t uid, struct lu_error ** error); GPtrArray* (*groups_enumerate_full) (struct lu_module * module, const char *pattern, struct lu_error ** error); /* Clean up any data this module has, and unload it. */ gboolean(*close) (struct lu_module * module); }; /* The type of the initialization function a module exports for the library * to use when initializing it. Should fit "lu_%s_init", where the string * is the name of the module being loaded (and this should match the "name" * attribute of the module structure). */ #define LU_MODULE_INIT(_fn) extern struct lu_module *\ _fn (struct lu_context * context, struct lu_error ** error); typedef struct lu_module *(*lu_module_init_t) (struct lu_context * context, struct lu_error ** error); struct lu_ent *lu_ent_new_typed(enum lu_entity_type entity_type); /* Common code expected to be used by some modules. */ gboolean lu_common_user_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error); gboolean lu_common_group_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error); gboolean lu_common_suser_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error); gboolean lu_common_sgroup_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error); /* Generate a crypted password. */ const char *lu_make_crypted(const char *plain, const char *previous); char *lu_util_default_salt_specifier(struct lu_context *context); /* Handle SELinux fscreate context. Note that modules built WITH_SELINUX are intentionally not compatible with libuser built !WITH_SELINUX. */ #ifdef WITH_SELINUX typedef char * lu_security_context_t; gboolean lu_util_fscreate_save(char **ctx, struct lu_error **error); void lu_util_fscreate_restore(char *ctx); gboolean lu_util_fscreate_from_fd(int fd, const char *path, struct lu_error **error); gboolean lu_util_fscreate_from_file(const char *file, struct lu_error **error); gboolean lu_util_fscreate_from_lfile(const char *file, struct lu_error **error); gboolean lu_util_fscreate_for_path(const char *path, mode_t mode, struct lu_error **error); #else typedef char lu_security_context_t; /* "Something" */ #define lu_util_fscreate_save(CTX, ERROR) ((void)(CTX), (void)(ERROR), TRUE) #define lu_util_fscreate_restore(CTX) ((void)(CTX)) #define lu_util_fscreate_from_fd(FD, PATH, ERROR) \ ((void)(FD), (void)(PATH), (void)(ERROR), TRUE) #define lu_util_fscreate_from_file(FILE, ERROR) \ ((void)(FILE), (void)(ERROR), TRUE) #define lu_util_fscreate_from_lfile(FILE, ERROR) \ ((void)(FILE), (void)(ERROR), TRUE) #define lu_util_fscreate_for_path(PATH, MODE, ERROR) \ ((void)(PATH), (void)(MODE), (void)(ERROR), TRUE) #endif #ifndef LU_DISABLE_DEPRECATED /* Lock a file. Deprecated. */ gpointer lu_util_lock_obtain(int fd, struct lu_error **error); void lu_util_lock_free(gpointer lock); #endif /* Manipulate a colon-delimited flat text file. */ char *lu_util_line_get_matching1(int fd, const char *firstpart, struct lu_error **error); char *lu_util_line_get_matching3(int fd, const char *thirdpart, struct lu_error **error); char *lu_util_line_get_matchingx(int fd, const char *part, int field, struct lu_error **error); char *lu_util_field_read(int fd, const char *first, unsigned int field, struct lu_error **error); gboolean lu_util_field_write(int fd, const char *first, unsigned int field, const char *value, struct lu_error **error); void lu_util_update_shadow_last_change(struct lu_ent *ent); /* Find the first unused ID of the given type, searching starting at "id". */ id_t lu_get_first_unused_id(struct lu_context *ctx, enum lu_entity_type type, id_t id); /* Append a copy of VALUES to DEST */ void lu_util_append_values(GValueArray *dest, GValueArray *values); #ifdef WITH_AUDIT void lu_audit_logger(int type, const char *op, const char *name, unsigned int id, unsigned int result); void lu_audit_logger_with_group(int type, const char *op, const char *name, unsigned int id, const char *grp, unsigned int result); #else #define lu_audit_logger(a, b, c, d, e) #define lu_audit_logger_with_group(a, b, c, d, e, f) #endif #define AUDIT_NO_ID ((unsigned int) -1) G_END_DECLS #endif lib/util.c000066400000000000000000000500331471266067600127650ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2007, 2008 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef WITH_SELINUX #include #include #endif #define LU_DEFAULT_SALT_TYPE "$1$" #define LU_DEFAULT_SALT_LEN 8 #define LU_MAX_LOCK_ATTEMPTS 6 #define LU_LOCK_TIMEOUT 2 #include "user_private.h" #include "internal.h" #define HASH_ROUNDS_MIN 1000 #define HASH_ROUNDS_MAX 999999999 #if (defined CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY && \ CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY) #define USE_XCRYPT_GENSALT 1 #else #define USE_XCRYPT_GENSALT 0 #endif #if ((defined XCRYPT_VERSION_NUM && \ XCRYPT_VERSION_NUM >= ((4 << 16) | 3)) && \ USE_XCRYPT_GENSALT) #define HAVE_YESCRYPT 1 #else #define HAVE_YESCRYPT 0 #endif struct lu_lock { int fd; struct flock lock; }; /* A wrapper for strcasecmp(). */ gint lu_strcasecmp(gconstpointer v1, gconstpointer v2) { g_return_val_if_fail(v1 != NULL, 0); g_return_val_if_fail(v2 != NULL, 0); return g_ascii_strcasecmp((char *) v1, (char *) v2); } /* A wrapper for strcmp(). */ gint lu_strcmp(gconstpointer v1, gconstpointer v2) { g_return_val_if_fail(v1 != NULL, 0); g_return_val_if_fail(v2 != NULL, 0); return strcmp((char *) v1, (char *) v2); } #if !USE_XCRYPT_GENSALT /* A list of allowed salt characters, according to SUSv2. */ #define ACCEPTABLE "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ "abcdefghijklmnopqrstuvwxyz" \ "./0123456789" static gboolean is_acceptable(const char c) { if (c == 0) { return FALSE; } return (strchr(ACCEPTABLE, c) != NULL); } static gboolean fill_urandom(char *output, size_t length) { int fd; size_t got = 0; fd = open("/dev/urandom", O_RDONLY); if (fd == -1) return FALSE; memset(output, '\0', length); while (got < length) { ssize_t len; len = read(fd, output + got, length - got); if (len == -1) { if (errno == EINTR) continue; else { close(fd); return FALSE; } } while (len != 0 && isprint((unsigned char)output[got]) && !isspace((unsigned char)output[got]) && is_acceptable(output[got])) { got++; len--; } } close(fd); return TRUE; } #endif static const struct { const char initial[5]; char separator[2]; size_t salt_length; gboolean sha_rounds; } salt_type_info[] = { {"$1$", "$", 8, FALSE }, /* FIXME: number of rounds, base64 of 128 bits */ {"$2b$", "$", 8, FALSE }, {"$5$", "$", 16, TRUE }, {"$6$", "$", 16, TRUE }, #if HAVE_YESCRYPT {"$y$", "$", 24, FALSE }, #endif { "", "", 2 }, }; const char * lu_make_crypted(const char *plain, const char *previous) { char salt[2048]; size_t i, len = 0; #if USE_XCRYPT_GENSALT unsigned long rounds = 0; #endif if (previous == NULL) { previous = LU_DEFAULT_SALT_TYPE; } for (i = 0; i < G_N_ELEMENTS(salt_type_info); i++) { len = strlen(salt_type_info[i].initial); if (strncmp(previous, salt_type_info[i].initial, len) == 0) { break; } } g_assert(i < G_N_ELEMENTS(salt_type_info)); if (salt_type_info[i].sha_rounds != FALSE && strncmp(previous + len, "rounds=", strlen("rounds=")) == 0) { #if USE_XCRYPT_GENSALT const char *start; char *end; start = previous + len + strlen("rounds="); rounds = strtoul (start, &end, 10); if (rounds < HASH_ROUNDS_MIN) rounds = HASH_ROUNDS_MIN; else if (rounds > HASH_ROUNDS_MAX) rounds = HASH_ROUNDS_MAX; } g_assert(CRYPT_GENSALT_OUTPUT_SIZE <= sizeof(salt)); crypt_gensalt_rn(previous, rounds, NULL, 0, salt, sizeof(salt)); #else const char *start, *end; start = previous + len + strlen("rounds="); end = strchr(start, '$'); if (end != NULL && end <= start + strlen(G_STRINGIFY(HASH_ROUNDS_MAX))) len = (end + 1) - previous; } g_assert(len + salt_type_info[i].salt_length + strlen(salt_type_info[i].separator) < sizeof(salt)); memcpy(salt, previous, len); if (fill_urandom(salt + len, salt_type_info[i].salt_length) == FALSE) return NULL; strcpy(salt + len + salt_type_info[i].salt_length, salt_type_info[i].separator); #endif return crypt(plain, salt); } static const char * parse_hash_rounds(struct lu_context *context, const char *key, unsigned long *value) { const char *s; s = lu_cfg_read_single(context, key, NULL); if (s != NULL) { char *end; errno = 0; *value = strtoul(s, &end, 10); if (errno != 0 || *end != 0 || end == s) { g_warning("Invalid %s value '%s'", key, s); s = NULL; } } return s; } static unsigned long select_hash_rounds(struct lu_context *context) { const char *min_s, *max_s; unsigned long min, max, rounds; min_s = parse_hash_rounds(context, "defaults/hash_rounds_min", &min); max_s = parse_hash_rounds(context, "defaults/hash_rounds_max", &max); if (min_s == NULL && max_s == NULL) return 0; if (min_s != NULL && max_s != NULL) { if (min <= max) { if (max > HASH_ROUNDS_MAX) /* To avoid overflow in (max + 1) below */ max = HASH_ROUNDS_MAX; rounds = g_random_int_range(min, max + 1); } else rounds = min; } else if (min_s != NULL) rounds = min; else /* max_s != NULL */ rounds = max; if (rounds < HASH_ROUNDS_MIN) rounds = HASH_ROUNDS_MIN; else if (rounds > HASH_ROUNDS_MAX) rounds = HASH_ROUNDS_MAX; return rounds; } char * lu_util_default_salt_specifier(struct lu_context *context) { static const struct { const char *name, *initializer; gboolean sha_rounds; } salt_types[] = { { "des", "", FALSE }, { "md5", "$1$", FALSE }, { "blowfish", "$2b$", FALSE }, { "sha256", "$5$", TRUE }, { "sha512", "$6$", TRUE }, #if HAVE_YESCRYPT { "yescrypt", "$y$", FALSE }, #endif }; const char *salt_type; size_t i; g_return_val_if_fail(context != NULL, g_strdup("")); salt_type = lu_cfg_read_single(context, "defaults/crypt_style", "des"); for (i = 0; i < G_N_ELEMENTS(salt_types); i++) { if (strcasecmp(salt_types[i].name, salt_type) == 0) goto found; } return g_strdup(""); found: if (salt_types[i].sha_rounds != FALSE) { unsigned long rounds = 0; rounds = select_hash_rounds(context); #if USE_XCRYPT_GENSALT return g_strdup(crypt_gensalt(salt_types[i].initializer, rounds, NULL, 0)); #else if (rounds != 0) return g_strdup_printf("%srounds=%lu$", salt_types[i].initializer, rounds); #endif } return g_strdup(salt_types[i].initializer); } gpointer lu_util_lock_obtain(int fd, struct lu_error ** error) { int i; int maxtries = LU_MAX_LOCK_ATTEMPTS; int delay = LU_LOCK_TIMEOUT; struct lu_lock *ret; LU_ERROR_CHECK(error); g_assert(fd != -1); ret = g_malloc0(sizeof(*ret)); for (;;) { struct timeval tv; ret->fd = fd; ret->lock.l_type = F_RDLCK; if (write(ret->fd, NULL, 0) == 0) ret->lock.l_type = F_WRLCK; i = fcntl(ret->fd, F_SETLK, &ret->lock); if (i != -1) return ret; if (errno != EINTR && errno != EAGAIN) break; if (maxtries-- <= 0) break; memset(&tv, 0, sizeof(tv)); tv.tv_usec = (delay *= 2); select(0, NULL, NULL, NULL, &tv); } lu_error_new(error, lu_error_lock, _("error locking file: %s"), strerror(errno)); g_free(ret); return NULL; } void lu_util_lock_free(gpointer lock) { struct lu_lock *ret; int i; g_return_if_fail(lock != NULL); ret = (struct lu_lock*) lock; do { ret->lock.l_type = F_UNLCK; i = fcntl(ret->fd, F_SETLK, &ret->lock); } while ((i == -1) && ((errno == EINTR) || (errno == EAGAIN))); g_free(ret); } char * lu_util_line_get_matchingx(int fd, const char *part, int field, struct lu_error **error) { char *contents, *contents_end; struct stat st; off_t offset; char *ret = NULL, *line; gboolean mapped = FALSE; size_t part_len; LU_ERROR_CHECK(error); g_assert(fd != -1); g_assert(part != NULL); g_assert(field > 0); offset = lseek(fd, 0, SEEK_CUR); if (offset == -1) { lu_error_new(error, lu_error_read, NULL); return NULL; } if (fstat(fd, &st) == -1) { lu_error_new(error, lu_error_stat, NULL); return NULL; } contents = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); if (contents == MAP_FAILED) { contents = g_malloc(st.st_size); if (lseek(fd, 0, SEEK_SET) == -1 || read(fd, contents, st.st_size) != st.st_size || lseek(fd, offset, SEEK_SET) == -1) { lu_error_new(error, lu_error_read, NULL); g_free(contents); return NULL; } } else { mapped = TRUE; } contents_end = contents + st.st_size; part_len = strlen(part); line = contents; for (;;) { char *line_end, *field_start; line_end = memchr(line, '\n', contents_end - line); if (field == 1) field_start = line; else { int i; char *p; field_start = NULL; i = 1; for (p = line; p < contents_end && *p != '\n'; p++) { if (*p == ':') { i++; if (i >= field) { field_start = p + 1; break; } } } } if (field_start != NULL && contents_end - field_start >= part_len) { char *expected_field_end; expected_field_end = field_start + part_len; if (strncmp(field_start, part, part_len) == 0 && (expected_field_end == contents_end || *expected_field_end == ':' || *expected_field_end == '\n')) { if (line_end == NULL) line_end = contents_end; ret = g_strndup(line, line_end - line); break; } } if (line_end == NULL) break; line = line_end + 1; } if (mapped) { munmap(contents, st.st_size); } else { g_free(contents); } return ret; } char * lu_util_line_get_matching1(int fd, const char *part, struct lu_error **error) { LU_ERROR_CHECK(error); return lu_util_line_get_matchingx(fd, part, 1, error); } char * lu_util_line_get_matching3(int fd, const char *part, struct lu_error **error) { LU_ERROR_CHECK(error); return lu_util_line_get_matchingx(fd, part, 3, error); } char * lu_util_field_read(int fd, const char *first, unsigned int field, struct lu_error **error) { struct stat st; char *buf, *buf_end; char *pattern; char *line, *start = NULL; char *ret; size_t len; gboolean mapped = FALSE; LU_ERROR_CHECK(error); g_assert(fd != -1); g_assert(first != NULL); g_assert(strlen(first) != 0); g_assert(field >= 1); if (fstat(fd, &st) == -1) { lu_error_new(error, lu_error_stat, NULL); return NULL; } buf = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); if (buf == MAP_FAILED) { buf = g_malloc(st.st_size); if (lseek(fd, 0, SEEK_SET) == -1 || read(fd, buf, st.st_size) != st.st_size) { lu_error_new(error, lu_error_read, NULL); g_free(buf); return NULL; } } else { mapped = TRUE; } buf_end = buf + st.st_size; pattern = g_strdup_printf("%s:", first); len = strlen(pattern); line = buf; for (;;) { if (buf_end - line >= len && memcmp (line, pattern, len) == 0) goto found_line; line = memchr(line, '\n', buf_end - line); if (line == NULL) break; line++; } lu_error_new(error, lu_error_search, NULL); ret = NULL; goto err; found_line: /* find the start of the field */ if (field == 1) start = line; else { unsigned i = 1; char *p; start = NULL; for (p = line; p < buf_end && *p != '\n'; p++) { if (*p == ':') { i++; if (i >= field) { start = p + 1; break; } } } } /* find the end of the field */ if (start != NULL) { char *end; end = start; while (end < buf_end && *end != '\n' && *end != ':') end++; g_assert(end == buf_end || *end == '\n' || *end == ':'); ret = g_strndup(start, end - start); } else { ret = g_strdup(""); } err: g_free(pattern); if (mapped) { munmap(buf, st.st_size); } else { g_free(buf); } return ret; } gboolean lu_util_field_write(int fd, const char *first, unsigned int field, const char *value, struct lu_error ** error) { struct stat st; char *buf; char *pattern; char *line, *start = NULL, *end = NULL; gboolean ret = FALSE; unsigned fi = 1; size_t len; LU_ERROR_CHECK(error); g_assert(fd != -1); g_assert(field >= 1); first = first ? : ""; value = value ? : ""; if (fstat(fd, &st) == -1) { lu_error_new(error, lu_error_stat, NULL); return FALSE; } if (lseek(fd, 0, SEEK_SET) == -1) { lu_error_new(error, lu_error_read, NULL); return FALSE; } buf = g_malloc0(st.st_size + 1 + strlen(value) + field); if (read(fd, buf, st.st_size) != st.st_size) { lu_error_new(error, lu_error_read, NULL); goto err_buf; } pattern = g_strdup_printf("\n%s:", first); if (strncmp(buf, pattern + 1, strlen(pattern) - 1) == 0) { /* found it on the first line */ line = buf; } else if ((line = strstr(buf, pattern)) != NULL) { /* found it somewhere in the middle */ line++; } if (line == NULL) { lu_error_new(error, lu_error_search, NULL); goto err_pattern; } /* find the start of the field */ if (fi == field) start = line; else { char *p; start = NULL; for (p = line; fi < field && *p != '\n' && *p != '\0'; p++) { if (*p == ':') { fi++; if (fi >= field) { start = p + 1; break; } } } } /* find the end of the field */ if (start != NULL) { end = start; while ((*end != '\0') && (*end != '\n') && (*end != ':')) { end++; } } else { lu_error_new(error, lu_error_search, NULL); goto err_pattern; } if (start != NULL) { /* insert the text here, after moving the data around */ memmove(start + strlen(value), end, st.st_size - (end - buf) + 1); memcpy(start, value, strlen(value)); } else { /* FIXME: this code currently can't execute */ /* fi contains the number of fields, so the difference between * field and fi is the number of colons we need to add to the * end of the line to create the field */ for (end = line; *end != '\0' && *end != '\n'; end++) ; start = end; memmove(start + strlen(value) + (field - fi), end, st.st_size - (end - buf) + 1); memset(start, ':', field - fi); memcpy(start + (field - fi), value, strlen(value)); } if (lseek(fd, 0, SEEK_SET) == -1) { lu_error_new(error, lu_error_write, NULL); goto err_pattern; } len = strlen(buf); if (write(fd, buf, len) != len) { lu_error_new(error, lu_error_write, NULL); goto err_pattern; } if (ftruncate(fd, len) == -1) { lu_error_new(error, lu_error_write, NULL); goto err_pattern; } ret = TRUE; err_pattern: g_free(pattern); err_buf: g_free(buf); return ret; } /* Return current date in days since the epoch (suitable for LU_SHADOW*), or -1 if the current date is unknown or obviously implausible (e.g. on a system without a RTC). */ long lu_util_shadow_current_date_or_minus_1(void) { const struct tm *gmt; time_t now; GDate *today, *epoch; long days; now = time(NULL); if (now == (time_t)-1) return -1; gmt = gmtime(&now); today = g_date_new_dmy(gmt->tm_mday, gmt->tm_mon + 1, gmt->tm_year + 1900); epoch = g_date_new_dmy(1, 1, 1970); days = g_date_get_julian(today) - g_date_get_julian(epoch); g_date_free(today); g_date_free(epoch); /* Refuse to return 0 (Jan 1, 1970): it is unquestionably incorrect in the real world, which is not really libuser's concern, but it is also a special case for LU_SHADOWLASTCHANGE (marking the account for forced password change) and LU_SHADOWEXPIRE (forbidden in shadow(5)). In both cases, setting the value to -1 deactivates the real-time-related actions, which is a reasonable thing to do when the only available RTC is incorrect. */ if (days == 0) return -1; return days; } /* Set the shadow last-changed field to today's date. */ void lu_util_update_shadow_last_change(struct lu_ent *ent) { lu_ent_set_long(ent, LU_SHADOWLASTCHANGE, lu_util_shadow_current_date_or_minus_1()); } #ifdef WITH_SELINUX /* Store current fscreate context to ctx. */ gboolean lu_util_fscreate_save(char **ctx, struct lu_error **error) { *ctx = NULL; if (is_selinux_enabled() > 0 && getfscreatecon(ctx) < 0) { lu_error_new(error, lu_error_generic, _("couldn't get default security context: %s"), strerror(errno)); return FALSE; } return TRUE; } /* Restore fscreate context from ctx, and free it. */ void lu_util_fscreate_restore(char *ctx) { if (is_selinux_enabled() > 0) { (void)setfscreatecon(ctx); if (ctx) freecon(ctx); } } /* Set fscreate context from context of fd. Use path only for diagnostics. */ gboolean lu_util_fscreate_from_fd(int fd, const char *path, struct lu_error **error) { if (is_selinux_enabled() > 0) { char *ctx; if (fgetfilecon(fd, &ctx) < 0) { lu_error_new(error, lu_error_stat, _("couldn't get security context of " "`%s': %s"), path, strerror(errno)); return FALSE; } if (setfscreatecon(ctx) < 0) { lu_error_new(error, lu_error_generic, _("couldn't set default security context " "to `%s': %s"), ctx, strerror(errno)); freecon(ctx); return FALSE; } freecon(ctx); } return TRUE; } /* Set fscreate context from context of file. */ gboolean lu_util_fscreate_from_file(const char *file, struct lu_error **error) { if (is_selinux_enabled() > 0) { char *ctx; if (getfilecon(file, &ctx) < 0) { lu_error_new(error, lu_error_stat, _("couldn't get security context of " "`%s': %s"), file, strerror(errno)); return FALSE; } if (setfscreatecon(ctx) < 0) { lu_error_new(error, lu_error_generic, _("couldn't set default security context " "to `%s': %s"), ctx, strerror(errno)); freecon(ctx); return FALSE; } freecon(ctx); } return TRUE; } /* Set fscreate context from context of file, not resolving it if it is a symlink. */ gboolean lu_util_fscreate_from_lfile(const char *file, struct lu_error **error) { if (is_selinux_enabled() > 0) { char *ctx; if (lgetfilecon(file, &ctx) < 0) { lu_error_new(error, lu_error_stat, _("couldn't get security context of " "`%s': %s"), file, strerror(errno)); return FALSE; } if (setfscreatecon(ctx) < 0) { lu_error_new(error, lu_error_generic, _("couldn't set default security context " "to `%s': %s"), ctx, strerror(errno)); freecon(ctx); return FALSE; } freecon(ctx); } return TRUE; } /* Set fscreate context for creating a file at path, with file type specified by mode. */ gboolean lu_util_fscreate_for_path(const char *path, mode_t mode, struct lu_error **error) { if (is_selinux_enabled() > 0) { char *ctx; struct selabel_handle *label_handle = NULL; label_handle = selabel_open(SELABEL_CTX_FILE, NULL, 0); if (!label_handle) { lu_error_new(error, lu_error_open, _("couldn't obtain selabel file " "context handle: %s"), strerror(errno)); return FALSE; } if (selabel_lookup(label_handle, &ctx, path, mode) < 0) { if (errno == ENOENT) ctx = NULL; else { lu_error_new(error, lu_error_stat, _("couldn't determine security " "context for `%s': %s"), path, strerror(errno)); selabel_close(label_handle); return FALSE; } } selabel_close(label_handle); if (setfscreatecon(ctx) < 0) { lu_error_new(error, lu_error_generic, _("couldn't set default security context " "to `%s': %s"), ctx != NULL ? ctx : "<>", strerror(errno)); freecon(ctx); return FALSE; } freecon(ctx); } return TRUE; } #endif /* Append a copy of VALUES to DEST */ void lu_util_append_values(GValueArray *dest, GValueArray *values) { size_t i; for (i = 0; i < values->n_values; i++) g_value_array_append(dest, g_value_array_get_nth(values, i)); } libuser.conf000066400000000000000000000045311471266067600134140ustar00rootroot00000000000000# See libuser.conf(5) for more information. # Do not modify the default module list if you care about unattended calls # to programs (i.e., scripts) working! [import] # Data from these files is used when libuser.conf does not define a value. # The mapping is documented in the man page. login_defs = /etc/login.defs default_useradd = /etc/default/useradd [defaults] # The default (/usr/lib*/libuser) is usually correct # moduledir = /your/custom/directory # The following variables are usually imported: # skeleton = /etc/skel # mailspooldir = /var/mail crypt_style = yescrypt modules = files shadow create_modules = files shadow # modules = files shadow ldap # create_modules = ldap [userdefaults] LU_USERNAME = %n # This is better imported from /etc/login.defs: # LU_UIDNUMBER = 500 LU_GIDNUMBER = %u # LU_USERPASSWORD = !! # LU_GECOS = %n # LU_HOMEDIRECTORY = /home/%n # LU_LOGINSHELL = /bin/bash # LU_SHADOWNAME = %n # LU_SHADOWPASSWORD = !! # LU_SHADOWLASTCHANGE = %d # LU_SHADOWMIN = 0 # LU_SHADOWMAX = 99999 # LU_SHADOWWARNING = 7 # LU_SHADOWINACTIVE = -1 # LU_SHADOWEXPIRE = -1 # LU_SHADOWFLAG = -1 [groupdefaults] LU_GROUPNAME = %n # This is better imported from /etc/login.defs: # LU_GIDNUMBER = 500 # # LU_GROUPPASSWORD = !! # LU_MEMBERUID = # LU_ADMINISTRATORUID = [files] # This is useful for the case where some master files are used to # populate a different NSS mechanism which this workstation uses. # directory = /etc [shadow] # This is useful for the case where some master files are used to # populate a different NSS mechanism which this workstation uses. # directory = /etc [ldap] # Setting these is always necessary. # server = ldap # basedn = dc=example,dc=com # Setting these is rarely necessary, since it's usually correct. # userBranch = ou=People # groupBranch = ou=Group # Set only if your administrative user uses simple bind operations to # connect to the server. # binddn = cn=Manager,dc=example,dc=com # Set this only if the default user (as determined by SASL) is incorrect # for SASL bind operations. Usually, it's correct, so you'll rarely need # to set these. # user = Manager # authuser = Manager [sasl] # Set these only if your sasldb is only used by a particular application, and # in a particular domain. The default (all applications, all domains) is # probably correct for most installations. # appname = imap # domain = EXAMPLE.COM libuser.pc.in000066400000000000000000000005051471266067600134730ustar00rootroot00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libuser Description: A user and group account administration library. Version: @VERSION@ Libs: -L${libdir} -luser Libs.private: @CRYPT_LIBS@ Requires: glib-2.0 gobject-2.0 Requires.private: gmodule-no-export-2.0 Cflags: -I${includedir} modules/000077500000000000000000000000001471266067600125455ustar00rootroot00000000000000modules/files.c000066400000000000000000002256021471266067600140220ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004, 2005, 2006, 2007, 2008 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../lib/user_private.h" #define CHUNK_SIZE (LINE_MAX * 4) LU_MODULE_INIT(libuser_files_init) LU_MODULE_INIT(libuser_shadow_init) enum lock_op { LO_LOCK, LO_UNLOCK, LO_UNLOCK_NONEMPTY }; /* Guides for parsing and formatting entries in the files we're looking at. */ struct format_specifier { const char *attribute; const char *def; gboolean multiple, suppress_if_def, def_if_empty; }; static const struct format_specifier format_passwd[] = { { LU_USERNAME, NULL, FALSE, FALSE, FALSE }, { LU_USERPASSWORD, LU_COMMON_DEFAULT_PASSWORD, FALSE, FALSE, FALSE }, { LU_UIDNUMBER, NULL, FALSE, FALSE, FALSE }, { LU_GIDNUMBER, NULL, FALSE, FALSE, FALSE }, { LU_GECOS, NULL, FALSE, FALSE, FALSE }, { LU_HOMEDIRECTORY, NULL, FALSE, FALSE, FALSE }, { LU_LOGINSHELL, LU_COMMON_DEFAULT_SHELL, FALSE, FALSE, TRUE }, }; static const struct format_specifier format_group[] = { { LU_GROUPNAME, NULL, FALSE, FALSE, FALSE }, { LU_GROUPPASSWORD, LU_COMMON_DEFAULT_PASSWORD, FALSE, FALSE, FALSE }, { LU_GIDNUMBER, NULL, FALSE, FALSE, FALSE }, { LU_MEMBERNAME, NULL, TRUE, FALSE, FALSE }, }; static const struct format_specifier format_shadow[] = { { LU_SHADOWNAME, NULL, FALSE, FALSE, FALSE }, { LU_SHADOWPASSWORD, LU_COMMON_DEFAULT_PASSWORD, FALSE, FALSE, FALSE }, { LU_SHADOWLASTCHANGE, "-1", FALSE, TRUE, TRUE }, { LU_SHADOWMIN, "-1", FALSE, TRUE, TRUE }, { LU_SHADOWMAX, "-1", FALSE, TRUE, TRUE }, { LU_SHADOWWARNING, "-1", FALSE, TRUE, TRUE }, { LU_SHADOWINACTIVE, "-1", FALSE, TRUE, TRUE }, { LU_SHADOWEXPIRE, "-1", FALSE, TRUE, TRUE }, { LU_SHADOWFLAG, "-1", FALSE, TRUE, TRUE }, }; static const struct format_specifier format_gshadow[] = { { LU_GROUPNAME, NULL, FALSE, FALSE, FALSE }, { LU_SHADOWPASSWORD, LU_COMMON_DEFAULT_PASSWORD, FALSE, FALSE, FALSE }, { LU_ADMINISTRATORNAME, NULL, TRUE, FALSE, FALSE }, { LU_MEMBERNAME, NULL, TRUE, FALSE, FALSE }, }; /* Use these variables instead of string constants mainly to eliminate the risk of a typo */ static const char suffix_passwd[] = "/passwd"; static const char suffix_shadow[] = "/shadow"; static const char suffix_group[] = "/group"; static const char suffix_gshadow[] = "/gshadow"; /* Return the path of FILE_SUFFIX configured in MODULE, for g_free() */ static char * module_filename(struct lu_module *module, const char *file_suffix) { const char *dir; char *key; key = g_strconcat(module->name, "/directory", NULL); dir = lu_cfg_read_single(module->lu_context, key, "/etc"); g_free(key); return g_strconcat(dir, file_suffix, NULL); } /* Copy contents of INPUT_FILENAME to OUTPUT_FILENAME, exclusively creating it * if EXCLUSIVE. * Return the file descriptor for OUTPUT_FILENAME, open for reading and writing, * or -1 on error. * Note that this does no locking and assumes the directories hosting the files * are not being manipulated by an attacker. */ static int open_and_copy_file(const char *input_filename, const char *output_filename, gboolean exclusive, struct lu_error **error) { int ifd, ofd; struct stat st; int res = -1; int flags; g_assert(input_filename != NULL); g_assert(strlen(input_filename) > 0); g_assert(output_filename != NULL); g_assert(strlen(output_filename) > 0); /* Open the input file. */ ifd = open(input_filename, O_RDONLY); if (ifd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), input_filename, strerror(errno)); goto err; } /* Read the input file's size. */ if (fstat(ifd, &st) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), input_filename, strerror(errno)); goto err_ifd; } /* We only need O_WRONLY, but the caller needs RDWR if ofd will be * used as e->new_fd. */ flags = O_RDWR | O_CREAT; if (exclusive) { /* This ensures that if there is a concurrent writer which is * not doing locking for some reason, we will not truncate their * temporary file. Still, the other writer may truncate our * file, and ultimately the rename() committing the changes will * lose one or the other set of changes. */ (void)unlink(output_filename); flags |= O_EXCL; } else flags |= O_TRUNC; /* Start with absolutely restrictive permissions to make sure nobody * can get a file descriptor for this file until we are done resetting * ownership. */ ofd = open(output_filename, flags, 0); if (ofd == -1) { lu_error_new(error, lu_error_open, _("error creating `%s': %s"), output_filename, strerror(errno)); goto err_ifd; } /* Set the permissions on the new file to match the old one. */ if (fchown(ofd, st.st_uid, st.st_gid) == -1 && errno != EPERM) { lu_error_new(error, lu_error_generic, _("Error changing owner of `%s': %s"), output_filename, strerror(errno)); goto err_ofd; } if (fchmod(ofd, st.st_mode) == -1) { lu_error_new(error, lu_error_generic, _("Error changing mode of `%s': %s"), output_filename, strerror(errno)); goto err_ofd; } /* Copy the data, block by block. */ for (;;) { char buf[CHUNK_SIZE]; ssize_t left; char *p; left = read(ifd, &buf, sizeof(buf)); if (left == -1) { if (errno == EINTR) continue; lu_error_new(error, lu_error_read, _("Error reading `%s': %s"), input_filename, strerror(errno)); goto err_ofd; } if (left == 0) break; p = buf; while (left > 0) { ssize_t out; out = write(ofd, p, left); if (out == -1) { if (errno == EINTR) continue; lu_error_new(error, lu_error_write, _("Error writing `%s': %s"), output_filename, strerror(errno)); goto err_ofd; } p += out; left -= out; } } /* Flush data to disk. */ if (fsync(ofd) != 0 || lseek(ofd, 0, SEEK_SET) == -1) { lu_error_new(error, lu_error_write, _("Error writing `%s': %s"), output_filename, strerror(errno)); goto err_ofd; } res = ofd; goto err_ifd; /* Do not close ofd */ err_ofd: close(ofd); err_ifd: close(ifd); err: return res; } /* Deal with an existing LOCK_FILENAME. * Return TRUE if the caller should try again. */ static gboolean lock_file_handle_existing(const char *lock_filename, struct lu_error **error) { gchar *lock_contents; GError *gerror; gboolean ret = FALSE; uintmax_t pid; char *p; gerror = NULL; if (g_file_get_contents(lock_filename, &lock_contents, NULL, &gerror) == FALSE) { lu_error_new(error, lu_error_read, _("couldn't read from `%s': %s"), lock_filename, gerror->message); g_error_free(gerror); goto err; } errno = 0; pid = strtoumax(lock_contents, &p, 10); if (errno != 0 || *p != 0 || p == lock_contents || (pid_t)pid != pid) { lu_error_new(error, lu_error_lock, _("Invalid contents of lock `%s'"), lock_filename); goto err_lock_contents; } if (kill(pid, 0) == 0 || errno != ESRCH) { lu_error_new(error, lu_error_lock, _("The lock %s is held by process %ju"), lock_filename, pid); goto err_lock_contents; } /* This is unfixably racy, but that should matter only if a genuine * lock owner crashes. */ if (unlink(lock_filename) != 0) { lu_error_new(error, lu_error_lock, _("Error removing stale lock `%s': %s"), lock_filename, strerror(errno)); goto err_lock_contents; } ret = TRUE; /* Fall through */ err_lock_contents: g_free(lock_contents); err: return ret; } /* Create a lock file for FILENAME. */ static gboolean lock_file_create(const char *filename, struct lu_error **error) { char *lock_filename, *tmp_filename; char pid_string[sizeof (pid_t) * CHAR_BIT + 1]; int fd; gboolean ret = FALSE; lock_filename = g_strconcat(filename, ".lock", NULL); tmp_filename = g_strdup_printf("%s.lock.XXXXXX", filename); fd = mkstemp(tmp_filename); if (fd == -1) { lu_error_new(error, lu_error_open, _("error opening temporary file for `%s': %s"), lock_filename, strerror(errno)); goto err_tmp_filename; } if (snprintf(pid_string, sizeof(pid_string), "%ju", (uintmax_t)getpid()) >= sizeof(pid_string)) g_assert_not_reached(); if (write(fd, pid_string, strlen(pid_string)) != strlen(pid_string)) { lu_error_new(error, lu_error_write, _("Error writing `%s': %s"), tmp_filename, strerror(errno)); close(fd); goto err_tmp_file; } close(fd); if (link(tmp_filename, lock_filename) != 0) { if (errno == EEXIST) { if (lock_file_handle_existing(lock_filename, error) == FALSE) goto err_tmp_file; if (link(tmp_filename, lock_filename) == 0) goto got_link; } lu_error_new(error, lu_error_lock, _("Cannot obtain lock `%s': %s"), lock_filename, strerror(errno)); goto err_tmp_file; } got_link: ret = TRUE; /* Fall through */ err_tmp_file: (void)unlink(tmp_filename); err_tmp_filename: g_free(tmp_filename); g_free(lock_filename); return ret; } /* Remove the lock file for FILENAME. */ static void lock_file_remove(const char *filename) { char *lock_file; lock_file = g_strconcat(filename, ".lock", NULL); (void)unlink(lock_file); g_free(lock_file); } /* State related to a file currently open for editing. */ struct editing { char *filename; lu_security_context_t fscreate; char *new_filename; int new_fd; }; /* Open and lock FILE_SUFFIX in MODULE for editing. * Return editing state, or NULL on error. */ static struct editing * editing_open(struct lu_module *module, const char *file_suffix, struct lu_error **error) { struct editing *e; char *backup_name; int fd; e = g_malloc0(sizeof (*e)); e->filename = module_filename(module, file_suffix); /* Make sure this all works if e->filename is a symbolic link, at least * as long as it points to the same file system. */ if (geteuid() == 0) { if (lckpwdf() != 0) { lu_error_new(error, lu_error_lock, _("error locking file: %s"), strerror(errno)); goto err_filename; } } if (lock_file_create(e->filename, error) == FALSE) goto err_lckpwdf; if (!lu_util_fscreate_save(&e->fscreate, error)) goto err_locked; if (!lu_util_fscreate_from_file(e->filename, error)) goto err_fscreate; backup_name = g_strconcat(e->filename, "-", NULL); fd = open_and_copy_file(e->filename, backup_name, FALSE, error); g_free (backup_name); if (fd == -1) goto err_fscreate; close(fd); e->new_filename = g_strconcat(e->filename, "+", NULL); e->new_fd = open_and_copy_file(e->filename, e->new_filename, TRUE, error); if (e->new_fd == -1) goto err_new_filename; return e; err_new_filename: g_free(e->new_filename); err_fscreate: lu_util_fscreate_restore(e->fscreate); err_locked: (void)lock_file_remove(e->filename); err_lckpwdf: if (geteuid() == 0) (void)ulckpwdf(); err_filename: g_free(e->filename); g_free(e); return NULL; } /* Replace DESTINATION with SOURCE, even if DESTINATION is a symbolic link. */ static gboolean replace_file_or_symlink(const char *source, const char *destination, struct lu_error **error) { struct stat st; char *tmp; gboolean ret = FALSE; tmp = NULL; if (lstat(destination, &st) == 0 && S_ISLNK(st.st_mode)) { tmp = realpath(destination, NULL); if (tmp == NULL) { lu_error_new(error, lu_error_generic, _("Error resolving `%s': %s"), destination, strerror(errno)); goto err; } destination = tmp; } if (rename(source, destination) != 0) { lu_error_new(error, lu_error_write, _("Error replacing `%s': %s"), destination, strerror(errno)); goto err; } ret = TRUE; /* Fall through */ err: free(tmp); return ret; } /* Finish editing E, commit edits if COMMIT. * Return true only if RET_INPUT and everything went OK; suggested usage is * ret = editing_close(e, commit, ret, error); */ static gboolean editing_close(struct editing *e, gboolean commit, gboolean ret_input, struct lu_error **error) { gboolean ret = FALSE; gboolean unlink_new_filename = TRUE; g_assert(e != NULL); if (commit && fsync(e->new_fd) != 0) { lu_error_new(error, lu_error_write, _("Error writing `%s': %s"), e->new_filename, strerror(errno)); close(e->new_fd); goto err; } close(e->new_fd); if (commit) { if (replace_file_or_symlink(e->new_filename, e->filename, error) == FALSE) goto err; unlink_new_filename = FALSE; } ret = ret_input; err: if (unlink_new_filename) (void)unlink(e->new_filename); g_free(e->new_filename); lu_util_fscreate_restore(e->fscreate); (void)lock_file_remove(e->filename); if (geteuid() == 0) (void)ulckpwdf(); g_free(e->filename); g_free(e); return ret; } /* Read a line from the file, no matter how long it is, and return it as a * newly-allocated string, with the terminator intact. */ static char * line_read(FILE * fp) { char *buf; size_t len, buf_size = CHUNK_SIZE; buf = g_malloc(buf_size); len = 0; while (fgets(buf + len, buf_size - len, fp) != NULL) { len += strlen(buf + len); if (len > 0 && buf[len - 1] == '\n') break; buf_size += CHUNK_SIZE; buf = g_realloc(buf, buf_size); } if (len == 0) { g_free(buf); return NULL; } else { return buf; } } /* Parse a single field value. */ static gboolean parse_field(const struct format_specifier *format, GValue *value, const char *string) { struct lu_error *err; gboolean ret; err = NULL; ret = lu_value_init_set_attr_from_string(value, format->attribute, string, &err); if (ret == FALSE) { g_assert(err != NULL); g_warning("%s", lu_strerror(err)); lu_error_free(&err); } return ret; } /* Parse a string into an ent structure using the elements in the format * specifier array. */ static gboolean parse_generic(const gchar *line, const struct format_specifier *formats, size_t format_count, struct lu_ent *ent) { size_t i; gchar **v = NULL; GValue value; /* Make sure the line is properly formatted, meaning that it has enough fields in it for us to parse out all the fields we want, allowing for the last one to be empty. */ v = g_strsplit(line, ":", format_count); g_assert(format_count > 0); if (g_strv_length(v) < format_count - 1) { g_warning("entry is incorrectly formatted"); return FALSE; } /* Now parse out the fields. */ memset(&value, 0, sizeof(value)); for (i = 0; i < format_count; i++) { const gchar *val; val = v[i]; if (val == NULL) val = ""; /* Clear out old values in the destination structure. */ lu_ent_clear_current(ent, formats[i].attribute); if (formats[i].multiple) { /* Field contains multiple comma-separated values. */ gchar **w; size_t j; /* Split up the field. */ w = g_strsplit(val, ",", 0); for (j = 0; (w != NULL) && (w[j] != NULL); j++) { gboolean ret; /* Skip over empty strings. */ if (strlen(w[j]) == 0) continue; /* Always succeeds assuming the attribute values use G_TYPE_STRING, which is currently true. */ ret = parse_field(formats + i, &value, w[j]); g_assert (ret != FALSE); /* Add it to the current values list. */ lu_ent_add_current(ent, formats[i].attribute, &value); g_value_unset(&value); } g_strfreev(w); } else { /* Check if we need to supply the default value. */ if (formats[i].def_if_empty && formats[i].def != NULL && strlen(val) == 0) { gboolean ret; /* Convert the default to the right type. */ ret = parse_field(formats + i, &value, formats[i].def); g_assert (ret != FALSE); } else { if (parse_field (formats + i, &value, val) == FALSE) continue; } /* If we recovered a value, add it to the current * values list for the entity. */ lu_ent_add_current(ent, formats[i].attribute, &value); g_value_unset(&value); } } g_strfreev(v); return TRUE; } /* Parse an entry from /etc/passwd into an ent structure, using the attribute * names we know. */ static gboolean lu_files_parse_user_entry(const gchar * line, struct lu_ent *ent) { ent->type = lu_user; lu_ent_clear_all(ent); return parse_generic(line, format_passwd, G_N_ELEMENTS(format_passwd), ent); } /* Parse an entry from /etc/group into an ent structure, using the attribute * names we know. */ static gboolean lu_files_parse_group_entry(const gchar * line, struct lu_ent *ent) { ent->type = lu_group; lu_ent_clear_all(ent); return parse_generic(line, format_group, G_N_ELEMENTS(format_group), ent); } /* Parse an entry from /etc/shadow into an ent structure, using the attribute * names we know. */ static gboolean lu_shadow_parse_user_entry(const gchar * line, struct lu_ent *ent) { ent->type = lu_user; lu_ent_clear_all(ent); return parse_generic(line, format_shadow, G_N_ELEMENTS(format_shadow), ent); } /* Parse an entry from /etc/shadow into an ent structure, using the attribute * names we know. */ static gboolean lu_shadow_parse_group_entry(const gchar * line, struct lu_ent *ent) { ent->type = lu_group; lu_ent_clear_all(ent); return parse_generic(line, format_gshadow, G_N_ELEMENTS(format_gshadow), ent); } typedef gboolean(*parse_fn) (const gchar * line, struct lu_ent * ent); /* Look up an entry in the named file, using the string stored in "name" as * a key, looking for it in the field'th field, using the given parsing * function to load any results we find into the entity structure. */ static gboolean generic_lookup(struct lu_module *module, const char *file_suffix, const char *name, int field, parse_fn parser, struct lu_ent *ent, struct lu_error **error) { gboolean ret; int fd = -1; char *line, *filename; g_assert(module != NULL); g_assert(name != NULL); g_assert(parser != NULL); g_assert(field > 0); g_assert(ent != NULL); filename = module_filename(module, file_suffix); /* Open the file. */ fd = open(filename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), filename, strerror(errno)); g_free(filename); return FALSE; } g_free(filename); /* Search for the entry in this file. */ line = lu_util_line_get_matchingx(fd, name, field, error); if (line == NULL) { close(fd); return FALSE; } /* If we found data, parse it and then free the data. */ ret = parser(line, ent); g_free(line); close(fd); return ret; } /* Look up a user by name in /etc/passwd. */ static gboolean lu_files_user_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { return generic_lookup(module, suffix_passwd, name, 1, lu_files_parse_user_entry, ent, error); } /* Look up a user by ID in /etc/passwd. */ static gboolean lu_files_user_lookup_id(struct lu_module *module, uid_t uid, struct lu_ent *ent, struct lu_error **error) { char key[sizeof (uid) * CHAR_BIT + 1]; sprintf(key, "%jd", (intmax_t)uid); return generic_lookup(module, suffix_passwd, key, 3, lu_files_parse_user_entry, ent, error); } /* Look up a user by name in /etc/shadow. */ static gboolean lu_shadow_user_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { return generic_lookup(module, suffix_shadow, name, 1, lu_shadow_parse_user_entry, ent, error); } /* Look up a user by ID in /etc/shadow. This becomes a bit tricky because * the shadow file doesn't contain UIDs, so we need to scan the passwd file * to convert the ID to a name first. */ static gboolean lu_shadow_user_lookup_id(struct lu_module *module, uid_t uid, struct lu_ent *ent, struct lu_error **error) { gboolean ret; /* First look the user up by ID. */ ret = lu_files_user_lookup_id(module, uid, ent, error); if (ret) { char *p; /* Now use the user's name to search the shadow file. */ p = lu_ent_get_first_value_strdup(ent, LU_USERNAME); if (p != NULL) { ret = generic_lookup(module, suffix_shadow, p, 1, lu_shadow_parse_user_entry, ent, error); g_free(p); } } return ret; } /* Look a group up by name in /etc/group. */ static gboolean lu_files_group_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { return generic_lookup(module, suffix_group, name, 1, lu_files_parse_group_entry, ent, error); } /* Look a group up by ID in /etc/group. */ static gboolean lu_files_group_lookup_id(struct lu_module *module, gid_t gid, struct lu_ent *ent, struct lu_error **error) { char key[sizeof (gid) * CHAR_BIT + 1]; sprintf(key, "%jd", (intmax_t)gid); return generic_lookup(module, suffix_group, key, 3, lu_files_parse_group_entry, ent, error); } /* Look a group up by name in /etc/gshadow. */ static gboolean lu_shadow_group_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { return generic_lookup(module, suffix_gshadow, name, 1, lu_shadow_parse_group_entry, ent, error); } /* Look up a group by ID in /etc/gshadow. This file doesn't contain any * GIDs, so we have to use /etc/group to convert the GID to a name first. */ static gboolean lu_shadow_group_lookup_id(struct lu_module *module, gid_t gid, struct lu_ent *ent, struct lu_error **error) { gboolean ret; ret = lu_files_group_lookup_id(module, gid, ent, error); if (ret) { char *p; p = lu_ent_get_first_value_strdup(ent, LU_GROUPNAME); if (p != NULL) { ret = generic_lookup(module, suffix_gshadow, p, 1, lu_shadow_parse_group_entry, ent, error); g_free(p); } } return ret; } static gboolean lu_files_permits_duplicate_ids(struct lu_module *module) { const char *allow_id_dupes; g_assert(module != NULL); g_assert(module->lu_context != NULL); allow_id_dupes = lu_cfg_read_single(module->lu_context, "files/allow_id_duplicates", "false"); if (allow_id_dupes && strcasecmp(allow_id_dupes, "true") == 0) { return TRUE; } return FALSE; } static gboolean lu_files_mod_is_id_unique(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { id_t id_change = LU_VALUE_INVALID_ID; struct lu_ent *dup_ent = NULL; gboolean ret = FALSE; gboolean found = FALSE; const char *name_attribute; const char *id_attribute; g_assert(module != NULL); g_assert(ent != NULL); g_assert(error != NULL); if (lu_files_permits_duplicate_ids(module)) { return TRUE; } /* Get the array of names for the entity object. */ if (ent->type == lu_user) { name_attribute = LU_USERNAME; id_attribute = LU_UIDNUMBER; } else if (ent->type == lu_group) { name_attribute = LU_GROUPNAME; id_attribute = LU_GIDNUMBER; } else { g_assert_not_reached(); } id_change = lu_ent_get_first_id(ent, id_attribute); if (id_change == LU_VALUE_INVALID_ID) { /* The GID is not being changed, success */ return TRUE; } /* If the GID is being changed, check if there is another entry * with the same GID */ dup_ent = lu_ent_new(); if (dup_ent == NULL) { return FALSE; } /* Get the array of names for the entity object. */ if (ent->type == lu_user) { found = lu_files_user_lookup_id(module, id_change, dup_ent, error); } else if (ent->type == lu_group) { found = lu_files_group_lookup_id(module, id_change, dup_ent, error); } else { g_assert_not_reached(); } if (found == TRUE) { /* If there is, check if its original name is the same as * the original name of ent. */ const char *dup_name = NULL; const char *ent_cur_name = NULL; dup_name = lu_ent_get_first_string_current(dup_ent, name_attribute); if (dup_name == NULL) { lu_error_new(error, lu_error_generic, _("duplicate object has no %s attribute"), name_attribute); ret = FALSE; goto done; } ent_cur_name = lu_ent_get_first_string_current(ent, name_attribute); if (ent_cur_name == NULL) { lu_error_new(error, lu_error_generic, _("original object has no %s attribute"), name_attribute); ret = FALSE; goto done; } /* Another entry already has the same ID we're attempting to * set, * this can only work if we are also renaming the group * to the * duplicate name or if we're changing 'self' */ if (strcmp(dup_name, ent_cur_name) != 0) { lu_error_new(error, lu_error_id_used, _("ID %lu already in use by %s"), (unsigned long) id_change, dup_name); ret = FALSE; goto done; } } ret = TRUE; done: if (dup_ent != NULL) { lu_ent_free(dup_ent); } return ret; } /* Format a single field. Return field string for g_free (). */ static char * format_field(struct lu_ent *ent, const struct format_specifier *format) { GValueArray *values; char *ret; values = lu_ent_get(ent, format->attribute); if (values != NULL) { size_t j; /* Iterate over all of the data items we can, prepending a comma to all but the first. */ ret = NULL; j = 0; do { GValue *val; char *p, *tmp; val = g_value_array_get_nth(values, j); p = lu_value_strdup(val); /* Add it to the end, prepending a comma if we need to separate it from another value, unless this is the default value for the field and we need to suppress it. */ if (format->multiple == FALSE && format->suppress_if_def == TRUE && format->def != NULL && strcmp(format->def, p) == 0) tmp = g_strdup(""); else tmp = g_strconcat(ret ? ret : "", (j > 0) ? "," : "", p, NULL); g_free(p); g_free(ret); ret = tmp; j++; } while (format->multiple && j < values->n_values); } else { /* We have no values, so check for a default value, * unless we're suppressing it. */ if (format->def != NULL && format->suppress_if_def == FALSE) ret = g_strdup(format->def); else ret = g_strdup(""); } return ret; } /* Format a line for the user/group, using the information in ent, using formats to guide the formatting. Return a line for g_free(), or NULL on error. */ static char * format_generic(struct lu_ent *ent, const struct format_specifier *formats, size_t format_count, struct lu_error **error) { char *ret = NULL, *tmp; size_t i; g_return_val_if_fail(ent != NULL, NULL); for (i = 0; i < format_count; i++) { char *field; field = format_field(ent, formats + i); if (strchr(field, '\n') != NULL) { lu_error_new(error, lu_error_invalid_attribute_value, _("%s value `%s': `\\n' not allowed"), formats[i].attribute, field); g_free(field); goto err; } if (i != format_count - 1 && strchr(field, ':') != NULL) { lu_error_new(error, lu_error_invalid_attribute_value, _("%s value `%s': `:' not allowed"), formats[i].attribute, field); g_free(field); goto err; } if (i == 0) tmp = field; else { tmp = g_strconcat(ret, ":", field, NULL); g_free(field); } g_free(ret); ret = tmp; } /* Add an end-of-line terminator. */ g_assert(format_count != 0 && ret != NULL); tmp = g_strconcat(ret, "\n", NULL); g_free(ret); ret = tmp; return ret; err: g_free(ret); return NULL; } /* Does NUL-terminated CONTENTS contains an entry with the same entry name used in LINE? */ static gboolean entry_name_conflicts(const char *contents, const char *line) { size_t prefix_len; char *prefix, *fragment; gboolean res; if (strchr(line, ':') != NULL) prefix_len = strchr(line, ':') - line + 1; else if (strchr(line, '\n') != NULL) prefix_len = strchr(line, '\n') - line + 1; else prefix_len = strlen(line); if (strncmp(contents, line, prefix_len) == 0) return TRUE; prefix = g_strndup(line, prefix_len); fragment = g_strconcat("\n", prefix, NULL); g_free(prefix); res = strstr(contents, fragment) != NULL; g_free(fragment); return res; } /* Add an entity to a given flat file, using a given formatting functin to * construct the proper text data. */ static gboolean generic_add(struct lu_module *module, const char *file_suffix, const struct format_specifier *formats, size_t format_count, struct lu_ent *ent, struct lu_error **error) { struct editing *e; char *line, *contents; ssize_t r; struct stat st; off_t offset; gboolean ret = FALSE; g_assert(module != NULL); g_assert(formats != NULL); g_assert(format_count > 0); g_assert(ent != NULL); line = format_generic(ent, formats, format_count, error); if (line == NULL) goto err; e = editing_open(module, file_suffix, error); if (e == NULL) goto err_line; /* Read the file's size. */ if (fstat(e->new_fd, &st) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), e->new_filename, strerror(errno)); goto err_editing; } /* Read the entire file in. There's some room for improvement here, * but at least we still have the lock, so it's not going to get * funky on us. */ contents = g_malloc0(st.st_size + 1); if (read(e->new_fd, contents, st.st_size) != st.st_size) { lu_error_new(error, lu_error_read, _("couldn't read from `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } /* Sanity-check to make sure that the entity isn't already listed in the file. */ if (entry_name_conflicts(contents, line)) { lu_error_new(error, lu_error_generic, _("entry already present in file")); goto err_contents; } /* Hooray, we can add this entry at the end of the file. */ offset = lseek(e->new_fd, 0, SEEK_END); if (offset == -1) { lu_error_new(error, lu_error_write, _("couldn't write to `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } /* If the last byte in the file isn't a newline, add one, and silently * curse people who use text editors (which shall remain unnamed) which * allow saving of the file without a final line terminator. */ if ((st.st_size > 0) && (contents[st.st_size - 1] != '\n')) { if (write(e->new_fd, "\n", 1) != 1) { lu_error_new(error, lu_error_write, _("couldn't write to `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } } /* Attempt to write the entire line to the end. */ r = write(e->new_fd, line, strlen(line)); if ((size_t)r != strlen(line)) { /* Oh, come on! */ lu_error_new(error, lu_error_write, _("couldn't write to `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } ret = TRUE; /* Fall through */ err_contents: g_free(contents); err_editing: ret = editing_close(e, ret, ret, error); /* Commit/rollback happens here. */ err_line: g_free(line); err: return ret; } /* Make last-minute changes to the structures before adding them. */ static gboolean lu_files_user_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return TRUE; } /* Add the user record to the passwd file. */ static gboolean lu_files_user_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { gboolean ret = FALSE; ret = lu_files_mod_is_id_unique(module, ent, error); if (ret == FALSE) { return FALSE; } return generic_add(module, suffix_passwd, format_passwd, G_N_ELEMENTS(format_passwd), ent, error); } /* Make last-minute changes to the record before adding it to /etc/shadow. */ static gboolean lu_shadow_user_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)error; /* Make sure the regular password says "shadow!" */ lu_ent_set_string(ent, LU_USERPASSWORD, "x"); return TRUE; } /* Add the user to the shadow file. */ static gboolean lu_shadow_user_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_add(module, suffix_shadow, format_shadow, G_N_ELEMENTS(format_shadow), ent, error); } /* Make last-minute changes before adding the group to the group file. */ static gboolean lu_files_group_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return TRUE; } /* Add the group to the group file. */ static gboolean lu_files_group_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { gboolean ret = FALSE; ret = lu_files_mod_is_id_unique(module, ent, error); if (ret == FALSE) { return FALSE; } return generic_add(module, suffix_group, format_group, G_N_ELEMENTS(format_group), ent, error); } /* Make last-minute changes before adding the shadowed group. */ static gboolean lu_shadow_group_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)error; /* Make sure the regular password says "shadow!" */ lu_ent_set_string(ent, LU_GROUPPASSWORD, "x"); return TRUE; } /* Add a shadowed group. */ static gboolean lu_shadow_group_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_add(module, suffix_gshadow, format_gshadow, G_N_ELEMENTS(format_gshadow), ent, error); } /* Modify a particular record in the given file, field by field, using the * given format specifiers. */ static gboolean generic_mod(struct lu_module *module, const char *file_suffix, const struct format_specifier *formats, size_t format_count, struct lu_ent *ent, struct lu_error **error) { struct editing *e; char *new_line, *contents, *line, *rest; char *current_name, *fragment; const char *name_attribute; gboolean ret = FALSE; struct stat st; size_t len; g_assert(module != NULL); g_assert(formats != NULL); g_assert(format_count > 0); g_assert(ent != NULL); g_assert((ent->type == lu_user) || (ent->type == lu_group)); /* Get the array of names for the entity object. */ if (ent->type == lu_user) name_attribute = LU_USERNAME; else if (ent->type == lu_group) name_attribute = LU_GROUPNAME; else g_assert_not_reached(); current_name = lu_ent_get_first_value_strdup_current(ent, name_attribute); if (current_name == NULL) { lu_error_new(error, lu_error_generic, _("entity object has no %s attribute"), name_attribute); return FALSE; } new_line = format_generic(ent, formats, format_count, error); if (new_line == NULL) goto err_current_name; e = editing_open(module, file_suffix, error); if (e == NULL) goto err_new_line; if (fstat(e->new_fd, &st) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), e->new_filename, strerror(errno)); goto err_editing; } contents = g_malloc(st.st_size + 1 + strlen(new_line)); if (read(e->new_fd, contents, st.st_size) != st.st_size) { lu_error_new(error, lu_error_read, _("couldn't read from `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } contents[st.st_size] = '\0'; fragment = g_strconcat("\n", current_name, ":", (const gchar *)NULL); len = strlen(current_name); if (strncmp(contents, current_name, len) == 0 && contents[len] == ':') line = contents; else { line = strstr(contents, fragment); if (line != NULL) line++; } g_free(fragment); if ((strncmp(new_line, current_name, len) != 0 || new_line[len] != ':') && entry_name_conflicts(contents, new_line)) { lu_error_new(error, lu_error_generic, _("entry with conflicting name already present " "in file")); goto err_contents; } if (line == NULL) { lu_error_new(error, lu_error_search, NULL); goto err_contents; } rest = strchr(line, '\n'); if (rest != NULL) rest++; else rest = strchr(line, '\0'); memmove(line + strlen(new_line), rest, contents + st.st_size + 1 - rest); memcpy(line, new_line, strlen(new_line)); if (lseek(e->new_fd, line - contents, SEEK_SET) == -1) { lu_error_new(error, lu_error_write, NULL); goto err_contents; } len = strlen(line); if ((size_t)write(e->new_fd, line, len) != len) { lu_error_new(error, lu_error_write, NULL); goto err_contents; } if (ftruncate(e->new_fd, (line - contents) + len) != 0) { lu_error_new(error, lu_error_write, NULL); goto err_contents; } ret = TRUE; /* Fall through */ err_contents: g_free(contents); err_editing: ret = editing_close(e, ret, ret, error); /* Commit/rollback happens here. */ err_new_line: g_free(new_line); err_current_name: g_free(current_name); return ret; } /* Modify an entry in the passwd file. */ static gboolean lu_files_user_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { gboolean ret = FALSE; ret = lu_files_mod_is_id_unique(module, ent, error); if (ret == FALSE) { return FALSE; } return generic_mod(module, suffix_passwd, format_passwd, G_N_ELEMENTS(format_passwd), ent, error); } /* Modify an entry in the group file. */ static gboolean lu_files_group_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { gboolean ret = FALSE; ret = lu_files_mod_is_id_unique(module, ent, error); if (ret == FALSE) { return FALSE; } return generic_mod(module, suffix_group, format_group, G_N_ELEMENTS(format_group), ent, error); } /* Modify an entry in the shadow file. */ static gboolean lu_shadow_user_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_mod(module, suffix_shadow, format_shadow, G_N_ELEMENTS(format_shadow), ent, error); } /* Modify an entry in the gshadow file. */ static gboolean lu_shadow_group_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_mod(module, suffix_gshadow, format_gshadow, G_N_ELEMENTS(format_gshadow), ent, error); } /* Delete an entity from the given file. */ static gboolean generic_del(struct lu_module *module, const char *file_suffix, struct lu_ent *ent, struct lu_error **error) { struct editing *e; char *name; char *contents; char *fragment2; struct stat st; size_t len; gboolean commit = FALSE, ret = FALSE; gboolean found; /* Get the entity's current name. */ if (ent->type == lu_user) name = lu_ent_get_first_value_strdup_current(ent, LU_USERNAME); else if (ent->type == lu_group) name = lu_ent_get_first_value_strdup_current(ent, LU_GROUPNAME); else g_assert_not_reached(); g_assert(name != NULL); g_assert(module != NULL); g_assert(ent != NULL); e = editing_open(module, file_suffix, error); if (e == NULL) goto err_name; /* Determine the file's size. */ if (fstat(e->new_fd, &st) == -1) { lu_error_new(error, lu_error_stat, _("couldn't stat `%s': %s"), e->new_filename, strerror(errno)); goto err_editing; } /* Allocate space to hold the file and read it all in. */ contents = g_malloc(st.st_size + 1); if (read(e->new_fd, contents, st.st_size) != st.st_size) { lu_error_new(error, lu_error_read, _("couldn't read from `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } contents[st.st_size] = '\0'; /* Generate a pattern for a beginning of a non-first line */ fragment2 = g_strconcat("\n", name, ":", (const gchar *)NULL); /* Remove all occurrences of this entry from the file. */ len = strlen(name); do { char *tmp; found = FALSE; /* If the data is on the first line of the file, we remove the * first line. */ if (strncmp(contents, name, len) == 0 && contents[len] == ':') { char *p; p = strchr(contents, '\n'); if (p != NULL) memmove(contents, p + 1, strlen(p + 1) + 1); else strcpy(contents, ""); found = TRUE; } else /* If the data occurs elsewhere, cover it up. */ if ((tmp = strstr(contents, fragment2)) != NULL) { char *p; p = strchr(tmp + 1, '\n'); if (p != NULL) memmove(tmp + 1, p + 1, strlen (p + 1) + 1); else strcpy(tmp + 1, ""); found = TRUE; } } while(found); g_free(fragment2); /* If the resulting memory chunk is the same size as the file, then * nothing's changed. */ len = strlen(contents); if ((off_t)len == st.st_size) { ret = TRUE; goto err_contents; } /* Otherwise we need to write the new data to the file. Jump back to * the beginning of the file. */ if (lseek(e->new_fd, 0, SEEK_SET) == -1) { lu_error_new(error, lu_error_write, _("couldn't write to `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } /* Write the new contents out. */ if ((size_t)write(e->new_fd, contents, len) != len) { lu_error_new(error, lu_error_write, _("couldn't write to `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } /* Truncate the file to the new (certainly shorter) length. */ if (ftruncate(e->new_fd, len) == -1) { lu_error_new(error, lu_error_generic, _("couldn't write to `%s': %s"), e->new_filename, strerror(errno)); goto err_contents; } commit = TRUE; ret = TRUE; /* Fall through */ err_contents: g_free(contents); err_editing: /* Commit/rollback happens here. */ ret = editing_close(e, commit, ret, error); err_name: g_free(name); return ret; } /* Remove a user from the passwd file. */ static gboolean lu_files_user_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_del(module, suffix_passwd, ent, error); } /* Remove a group from the group file. */ static gboolean lu_files_group_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_del(module, suffix_group, ent, error); } /* Remove a user from the shadow file. */ static gboolean lu_shadow_user_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_del(module, suffix_shadow, ent, error); } /* Remove a group from the gshadow file. */ static gboolean lu_shadow_group_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_del(module, suffix_gshadow, ent, error); } /* Return a modified version of the cryptedPassword string, depending on op, or NULL on error. */ static char * lock_process(char *cryptedPassword, enum lock_op op, struct lu_ent *ent, struct lu_error **error) { char *ret = NULL; switch (op) { case LO_LOCK: ret = ent->cache->cache(ent->cache, cryptedPassword); if (ret[0] != '!') { cryptedPassword = g_strconcat("!!", ret, NULL); ret = ent->cache->cache(ent->cache, cryptedPassword); g_free(cryptedPassword); } break; case LO_UNLOCK: for (ret = cryptedPassword; ret[0] == '!'; ret++) ; ret = ent->cache->cache(ent->cache, ret); break; case LO_UNLOCK_NONEMPTY: for (ret = cryptedPassword; ret[0] == '!'; ret++) ; if (*ret == '\0') { lu_error_new(error, lu_error_unlock_empty, NULL); return NULL; } ret = ent->cache->cache(ent->cache, ret); break; default: g_assert_not_reached (); } return ret; } /* Lock or unlock an account in the given file, with its encrypted password * stored in the given field number. */ static gboolean generic_lock(struct lu_module *module, const char *file_suffix, int field, struct lu_ent *ent, enum lock_op op, struct lu_error **error) { struct editing *e; char *value, *new_value, *name = NULL; gboolean commit = FALSE, ret = FALSE; /* Get the name which keys the entries of interest in the file. */ g_assert((ent->type == lu_user) || (ent->type == lu_group)); if (ent->type == lu_user) name = lu_ent_get_first_value_strdup_current(ent, LU_USERNAME); if (ent->type == lu_group) name = lu_ent_get_first_value_strdup_current(ent, LU_GROUPNAME); g_assert(name != NULL); g_assert(module != NULL); g_assert(ent != NULL); e = editing_open(module, file_suffix, error); if (e == NULL) goto err_name; /* Read the old value from the file. */ value = lu_util_field_read(e->new_fd, name, field, error); if (value == NULL) goto err_editing; /* Check that we actually care about this. If there's a non-empty, * not locked string in there, but it's too short to be a hash, then * we don't care, so we just nod our heads and smile. */ if (LU_CRYPT_INVALID(value)) { g_free(value); ret = TRUE; goto err_editing; } /* Generate a new value for the file. */ new_value = lock_process(value, op, ent, error); g_free(value); if (new_value == NULL) goto err_editing; /* Make the change. */ if (lu_util_field_write(e->new_fd, name, field, new_value, error) == FALSE) goto err_editing; commit = TRUE; ret = TRUE; /* Fall through */ err_editing: /* Commit/rollback happens here. */ ret = editing_close(e, commit, ret, error); err_name: g_free(name); return ret; } /* Check if an account [password] is locked. */ static gboolean generic_is_locked(struct lu_module *module, const char *file_suffix, int field, struct lu_ent *ent, struct lu_error **error) { char *filename; char *value, *name = NULL; int fd; gboolean ret = FALSE; /* Get the name of this account. */ g_assert((ent->type == lu_user) || (ent->type == lu_group)); if (ent->type == lu_user) name = lu_ent_get_first_value_strdup_current(ent, LU_USERNAME); if (ent->type == lu_group) name = lu_ent_get_first_value_strdup_current(ent, LU_GROUPNAME); g_assert(name != NULL); g_assert(module != NULL); g_assert(ent != NULL); filename = module_filename(module, file_suffix); /* Open the file. */ fd = open(filename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), filename, strerror(errno)); goto err_filename; } /* Read the value. */ value = lu_util_field_read(fd, name, field, error); if (value == NULL) goto err_fd; /* It all comes down to this. */ ret = value[0] == '!'; g_free(value); /* Fall through */ err_fd: close(fd); err_filename: g_free(filename); g_free(name); return ret; } /* Lock a user from the passwd file. */ static gboolean lu_files_user_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_passwd, 2, ent, LO_LOCK, error); } static gboolean lu_files_user_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_passwd, 2, ent, LO_UNLOCK, error); } static gboolean lu_files_user_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_passwd, 2, ent, LO_UNLOCK_NONEMPTY, error); } /* Lock a group from the group file. */ static gboolean lu_files_group_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_group, 2, ent, LO_LOCK, error); } static gboolean lu_files_group_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_group, 2, ent, LO_UNLOCK, error); } static gboolean lu_files_group_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_group, 2, ent, LO_UNLOCK_NONEMPTY, error); } /* Lock a user in the shadow file. */ static gboolean lu_shadow_user_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_shadow, 2, ent, LO_LOCK, error); } static gboolean lu_shadow_user_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_shadow, 2, ent, LO_UNLOCK, error); } static gboolean lu_shadow_user_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_shadow, 2, ent, LO_UNLOCK_NONEMPTY, error); } /* Lock a group in the gshadow file. */ static gboolean lu_shadow_group_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_gshadow, 2, ent, LO_LOCK, error); } static gboolean lu_shadow_group_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_gshadow, 2, ent, LO_UNLOCK, error); } static gboolean lu_shadow_group_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_lock(module, suffix_gshadow, 2, ent, LO_UNLOCK_NONEMPTY, error); } /* Check if the account is locked. */ static gboolean lu_files_user_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_is_locked(module, suffix_passwd, 2, ent, error); } static gboolean lu_files_group_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_is_locked(module, suffix_group, 2, ent, error); } static gboolean lu_shadow_user_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_is_locked(module, suffix_shadow, 2, ent, error); } static gboolean lu_shadow_group_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_is_locked(module, suffix_gshadow, 2, ent, error); } /* Was ent found by the shadow module? */ static gboolean ent_has_shadow (struct lu_ent *ent) { size_t i; for (i = 0; i < ent->modules->n_values; i++) { GValue *value; value = g_value_array_get_nth(ent->modules, i); g_assert(G_VALUE_HOLDS_STRING(value)); if (strcmp(g_value_get_string(value), LU_MODULE_NAME_SHADOW) == 0) return TRUE; } return FALSE; } /* Change a password, in a given file, in a given field, for a given account, * to a given value. Got that? */ static gboolean generic_setpass(struct lu_module *module, const char *file_suffix, int field, struct lu_ent *ent, const char *password, gboolean is_shadow, struct lu_error **error) { struct editing *e; char *value, *name = NULL; gboolean ret = FALSE; /* Get the name of this account. */ g_assert((ent->type == lu_user) || (ent->type == lu_group)); if (ent->type == lu_user) name = lu_ent_get_first_value_strdup_current(ent, LU_USERNAME); else if (ent->type == lu_group) name = lu_ent_get_first_value_strdup_current(ent, LU_GROUPNAME); g_assert(name != NULL); g_assert(module != NULL); g_assert(ent != NULL); e = editing_open(module, file_suffix, error); if (e == NULL) goto err_name; /* Read the current contents of the field. */ value = lu_util_field_read(e->new_fd, name, field, error); if (value == NULL) goto err_editing; /* pam_unix uses shadow passwords only if pw_passwd is "x" (or ##${username}). Make sure to preserve the shadow marker unmodified (most importantly, don't replace it by an encrypted password) -- but only if a shadow entry exists. */ if (!is_shadow && ent_has_shadow(ent) && lu_ent_get_current(ent, LU_SHADOWPASSWORD) != NULL && (strcmp(value, "x") == 0 || (strncmp(value, "##", 2) == 0 && strcmp(value + 2, name) == 0))) { ret = TRUE; goto err_value; } /* Otherwise, if there is a shadow password and the shadow marker is invalid, set it to the standard value. */ if (!is_shadow && ent_has_shadow(ent) && lu_ent_get_current(ent, LU_SHADOWPASSWORD) != NULL && LU_CRYPT_INVALID(value)) password = "x"; /* The crypt prefix indicates that the password is already hashed. If * we don't see it, hash the password. */ else if (g_ascii_strncasecmp(password, LU_CRYPTED, strlen(LU_CRYPTED)) == 0) { password = password + strlen(LU_CRYPTED); if (strpbrk(password, ":\n") != NULL) { lu_error_new(error, lu_error_invalid_attribute_value, _("`:' and `\\n' not allowed in encrypted " "password")); goto err_value; } } else { char *salt; salt = lu_util_default_salt_specifier(module->lu_context); password = lu_make_crypted(password, salt); g_free(salt); if (password == NULL) { lu_error_new(error, lu_error_generic, _("error encrypting password")); goto err_value; } } /* Now write our changes to the file. */ ret = lu_util_field_write(e->new_fd, name, field, password, error); /* Fall through */ err_value: g_free(value); err_editing: ret = editing_close(e, ret, ret, error); /* Commit/rollback happens here. */ err_name: g_free(name); return ret; } /* Set a user's password in the passwd file. */ static gboolean lu_files_user_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { return generic_setpass(module, suffix_passwd, 2, ent, password, FALSE, error); } static gboolean lu_files_group_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { return generic_setpass(module, suffix_group, 2, ent, password, FALSE, error); } static gboolean lu_files_user_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_setpass(module, suffix_passwd, 2, ent, LU_CRYPTED, FALSE, error); } static gboolean lu_files_group_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_setpass(module, suffix_group, 2, ent, LU_CRYPTED, FALSE, error); } static gboolean lu_shadow_user_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { return generic_setpass(module, suffix_shadow, 2, ent, password, TRUE, error); } static gboolean lu_shadow_group_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { return generic_setpass(module, suffix_gshadow, 2, ent, password, TRUE, error); } static gboolean lu_shadow_user_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_setpass(module, suffix_shadow, 2, ent, LU_CRYPTED, TRUE, error); } static gboolean lu_shadow_group_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { return generic_setpass(module, suffix_gshadow, 2, ent, LU_CRYPTED, TRUE, error); } /* Get a list of all of the entries in a given file which patch a * particular pattern. */ static GValueArray * lu_files_enumerate(struct lu_module *module, const char *file_suffix, const char *pattern, struct lu_error **error) { int fd; GValueArray *ret; GValue value; char *buf; char *filename; FILE *fp; g_assert(module != NULL); pattern = pattern ?: "*"; filename = module_filename(module, file_suffix); /* Open the file. */ fd = open(filename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), filename, strerror(errno)); g_free(filename); return NULL; } /* Wrap the file for stdio operations. */ fp = fdopen(fd, "r"); if (fp == NULL) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), filename, strerror(errno)); close(fd); g_free(filename); return NULL; } /* Create a new array to hold values. */ ret = g_value_array_new(0); memset(&value, 0, sizeof(value)); g_value_init(&value, G_TYPE_STRING); /* Read each line, */ while ((buf = line_read(fp)) != NULL) { char *p; if (strlen(buf) == 1) { g_free(buf); continue; } /* require that each non-empty line has meaningful data in it */ p = strchr(buf, ':'); if (p != NULL) { /* snip off the parts we don't care about, */ *p = '\0'; if (buf[0] != '+' && buf[0] != '-' && fnmatch(pattern, buf, 0) == 0) { /* add add it to the list we're returning. */ g_value_set_string(&value, buf); g_value_array_append(ret, &value); g_value_reset(&value); } } g_free(buf); } /* Clean up. */ g_value_unset(&value); fclose(fp); g_free(filename); return ret; } /* Get a list of all users or groups. */ static GValueArray * lu_files_users_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { return lu_files_enumerate(module, suffix_passwd, pattern, error); } static GValueArray * lu_files_groups_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { return lu_files_enumerate(module, suffix_group, pattern, error); } /* Get a list of all of the users who are in a given group. */ static GValueArray * lu_files_users_enumerate_by_group(struct lu_module *module, const char *group, gid_t gid, struct lu_error **error) { int fd; GValueArray *ret; GValue value; char *buf, grp[CHUNK_SIZE]; char *pwdfilename, *grpfilename, *p, *q; FILE *fp; g_assert(module != NULL); g_assert(group != NULL); /* Generate the names of the two files we'll be looking at. */ pwdfilename = module_filename(module, suffix_passwd); grpfilename = module_filename(module, suffix_group); /* Open the passwd file. */ fd = open(pwdfilename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), pwdfilename, strerror(errno)); g_free(pwdfilename); g_free(grpfilename); return NULL; } /* Wrap the descriptor in a stdio FILE. */ fp = fdopen(fd, "r"); if (fp == NULL) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), pwdfilename, strerror(errno)); close(fd); g_free(pwdfilename); g_free(grpfilename); return NULL; } /* Create an array to store values we're going to return. */ ret = g_value_array_new(0); memset(&value, 0, sizeof(value)); g_value_init(&value, G_TYPE_STRING); snprintf(grp, sizeof(grp), "%jd", (intmax_t)gid); /* Iterate over each line. */ while ((buf = line_read(fp)) != NULL) { if (strlen(buf) == 1 || buf[0] == '-' || buf[0] == '+') { g_free(buf); continue; } /* Find the end of the first field. */ p = strchr(buf, ':'); q = NULL; /* If the field has an end, find the end of the second field. */ if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* If the second field has an end, find the end of the third. */ if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* If the third has an end, find the fourth. */ if (p != NULL) { *p = '\0'; p++; q = p; p = strchr(p, ':'); } /* If we haven't run out of fields by now, we can match. */ if (q != NULL) { /* Terminate the fourth field. */ if (p != NULL) { *p = '\0'; } /* If it matches the gid, add this user's name to the * list. */ if (strcmp(q, grp) == 0) { g_value_set_string(&value, buf); g_value_array_append(ret, &value); g_value_reset(&value); } } g_free(buf); } /* Close the file. */ g_value_unset(&value); fclose(fp); /* Open the group file. */ fd = open(grpfilename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), grpfilename, strerror(errno)); g_free(pwdfilename); g_free(grpfilename); g_value_array_free(ret); return NULL; } /* Wrap the group file in an stdio file. */ fp = fdopen(fd, "r"); if (fp == NULL) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), grpfilename, strerror(errno)); close(fd); g_free(pwdfilename); g_free(grpfilename); g_value_array_free(ret); return NULL; } /* Iterate over all of these lines as well. */ while ((buf = line_read(fp)) != NULL) { if (strlen(buf) == 1 || buf[0] == '+' || buf[0] == '-') { g_free(buf); continue; } /* Terminate at the end of the first field, and find the end of * the second field. */ p = strchr(buf, ':'); if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* If the first field matches, continue. */ if (strcmp(buf, group) == 0) { /* Find the end of the third field. */ if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* Find the beginning of the fourth field. */ if (p != NULL) { *p = '\0'; p++; /* Iterate through all of the pieces of * the field. */ while ((q = strsep(&p, ",\n")) != NULL) { /* Add this name. */ if (strlen(q) > 0) { g_value_init(&value, G_TYPE_STRING); g_value_set_string(&value, q); g_value_array_append(ret, &value); g_value_unset(&value); } } } g_free(buf); break; } g_free(buf); } /* Clean up. */ fclose(fp); g_free(pwdfilename); g_free(grpfilename); return ret; } /* Get a list of groups to which the user belongs. */ static GValueArray * lu_files_groups_enumerate_by_user(struct lu_module *module, const char *user, uid_t uid, struct lu_error **error) { int fd; GValueArray *ret; GValue value; char *buf; char *key, *pwdfilename, *grpfilename, *p, *q; FILE *fp; (void)uid; g_assert(module != NULL); g_assert(user != NULL); /* Generate the names of files we'll be looking at. */ pwdfilename = module_filename(module, suffix_passwd); grpfilename = module_filename(module, suffix_group); /* Open the first file. */ fd = open(pwdfilename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), pwdfilename, strerror(errno)); goto err_pwdfilename; } /* Open it so that we can use stdio. */ fp = fdopen(fd, "r"); if (fp == NULL) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), pwdfilename, strerror(errno)); close(fd); goto err_pwdfilename; } /* Initialize the list of values we'll return. */ ret = g_value_array_new(0); memset(&value, 0, sizeof(value)); g_value_init(&value, G_TYPE_STRING); /* Iterate through all of the lines in the file. */ key = NULL; while ((buf = line_read(fp)) != NULL) { if (strlen(buf) == 1 || buf[0] == '+' || buf[0] == '-') { g_free(buf); continue; } /* Find the end of the first field. */ p = strchr(buf, ':'); /* Find the end of the second field. */ if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* Find the end of the third field. */ if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* Find the the fourth field. */ if (p != NULL) { *p = '\0'; p++; q = strchr(p, ':'); /* If it matches, save the gid. */ if (strcmp(buf, user) == 0) { if (q) { *q = '\0'; } key = g_strdup(p); g_free(buf); break; } } g_free(buf); } fclose(fp); /* Open the groups file. */ fd = open(grpfilename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), grpfilename, strerror(errno)); goto err_key; } /* Open it so that we can use stdio. */ fp = fdopen(fd, "r"); if (fp == NULL) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), grpfilename, strerror(errno)); close(fd); goto err_key; } /* Iterate through all of the lines in the file. */ while ((buf = line_read(fp)) != NULL) { if (strlen(buf) == 1 || buf[0] == '+' || buf[0] == '-') { g_free(buf); continue; } /* Find the end of the first field. */ p = strchr(buf, ':'); /* Find the end of the second field. */ if (p != NULL) { *p = '\0'; p++; p = strchr(p, ':'); } /* Find the end of the third field. */ if (p != NULL) { *p = '\0'; p++; q = strchr(p, ':'); if (q && key) { /* Terminate the third field. */ *q = '\0'; if (strcmp(p, key) == 0) { /* Add the name of the group because its * gid is the user's primary. */ g_value_set_string(&value, buf); g_value_array_append(ret, &value); g_value_reset(&value); } } p = q; } /* Find the beginning of the third field. */ if (p != NULL) { p++; /* Break out each piece of the fourth field. */ while ((q = strsep(&p, ",\n")) != NULL) { if (strlen(q) > 0) { if (strcmp(q, user) == 0) { g_value_set_string(&value, buf); g_value_array_append(ret, &value); g_value_reset(&value); } } } } g_free(buf); } g_free(key); g_value_unset(&value); fclose(fp); g_free(pwdfilename); g_free(grpfilename); return ret; err_key: g_free(key); g_value_array_free(ret); err_pwdfilename: g_free(pwdfilename); g_free(grpfilename); return NULL; } /* Enumerate all of the accounts listed in the given file, using the * given parser to parse matching accounts into an array of entity pointers. */ static GPtrArray * lu_files_enumerate_full(struct lu_module *module, const char *file_suffix, parse_fn parser, const char *pattern, struct lu_error **error) { int fd; GPtrArray *ret = NULL; char *buf; char *key, *filename; FILE *fp; g_assert(module != NULL); pattern = pattern ?: "*"; filename = module_filename(module, file_suffix); /* Open the file. */ fd = open(filename, O_RDONLY); if (fd == -1) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), filename, strerror(errno)); goto err_filename; } /* Wrap the file up in stdio. */ fp = fdopen(fd, "r"); if (fp == NULL) { lu_error_new(error, lu_error_open, _("couldn't open `%s': %s"), filename, strerror(errno)); close(fd); goto err_filename; } /* Allocate an array to hold results. */ ret = g_ptr_array_new(); while ((buf = line_read(fp)) != NULL) { struct lu_ent *ent; if (strlen(buf) == 1 || buf[0] == '+' || buf[0] == '-') { g_free(buf); continue; } ent = lu_ent_new(); /* Snip the line off at the right place. */ key = strchr(buf, '\n'); if (key != NULL) { *key = '\0'; } if (strchr(buf, ':')) { key = g_strndup(buf, strchr(buf, ':') - buf); } else { key = g_strdup(buf); } /* If the account name matches the pattern, parse it and add * it to the list. */ if (fnmatch(pattern, key, 0) == 0 && parser(buf, ent) != FALSE) g_ptr_array_add(ret, ent); else lu_ent_free(ent); g_free(buf); g_free(key); } fclose(fp); err_filename: g_free(filename); return ret; } static GPtrArray * lu_files_users_enumerate_full(struct lu_module *module, const char *user, struct lu_error **error) { return lu_files_enumerate_full(module, suffix_passwd, lu_files_parse_user_entry, user, error); } static GPtrArray * lu_files_groups_enumerate_full(struct lu_module *module, const char *group, struct lu_error **error) { return lu_files_enumerate_full(module, suffix_group, lu_files_parse_group_entry, group, error); } static GValueArray * lu_shadow_users_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { (void)module; (void)pattern; (void)error; return NULL; } static GValueArray * lu_shadow_groups_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { (void)module; (void)pattern; (void)error; return NULL; } static GValueArray * lu_shadow_users_enumerate_by_group(struct lu_module *module, const char *group, gid_t gid, struct lu_error **error) { (void)module; (void)group; (void)gid; (void)error; return NULL; } static GValueArray * lu_shadow_groups_enumerate_by_user(struct lu_module *module, const char *user, uid_t uid, struct lu_error **error) { (void)module; (void)user; (void)uid; (void)error; return NULL; } static GPtrArray * lu_shadow_users_enumerate_full(struct lu_module *module, const char *pattern, struct lu_error **error) { return lu_files_enumerate_full(module, suffix_shadow, lu_shadow_parse_user_entry, pattern, error); } static GPtrArray * lu_shadow_groups_enumerate_full(struct lu_module *module, const char *pattern, struct lu_error **error) { return lu_files_enumerate_full(module, suffix_gshadow, lu_shadow_parse_group_entry, pattern, error); } static gboolean lu_files_shadow_valid_module_combination(struct lu_module *module, GValueArray *names, struct lu_error **error) { size_t i; g_assert(module != NULL); g_assert(names != NULL); LU_ERROR_CHECK(error); for (i = 0; i < names->n_values; i++) { const char *name; name = g_value_get_string(g_value_array_get_nth(names, i)); if (strcmp(name, LU_MODULE_NAME_LDAP) == 0) { /* LDAP uses an incompatible LU_*PASSWORD format: the LU_CRYPTED prefix, or a similar indicator of an LDAP-defined hashing method, is included. */ lu_error_new(error, lu_error_invalid_module_combination, _("the `%s' and `%s' modules can not be " "combined"), module->name, name); return FALSE; } } return TRUE; } /* Check if we use/need elevated privileges to manipulate our files. */ static gboolean lu_files_uses_elevated_privileges(struct lu_module *module) { char *path; gboolean ret = FALSE; /* If we can't access the passwd file as a normal user, then the * answer is "yes". */ path = module_filename(module, suffix_passwd); if (access(path, R_OK | W_OK) != 0) { ret = TRUE; } g_free(path); /* If we can't access the group file as a normal user, then the * answer is "yes". */ path = module_filename(module, suffix_group); if (access(path, R_OK | W_OK) != 0) { ret = TRUE; } g_free(path); return ret; } /* Check if we use/need elevated privileges to manipulate our files. */ static gboolean lu_shadow_uses_elevated_privileges(struct lu_module *module) { char *path; gboolean ret = FALSE; /* If we can't access the shadow file as a normal user, then the * answer is "yes". */ path = module_filename(module, suffix_shadow); if (access(path, R_OK | W_OK) != 0) { ret = TRUE; } g_free(path); /* If we can't access the gshadow file as a normal user, then the * answer is "yes". */ path = module_filename(module, suffix_gshadow); if (access(path, R_OK | W_OK) != 0) { ret = TRUE; } g_free(path); return ret; } static gboolean close_module(struct lu_module *module) { g_return_val_if_fail(module != NULL, FALSE); module->scache->free(module->scache); memset(module, 0, sizeof(struct lu_module)); g_free(module); return TRUE; } struct lu_module * libuser_files_init(struct lu_context *context, struct lu_error **error) { struct lu_module *ret; g_return_val_if_fail(context != NULL, FALSE); /* Handle authenticating to the data source. */ if (geteuid() != 0) { const char *val; /* Needed for the test suite, handy for debugging. */ val = lu_cfg_read_single(context, "files/nonroot", NULL); if (val == NULL || strcmp (val, "yes") != 0) { lu_error_new(error, lu_error_privilege, _("not executing with superuser " "privileges")); return NULL; } } /* Allocate the method structure. */ ret = g_malloc0(sizeof(struct lu_module)); ret->version = LU_MODULE_VERSION; ret->scache = lu_string_cache_new(TRUE); ret->name = ret->scache->cache(ret->scache, LU_MODULE_NAME_FILES); /* Set the method pointers. */ ret->valid_module_combination = lu_files_shadow_valid_module_combination; ret->uses_elevated_privileges = lu_files_uses_elevated_privileges; ret->user_lookup_name = lu_files_user_lookup_name; ret->user_lookup_id = lu_files_user_lookup_id; ret->user_default = lu_common_user_default; ret->user_add_prep = lu_files_user_add_prep; ret->user_add = lu_files_user_add; ret->user_mod = lu_files_user_mod; ret->user_del = lu_files_user_del; ret->user_lock = lu_files_user_lock; ret->user_unlock = lu_files_user_unlock; ret->user_unlock_nonempty = lu_files_user_unlock_nonempty; ret->user_is_locked = lu_files_user_is_locked; ret->user_setpass = lu_files_user_setpass; ret->user_removepass = lu_files_user_removepass; ret->users_enumerate = lu_files_users_enumerate; ret->users_enumerate_by_group = lu_files_users_enumerate_by_group; ret->users_enumerate_full = lu_files_users_enumerate_full; ret->group_lookup_name = lu_files_group_lookup_name; ret->group_lookup_id = lu_files_group_lookup_id; ret->group_default = lu_common_group_default; ret->group_add_prep = lu_files_group_add_prep; ret->group_add = lu_files_group_add; ret->group_mod = lu_files_group_mod; ret->group_del = lu_files_group_del; ret->group_lock = lu_files_group_lock; ret->group_unlock = lu_files_group_unlock; ret->group_unlock_nonempty = lu_files_group_unlock_nonempty; ret->group_is_locked = lu_files_group_is_locked; ret->group_setpass = lu_files_group_setpass; ret->group_removepass = lu_files_group_removepass; ret->groups_enumerate = lu_files_groups_enumerate; ret->groups_enumerate_by_user = lu_files_groups_enumerate_by_user; ret->groups_enumerate_full = lu_files_groups_enumerate_full; ret->close = close_module; /* Done. */ return ret; } struct lu_module * libuser_shadow_init(struct lu_context *context, struct lu_error **error) { struct lu_module *ret; struct stat st; char *shadow_file; const char *dir; g_return_val_if_fail(context != NULL, NULL); /* Handle authenticating to the data source. */ if (geteuid() != 0) { const char *val; /* Needed for the test suite, handy for debugging. */ val = lu_cfg_read_single(context, "shadow/nonroot", NULL); if (val == NULL || strcmp (val, "yes") != 0) { lu_error_new(error, lu_error_privilege, _("not executing with superuser " "privileges")); return NULL; } } /* Get the name of the shadow file. */ dir = lu_cfg_read_single(context, "shadow/directory", "/etc"); shadow_file = g_strconcat(dir, suffix_shadow, NULL); /* Make sure we're actually using shadow passwords on this system. */ if ((stat(shadow_file, &st) == -1) && (errno == ENOENT)) { lu_error_new(error, lu_warning_config_disabled, _("no shadow file present -- disabling")); g_free(shadow_file); return NULL; } g_free(shadow_file); /* Allocate the method structure. */ ret = g_malloc0(sizeof(struct lu_module)); ret->version = LU_MODULE_VERSION; ret->scache = lu_string_cache_new(TRUE); ret->name = ret->scache->cache(ret->scache, LU_MODULE_NAME_SHADOW); /* Set the method pointers. */ ret->valid_module_combination = lu_files_shadow_valid_module_combination; ret->uses_elevated_privileges = lu_shadow_uses_elevated_privileges; ret->user_lookup_name = lu_shadow_user_lookup_name; ret->user_lookup_id = lu_shadow_user_lookup_id; ret->user_default = lu_common_suser_default; ret->user_add_prep = lu_shadow_user_add_prep; ret->user_add = lu_shadow_user_add; ret->user_mod = lu_shadow_user_mod; ret->user_del = lu_shadow_user_del; ret->user_lock = lu_shadow_user_lock; ret->user_unlock = lu_shadow_user_unlock; ret->user_unlock_nonempty = lu_shadow_user_unlock_nonempty; ret->user_is_locked = lu_shadow_user_is_locked; ret->user_setpass = lu_shadow_user_setpass; ret->user_removepass = lu_shadow_user_removepass; ret->users_enumerate = lu_shadow_users_enumerate; ret->users_enumerate_by_group = lu_shadow_users_enumerate_by_group; ret->users_enumerate_full = lu_shadow_users_enumerate_full; ret->group_lookup_name = lu_shadow_group_lookup_name; ret->group_lookup_id = lu_shadow_group_lookup_id; ret->group_default = lu_common_sgroup_default; ret->group_add_prep = lu_shadow_group_add_prep; ret->group_add = lu_shadow_group_add; ret->group_mod = lu_shadow_group_mod; ret->group_del = lu_shadow_group_del; ret->group_lock = lu_shadow_group_lock; ret->group_unlock = lu_shadow_group_unlock; ret->group_unlock_nonempty = lu_shadow_group_unlock_nonempty; ret->group_is_locked = lu_shadow_group_is_locked; ret->group_setpass = lu_shadow_group_setpass; ret->group_removepass = lu_shadow_group_removepass; ret->groups_enumerate = lu_shadow_groups_enumerate; ret->groups_enumerate_by_user = lu_shadow_groups_enumerate_by_user; ret->groups_enumerate_full = lu_shadow_groups_enumerate_full; ret->close = close_module; /* Done. */ return ret; } modules/ldap.c000066400000000000000000002162071471266067600136410ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004, 2005, 2008 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../lib/user_private.h" #undef DEBUG #define LOCKCHAR '!' #define LOCKSTRING "!" #define USERBRANCH "ou=People" #define GROUPBRANCH "ou=Group" #define OBJECTCLASS "objectClass" #define ACCOUNT "account" #define POSIXACCOUNT "posixAccount" #define POSIXGROUP "posixGroup" #define SHADOWACCOUNT "shadowAccount" #define INETORGPERSON "inetOrgPerson" #define DISTINGUISHED_NAME "dn" LU_MODULE_INIT(libuser_ldap_init) enum lock_op { LO_LOCK, LO_UNLOCK, LO_UNLOCK_NONEMPTY }; enum interact_indices { LU_LDAP_SERVER, LU_LDAP_BASEDN, LU_LDAP_BINDDN, LU_LDAP_PASSWORD, LU_LDAP_AUTHUSER, LU_LDAP_AUTHZUSER, LU_LDAP_MAX, }; static const struct { const char *lu_attribute; const char *ldap_attribute; const char *objectclass; enum lu_entity_type type; } ldap_attribute_map[] = { {LU_USERNAME, "uid", POSIXACCOUNT, lu_user}, {LU_USERPASSWORD, "userPassword", POSIXACCOUNT, lu_user}, {LU_UIDNUMBER, "uidNumber", POSIXACCOUNT, lu_user}, {LU_GIDNUMBER, "gidNumber", POSIXACCOUNT, lu_user}, {LU_GECOS, "gecos", POSIXACCOUNT, lu_user}, {LU_HOMEDIRECTORY, "homeDirectory", POSIXACCOUNT, lu_user}, {LU_LOGINSHELL, "loginShell", POSIXACCOUNT, lu_user}, {LU_COMMONNAME, "cn", POSIXACCOUNT, lu_user}, {LU_GROUPNAME, "cn", POSIXGROUP, lu_group}, {LU_GROUPPASSWORD, "userPassword", POSIXGROUP, lu_group}, {LU_GIDNUMBER, "gidNumber", POSIXGROUP, lu_group}, {LU_MEMBERNAME, "memberUid", POSIXGROUP, lu_group}, {LU_SHADOWLASTCHANGE, "shadowLastChange", SHADOWACCOUNT, lu_user}, {LU_SHADOWMIN, "shadowMin", SHADOWACCOUNT, lu_user}, {LU_SHADOWMAX, "shadowMax", SHADOWACCOUNT, lu_user}, {LU_SHADOWWARNING, "shadowWarning", SHADOWACCOUNT, lu_user}, {LU_SHADOWINACTIVE, "shadowInactive", SHADOWACCOUNT, lu_user}, {LU_SHADOWEXPIRE, "shadowExpire", SHADOWACCOUNT, lu_user}, {LU_SHADOWFLAG, "shadowFlag", SHADOWACCOUNT, lu_user}, {LU_GIVENNAME, "givenName", INETORGPERSON, lu_user}, {LU_SN, "sn", INETORGPERSON, lu_user}, {LU_ROOMNUMBER, "roomNumber", INETORGPERSON, lu_user}, {LU_TELEPHONENUMBER, "telephoneNumber", INETORGPERSON, lu_user}, {LU_HOMEPHONE, "homePhone", INETORGPERSON, lu_user}, }; static const char *const lu_ldap_user_attributes[] = { LU_USERNAME, LU_USERPASSWORD, LU_UIDNUMBER, LU_GIDNUMBER, LU_GECOS, LU_HOMEDIRECTORY, LU_LOGINSHELL, /* Not LU_SHADOWPASSWORD: We can't allow modification of * LU_USERPASSWORD and LU_SHADOWPASSWORD at the same time; LDAP simply * doesn't implement LU_SHADOWPASSWORD. */ LU_SHADOWLASTCHANGE, LU_SHADOWMIN, LU_SHADOWMAX, LU_SHADOWWARNING, LU_SHADOWINACTIVE, LU_SHADOWEXPIRE, LU_SHADOWFLAG, LU_COMMONNAME, LU_GIVENNAME, LU_SN, LU_ROOMNUMBER, LU_TELEPHONENUMBER, LU_HOMEPHONE, NULL }; static const char *const lu_ldap_group_attributes[] = { LU_GROUPNAME, LU_GROUPPASSWORD, LU_GIDNUMBER, LU_MEMBERNAME, LU_ADMINISTRATORNAME, NULL }; struct lu_ldap_context { struct lu_context *global_context; /* The library context. */ struct lu_module *module; /* The module's structure. */ struct lu_prompt prompts[LU_LDAP_MAX]; /* Questions and answers. */ gboolean bind_simple, bind_sasl; /* What kind of bind to use. */ char *sasl_mechanism; /* What sasl mechanism to use. */ const char *user_branch, *group_branch; /* Cached config values */ char **mapped_user_attributes, **mapped_group_attributes; LDAP *ldap; /* The connection. */ }; static void close_server(LDAP *ldap) { ldap_unbind_ext(ldap, NULL, NULL); } /* Get the name of the user running the calling application. */ static char * getuser(void) { char buf[LINE_MAX * 4]; struct passwd pwd, *err; int i; i = getpwuid_r(getuid(), &pwd, buf, sizeof(buf), &err); return ((i == 0) && (err == &pwd)) ? g_strdup(pwd.pw_name) : NULL; } static gboolean nonempty(const char *string) { return (string != NULL) && (strlen(string) > 0); } /* Connect to the server. */ static LDAP * connect_server(struct lu_ldap_context *context, struct lu_error **error) { LDAP *ldap = NULL; int version, ret, start_tls; g_assert(context != NULL); LU_ERROR_CHECK(error); /* Create the LDAP context. */ ret = ldap_initialize(&ldap, context->prompts[LU_LDAP_SERVER].value); if (ret == LDAP_SUCCESS) start_tls = FALSE; else { if (ldap_create(&ldap) != LDAP_SUCCESS) ldap = NULL; else if (ldap_set_option(ldap, LDAP_OPT_HOST_NAME, context->prompts[LU_LDAP_SERVER] .value) != LDAP_SUCCESS) { close_server(ldap); ldap = NULL; } start_tls = TRUE; } if (ldap == NULL) { lu_error_new(error, lu_error_init, _("error initializing ldap library")); return NULL; } /* Switch to LDAPv3, which gives us some more features we need. */ version = LDAP_VERSION3; ret = ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, &version); if (ret != LDAP_OPT_SUCCESS) { lu_error_new(error, lu_error_init, _("could not set LDAP protocol to version %d"), version); close_server(ldap); return NULL; } /* Skip STARTTLS for ldapi: Even if the server is set up for TLS in general, NSS doesn't support TLS over AF_UNIX; the STARTTLS operation would be accepted, but ldap_start_tls_s() would fail, keeping the connection broken to make authentication impossible. TLS on AF_UNIX does not make much sense anyway. */ if (strncmp(context->prompts[LU_LDAP_SERVER].value, "ldapi://", 8) != 0) { /* Try to start TLS. */ ret = ldap_start_tls_s(ldap, NULL, NULL); /* Note that TLS is not required for ldap:// URLs (unlike simple server names). */ if (ret != LDAP_SUCCESS && start_tls) { lu_error_new(error, lu_error_init, _("could not negotiate TLS with LDAP " "server")); close_server(ldap); return NULL; } } return ldap; } /* Authentication callback. */ static int interact(LDAP *ld, unsigned flags, void *defs, void *xres) { sasl_interact_t *res; struct lu_ldap_context *ctx = (struct lu_ldap_context*) defs; int i, retval = LDAP_SUCCESS; (void)ld; (void)flags; res = xres; for(i = 0; res && res[i].id != SASL_CB_LIST_END; i++) { res[i].result = NULL; switch(res[i].id) { case SASL_CB_USER: res[i].result = ctx->prompts[LU_LDAP_AUTHUSER].value; if (res[i].result == NULL) res[i].result = ""; #ifdef DEBUG g_print("Sending SASL user `%s'.\n", (const char *)res[i].result); #endif break; case SASL_CB_AUTHNAME: res[i].result = ctx->prompts[LU_LDAP_AUTHZUSER].value; #ifdef DEBUG g_print("Sending SASL auth user `%s'.\n", (const char *)res[i].result); #endif break; case SASL_CB_GETREALM: /* Always tell sasl to find it on its own. */ res[i].result = ""; break; default: #ifdef DEBUG g_print("Unhandled SASL Intreractive option `%lu'.\n", res[i].id); #endif retval = LDAP_OTHER; } if (res[i].result != NULL) res[i].len = strlen(res[i].result); else res[i].len = 0; } return retval; } /* Authenticate to the server. */ static LDAP * bind_server(struct lu_ldap_context *context, struct lu_error **error) { LDAP *ldap; int ret, first_failure; const char *generated_binddn, *first_binddn; char *binddn, *tmp; char *user; char *password; struct lu_string_cache *scache = NULL; g_assert(context != NULL); LU_ERROR_CHECK(error); /* Create the connection. */ ldap = connect_server(context, error); if (ldap == NULL) { return NULL; } /* Generate the DN we might want to bind to. */ scache = context->global_context->scache; user = getuser(); if (user) { tmp = scache->cache(scache, user); free(user); user = tmp; } if (nonempty(context->prompts[LU_LDAP_AUTHUSER].value)) { user = context->prompts[LU_LDAP_AUTHUSER].value; } tmp = g_strdup_printf("uid=%s,%s,%s", user, context->user_branch, context->prompts[LU_LDAP_BASEDN].value); generated_binddn = scache->cache(scache, tmp); g_free(tmp); /* Try to bind to the server using SASL. */ binddn = context->prompts[LU_LDAP_BINDDN].value; if (nonempty(context->prompts[LU_LDAP_AUTHUSER].value)) { ldap_set_option(ldap, LDAP_OPT_X_SASL_AUTHCID, context->prompts[LU_LDAP_AUTHUSER].value); } if (nonempty(context->prompts[LU_LDAP_AUTHZUSER].value)) { ldap_set_option(ldap, LDAP_OPT_X_SASL_AUTHZID, context->prompts[LU_LDAP_AUTHZUSER].value); } if (context->prompts[LU_LDAP_PASSWORD].value != NULL) { password = context->prompts[LU_LDAP_PASSWORD].value; } else { password = NULL; } ret = LDAP_SUCCESS + 1; /* Not LDAP_SUCCESS */ first_failure = LDAP_SUCCESS; /* No failure known yet */ first_binddn = NULL; if ((binddn != NULL) && (strlen(binddn) == 0)) { binddn = NULL; } if (context->bind_sasl) { /* Try to bind using SASL, and if that fails... */ if (binddn != NULL) { #ifdef DEBUG g_print("Attempting SASL bind to `%s'.\n", binddn); #endif ret = ldap_sasl_interactive_bind_s(ldap, binddn, context->sasl_mechanism, NULL, NULL, LDAP_SASL_AUTOMATIC, interact, context); if (ret != LDAP_SUCCESS) { first_failure = ret; first_binddn = binddn; } } if (ret != LDAP_SUCCESS) { #ifdef DEBUG g_print("Attempting SASL bind to `%s'.\n", generated_binddn); #endif ret = ldap_sasl_interactive_bind_s(ldap, generated_binddn, context->sasl_mechanism, NULL, NULL, LDAP_SASL_AUTOMATIC, interact, context); if (ret != LDAP_SUCCESS && first_failure == LDAP_SUCCESS) { first_failure = ret; first_binddn = generated_binddn; } } } if (ret != LDAP_SUCCESS && context->bind_simple) { /* try to bind using a password, and if that fails... */ if ((password != NULL) && (strlen(password) > 0)) { BerValue cred; cred.bv_val = password; cred.bv_len = strlen(password); if (binddn != NULL) { #ifdef DEBUG g_print("Attempting simple bind to `%s'.\n", binddn); #endif ret = ldap_sasl_bind_s(ldap, binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL); if (ret != LDAP_SUCCESS && first_failure == LDAP_SUCCESS) { first_failure = ret; first_binddn = binddn; } } if (ret != LDAP_SUCCESS) { #ifdef DEBUG g_print("Attempting simple bind to `%s'.\n", generated_binddn); #endif ret = ldap_sasl_bind_s(ldap, generated_binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL); if (ret != LDAP_SUCCESS && first_failure == LDAP_SUCCESS) { first_failure = ret; first_binddn = generated_binddn; } } } } if (ret != LDAP_SUCCESS) { /* give up. */ if (first_failure == LDAP_SUCCESS) lu_error_new(error, lu_error_init, _("could not bind to LDAP server")); else lu_error_new(error, lu_error_init, _("could not bind to LDAP server, first " "attempt as `%s': %s"), first_binddn, ldap_err2string(first_failure)); close_server(ldap); return NULL; } return ldap; } /* Map an attribute name from an internal name to an LDAP atribute name. */ static const char * map_to_ldap(struct lu_string_cache *cache, const char *libuser_attribute) { size_t i; /* Luckily the only duplicate is LU_GIDNUMBER, which maps to the same value in both cases. */ for (i = 0; i < G_N_ELEMENTS(ldap_attribute_map); i++) { if (g_ascii_strcasecmp(ldap_attribute_map[i].lu_attribute, libuser_attribute) == 0) { return ldap_attribute_map[i].ldap_attribute; } } return cache->cache(cache, libuser_attribute); } /* Generate the distinguished name which corresponds to the container where * the lu_ent structure's entry would be found. */ static const char * lu_ldap_base(struct lu_module *module, const char *branch) { struct lu_ldap_context *context; char *tmp, *ret; g_assert(module != NULL); context = module->module_context; /* Generate the branch DN. */ if (strlen(branch) != 0) tmp = g_strconcat(branch, ",", context->prompts[LU_LDAP_BASEDN].value, (const gchar *)NULL); else tmp = g_strdup(context->prompts[LU_LDAP_BASEDN].value); ret = module->scache->cache(module->scache, tmp); g_free(tmp); return ret; } /* Discover the distinguished name which corresponds to an account. */ static const char * lu_ldap_ent_to_dn(struct lu_module *module, const char *namingAttr, const char *name, const char *branch) { static char *noattrs[] = { NULL }; const char *base, *mapped_naming_attr; char *tmp, *ret = NULL, *filter; struct lu_ldap_context *ctx; LDAPMessage *messages = NULL; g_assert(module != NULL); g_assert(namingAttr != NULL); g_assert(strlen(namingAttr) > 0); g_assert(name != NULL); g_assert(strlen(name) > 0); /* Search for the right object using the entity's current name. */ base = lu_ldap_base(module, branch); ctx = module->module_context; mapped_naming_attr = map_to_ldap(module->scache, namingAttr); filter = g_strdup_printf("(%s=%s)", mapped_naming_attr, name); if (ldap_search_ext_s(ctx->ldap, base, LDAP_SCOPE_SUBTREE, filter, noattrs, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &messages) == LDAP_SUCCESS) { LDAPMessage *entry; entry = ldap_first_entry(ctx->ldap, messages); if (entry != NULL) { tmp = ldap_get_dn(ctx->ldap, entry); ret = module->scache->cache(module->scache, tmp); if (tmp) ldap_memfree(tmp); } ldap_msgfree(messages); } g_free(filter); if (ret == NULL) { /* Guess at the DN using the branch and the base. */ tmp = g_strdup_printf("%s=%s,%s", mapped_naming_attr, name, base); ret = module->scache->cache(module->scache, tmp); g_free(tmp); } return ret; } /* This is the lookup workhorse. */ static gboolean lu_ldap_lookup(struct lu_module *module, const char *namingAttr, const char *name, struct lu_ent *ent, GPtrArray *ent_array, const char *branch, const char *filter, const char *const *attributes, enum lu_entity_type type, struct lu_error **error) { LDAPMessage *messages = NULL, *entry = NULL; char *filt, **mapped_attributes; const char *dn = NULL; const char *base; gboolean ret = FALSE; struct lu_ldap_context *ctx; g_assert(module != NULL); g_assert(namingAttr != NULL); g_assert(strlen(namingAttr) > 0); name = name ?: "*"; g_assert((ent != NULL) || (ent_array != NULL)); if (ent != NULL) { g_assert(ent->magic == LU_ENT_MAGIC); } g_assert(attributes != NULL); g_assert(attributes[0] != NULL); LU_ERROR_CHECK(error); ctx = module->module_context; if (ent != NULL) { /* Try to use the dn the object already knows about. */ dn = lu_ent_get_first_string(ent, DISTINGUISHED_NAME); if (dn == NULL) /* Map the user or group name to an LDAP object name. */ dn = lu_ldap_ent_to_dn(module, namingAttr, name, branch); } /* Get the entry in the directory under which we'll search for this * entity. */ base = lu_ldap_base(module, branch); /* Generate an LDAP filter, optionally including a filter supplied * by the caller. */ if (filter && (strlen(filter) > 0)) { filt = g_strdup_printf("(&%s(%s=%s))", filter, namingAttr, name); } else { filt = g_strdup_printf("(%s=%s)", namingAttr, name); } #ifdef DEBUG g_print("Looking up `%s' with filter `%s'.\n", dn, filt); #endif if (attributes == lu_ldap_user_attributes) mapped_attributes = ctx->mapped_user_attributes; else if (attributes == lu_ldap_group_attributes) mapped_attributes = ctx->mapped_group_attributes; else { g_assert_not_reached(); mapped_attributes = NULL; } if (ent != NULL) { /* Perform the search and read the first (hopefully only) * entry. */ if (ldap_search_ext_s(ctx->ldap, dn, LDAP_SCOPE_BASE, filt, mapped_attributes, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &messages) == LDAP_SUCCESS) { entry = ldap_first_entry(ctx->ldap, messages); } } /* If there isn't an entry with this exact name, search for something * which matches. */ if (entry == NULL) { #ifdef DEBUG g_print("Looking under `%s' with filter `%s'.\n", base, filt); #endif if (messages != NULL) { ldap_msgfree(messages); messages = NULL; } if (ldap_search_ext_s(ctx->ldap, base, LDAP_SCOPE_SUBTREE, filt, mapped_attributes, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &messages) == LDAP_SUCCESS) { entry = ldap_first_entry(ctx->ldap, messages); } } /* We don't need the generated filter any more, so free it. */ g_free(filt); /* If we got an entry, read its contents into an entity structure. */ while (entry != NULL) { GValue value; size_t i; char *p; /* Mark that the search succeeded. */ ret = TRUE; /* If we need to add the data to the array, then create a new * data item to hold the data. */ if (ent_array != NULL) ent = lu_ent_new_typed(type); /* Set the distinguished name. */ p = ldap_get_dn(ctx->ldap, entry); lu_ent_set_string_current(ent, DISTINGUISHED_NAME, p); ldap_memfree(p); /* Read each of the attributes we asked for. */ memset(&value, 0, sizeof(value)); for (i = 0; attributes[i]; i++) { BerValue **values; const char *attr; /* Get the values which correspond to this attribute. */ attr = attributes[i]; values = ldap_get_values_len(ctx->ldap, entry, mapped_attributes[i]); /* If we got answers, add them. */ if (values) { size_t j; lu_ent_clear_current(ent, attr); for (j = 0; values[j]; j++) { char *val; gboolean ok; struct lu_error *error; val = g_strndup(values[j]->bv_val, values[j]->bv_len); #ifdef DEBUG g_print("Got `%s' = `%s'.\n", attr, val); #endif error = NULL; ok = lu_value_init_set_attr_from_string (&value, attr, val, &error); if (ok == FALSE) { g_assert(error != NULL); g_warning("%s", lu_strerror(error)); lu_error_free(&error); } else { lu_ent_add_current(ent, attr, &value); g_value_unset(&value); } g_free(val); } ldap_value_free_len(values); } } /* Stash the data in the array if we need to. */ if (ent_array != NULL) { g_ptr_array_add(ent_array, ent); ent = NULL; /* Go to the next entry. */ entry = ldap_next_entry(ctx->ldap, entry); } else { /* Stop here. */ entry = NULL; } } /* Free all of the responses. */ if (messages) { ldap_msgfree(messages); } return ret; } /* Look up a user by name. */ static gboolean lu_ldap_user_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_lookup(module, "uid", name, ent, NULL, ctx->user_branch, "("OBJECTCLASS"="POSIXACCOUNT")", lu_ldap_user_attributes, lu_user, error); } /* Look up a user by ID. */ static gboolean lu_ldap_user_lookup_id(struct lu_module *module, uid_t uid, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; char uid_string[sizeof (uid) * CHAR_BIT + 1]; LU_ERROR_CHECK(error); ctx = module->module_context; sprintf(uid_string, "%jd", (intmax_t)uid); return lu_ldap_lookup(module, "uidNumber", uid_string, ent, NULL, ctx->user_branch, "("OBJECTCLASS"="POSIXACCOUNT")", lu_ldap_user_attributes, lu_user, error); } /* Look up a group by name. */ static gboolean lu_ldap_group_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_lookup(module, "cn", name, ent, NULL, ctx->group_branch, "("OBJECTCLASS"="POSIXGROUP")", lu_ldap_group_attributes, lu_group, error); } /* Look up a group by ID. */ static gboolean lu_ldap_group_lookup_id(struct lu_module *module, gid_t gid, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; char gid_string[sizeof (gid) * CHAR_BIT + 1]; LU_ERROR_CHECK(error); ctx = module->module_context; sprintf(gid_string, "%jd", (intmax_t)gid); return lu_ldap_lookup(module, "gidNumber", gid_string, ent, NULL, ctx->group_branch, "("OBJECTCLASS"="POSIXGROUP")", lu_ldap_group_attributes, lu_group, error); } /* Compare the contents of two GValueArrays, and return TRUE if they contain * the same set of values, though not necessarily in the same order. */ static gboolean arrays_equal(GValueArray *a, GValueArray *b) { GValue *aval, *bval; size_t i, j; for (i = 0; i < a->n_values; i++) { aval = g_value_array_get_nth(a, i); for (j = 0; j < b->n_values; j++) { bval = g_value_array_get_nth(b, j); if (G_VALUE_TYPE(aval) == G_VALUE_TYPE(bval) && lu_values_equal(aval, bval)) break; } if (j >= b->n_values) { return FALSE; } } for (j = 0; j < b->n_values; j++) { bval = g_value_array_get_nth(b, j); for (i = 0; i < a->n_values; i++) { aval = g_value_array_get_nth(a, i); if (G_VALUE_TYPE(aval) == G_VALUE_TYPE(bval) && lu_values_equal(aval, bval)) break; } if (i >= a->n_values) { return FALSE; } } return TRUE; } /* Check whether class is among old_values or new_values */ static int objectclass_present(const char *dn, const char *class, BerValue *const *old_values, size_t old_count, BerValue *const *new_values, size_t new_count) { size_t i, len; (void)dn; len = strlen(class); for (i = 0; i < old_count; i++) { const BerValue *val; val = old_values[i]; if (val->bv_len == len && memcmp(class, val->bv_val, len) == 0) { #ifdef DEBUG g_print("Entity `%s' is already a `%.*s'.\n", dn, (int)val->bv_len, val->bv_val); #endif return 1; } } for (i = 0; i < new_count; i++) { const BerValue *val; val = new_values[i]; if (val->bv_len == len && memcmp(class, val->bv_val, len) == 0) { #ifdef DEBUG g_print("Entity `%s' was already determined to be a " "`%.*s'.\n", dn, (int)val->bv_len, val->bv_val); #endif return 1; } } return 0; } /* Create a list of new object classes needed for representing all attributes, * assuming old_values (may be NULL). * * Returns NULL if no new object classes are needed. */ static BerValue ** lu_ldap_needed_objectclasses(const char *dn, struct lu_ent *ent, BerValue **old_values) { BerValue **new_values; size_t old_count, new_count; GList *attributes, *a; if (old_values) old_count = ldap_count_values_len(old_values); else old_count = 0; new_values = g_malloc_n(G_N_ELEMENTS(ldap_attribute_map) + 1 + 1, sizeof(*new_values)); new_count = 0; /* Iterate over all of the attributes the object possesses. */ attributes = lu_ent_get_attributes(ent); for (a = attributes; a != NULL; a = a->next) { size_t i; const char *attr; BerValue *bv; attr = a->data; #ifdef DEBUG g_print("Entity `%s' has attribute `%s'.\n", dn, attr); #endif /* Get the name of the next object class the object needs * to be a member of. */ for (i = 0; i < G_N_ELEMENTS(ldap_attribute_map); i++) { if (ldap_attribute_map[i].type == ent->type && strcasecmp(ldap_attribute_map[i].lu_attribute, attr) == 0) { #ifdef DEBUG g_print("Entity `%s' needs to be a `%s'.\n", dn, ldap_attribute_map[i].objectclass); #endif break; } } /* If the attribute doesn't map to a class, skip it. */ if (i >= G_N_ELEMENTS(ldap_attribute_map)) continue; /* Check if the object class the object needs to be in is * already one of which it is a part or is already being * added. */ if (objectclass_present(dn, ldap_attribute_map[i].objectclass, old_values, old_count, new_values, new_count)) continue; /* Add it to the class. */ bv = g_malloc(sizeof (*bv)); bv->bv_val = (char *)ldap_attribute_map[i].objectclass; bv->bv_len = strlen(bv->bv_val); new_values[new_count] = bv; #ifdef DEBUG g_print("Adding entity `%s' to class `%s'.\n", dn, ldap_attribute_map[i].objectclass); #endif new_count++; } g_list_free(attributes); /* Ugly, but implied by the fact that the basic account schemas are not * structural. We can't use INETORGPERSON unless LU_SN is present, * which would already force usage of INETORGPERSON; so if * INETORGPERSON is not used, we add ACCOUNT. */ if (ent->type == lu_user && !objectclass_present(dn, INETORGPERSON, old_values, old_count, new_values, new_count) && !objectclass_present(dn, ACCOUNT, old_values, old_count, new_values, new_count)) { BerValue *bv; bv = g_malloc(sizeof (*bv)); bv->bv_val = ACCOUNT; bv->bv_len = strlen(ACCOUNT); new_values[new_count++] = bv; } if (new_count != 0) new_values[new_count] = NULL; else { g_free(new_values); new_values = NULL; } return new_values; } /* Free the (non-NULL) result of ldap_needed_objectclasses */ static void free_needed_objectclasses(BerValue **values) { size_t i; for (i = 0; values[i] != NULL; i++) g_free(values[i]); g_free(values); } /* Build a list of LDAPMod structures for adding the entity object. */ static LDAPMod ** get_ent_adds(const char *dn, struct lu_ent *ent) { LDAPMod **mods; GList *attrs; g_assert(ent != NULL); g_assert(ent->magic == LU_ENT_MAGIC); mods = NULL; /* If there are no attributes, then this is EASY. */ attrs = lu_ent_get_attributes(ent); if (attrs) { BerValue **classes; size_t mod_count, i; LDAPMod *mod; GValueArray *vals; GValue *value; const GList *a; mods = g_malloc0_n(g_list_length(attrs) + 2 + 1, sizeof(*mods)); mod_count = 0; for (a = attrs; a != NULL; a = a->next) { const char *attribute; attribute = a->data; if (strcasecmp(attribute, DISTINGUISHED_NAME) == 0) continue; /* We don't have shadow passwords. Period. */ if (strcasecmp(attribute, LU_SHADOWPASSWORD) == 0) continue; vals = lu_ent_get(ent, attribute); if (vals == NULL) continue; attribute = map_to_ldap(ent->cache, attribute); mod = g_malloc0(sizeof(*mod)); mod->mod_op = LDAP_MOD_ADD; mod->mod_type = (char *)attribute; mod->mod_values = g_malloc0_n(vals->n_values + 1, sizeof(*mod->mod_values)); for (i = 0; i < vals->n_values; i++) { value = g_value_array_get_nth(vals, i); mod->mod_values[i] = lu_value_strdup(value); } mods[mod_count++] = mod; } /* We don't need the list of attributes any more. */ g_list_free(attrs); classes = lu_ldap_needed_objectclasses(dn, ent, NULL); if (classes != NULL) { mod = g_malloc0(sizeof(*mod)); mod->mod_op = LDAP_MOD_ADD; mod->mod_type = OBJECTCLASS; mod->mod_values = g_malloc0_n(ldap_count_values_len(classes) + 1, sizeof(*mod->mod_values)); for (i = 0; classes[i] != NULL; i++) mod->mod_values[i] = g_strdup(classes[i]->bv_val); free_needed_objectclasses(classes); mods[mod_count++] = mod; } /* Ugly hack: * * Make sure there is 'cn', posixAccount requires it. */ if (ent->type == lu_user && lu_ent_get(ent, LU_COMMONNAME) == NULL) { char *cn; cn = lu_ent_get_first_value_strdup(ent, LU_GECOS); if (cn != NULL) { char *p; p = strchr(cn, ','); if (p != NULL) *p = 0; /* Note that gecos may be empty, but commonName (as a DirectoryString) is not allowed to be empty. */ } if (cn == NULL || *cn == 0) { g_free(cn); cn = lu_ent_get_first_value_strdup(ent, LU_USERNAME); /* Guaranteed by lu_ldap_set() */ g_assert (cn != NULL); } mod = g_malloc0(sizeof(*mod)); mod->mod_op = LDAP_MOD_ADD; mod->mod_type = (char *)"cn"; mod->mod_values = g_malloc0(2 * sizeof (*mod->mod_values)); mod->mod_values[0] = cn; mods[mod_count++] = mod; } } return mods; } /* Build a list of LDAPMod structures based on the differences between the * pending and current values in the entity object. */ static LDAPMod ** get_ent_mods(struct lu_ent *ent, const char *namingAttr) { LDAPMod **mods = NULL; GList *attrs; g_assert(ent != NULL); g_assert(ent->magic == LU_ENT_MAGIC); g_assert(namingAttr != NULL); g_assert(namingAttr[0] != 0); /* If there are no attributes, then this is EASY. */ attrs = lu_ent_get_attributes(ent); if (attrs) { GValueArray *empty; size_t mod_count; LDAPMod *mod; const GList *a; empty = g_value_array_new(0); /* Allocate an array big enough to hold two LDAPMod structures * for each attribute, in case all of them need changing. */ mods = g_malloc0_n(2 * g_list_length(attrs) + 1, sizeof(*mods)); mod_count = 0; for (a = attrs; a != NULL; a = a->next) { GValueArray *current, *pending, *additions, *deletions; GValue *value, *pvalue, *cvalue; char *attribute; size_t j, k; /* Get the name of the attribute, and its current and * pending values. */ attribute = a->data; if (strcasecmp(attribute, DISTINGUISHED_NAME) == 0 || strcasecmp(attribute, namingAttr) == 0) continue; current = lu_ent_get_current(ent, attribute) ?: empty; pending = lu_ent_get(ent, attribute) ?: empty; additions = g_value_array_new(0); deletions = g_value_array_new(0); attribute = (char *)map_to_ldap(ent->cache, attribute); /* Create a pair of modification request structures, * using the LDAP name for the attribute, using * elements from the first array which aren't in the * second for the remove list, and elements which are * in the second but not the first for the add list. */ for (j = 0; j < current->n_values; j++) { cvalue = g_value_array_get_nth(current, j); /* Search for this value in the other array. */ for (k = 0; k < pending->n_values; k++) { pvalue = g_value_array_get_nth(pending, k); if (G_VALUE_TYPE(cvalue) == G_VALUE_TYPE(pvalue) && lu_values_equal(cvalue, pvalue)) break; } /* If not found, it's a mod. */ if (k >= pending->n_values) /* Delete this value. */ g_value_array_append(deletions, cvalue); } /* If we have deletions, create an LDAPMod structure * containing them. */ if (deletions->n_values != 0) { mod = g_malloc0(sizeof(*mod)); mod->mod_op = LDAP_MOD_DELETE; mod->mod_type = attribute; mod->mod_values = g_malloc0_n(deletions->n_values + 1, sizeof(*mod->mod_values)); for (j = 0; j < deletions->n_values; j++) { value = g_value_array_get_nth(deletions, j); mod->mod_values[j] = lu_value_strdup(value); } mods[mod_count++] = mod; } /* Now extract additions. */ for (j = 0; j < pending->n_values; j++) { pvalue = g_value_array_get_nth(pending, j); /* Search for this value in the other array. */ for (k = 0; k < current->n_values; k++) { cvalue = g_value_array_get_nth(current, k); if (G_VALUE_TYPE(cvalue) == G_VALUE_TYPE(pvalue) && lu_values_equal(cvalue, pvalue)) break; } /* If not found, it's a mod. */ if (k >= current->n_values) /* Add this value. */ g_value_array_append(additions, pvalue); } /* If we have additions, create an LDAPMod structure * containing them. */ if (additions->n_values != 0) { mod = g_malloc0(sizeof(*mod)); mod->mod_op = LDAP_MOD_ADD; mod->mod_type = attribute; mod->mod_values = g_malloc0_n(additions->n_values + 1, sizeof(*mod->mod_values)); for (j = 0; j < additions->n_values; j++) { value = g_value_array_get_nth(additions, j); mod->mod_values[j] = lu_value_strdup(value); } mods[mod_count++] = mod; } g_value_array_free(additions); g_value_array_free(deletions); } g_value_array_free(empty); /* We don't need the list of attributes any more. */ g_list_free(attrs); } return mods; } /* Free a set of modification structures generated by get_ent_mods(). */ static void free_ent_mods(LDAPMod ** mods) { size_t i; g_assert(mods != NULL); for (i = 0; mods && mods[i]; i++) { if (mods[i]->mod_values) { size_t j; for (j = 0; mods[i]->mod_values[j] != NULL; j++) { g_free(mods[i]->mod_values[j]); } g_free(mods[i]->mod_values); } g_free(mods[i]); } g_free(mods); } #ifdef DEBUG /* Dump out the modifications structure. For debugging only. */ static void dump_mods(LDAPMod ** mods) { size_t i; if (mods == NULL) { g_print("NULL modifications"); return; } for (i = 0; mods[i]; i++) { g_print("%s (%d)\n", mods[i]->mod_type, mods[i]->mod_op); if (mods[i]->mod_values) { size_t j; for (j = 0; mods[i]->mod_values[j]; j++) { g_print(" = `%s'\n", mods[i]->mod_values[j]); } } } } #endif /* DEBUG */ /* Add an entity's LDAP object to the proper object classes to allow the * user to possess the attributes she needs to. */ static void lu_ldap_fudge_objectclasses(struct lu_ldap_context *ctx, const char *dn, struct lu_ent *ent) { static char *attrs[] = { OBJECTCLASS, NULL, }; BerValue **old_values, **new_values; LDAPMessage *res = NULL; LDAPMessage *entry; /* Pull up this object's entry. */ if (ldap_search_ext_s(ctx->ldap, dn, LDAP_SCOPE_BASE, NULL, attrs, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &res) != LDAP_SUCCESS) { return; } entry = ldap_first_entry(ctx->ldap, res); if (entry == NULL) { ldap_msgfree(res); return; } /* Get the list of object classes the object is in now. */ old_values = ldap_get_values_len(ctx->ldap, entry, OBJECTCLASS); new_values = lu_ldap_needed_objectclasses(dn, ent, old_values); if (new_values != NULL) { int err; LDAPMod mod; LDAPMod *mods[] = { &mod, NULL }; #ifdef DEBUG g_print("Adding user `%s' to new classes.\n", dn); #endif /* Set up the modify request. */ memset(&mod, 0, sizeof(mod)); mod.mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES; mod.mod_type = OBJECTCLASS; mod.mod_bvalues = new_values; /* Give it the old try. */ #ifdef DEBUG dump_mods(mods); #endif err = ldap_modify_ext_s(ctx->ldap, dn, mods, NULL, NULL); (void)err; #ifdef DEBUG g_message("Fudged: `%s'.\n", ldap_err2string(err)); #endif free_needed_objectclasses(new_values); } ldap_value_free_len(old_values); ldap_msgfree(res); } /* Apply the changes to a given entity structure, or add a new entitty. */ static gboolean lu_ldap_set(struct lu_module *module, enum lu_entity_type type, int add, struct lu_ent *ent, const char *branch, struct lu_error **error) { LDAPMod **mods; GValueArray *name, *old_name; GValue *value; char *name_string; const char *dn, *namingAttr; int err; gboolean ret; struct lu_ldap_context *ctx; g_assert(module != NULL); g_assert((type == lu_user) || (type == lu_group)); g_assert(ent != NULL); g_assert(ent->magic == LU_ENT_MAGIC); LU_ERROR_CHECK(error); ctx = module->module_context; /* Get the user/group's pending name, which may be different from the * current name. If so, we want to change it seperately, because it * requires a renaming of the object in the directory. */ if (type == lu_user) namingAttr = LU_USERNAME; else namingAttr = LU_GROUPNAME; name = lu_ent_get(ent, namingAttr); if (name == NULL) { lu_error_new(error, lu_error_generic, _("user object had no %s attribute"), namingAttr); return FALSE; } /* Get the object's old (current) name. */ old_name = lu_ent_get_current(ent, namingAttr); if (old_name == NULL) { lu_error_new(error, lu_error_generic, _("user object was created with no `%s'"), namingAttr); return FALSE; } /* Get the object's current object name. */ value = g_value_array_get_nth(add ? name : old_name, 0); name_string = lu_value_strdup(value); dn = lu_ldap_ent_to_dn(module, namingAttr, name_string, branch); g_free(name_string); if (add) { mods = get_ent_adds(dn, ent); #ifdef DEBUG dump_mods(mods); g_message("Adding `%s'.\n", dn); #endif err = ldap_add_ext_s(ctx->ldap, dn, mods, NULL, NULL); if (err != LDAP_SUCCESS) { lu_error_new(error, lu_error_write, _("error creating a LDAP directory " "entry: %s"), ldap_err2string(err)); ret = FALSE; goto err_mods; } } else { mods = get_ent_mods(ent, namingAttr); #ifdef DEBUG dump_mods(mods); g_message("Modifying `%s'.\n", dn); #endif /* Attempt the modify operation. The Fedora Directory server rejects modify operations with no modifications. */ if (mods != NULL && mods[0] != NULL) { err = ldap_modify_ext_s(ctx->ldap, dn, mods, NULL, NULL); if (err == LDAP_OBJECT_CLASS_VIOLATION) { /* AAAARGH! The application decided it wanted * to add some new attributes! Damage * control.... */ lu_ldap_fudge_objectclasses(ctx, dn, ent); err = ldap_modify_ext_s(ctx->ldap, dn, mods, NULL, NULL); } if (err != LDAP_SUCCESS) { lu_error_new(error, lu_error_write, _("error modifying LDAP " "directory entry: %s"), ldap_err2string(err)); ret = FALSE; goto err_mods; } } /* If the name has changed, process a rename (modrdn). */ if (arrays_equal(name, old_name) == FALSE) { char *tmp1, *tmp2; /* Format the name to rename it to. */ value = g_value_array_get_nth(name, 0); tmp1 = lu_value_strdup(value); tmp2 = g_strconcat(map_to_ldap(module->scache, namingAttr), "=", tmp1, NULL); g_free (tmp1); /* Attempt the rename. */ err = ldap_rename_s(ctx->ldap, dn, tmp2, NULL, TRUE, NULL, NULL); g_free(tmp2); if (err != LDAP_SUCCESS) { lu_error_new(error, lu_error_write, _("error renaming LDAP directory " "entry: %s"), ldap_err2string(err)); ret = FALSE; goto err_mods; } } } ret = TRUE; err_mods: free_ent_mods(mods); return ret; } /* Remove an entry from the directory. */ static gboolean lu_ldap_del(struct lu_module *module, enum lu_entity_type type, struct lu_ent *ent, const char *branch, struct lu_error **error) { char *name; const char *dn, *namingAttr; int err; gboolean ret = FALSE; struct lu_ldap_context *ctx; g_assert(module != NULL); g_assert((type == lu_user) || (type == lu_group)); g_assert(ent != NULL); g_assert(ent->magic == LU_ENT_MAGIC); LU_ERROR_CHECK(error); ctx = module->module_context; /* Get the user or group's name. */ if (type == lu_user) { namingAttr = LU_USERNAME; } else { namingAttr = LU_GROUPNAME; } name = lu_ent_get_first_value_strdup(ent, namingAttr); if (name == NULL) { lu_error_new(error, lu_error_generic, _("object had no %s attribute"), namingAttr); return FALSE; } /* Convert the name to a distinguished name. */ dn = lu_ldap_ent_to_dn(module, namingAttr, name, branch); g_free(name); /* Process the removal. */ #ifdef DEBUG g_message("Removing `%s'.\n", dn); #endif err = ldap_delete_ext_s(ctx->ldap, dn, NULL, NULL); if (err == LDAP_SUCCESS) { ret = TRUE; } else { lu_error_new(error, lu_error_write, _("error removing LDAP directory entry: %s"), ldap_err2string(err)); return FALSE; } return ret; } /* Return TRUE if pw starts with a valid scheme specification */ static gboolean userPassword_has_scheme(const char *pw) { #define ALPHA "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" static const char alpha[2*26] = ALPHA; static const char keystring_chars[] = ALPHA "0123456789-;"; #undef ALPHA /* { keystring }, keystring is defined in RFC2252. */ if (*pw != '{' || memchr(alpha, pw[1], sizeof(alpha)) == NULL) return FALSE; pw += 2; pw += strspn(pw, keystring_chars); return *pw == '}'; } /* Lock an account of some kind. */ static gboolean lu_ldap_handle_lock(struct lu_module *module, struct lu_ent *ent, const char *namingAttr, enum lock_op op, const char *branch, struct lu_error **error) { const char *dn; gboolean ret = FALSE; LDAPMod mod[2], *mods[3]; char *result, *name, *oldpassword, *values[2][2]; const char *tmp, *attribute; struct lu_ldap_context *ctx; int err; g_assert(module != NULL); g_assert(ent != NULL); g_assert(namingAttr != NULL); g_assert(strlen(namingAttr) > 0); LU_ERROR_CHECK(error); ctx = module->module_context; /* Get the entry's name. */ name = lu_ent_get_first_value_strdup(ent, namingAttr); if (name == NULL) { lu_error_new(error, lu_error_generic, _("object has no %s attribute"), namingAttr); return FALSE; } /* Convert the name to a distinguished name. */ dn = lu_ldap_ent_to_dn(module, namingAttr, name, branch); g_free(name); attribute = ent->type == lu_user ? LU_USERPASSWORD : LU_GROUPPASSWORD; /* Get the values for the entry's password. Note that this handles only one userPassword value! */ oldpassword = lu_ent_get_first_value_strdup_current(ent, attribute); if (oldpassword == NULL) { lu_error_new(error, lu_error_generic, _("object has no %s attribute"), LU_USERPASSWORD); return FALSE; } /* We only know how to lock crypted passwords, so crypt it if it * isn't already. */ if (!g_str_has_prefix(oldpassword, LU_CRYPTED)) { char *salt; if (userPassword_has_scheme(oldpassword)) { lu_error_new(error, lu_error_generic, _("unsupported password encryption " "scheme")); g_free(oldpassword); return FALSE; } salt = lu_util_default_salt_specifier(module->lu_context); tmp = lu_make_crypted(oldpassword, salt); g_free(salt); if (tmp == NULL) { lu_error_new(error, lu_error_generic, _("error encrypting password")); g_free(oldpassword); return FALSE; } } else tmp = ent->cache->cache(ent->cache, oldpassword + strlen(LU_CRYPTED)); result = ent->cache->cache(ent->cache, tmp); /* Generate a new string with the modification applied. */ switch (op) { case LO_LOCK: if (result[0] != LOCKCHAR) result = g_strdup_printf("%s%c%s", LU_CRYPTED, LOCKCHAR, result); else result = g_strconcat(LU_CRYPTED, result, (const gchar *)NULL); break; case LO_UNLOCK_NONEMPTY: if (result[0] == LOCKCHAR && result[1] == '\0') { lu_error_new(error, lu_error_unlock_empty, NULL); g_free(oldpassword); return FALSE; } /* no break: Fall through */ case LO_UNLOCK: if (result[0] == LOCKCHAR) result = g_strconcat(LU_CRYPTED, result + 1, (const gchar *)NULL); else result = g_strconcat(LU_CRYPTED, result, (const gchar *)NULL); break; default: g_assert_not_reached(); } /* Set up the LDAP modify operation. */ mod[0].mod_op = LDAP_MOD_DELETE; mod[0].mod_type = (char *)map_to_ldap(ent->cache, attribute); values[0][0] = ent->cache->cache(ent->cache, oldpassword); values[0][1] = NULL; mod[0].mod_values = values[0]; mod[1].mod_op = LDAP_MOD_ADD; mod[1].mod_type = mod[0].mod_type; values[1][0] = ent->cache->cache(ent->cache, result); values[1][1] = NULL; mod[1].mod_values = values[1]; g_free(result); /* Set up the array to pass to the modification routines. */ mods[0] = &mod[0]; mods[1] = &mod[1]; mods[2] = NULL; err = ldap_modify_ext_s(ctx->ldap, dn, mods, NULL, NULL); if (err == LDAP_SUCCESS) { ret = TRUE; } else { lu_error_new(error, lu_error_write, _("error modifying LDAP directory entry: %s"), ldap_err2string(err)); ret = FALSE; } g_free(oldpassword); return ret; } /* Check if an account is locked. */ static gboolean lu_ldap_is_locked(struct lu_module *module, struct lu_ent *ent, const char *namingAttr, const char *branch, struct lu_error **error) { static const char mapped_password[] = "userPassword"; const char *dn; char *name; struct lu_ldap_context *ctx = module->module_context; char *attributes[] = { NULL, NULL }; BerValue **values; LDAPMessage *entry = NULL, *messages = NULL; int i; gboolean locked; /* Get the name of the user or group. */ name = lu_ent_get_first_value_strdup(ent, namingAttr); if (name == NULL) { lu_error_new(error, lu_error_generic, _("object has no %s attribute"), namingAttr); return FALSE; } /* Convert the name to a distinguished name. */ dn = lu_ldap_ent_to_dn(module, namingAttr, name, branch); g_free(name); #ifdef DEBUG g_print("Looking up `%s'.\n", dn); #endif /* Read the entry data. */ attributes[0] = (char *)mapped_password; if (ldap_search_ext_s(ctx->ldap, dn, LDAP_SCOPE_BASE, ent->type == lu_user ? "("OBJECTCLASS"="POSIXACCOUNT")" : "("OBJECTCLASS"="POSIXGROUP")", attributes, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &messages) == LDAP_SUCCESS) { entry = ldap_first_entry(ctx->ldap, messages); } if (entry == NULL) { lu_error_new(error, lu_error_generic, _("no such object in LDAP directory")); return FALSE; } /* Read the values for the attribute we want to change. */ values = ldap_get_values_len(ctx->ldap, entry, mapped_password); if (values == NULL) { ldap_msgfree(messages); #ifdef DEBUG g_print("No `%s' attribute found for entry.", mapped_password); #endif lu_error_new(error, lu_error_generic, _("no `%s' attribute found"), mapped_password); return FALSE; } /* Check any of the possibly-multiple passwords. */ locked = FALSE; for (i = 0; values[i] != NULL; i++) { const BerValue *val; size_t prefix_len; val = values[i]; prefix_len = strlen(LU_CRYPTED); #ifdef DEBUG g_print("Got `%s' = `%.*s'.\n", mapped_password, (int)val->bv_len, val->bv_val); #endif if (val->bv_len >= prefix_len && memcmp(val->bv_val, LU_CRYPTED, prefix_len) == 0) { locked = (val->bv_len > prefix_len && val->bv_val[prefix_len] == LOCKCHAR); break; } } /* Clean up and return. */ ldap_value_free_len(values); if (messages != NULL) { ldap_msgfree(messages); } return locked; } /* Set the password for an account. */ static gboolean lu_ldap_setpass(struct lu_module *module, const char *namingAttr, struct lu_ent *ent, const char *branch, const char *password, struct lu_error **error) { static const char mapped_password[] = "userPassword"; const char *dn; char *name; struct lu_ldap_context *ctx = module->module_context; char *attributes[] = { NULL, NULL }; char *addvalues[] = { NULL, NULL }, *rmvalues[] = { NULL, NULL }; BerValue **values; char *previous; int i; size_t j; LDAPMessage *messages = NULL; LDAPMod addmod, rmmod; LDAPMod *mods[3]; char filter[LINE_MAX]; /* Get the user or group's name. */ #ifdef DEBUG g_print("Setting password to `%s'.\n", password); #endif name = lu_ent_get_first_value_strdup(ent, namingAttr); if (name == NULL) { lu_error_new(error, lu_error_generic, _("object has no %s attribute"), namingAttr); return FALSE; } /* Convert the name to a distinguished name. */ dn = lu_ldap_ent_to_dn(module, namingAttr, name, branch); #ifdef DEBUG g_print("Setting password for `%s'.\n", dn); #endif snprintf(filter, sizeof(filter), "(%s=%s)", map_to_ldap(module->scache, namingAttr), name); g_free(name); previous = NULL; values = NULL; attributes[0] = (char *)mapped_password; i = ldap_search_ext_s(ctx->ldap, dn, LDAP_SCOPE_BASE, filter, attributes, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &messages); if (i == LDAP_SUCCESS) { LDAPMessage *entry; entry = ldap_first_entry(ctx->ldap, messages); if (entry != NULL) { values = ldap_get_values_len(ctx->ldap, entry, mapped_password); if (values) { for (j = 0; values[j] != NULL; j++) { char *val; val = g_strndup(values[j]->bv_val, values[j]->bv_len); #ifdef DEBUG g_print("Got `%s' = `%s'.\n", mapped_password, val); #endif if (g_str_has_prefix(val, LU_CRYPTED)) { #ifdef DEBUG g_print ("Previous entry was `%s'.\n", val); #endif previous = val; break; } g_free(val); } ldap_value_free_len(values); } } } else { #ifdef DEBUG g_print("Error searching LDAP directory for `%s': %s.\n", dn, ldap_err2string(i)); #endif } if (messages != NULL) { ldap_msgfree(messages); } if (g_str_has_prefix(password, LU_CRYPTED)) addvalues[0] = (char *)password; else { const char *crypted; char *salt, *tmp; if (previous != NULL && strcmp(previous + strlen(LU_CRYPTED), LU_COMMON_DEFAULT_PASSWORD) != 0) { salt = previous + strlen(LU_CRYPTED); if (*salt == LOCKCHAR) salt++; salt = g_strdup(salt); } else salt = lu_util_default_salt_specifier(module ->lu_context); crypted = lu_make_crypted(password, salt); g_free(salt); if (crypted == NULL) { lu_error_new(error, lu_error_generic, _("error encrypting password")); g_free(previous); return FALSE; } tmp = g_strconcat(LU_CRYPTED, crypted, NULL); addvalues[0] = module->scache->cache(module->scache, tmp); g_free(tmp); } j = 0; if (values != NULL) { if (previous) rmvalues[0] = previous; /* else deletes all values */ rmmod.mod_op = LDAP_MOD_DELETE; rmmod.mod_type = (char *)mapped_password; rmmod.mod_values = rmvalues; mods[j++] = &rmmod; } addmod.mod_op = LDAP_MOD_ADD; addmod.mod_type = (char *)mapped_password; addmod.mod_values = addvalues; mods[j++] = &addmod; mods[j] = NULL; i = ldap_modify_ext_s(ctx->ldap, dn, mods, NULL, NULL); g_free(previous); if (i != LDAP_SUCCESS) { lu_error_new(error, lu_error_generic, _ ("error setting password in LDAP directory for %s: %s"), dn, ldap_err2string(i)); return FALSE; } return TRUE; } static gboolean lu_ldap_user_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_setpass(module, LU_USERNAME, ent, ctx->user_branch, LU_CRYPTED, error); } static gboolean lu_ldap_group_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_setpass(module, LU_GROUPNAME, ent, ctx->group_branch, LU_CRYPTED, error); } static GValueArray * lu_ldap_enumerate(struct lu_module *module, const char *searchAttr, const char *pattern, const char *returnAttr, const char *branch, struct lu_error **error) { LDAPMessage *messages = NULL; char *base, *filt; GValue value; GValueArray *ret; struct lu_ldap_context *ctx; char *attributes[] = { (char *) returnAttr, NULL }; g_assert(module != NULL); g_assert(searchAttr != NULL); g_assert(strlen(searchAttr) > 0); g_assert(returnAttr != NULL); g_assert(strlen(returnAttr) > 0); LU_ERROR_CHECK(error); ctx = module->module_context; /* Generate the base DN to search under. */ /* FIXME: this is inconsistent with lu_ldap_base() usage elsewhere */ base = g_strdup_printf("%s,%s", branch, ctx->prompts[LU_LDAP_BASEDN].value && strlen(ctx->prompts[LU_LDAP_BASEDN].value) ? ctx->prompts[LU_LDAP_BASEDN].value : "*"); /* Generate the filter to search with. */ filt = g_strdup_printf("(%s=%s)", searchAttr, pattern ?: "*"); #ifdef DEBUG g_print("Looking under `%s' with filter `%s'.\n", base, filt); #endif /* Perform the search. */ ret = g_value_array_new(0); memset(&value, 0, sizeof(value)); g_value_init(&value, G_TYPE_STRING); if (ldap_search_ext_s(ctx->ldap, base, LDAP_SCOPE_SUBTREE, filt, attributes, FALSE, NULL, NULL, NULL, LDAP_NO_LIMIT, &messages) == LDAP_SUCCESS) { LDAPMessage *entry; entry = ldap_first_entry(ctx->ldap, messages); if (entry != NULL) { while (entry != NULL) { BerValue **values; size_t i; values = ldap_get_values_len(ctx->ldap, entry, returnAttr); for (i = 0; (values != NULL) && (values[i] != NULL); i++) { char *val; val = g_strndup(values[i]->bv_val, values[i]->bv_len); #ifdef DEBUG g_print("Got `%s' = `%s'.\n", returnAttr, val); #endif g_value_take_string(&value, val); g_value_array_append(ret, &value); } ldap_value_free_len(values); entry = ldap_next_entry(ctx->ldap, entry); } #ifdef DEBUG } else { g_print("No such entry found in LDAP, continuing.\n"); #endif } } if (messages != NULL) { ldap_msgfree(messages); } g_value_unset(&value); g_free(base); g_free(filt); return ret; } /* Add a user to the directory. */ static gboolean lu_ldap_user_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return TRUE; } static gboolean lu_ldap_user_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_set(module, lu_user, 1, ent, ctx->user_branch, error); } /* Modify a user record in the directory. */ static gboolean lu_ldap_user_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_set(module, lu_user, 0, ent, ctx->user_branch, error); } /* Remove a user from the directory. */ static gboolean lu_ldap_user_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_del(module, lu_user, ent, ctx->user_branch, error); } /* Lock a user account in the directory. */ static gboolean lu_ldap_user_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_handle_lock(module, ent, LU_USERNAME, LO_LOCK, ctx->user_branch, error); } /* Unlock a user account in the directory. */ static gboolean lu_ldap_user_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_handle_lock(module, ent, LU_USERNAME, LO_UNLOCK, ctx->user_branch, error); } static gboolean lu_ldap_user_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_handle_lock(module, ent, LU_USERNAME, LO_UNLOCK_NONEMPTY, ctx->user_branch, error); } /* Check if a user account in the directory is locked. */ static gboolean lu_ldap_user_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_is_locked(module, ent, LU_USERNAME, ctx->user_branch, error); } /* Set a user's password in the directory. */ static gboolean lu_ldap_user_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_setpass(module, LU_USERNAME, ent, ctx->user_branch, password, error); } /* Add a group entry to the directory. */ static gboolean lu_ldap_group_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return TRUE; } static gboolean lu_ldap_group_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_set(module, lu_group, 1, ent, ctx->group_branch, error); } /* Modify a group entry in the directory. */ static gboolean lu_ldap_group_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_set(module, lu_group, 0, ent, ctx->group_branch, error); } /* Remove a group entry from the directory. */ static gboolean lu_ldap_group_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_del(module, lu_group, ent, ctx->group_branch, error); } /* Lock a group account in the directory. */ static gboolean lu_ldap_group_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_handle_lock(module, ent, LU_GROUPNAME, LO_LOCK, ctx->group_branch, error); } /* Unlock a group account in the directory. */ static gboolean lu_ldap_group_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_handle_lock(module, ent, LU_GROUPNAME, LO_UNLOCK, ctx->group_branch, error); } static gboolean lu_ldap_group_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_handle_lock(module, ent, LU_GROUPNAME, LO_UNLOCK_NONEMPTY, ctx->group_branch, error); } /* Check if a group account in the directory is locked. */ static gboolean lu_ldap_group_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_is_locked(module, ent, LU_GROUPNAME, ctx->group_branch, error); } /* Set a group's password in the directory. */ static gboolean lu_ldap_group_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_setpass(module, LU_GROUPNAME, ent, ctx->group_branch, password, error); } /* Populate user or group structures with the proper defaults. */ static gboolean lu_ldap_user_default(struct lu_module *module, const char *user, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { if (lu_ent_get(ent, LU_USERPASSWORD) == NULL) lu_ent_set_string(ent, LU_USERPASSWORD, LU_CRYPTED LU_COMMON_DEFAULT_PASSWORD); /* This will set LU_SHADOWPASSWORD, which we ignore. The default LU_USERPASSWORD value, which is incompatibly formated by lu_common_user_default(), will not be used because LU_USERPASSWORD was set above. */ return lu_common_user_default(module, user, is_system, ent, error) && lu_common_suser_default(module, user, is_system, ent, error); } static gboolean lu_ldap_group_default(struct lu_module *module, const char *group, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { /* This sets LU_SHADOWPASSWORD, which is ignored by our backend. LU_GROUPPASSWORD is not set. */ return lu_common_group_default(module, group, is_system, ent, error) && lu_common_sgroup_default(module, group, is_system, ent, error); } /* Get a listing of all user names. */ static GValueArray * lu_ldap_users_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_enumerate(module, "uid", pattern, "uid", ctx->user_branch, error); } static GPtrArray * lu_ldap_users_enumerate_full(struct lu_module *module, const char *pattern, struct lu_error **error) { struct lu_ldap_context *ctx; GPtrArray *array = g_ptr_array_new(); LU_ERROR_CHECK(error); ctx = module->module_context; lu_ldap_lookup(module, "uid", pattern, NULL, array, ctx->user_branch, "("OBJECTCLASS"="POSIXACCOUNT")", lu_ldap_user_attributes, lu_user, error); return array; } /* Get a listing of all group names. */ static GValueArray * lu_ldap_groups_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { struct lu_ldap_context *ctx; LU_ERROR_CHECK(error); ctx = module->module_context; return lu_ldap_enumerate(module, "cn", pattern, "cn", ctx->group_branch, error); } static GPtrArray * lu_ldap_groups_enumerate_full(struct lu_module *module, const char *pattern, struct lu_error **error) { struct lu_ldap_context *ctx; GPtrArray *array = g_ptr_array_new(); LU_ERROR_CHECK(error); ctx = module->module_context; lu_ldap_lookup(module, "cn", pattern, NULL, array, ctx->group_branch, "("OBJECTCLASS"="POSIXGROUP")", lu_ldap_group_attributes, lu_group, error); return array; } /* Get a list of all users in a group, either via their primary or supplemental * group memberships. */ static GValueArray * lu_ldap_users_enumerate_by_group(struct lu_module *module, const char *group, gid_t gid, struct lu_error **error) { struct lu_ldap_context *ctx; GValueArray *ret; char grp[sizeof (gid) * CHAR_BIT + 1]; LU_ERROR_CHECK(error); ctx = module->module_context; sprintf(grp, "%jd", (intmax_t)gid); ret = lu_ldap_enumerate(module, "gidNumber", grp, "uid", ctx->user_branch, error); if (*error == NULL) { GValueArray *secondaries; secondaries = lu_ldap_enumerate(module, "cn", group, "memberUid", ctx->group_branch, error); lu_util_append_values(ret, secondaries); g_value_array_free(secondaries); } return ret; } /* Get a list of all groups to which the user belongs, via either primary or * supplemental group memberships. */ static GValueArray * lu_ldap_groups_enumerate_by_user(struct lu_module *module, const char *user, uid_t uid, struct lu_error **error) { struct lu_ldap_context *ctx; GValueArray *ret, *gids; GValue *value; size_t i; (void)uid; LU_ERROR_CHECK(error); ctx = module->module_context; /* Create an array to hold the values returned. */ ret = g_value_array_new(0); /* Get the user's primary GID(s). */ gids = lu_ldap_enumerate(module, "uid", user, "gidNumber", ctx->user_branch, error); /* For each GID, look up the group. Which has this GID. */ for (i = 0; (gids != NULL) && (i < gids->n_values); i++) { gid_t gid; struct lu_ent *ent; value = g_value_array_get_nth(gids, i); gid = lu_value_get_id(value); if (gid == LU_VALUE_INVALID_ID) continue; ent = lu_ent_new(); if (lu_group_lookup_id(module->lu_context, gid, ent, error)) /* Get the group's names and add them to the list * of values to return. */ lu_util_append_values(ret, lu_ent_get(ent, LU_GROUPNAME)); lu_ent_free(ent); } g_value_array_free(gids); /* Search for the supplemental groups which list this user as * a member. */ if (*error == NULL) { GValueArray *secondaries; secondaries = lu_ldap_enumerate(module, "memberUid", user, "cn", ctx->group_branch, error); lu_util_append_values(ret, secondaries); g_value_array_free(secondaries); } #ifdef DEBUG for (i = 0; i < ret->n_values; i++) { value = g_value_array_get_nth(ret, i); g_print("`%s' is in `%s'\n", user, g_value_get_string(value)); } #endif return ret; } static gboolean lu_ldap_close_module(struct lu_module *module) { struct lu_ldap_context *ctx; size_t i; g_assert(module != NULL); ctx = module->module_context; close_server(ctx->ldap); module->scache->free(module->scache); for (i = 0; i < sizeof(ctx->prompts) / sizeof(ctx->prompts[0]); i++) { if (ctx->prompts[i].value && ctx->prompts[i].free_value) { ctx->prompts[i].free_value(ctx->prompts[i].value); } } g_free(ctx->sasl_mechanism); g_free(ctx->mapped_user_attributes); g_free(ctx->mapped_group_attributes); g_free(ctx); memset(module, 0, sizeof(struct lu_module)); g_free(module); return TRUE; } static gboolean lu_ldap_valid_module_combination(struct lu_module *module, GValueArray *names, struct lu_error **error) { size_t i; g_assert(module != NULL); g_assert(names != NULL); LU_ERROR_CHECK(error); for (i = 0; i < names->n_values; i++) { const char *name; name = g_value_get_string(g_value_array_get_nth(names, i)); if (strcmp(name, LU_MODULE_NAME_FILES) == 0 || strcmp(name, LU_MODULE_NAME_SHADOW) == 0) { /* These modules use an incompatible LU_*PASSWORD format: the LU_CRYPTED prefix, or a similar indicator of an LDAP-defined hashing method, is missing. */ lu_error_new(error, lu_error_invalid_module_combination, _("the `%s' and `%s' modules can not be " "combined"), module->name, name); return FALSE; } } return TRUE; } static gboolean lu_ldap_uses_elevated_privileges(struct lu_module *module) { (void)module; /* FIXME: do some checking, don't know what we need, though */ return FALSE; } struct lu_module * libuser_ldap_init(struct lu_context *context, struct lu_error **error) { struct lu_module *ret; struct lu_ldap_context *ctx; struct lu_prompt prompts[G_N_ELEMENTS(ctx->prompts)]; const char *bind_type; char **bind_types; size_t i; LDAP *ldap; g_assert(context != NULL); g_assert(context->prompter != NULL); LU_ERROR_CHECK(error); ctx = g_malloc0(sizeof(struct lu_ldap_context)); ctx->global_context = context; /* Initialize the prompts structure. */ ctx->prompts[LU_LDAP_SERVER].key = "ldap/server"; ctx->prompts[LU_LDAP_SERVER].prompt = N_("LDAP Server Name"); ctx->prompts[LU_LDAP_SERVER].default_value = lu_cfg_read_single(context, "ldap/server", "ldap"); ctx->prompts[LU_LDAP_SERVER].visible = TRUE; ctx->prompts[LU_LDAP_BASEDN].key = "ldap/basedn"; ctx->prompts[LU_LDAP_BASEDN].prompt = N_("LDAP Search Base DN"); ctx->prompts[LU_LDAP_BASEDN].default_value = lu_cfg_read_single(context, "ldap/basedn", "dc=example,dc=com"); ctx->prompts[LU_LDAP_BASEDN].visible = TRUE; ctx->prompts[LU_LDAP_BINDDN].key = "ldap/binddn"; ctx->prompts[LU_LDAP_BINDDN].prompt = N_("LDAP Bind DN"); ctx->prompts[LU_LDAP_BINDDN].visible = TRUE; ctx->prompts[LU_LDAP_BINDDN].default_value = lu_cfg_read_single(context, "ldap/binddn", "cn=manager,dc=example,dc=com"); ctx->prompts[LU_LDAP_PASSWORD].key = "ldap/password"; ctx->prompts[LU_LDAP_PASSWORD].prompt = N_("LDAP Bind Password"); ctx->prompts[LU_LDAP_PASSWORD].default_value = lu_cfg_read_single(context, "ldap/password", NULL); ctx->prompts[LU_LDAP_PASSWORD].visible = FALSE; ctx->prompts[LU_LDAP_AUTHUSER].key = "ldap/user"; ctx->prompts[LU_LDAP_AUTHUSER].prompt = N_("LDAP SASL User"); ctx->prompts[LU_LDAP_AUTHUSER].visible = TRUE; ctx->prompts[LU_LDAP_AUTHUSER].default_value = lu_cfg_read_single(context, "ldap/user", ""); ctx->prompts[LU_LDAP_AUTHZUSER].key = "ldap/authuser"; ctx->prompts[LU_LDAP_AUTHZUSER].prompt = N_("LDAP SASL Authorization User"); ctx->prompts[LU_LDAP_AUTHZUSER].visible = TRUE; ctx->prompts[LU_LDAP_AUTHZUSER].default_value = lu_cfg_read_single(context, "ldap/authuser", ""); /* Try to be somewhat smart and allow the user to specify which bind * type to use, which should prevent us from asking for information * we can be certain we don't have a use for. */ bind_type = lu_cfg_read_single(context, "ldap/bindtype", "simple,sasl"); bind_types = g_strsplit(bind_type, ",", 0); for (i = 0; (bind_types != NULL) && (bind_types[i] != NULL); i++) { if (g_ascii_strcasecmp(bind_types[i], "simple") == 0) { ctx->bind_simple = TRUE; } else if (g_ascii_strcasecmp(bind_types[i], "sasl") == 0) { ctx->bind_sasl = TRUE; ctx->sasl_mechanism = NULL; } if (g_ascii_strncasecmp(bind_types[i], "sasl/", 5) == 0) { ctx->bind_sasl = TRUE; ctx->sasl_mechanism = g_strdup(bind_types[i] + 5); } } g_strfreev(bind_types); /* Get the information we're sure we'll need. */ i = 0; prompts[i++] = ctx->prompts[LU_LDAP_SERVER]; prompts[i++] = ctx->prompts[LU_LDAP_BASEDN]; if (ctx->bind_simple) { prompts[i++] = ctx->prompts[LU_LDAP_BINDDN]; prompts[i++] = ctx->prompts[LU_LDAP_PASSWORD]; } if (ctx->bind_sasl) { prompts[i++] = ctx->prompts[LU_LDAP_AUTHUSER]; prompts[i++] = ctx->prompts[LU_LDAP_AUTHZUSER]; } if (context->prompter(prompts, i, context->prompter_data, error) == FALSE) { g_free(ctx); return NULL; } i = 0; ctx->prompts[LU_LDAP_SERVER] = prompts[i++]; ctx->prompts[LU_LDAP_BASEDN] = prompts[i++]; if (ctx->bind_simple) { ctx->prompts[LU_LDAP_BINDDN] = prompts[i++]; ctx->prompts[LU_LDAP_PASSWORD] = prompts[i++]; } if (ctx->bind_sasl) { ctx->prompts[LU_LDAP_AUTHUSER] = prompts[i++]; ctx->prompts[LU_LDAP_AUTHZUSER] = prompts[i++]; } /* Allocate the method structure. */ ret = g_malloc0(sizeof(struct lu_module)); ret->version = LU_MODULE_VERSION; ret->module_context = ctx; ret->scache = lu_string_cache_new(TRUE); ret->name = ret->scache->cache(ret->scache, LU_MODULE_NAME_LDAP); ctx->module = ret; ctx->user_branch = lu_cfg_read_single(context, "ldap/userBranch", USERBRANCH); ctx->group_branch = lu_cfg_read_single(context, "ldap/groupBranch", GROUPBRANCH); /* Try to bind to the server to verify that we can. */ ldap = bind_server(ctx, error); if (ldap == NULL) { ret->scache->free(ret->scache); g_free(ret); g_free(ctx); return NULL; } ctx->ldap = ldap; ctx->mapped_user_attributes = g_malloc0_n(G_N_ELEMENTS(lu_ldap_user_attributes), sizeof(*ctx->mapped_user_attributes)); for (i = 0; i < G_N_ELEMENTS(lu_ldap_user_attributes); i++) { if (lu_ldap_user_attributes[i] != NULL) ctx->mapped_user_attributes[i] = (char *) map_to_ldap(ret->scache, lu_ldap_user_attributes[i]); else ctx->mapped_user_attributes[i] = NULL; } ctx->mapped_group_attributes = g_malloc0_n(G_N_ELEMENTS(lu_ldap_group_attributes), sizeof(*ctx->mapped_group_attributes)); for (i = 0; i < G_N_ELEMENTS(lu_ldap_group_attributes); i++) { if (lu_ldap_group_attributes[i] != NULL) ctx->mapped_group_attributes[i] = (char *) map_to_ldap(ret->scache, lu_ldap_group_attributes[i]); else ctx->mapped_group_attributes[i] = NULL; } /* Set the method pointers. */ ret->valid_module_combination = lu_ldap_valid_module_combination; ret->uses_elevated_privileges = lu_ldap_uses_elevated_privileges; ret->user_lookup_name = lu_ldap_user_lookup_name; ret->user_lookup_id = lu_ldap_user_lookup_id; ret->user_default = lu_ldap_user_default; ret->user_add_prep = lu_ldap_user_add_prep; ret->user_add = lu_ldap_user_add; ret->user_mod = lu_ldap_user_mod; ret->user_del = lu_ldap_user_del; ret->user_lock = lu_ldap_user_lock; ret->user_unlock = lu_ldap_user_unlock; ret->user_unlock_nonempty = lu_ldap_user_unlock_nonempty; ret->user_is_locked = lu_ldap_user_is_locked; ret->user_setpass = lu_ldap_user_setpass; ret->user_removepass = lu_ldap_user_removepass; ret->users_enumerate = lu_ldap_users_enumerate; ret->users_enumerate_by_group = lu_ldap_users_enumerate_by_group; ret->users_enumerate_full = lu_ldap_users_enumerate_full; ret->group_lookup_name = lu_ldap_group_lookup_name; ret->group_lookup_id = lu_ldap_group_lookup_id; ret->group_default = lu_ldap_group_default; ret->group_add_prep = lu_ldap_group_add_prep; ret->group_add = lu_ldap_group_add; ret->group_mod = lu_ldap_group_mod; ret->group_del = lu_ldap_group_del; ret->group_lock = lu_ldap_group_lock; ret->group_unlock = lu_ldap_group_unlock; ret->group_unlock_nonempty = lu_ldap_group_unlock_nonempty; ret->group_is_locked = lu_ldap_group_is_locked; ret->group_setpass = lu_ldap_group_setpass; ret->group_removepass = lu_ldap_group_removepass; ret->groups_enumerate = lu_ldap_groups_enumerate; ret->groups_enumerate_by_user = lu_ldap_groups_enumerate_by_user; ret->groups_enumerate_full = lu_ldap_groups_enumerate_full; ret->close = lu_ldap_close_module; /* Done. */ return ret; } modules/sasldb.c000066400000000000000000000314721471266067600141700ustar00rootroot00000000000000/* * Copyright (C) 2000-2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "../lib/user_private.h" static gboolean lu_sasldb_valid_module_combination(struct lu_module *module, GValueArray *names, struct lu_error **error) { (void)module; (void)names; (void)error; /* We never access LU_*PASSWORD, so no formatting conflicts are possible. */ return TRUE; } static gboolean lu_sasldb_uses_elevated_privileges(struct lu_module *module) { (void)module; /* FIXME: actually check the permissions on the sasldb. */ return TRUE; } static gboolean lu_sasldb_user_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { int i; (void)ent; (void)error; #ifdef HAVE_SASL_USER_EXISTS i = sasl_user_exists(module->module_context, NULL, NULL, name); #else i = sasl_checkpass((sasl_conn_t *) module->module_context, name, strlen(name), "", 0); #endif return i != SASL_NOUSER; } static gboolean lu_sasldb_user_lookup_id(struct lu_module *module, uid_t uid, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)uid; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_lookup_name(struct lu_module *module, const char *name, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)name; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_lookup_id(struct lu_module *module, gid_t gid, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)gid; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_user_munge(struct lu_module *module, struct lu_ent *ent, int flags, const char *password, struct lu_error **error) { size_t i; sasl_conn_t *connection; GValueArray *values; g_assert(module != NULL); LU_ERROR_CHECK(error); connection = module->module_context; values = lu_ent_get(ent, LU_USERNAME); for (i = 0; (values != NULL) && (i < values->n_values); i++) { GValue *value; char *tmp; int ret; value = g_value_array_get_nth(values, i); tmp = lu_value_strdup(value); ret = sasl_setpass(connection, tmp, password, password != NULL ? strlen (password) : 0, NULL, 0, flags); g_free(tmp); if (ret == SASL_OK) { return TRUE; } else { const char *err; err = sasl_errdetail(connection); if (password) lu_error_new(error, lu_error_generic, _("Cyrus SASL error creating " "user: %s"), err); else lu_error_new(error, lu_error_generic, _("Cyrus SASL error removing " "user: %s"), err); return FALSE; } } fprintf(stderr, "Error reading user name in %s at %d.\n", __FILE__, __LINE__); return FALSE; } static gboolean lu_sasldb_user_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)name; (void)ent; (void)error; return !is_system; } static gboolean lu_sasldb_user_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return TRUE; } static gboolean lu_sasldb_user_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { if (lu_sasldb_user_munge (module, ent, SASL_SET_CREATE, PACKAGE, error)) { /* account created */ if (lu_sasldb_user_munge(module, ent, SASL_SET_DISABLE, PACKAGE, error) == TRUE) { /* account created and locked */ return TRUE; } else { /* account created and couldn't be locked -- delete it */ lu_sasldb_user_munge(module, ent, 0, NULL, error); return FALSE; } } else { /* account not created */ return FALSE; } return FALSE; } static gboolean lu_sasldb_user_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; /* Nod our heads and smile. */ return TRUE; } static gboolean lu_sasldb_user_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; /* setting a NULL password removes the user */ return lu_sasldb_user_munge(module, ent, 0, NULL, error); } static gboolean lu_sasldb_user_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { /* setting the disable flag locks the account, and setting a password unlocks it */ return lu_sasldb_user_munge(module, ent, SASL_SET_DISABLE, "", error); } static gboolean lu_sasldb_user_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_user_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_user_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { int i; char *name; (void)error; name = lu_ent_get_first_value_strdup(ent, LU_USERNAME); #ifdef HAVE_SASL_USER_EXISTS i = sasl_user_exists(module->module_context, NULL, NULL, name); #else i = sasl_checkpass((sasl_conn_t *) module->module_context, name, strlen(name), "", 0); #endif g_free(name); return (i == SASL_DISABLED); } static gboolean lu_sasldb_user_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { return lu_sasldb_user_munge(module, ent, 0, password, error); } static gboolean lu_sasldb_user_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { /* SASL doesn't allow empty passwords */ (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_default(struct lu_module *module, const char *name, gboolean is_system, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)name; (void)is_system; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_add_prep(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return TRUE; } static gboolean lu_sasldb_group_add(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_mod(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_del(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_lock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_unlock(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_unlock_nonempty(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_is_locked(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static gboolean lu_sasldb_group_setpass(struct lu_module *module, struct lu_ent *ent, const char *password, struct lu_error **error) { (void)module; (void)ent; (void)password; (void)error; return FALSE; } static gboolean lu_sasldb_group_removepass(struct lu_module *module, struct lu_ent *ent, struct lu_error **error) { (void)module; (void)ent; (void)error; return FALSE; } static GValueArray * lu_sasldb_users_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { (void)module; (void)pattern; (void)error; return NULL; } static GPtrArray * lu_sasldb_users_enumerate_full(struct lu_module *module, const char *pattern, struct lu_error **error) { (void)module; (void)pattern; (void)error; return NULL; } static GValueArray * lu_sasldb_groups_enumerate(struct lu_module *module, const char *pattern, struct lu_error **error) { (void)module; (void)pattern; (void)error; return NULL; } static GPtrArray * lu_sasldb_groups_enumerate_full(struct lu_module *module, const char *pattern, struct lu_error **error) { (void)module; (void)pattern; (void)error; return NULL; } static GValueArray * lu_sasldb_users_enumerate_by_group(struct lu_module *module, const char *group, gid_t gid, struct lu_error **error) { (void)module; (void)group; (void)gid; (void)error; return NULL; } static GValueArray * lu_sasldb_groups_enumerate_by_user(struct lu_module *module, const char *user, uid_t uid, struct lu_error **error) { (void)module; (void)user; (void)uid; (void)error; return NULL; } static gboolean lu_sasldb_close_module(struct lu_module *module) { sasl_conn_t *connection; connection = module->module_context; sasl_dispose(&connection); sasl_done(); g_free(module); return TRUE; } struct lu_module * libuser_sasldb_init(struct lu_context *context, struct lu_error **error) { static const struct sasl_callback cb = { SASL_CB_LIST_END, NULL, NULL, }; struct lu_module *ret; const char *appname; const char *domain; sasl_conn_t *connection; int i; g_assert(context != NULL); LU_ERROR_CHECK(error); /* Read in configuration variables. */ appname = lu_cfg_read_single(context, "sasl/appname", ""); domain = lu_cfg_read_single(context, "sasl/domain", ""); /* Initialize SASL. */ i = sasl_server_init(&cb, appname); if (i != SASL_OK) { lu_error_new(error, lu_error_generic, _("error initializing Cyrus SASL: %s"), sasl_errstring(i, NULL, NULL)); return NULL; } i = sasl_server_new(PACKAGE, NULL, domain, NULL, NULL, &cb, SASL_SEC_NOANONYMOUS, &connection); if (i != SASL_OK) { lu_error_new(error, lu_error_generic, _("error initializing Cyrus SASL: %s"), sasl_errstring(i, NULL, NULL)); return NULL; } /* Allocate the method structure. */ ret = g_malloc0(sizeof(struct lu_module)); ret->version = LU_MODULE_VERSION; ret->scache = lu_string_cache_new(TRUE); ret->name = ret->scache->cache(ret->scache, "sasldb"); ret->module_context = connection; /* Set the method pointers. */ ret->valid_module_combination = lu_sasldb_valid_module_combination; ret->uses_elevated_privileges = lu_sasldb_uses_elevated_privileges; ret->user_lookup_name = lu_sasldb_user_lookup_name; ret->user_lookup_id = lu_sasldb_user_lookup_id; ret->user_default = lu_sasldb_user_default; ret->user_add_prep = lu_sasldb_user_add_prep; ret->user_add = lu_sasldb_user_add; ret->user_mod = lu_sasldb_user_mod; ret->user_del = lu_sasldb_user_del; ret->user_lock = lu_sasldb_user_lock; ret->user_unlock = lu_sasldb_user_unlock; ret->user_unlock_nonempty = lu_sasldb_user_unlock_nonempty; ret->user_is_locked = lu_sasldb_user_is_locked; ret->user_setpass = lu_sasldb_user_setpass; ret->user_removepass = lu_sasldb_user_removepass; ret->users_enumerate = lu_sasldb_users_enumerate; ret->users_enumerate_by_group = lu_sasldb_users_enumerate_by_group; ret->users_enumerate_full = lu_sasldb_users_enumerate_full; ret->group_lookup_name = lu_sasldb_group_lookup_name; ret->group_lookup_id = lu_sasldb_group_lookup_id; ret->group_default = lu_sasldb_group_default; ret->group_add_prep = lu_sasldb_group_add_prep; ret->group_add = lu_sasldb_group_add; ret->group_mod = lu_sasldb_group_mod; ret->group_del = lu_sasldb_group_del; ret->group_lock = lu_sasldb_group_lock; ret->group_unlock = lu_sasldb_group_unlock; ret->group_unlock_nonempty = lu_sasldb_group_unlock_nonempty; ret->group_is_locked = lu_sasldb_group_is_locked; ret->group_setpass = lu_sasldb_group_setpass; ret->group_removepass = lu_sasldb_group_removepass; ret->groups_enumerate = lu_sasldb_groups_enumerate; ret->groups_enumerate_by_user = lu_sasldb_groups_enumerate_by_user; ret->groups_enumerate_full = lu_sasldb_groups_enumerate_full; ret->close = lu_sasldb_close_module; /* Done. */ return ret; } po/000077500000000000000000000000001471266067600115135ustar00rootroot00000000000000po/.cvsignore000066400000000000000000000002341471266067600135120ustar00rootroot00000000000000Makefile.in.in Makevars.template Rules-quot boldquot.sed en@boldquot.header en@quot.header insert-header.sin libuser.pot quot.sed remove-potcdate.sin *.gmo po/LINGUAS000066400000000000000000000005041471266067600125370ustar00rootroot00000000000000# To regenerate: (cd po; ls *.po | sed 's/\.po$//'). Then remove languages with # no translations. ar as bg bn bn_IN bs ca cs cy da de de_CH el en_GB es et eu fi fr gu he hi hr hu id is it ja ka kn ko lv mai mk ml mr ms nb nds nl or pa pl pt pt_BR ro ru sk sl sr sr@latin sv ta te tr uk vi zh_CN zh_TW si sq ur hy lo my ku po/Makevars000066400000000000000000000034421471266067600132120ustar00rootroot00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # 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 = Red Hat, Inc. # 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 = http://bugzilla.redhat.com/bugzilla/ # 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 = po/POTFILES.in000066400000000000000000000006751471266067600133000ustar00rootroot00000000000000apps/apputil.c apps/lchage.c apps/lchfn.c apps/lchsh.c apps/lgroupadd.c apps/lgroupdel.c apps/lgroupmod.c apps/lid.c apps/lnewusers.c apps/lpasswd.c apps/luseradd.c apps/luserdel.c apps/lusermod.c lib/common.c lib/config.c lib/error.c lib/misc.c lib/modules.c lib/prompt.c lib/user.c lib/user_private.h lib/util.c modules/files.c modules/ldap.c modules/sasldb.c python/admin.c samples/enum.c samples/lookup.c samples/prompt.c samples/testuser.c po/POTFILES.skip000066400000000000000000000000241471266067600136240ustar00rootroot00000000000000tests/files_test.py po/ar.po000066400000000000000000001133251471266067600124620ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Abd el rahman Ghareeb , 2004 # Ali Ghareb , 2007, 2009 # Miloslav Trmač , 2011 # Munzir Taha , 2011 # Munzir Taha , 2004 # taljurf , 2009 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/fedora/language/" "ar/)\n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "فشل في إسقاط الصلاحيات.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "خطأ داخلي.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ليس مخوّلا بتغيير معلومات finger لـ %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "سياق مستخدِم مجهول" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "لا يمكن ضبط سياق افتراضي لـ /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "خطأ في ابتداء PAM. \n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "فشل توثيق %s. \n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "خطأ داخلي في PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "تصديق مستخدم مجهول\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "عدم تطابق المستخدم.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] مُستخدِم" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "خطأ في إعراب المُعطيات: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "لم يُحَدَّد اسم للمستخدم.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "خطأ في ابتداء ´%s´. %s. \n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "لا وجود للمستخدم %s. \n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "الحساب مقفل.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "الحساب غير مقفل.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "الحد الأدنى:\t%ld \n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "الحد الأقصى: \t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "تحذير: \t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "غير فعّال:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "أبداً" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "آخر تغيير: \t%s \n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "تنتهي صلاحية كلمة السر في: \t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "كلمة السر غير فعالة: \t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "تنتهي صلاحية الحساب في: \t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "فشل في تعديل معلومات الفترة الزمنيّة لـ %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "لم يتم تحديد اسم مستخدم، لا يوجد اسم لرقم هويّة المستخدم %d. \n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "جاري تغيير معلومات finger للمستخدم %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "الاسم الكامل" #: apps/lchfn.c:151 msgid "Surname" msgstr "اسم العائلة" #: apps/lchfn.c:162 msgid "Given Name" msgstr "الاسم الشَّـخصيّ" #: apps/lchfn.c:172 msgid "Office" msgstr "المكتب" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "هاتف المكتب" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "هاتف المنزل" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "عنوان البريد الإلكتروني" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "لم يتمّ تغيير معلومات finger: خطأ إدخال.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "تمّ تغيير معلومات finger.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "معلومات finger لم تتغيّر: %s\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "جاري تغيير الصّدفة للمستخدم %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "صَدَفة جديدة" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "لم يتم تغيير الـ shell: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "تم تغيير الصَّدَفة. \n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] مجموعة" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "لم يتم تحديد اسم للمجموعة.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "رقم تعريف مجموعة غير صالح %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "فشل إنشاء المجموعة: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "المجموعة %s غير موجودة.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "تعذّر حذف مجموعة %s: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "تم تحديد كل من -L و -B \n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "فشل وضع كلمة المرور لمجموعة %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "تعذّر تأمين مجموعة %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "تعذّر إلغاء تأمين مجموعة %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "تعذّر تعديل مجموعة %s: %s.\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "خطأ في البحث عن %s. %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "لم يتم تحديد اسم مجموعة، جاري استخدام %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "لم يتم تحديد اسم للمجموعة، لا يوجد اسم لرقم هويّة المجموعة %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "لم يتم تحديد اسم المستخدم، جاري استخدام %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s غير موجود. \n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "خطأ في فتح ´%s´، %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "خطأ في إنشاء حساب للمستخدم %s، السطر منسّق بشكل خاطئ.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "رقم المستخدم %s غير صالح\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "رَفْض إنشاء حساب برقم هويّة مستخدم 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "خطأ في إنشاء مجموعة لـ`%s' برقم تعريف مجموعة %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "رَفْض استخدام مجلّد موطن خَطِر '%s' افتراضيّاً لـ'%s' \n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "خطأ في إنشاء الدّليل الموطن لـ%s. %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "خطأ في وضع كلمة السّر الابتدئيّة لـ%s. %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "خطأ في إنشاء حساب مستخدم لـ%s. %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "جاري تغيير كلمة المرور لـ%s. \n" #: apps/lpasswd.c:113 msgid "New password" msgstr "كلمة مرور جديدة" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "كلمة المرور الجديدة (تأكيد)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "كلمات المرور غير متطابقة، حاول مُجدّداًً. \n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "لَم يتِمّ تغيير كلمة المرور.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "خطأ في قراءة file descriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "خطأ في وضع كلمة المرور للمستخدم %s. %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "خطأ في وضع كلمة مرور للمجموعة %s. %s\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "تم تغيير كلمة المرور.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "المجموعة %jd غير موجودة\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "خطأ في انشاء المجموعة `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "فشل في إنشاء الحساب: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "خطأ في إنشاء %s: %s. \n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "تعذّر حذف المستخدم %s: %s\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%sلم يكن له رقم تعريف مجموعة.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "لا توجد مجموعة برقم تعريف %jd، لن يتم الحذف.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "المجموعة ذات رقمّ التّعريف %jd لم تحمل اسم مجموعة.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "تعذّر حذف المجموعة %s: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "خطأ في ازالة المجلد الرئيسي للمستخدم" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "فشل وضع كلمة المرور للمستخدم %s؛ %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "تعذّر قفل حساب المستخدم %s: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "تعذّر إلغاء قفل حساب المستخدم %s: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "المجموعة ذات الرقم %jd غير موجودة\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "تعذّر تعديل المستخدم %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "تعذّر تعديل المجموعة %s: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "لا دليل موطن سابق لـ%s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "لا دليل موطن جديد لـ%s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "خطأ في نقل %s إلى %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "تعذّر فتح ملف التّهيئة '%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "تعذّر استعلام حالة ملف الإعداد '%s': %ss" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "ملف التهيئة '%s' كبير جدا" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "تعذّر قراءة ملف الإعداد '%s': %s" #: lib/error.c:62 msgid "success" msgstr "نجاح" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "الوحدة معطّلة في ملف الإعداد" #: lib/error.c:66 msgid "generic error" msgstr "خطأ عام" #: lib/error.c:68 msgid "not enough privileges" msgstr "الصلاحيات غير كافية" #: lib/error.c:70 msgid "access denied" msgstr "ممنوع الوصول" #: lib/error.c:72 msgid "bad user/group name" msgstr "اسم مستخدم/مجموعة سَيّئ" #: lib/error.c:74 msgid "bad user/group id" msgstr "رقم هويّة مستخدم/مجموعة سيّئ" #: lib/error.c:76 msgid "user/group name in use" msgstr "اسم المستخدِم/المجموعة المُستخدَم" #: lib/error.c:78 msgid "user/group id in use" msgstr "رقم هويّة المستخدِم/المجموعة المُستخدَم" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "خطأ في تعديل خصائص سطر الأوامر" #: lib/error.c:82 msgid "error opening file" msgstr "خطأ في فتح الملف" #: lib/error.c:84 msgid "error locking file" msgstr "خطأ في قفل الملف" #: lib/error.c:86 msgid "error statting file" msgstr "خطأ في استعلام حالة ملفّ" #: lib/error.c:88 msgid "error reading file" msgstr "خطأ في قراءة الملف" #: lib/error.c:90 msgid "error writing to file" msgstr "خطأ في الكتابة للملف" #: lib/error.c:92 msgid "data not found in file" msgstr "لم يتم العثور على البيانات في الملف" #: lib/error.c:94 msgid "internal initialization error" msgstr "خطأ داخلي في الابتداء" #: lib/error.c:96 msgid "error loading module" msgstr "خطأ في تحميل الوحدة" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "خطأ في فك ترميز الوحدة" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "عدم التوافق في إصدارة المكتبة/الوحدة" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ألغاء القفل سوف يترك حقل كلمة المرور فارغاً" #: lib/error.c:105 msgid "invalid attribute value" msgstr "قيمة سمة غير صالحة" #: lib/error.c:107 msgid "invalid module combination" msgstr "وحدة نمطية غير صالحة" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "خطأ مجهول" #: lib/misc.c:240 msgid "invalid number" msgstr "رقم غير صالح" #: lib/misc.c:254 msgid "invalid ID" msgstr "هوية غير صالحة" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "لا توجد وظيفة ابتداء %s في '%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "عدم توافق إصدارة الوحدة في ´%s´" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "الوحدة '%s' لا تحدد '%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "خطأ في قراءة خصائص سطر الأوامر" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "خطأ في وضع خصائص سطر الأوامر" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "خطأ في القراءة من سطر الأوامر" #: lib/user.c:218 msgid "name is not set" msgstr "لم يتم تحديد اسم" #: lib/user.c:223 msgid "name is too short" msgstr "الاسم قصير جدّاً" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "الاسم طويل جدا (%zu>%d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "الاسم يحتوي على حروف ليست ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "يحتوي الاسم على أحرف تحكّم" #: lib/user.c:249 msgid "name contains whitespace" msgstr "الاسم يحتوي على مسافات" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "اسم يبدأ بشَـرطة" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "الاسم يحتوي على حرف غير صالح ´%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "المستخدم %s ليس له رقم تعريف" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "المجموعة %s ليس لها رقم تعريف" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "المستخدم %jd ليس له اسم" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "المجموعة %jd ليس لها اسم" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "المستخدم ليس له اسم أو رقم تعريف" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "المجموعة ليست لها اسم أو رقم تعريف" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "رَفْض استخدام مجلّد موطن خَطِر '%s' افتراضيّاً" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "قيمة غير صالحة للحقل %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "خطأ في قفل الملف: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "تعذّر الحصول على سياق الأمان الافتراضي: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "تعذّر الحصول على سياق الأمان لـ `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "تعذّر ضبط سياق أمان افتراضي لـ `%s': %s " #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "تعذّر الحصول على سياق الأمان الافتراضي: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "تعذّر تحديد سياق أمان لـ `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "تعذّر فتح ´%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "تعذّر استعلام وَضْع `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "خطأ في إنشاء ´%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "خطأ في تغيير المالك لـ `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "خطأ في قراءة `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "خطأ في كتابة `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "تعذّرت القراءة من ´%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "خطأ في نقل %s إلى %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "خطأ في فتح ´%s´، %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "خطأ في قراءة `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "خطأ في قراءة `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "الكائن ليس له خاصّيّة %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ليس للكائن خاصّيّة %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s القيمة `%s': `:' غير مسموح بها" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s القيمة `%s': `:' غير مسموح بها" #: modules/files.c:1136 msgid "entry already present in file" msgstr "المُدخل موجود مسبقاً في الملف" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "تعذّرت الكتابة إلى ´%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "الكائن ليس له خاصّيّة %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "هناك مُدخل باسم متعارض موجود مسبقاً في الملف" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "غير مسموح بـ':' في كلمة مرور مشفرة" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "خطأ في تشفير كلمة المرور" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "لم يتمّ التّنفيذ بصلاحيات المدير" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "لا يوجد ملف shadow -- جاري التعطيل" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "خطأ في ابتداء مكتبة ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "تعذّر وضع بروتوكول LDAP للإصدارة %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "تعذّر مفاوضة TLS مع خادم LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "لم يُمكن الرّبط بخادم LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "تعذّر الرّبط بخادم LDAP، المحاولة الأولى كـ `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "لم يحتوي كائن المستخدم على خاصّيّة %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "أُنشِء كائن المستخدم دون `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "خطأ في إنشاء مُدخل لدليل LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "خطأ في تعديل مُدخل دليل LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "خطأ في إعادة تسمية مُدخل دليل LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "لم يحتوي الكائن على خاصّيّة %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "خطأ في حذف مُدخل دليل LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ليس للكائن خاصّيّة %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "نظام تشفير كلمة مرور غير مدعوم" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "لا وجود لهذا الكائن في دليل LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "لم يعثر على الخاصّيّة ´%s´" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "خطأ في وضع كلمة مرور في دليل LDAP لـ%s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "اسم خادم LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "الاسم المُميِّز (DN) الأساسي لبحث LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "الاسم المُميِّز (DN) لـLDAP Bind" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "كلمة مرور LDAP Bind" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "مستخدم LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "مُستخدِم تخويل LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "خطأ Cyrus SASL أثناء إنشاء المستخدم: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "خطأ Cyrus SASL أثناء إزالة المستخدم: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "خطأ في ابتداء Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "خطأ في انشاء مجلد رئيسي للمستخدم" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "خطأ في ازالة المجلد الرئيسي للمستخدم" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "خطأ في نقل المجلد الرئيسي للمستخدم" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "خطأ في ابتداء %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "رقم التعريف %s غير صالح\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "جاري البحث عن مجموعة برقم تعريف %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "جاري البحث عن مجموعة بالاسم %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "جاري البحث عن مستخدم برقم تعريف %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "جاري البحث عن مستخدم بالاسم %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "لم يتم العثور على المُدخل.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "نجح الحثّ.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "فشل الحثّ.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "أصناف كائنات المستخدم الافتراضيّة:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "أسماء خصائص المستخدم الافتراضية:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "جاري الاستعلام عن خصائص المستخدم الافتراضية:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "جاري نسخ بنية المستخدم:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "الملف الاحتياطي ´%s' موجود و ليس عاديَاً" #~ msgid "backup file size mismatch" #~ msgstr "حجم الملف الاحتياطي غير متطابق" po/as.po000066400000000000000000001332651471266067600124700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Amitakhya Phukan , 2006 # Amitakhya Phukan , 2008, 2009 # Amitakhya Phukan , 2008 # Miloslav Trmač , 2011 # ngoswami , 2011 # ngoswami , 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Assamese (http://www.transifex.com/projects/p/fedora/language/" "as/)\n" "Language: as\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "অধিকাৰ হ্ৰাসৰ প্ৰচেষ্টা ব্যৰ্থ ।\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "অভ্যন্তৰীণ সমস্যা ।\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ৰ finger সংক্ৰান্ত তথ্য পৰিবৰ্তন কৰাৰ অধিকাৰ %s ৰ নাই ।\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "ব্যৱহাৰকৰোঁতাৰ প্ৰাসঙ্গিক বিৱৰণ অজ্ঞাত" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd ৰ অবিকল্পিত প্ৰসঙ্গ নিৰ্ধাৰণ কৰা সম্ভৱ নহয়\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM আৰম্ভ কৰোঁতে সমস্যা ।\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s ৰ পৰিচয়প্ৰমাণ প্ৰক্ৰিয়া ব্যৰ্থ হৈছে ।\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "PAM ৰ অভ্যন্তৰীণ সমস্যা `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "অজ্ঞাত ব্যৱহাৰকৰোঁতা অনুমোদিত হৈছে ।\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ব্যৱহাৰকৰোঁতাৰ অমিল ।\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] user" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "তৰ্ক বিশ্লেষণ কৰোঁতে সমস্যা: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "কোনো ব্যৱহাৰকৰোঁতাৰ নাম উল্লেখ কৰা নহয় ।\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s আৰম্ভ কৰোঁতে সমস্যা: %s ।\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s ব্যৱহাৰকৰোঁতা বৰ্তমানে নাই ।\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "হিচাপ লক কৰা আছে ।\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "হিচাপ লক কৰা নাই ।\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "সৰ্বনিম্ন:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "সৰ্বোচ্চ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "সতৰ্কবাৰ্তা:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "নিষ্ক্ৰিয়:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "কেতিয়াও নহয়" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "সৰ্বশেষ পৰিবৰ্তন:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "গুপ্তশব্দৰ মেয়াদপূৰ্তী:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "গুপ্তশব্দ নিষ্ক্ৰিয়:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "হিচাপৰ মেয়াদপূৰ্তী:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s সংক্ৰান্ত পুৰনি তথ্য পৰিবৰ্তনৰ প্ৰচেষ্টা ব্যৰ্থ: %s ।\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "কোনো ব্যৱহাৰকৰোঁতাৰ নাম নিৰ্দিষ্ট নহয়, %d uid ৰ কোনো নাম উল্লিখিত নহয় ।\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s সংক্ৰান্ত finger তথ্য পৰিবৰ্তন কৰা হৈছে ।\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "সম্পূৰ্ণ নাম" #: apps/lchfn.c:151 msgid "Surname" msgstr "উপাধি" #: apps/lchfn.c:162 msgid "Given Name" msgstr "দিয়া নাম" #: apps/lchfn.c:172 msgid "Office" msgstr "কাৰ্য্যালয়" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "কাৰ্য্যালয়ৰ ফোন" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "ঘৰৰ ফোন" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ঈ-মেইল ঠিকনা" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger সংক্ৰান্ত তথ্য পৰিবৰ্তন কৰা নাযায়: নিবেশত ত্ৰুটি ।\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger সংক্ৰান্ত তথ্য পৰিবৰ্তন কৰা হৈছে ।\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger সংক্ৰান্ত তথ্য পৰিবৰ্তন কৰা নহয়: %s ।\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s ৰ শ্বেল পৰিবৰ্তন কৰা হৈছে ।\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "নতুন শ্বেল" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "শ্বেল পৰিবৰ্তিত নহয়: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "শ্বেল পৰিবৰ্তিত হৈছে ।\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] group" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "কোনো সমষ্টিৰ নাম নিৰ্ধাৰণ কৰা নহয় ।\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "সমষ্টিৰ অবৈধ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "সমষ্টি সৃষ্টি কৰোঁতে ব্যৰ্থ: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s সমষ্টি বৰ্তমানে নাই ।\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s সমষ্টি আঁতৰুৱা সম্ভৱ নহয়: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L আৰু -U দুয়োটাই নিৰ্দিষ্ট কৰা হৈছে ।\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s সমষ্টিৰ গুপ্তশব্দ সৃষ্টি কৰোঁতে ব্যৰ্থ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s সমষ্টি লক কৰা নাযায়: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s সমষ্টি আন-লক কৰা নাযায়: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s সমষ্টি পৰিবৰ্তন কৰা নাযায়: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s অনুসন্ধানত সমস্যা: %s ।\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "সমষ্টিৰ নাম উল্লেখ কৰা নহয়, %s ব্যৱহাৰ কৰা হৈছে ।\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "সমষ্টিৰ নাম উল্লেখ কৰা নহয়, %d gid ৰ বাবে কোনো নাম লিখা নহয় ।\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ব্যৱহাৰকৰোঁতাৰ নাম উল্লেখ কৰা নহয়, %s ব্যৱহাৰ কৰা হৈছে ।\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s নাই\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' খোলোঁতে সমস্যা: %s ।\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "`%s' ৰ বাবে হিচাপ সৃষ্টি কৰোঁতে সমস্যা: পংক্তিটো সঠিক বিন্যাসেৰে গঠিত নহয় ।\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "অবৈধ ব্যৱহাৰকৰোঁতাৰ ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 ব্যৱহাৰ কৰি হিচাপ সৃষ্টি কৰা ন'হ'ব ।\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' ৰ বাবে, GID %jd ব্যৱহাৰ কৰি সমষ্টি সৃষ্টি কৰোঁতে সমস্যা: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "অবিকল্পিত ৰূপে %s ৰ কাৰণে বিপদজনক ঘৰৰ পঞ্জিকা `%s' ব্যৱহাৰ কৰিবলৈ নমনা হৈছে\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s ৰ বাবে ঘৰৰ পঞ্জিকা সৃষ্টি কৰোঁতে সমস্যা: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s ৰ বাবে প্ৰাৰম্ভিক গুপ্তশব্দ নিৰ্ধাৰণ কৰোঁতে সমস্যা: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s ৰ বাবে ব্যৱহাৰকৰোঁতাৰ হিচাপ সৃষ্টি কৰোঁতে সমস্যা:%s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s ৰ গুপ্তশব্দ পৰিবৰ্তন কৰা হৈছে ।\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "নতুন গুপ্তশব্দ" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "নতুন গুপ্তশব্দ (দৃঢ় কৰক)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "গুপ্তশব্দ দুটা নিমিলে, পুনঃ চেষ্টা কৰক ।\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "গুপ্তশব্দ পৰিবৰ্তন প্ৰক্ৰিয়া বাতিল কৰা হৈছে ।\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "%d নথিপত্ৰ বিৱৰকৰ পৰা পঢ়োতে ত্ৰুটি।\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s ব্যৱহাৰকৰোঁতাৰ বাবে গুপ্তশব্দ নিৰ্ধাৰণ কৰোঁতে সমস্যা: %s ।\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s সমষ্টিৰ বাবে গুপ্তশব্দ নিৰ্ধাৰণ কৰোঁতে সমস্যা: %s ।\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "গুপ্তশব্দ পৰিবৰ্তিত হৈছে ।\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd সমষ্টিটি বৰ্তমানে নাই ।\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' সমষ্টি সৃষ্টি কৰোঁতে সমস্যা: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "হিচাপ সৃষ্টি কৰোঁতে ব্যৰ্থ: %s ।\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s সৃষ্টি কৰোঁতে সমস্যা: %s ।\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "ব্যৱহাৰকৰোঁতা %s'ৰ হিচাপ আঁতৰুৱা সম্ভৱ নহয়: %s ।\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ৰ কোনো gid সংখ্যা নাই ।\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "%jd GIDসহ কোনো সমষ্টি বৰ্তমানে নাই, আঁতৰুৱা সম্ভৱ নহয় ।\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "%jd GIDসহ সমষ্টিৰ কোনো নাম উল্লিখিত নহয় ।\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s সমষ্টিটি আঁতৰুৱা সম্ভৱ নহয়: %s ।\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ব্যৱহাৰকৰোঁতাৰ ব্যক্তিগত পঞ্জিকা আঁতৰাওঁতে সমস্যা" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s ব্যৱহাৰকৰোঁতাৰ বাবে গুপ্তশব্দ নিৰ্ধাৰণ কৰা সম্ভৱ নহয়: %s ।\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s ব্যৱহাৰকৰোঁতাক লক কৰা সম্ভৱ নহয়: %s ।\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s ব্যৱহাৰকৰোঁতাক আন-লক কৰা সম্ভৱ নহয়: %s ।\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "সকিয়নি: %jd ID থকা সমষ্টি বৰ্তমানে নাই ।\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s ব্যৱহাৰকৰোঁতাৰ তথ্য পৰিবৰ্তন কৰা সম্ভৱ নহয়: %s ।\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s সমষ্টিৰ তথ্য পৰিবৰ্তন কৰা সম্ভৱ নহয়: %s ।\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s ৰ ক্ষেত্ৰত পুৰনি ঘৰৰ পঞ্জিকা নাই ।\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s ৰ কোনো নতুন ঘৰৰ পঞ্জিকা নাই ।\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s ক %s লৈ নিওঁতে সমস্যা হৈছে: %s ।\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "বিন্যাস নথিপত্ৰ `%s' খোলা নাযায়: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "বিন্যাস নথিপত্ৰ `%s' stat কৰা নাযায়: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "বিন্যাস নথিপত্ৰ `%s' অত্যাধিক ডাঙৰ" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "বিন্যাস নথিপত্ৰ `%s' পঢ়া নাযায়: %s" #: lib/error.c:62 msgid "success" msgstr "সফল" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "বিন্যাসৰ দ্বাৰা অংশ নিষ্ক্ৰিয় হৈ গৈছে" #: lib/error.c:66 msgid "generic error" msgstr "সাধাৰণ সমস্যা" #: lib/error.c:68 msgid "not enough privileges" msgstr "অপৰ্যাপ্ত অধিকাৰ" #: lib/error.c:70 msgid "access denied" msgstr "অনুমোদন কৰা নহয়" #: lib/error.c:72 msgid "bad user/group name" msgstr "বেয়া ব্যৱহাৰকৰোঁতা/সমষ্টিৰ নাম" #: lib/error.c:74 msgid "bad user/group id" msgstr "বেয়া ব্যৱহাৰকৰোঁতা/সমষ্টিৰ id" #: lib/error.c:76 msgid "user/group name in use" msgstr "ব্যৱহাৰকৰোঁতা/সমষ্টিৰ নাম বৰ্তমানে ব্যৱহৃত হৈছে" #: lib/error.c:78 msgid "user/group id in use" msgstr "ব্যৱহাৰকৰোঁতা/সমষ্টিৰ id বৰ্তমানে ব্যৱহৃত হৈছে" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "টাৰ্মিনেলৰ বৈশিষ্ট্য পৰিবৰ্তন কৰোঁতে সমস্যা" #: lib/error.c:82 msgid "error opening file" msgstr "নথিপত্ৰ খোলোঁতে সমস্যা" #: lib/error.c:84 msgid "error locking file" msgstr "নথিপত্ৰ লক কৰোঁতে সমস্যা" #: lib/error.c:86 msgid "error statting file" msgstr "নথিপত্ৰ stat কৰোঁতে সমস্যা" #: lib/error.c:88 msgid "error reading file" msgstr "নথিপত্ৰ পঢ়োঁতে সমস্যা" #: lib/error.c:90 msgid "error writing to file" msgstr "নথিপত্ৰত লিখোঁতে সমস্যা" #: lib/error.c:92 msgid "data not found in file" msgstr "নথিপত্ৰত তথ্য পোৱা নাযায়" #: lib/error.c:94 msgid "internal initialization error" msgstr "অভ্যন্তৰীণ প্ৰাৰম্ভিক সমস্যা" #: lib/error.c:96 msgid "error loading module" msgstr "অংশ লোড কৰোঁতে সমস্যা" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "অংশৰ চিহ্ন মীমাংসা কৰোঁতে সমস্যা" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "লাইব্ৰেৰি/অংশৰ সংস্কৰণত অমিল" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "আন-লক কৰা হ'লে গুপ্তশব্দৰ ক্ষেত্ৰ ৰিক্ত হৈ যাবে" #: lib/error.c:105 msgid "invalid attribute value" msgstr "অবৈধ বৈশিষ্টৰ মান" #: lib/error.c:107 msgid "invalid module combination" msgstr "অবৈধ মডুল সংযুক্তকৰণ" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "অজ্ঞাত সমস্যা" #: lib/misc.c:240 msgid "invalid number" msgstr "অবৈধ সংখ্যা" #: lib/misc.c:254 msgid "invalid ID" msgstr "অবৈধ ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%s প্ৰাৰম্ভিক কাৰ্য `%s'-ত নাই" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' ৰ অংশ সংস্কৰণত অমিল" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' অংশৰ দ্বাৰা `%s' ৰ ব্যাখ্যা কৰা নাযায়" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "টাৰ্মিনেলৰ বৈশিষ্ট্য পঢ়োঁতে সমস্যা" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "টাৰ্মিনেলৰ বৈশিষ্ট্য নিৰ্ধাৰণ কৰোঁতে সমস্যা" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "টাৰ্মিনেলৰ পৰা পঢ়োঁতে সমস্যা" #: lib/user.c:218 msgid "name is not set" msgstr "নাম নিৰ্ধাৰণ কৰা নহয়" #: lib/user.c:223 msgid "name is too short" msgstr "নাম অত্যাধিক সৰু" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "উল্লিখিত নাম অত্যাধিক দীঘল (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "নামত non-ASCII আখৰ লিখা হৈছে" #: lib/user.c:242 msgid "name contains control characters" msgstr "নামত নিয়ন্ত্ৰক আখৰ লিখা হৈছে" #: lib/user.c:249 msgid "name contains whitespace" msgstr "নামত শূণ্যস্থান আছে" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "নামৰ আৰম্ভণিত হাইফেন চিহ্ন (-) উপস্থিত আছে" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "নামত অবৈধ আখৰ `%c' লিখা হৈছে" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s নামক ব্যৱহাৰকৰোঁতাৰ ক্ষেত্ৰত UID ধাৰ্য কৰা নহয়" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "%s নামক সমষ্টিৰ ক্ষেত্ৰত GID ধাৰ্য কৰা নহয়" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd ব্যৱহাৰকৰোঁতাৰ নাম উল্লিখিত নাই" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "%jd সমষ্টিৰ নাম উল্লিখিত নাই" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ব্যৱহাৰকৰোঁতাৰ নাম আৰু UID ধাৰ্য কৰা নহয়" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "সমষ্টিৰ নাম আৰু GID ধাৰ্য কৰা নহয়" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "অবিকল্পিত ৰূপে বিপদজনক ঘৰৰ পঞ্জিকা `%s' ব্যৱহাৰ কৰিবলৈ নমনা হৈছে" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ক্ষেত্ৰত অবিকল্পিত মান বৈধ নহয়: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "নথিপত্ৰ লক কৰোঁতে সমস্যা: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "অবিকল্পিত সুৰক্ষাৰ পৰিবেশ পোৱা নাযায়: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' ৰ বাবে প্ৰাসঙ্গিক নিৰাপত্তাৰ বিৱৰণ প্ৰাপ্ত কৰা নাযায়: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "অবিকল্পিত প্ৰাসঙ্গিক নিৰাপত্তাৰ বিৱৰণ`%s' হিচাপে নিৰ্ধাৰণ কৰা নাযায়: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "অবিকল্পিত সুৰক্ষাৰ পৰিবেশ পোৱা নাযায়: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' ৰ বাবে সুৰক্ষাৰ পৰিবেশ নিৰ্ধাৰণ কৰিব নোৱাৰি: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' খোলা সম্ভৱ নহয়: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' stat কৰা নাযায়: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' সৃষ্টি কৰোঁতে সমস্যা: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' ৰ গৰাকীৰ পৰিবৰ্তনত ভুল: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' ৰ ত্ৰুটি পৰিৱৰ্তন অৱস্থা: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' পঢ়োঁতে ভুল: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' লিখোঁতে সমস্যা: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s'ৰ পৰা পঢ়া সম্ভৱ নহয়: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s ক %s লৈ নিওঁতে সমস্যা হৈছে: %s ।\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' ৰ ত্ৰুটি পৰিৱৰ্তন অৱস্থা: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' পঢ়োঁতে ভুল: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' পঢ়োঁতে ভুল: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "পদাৰ্থৰ অব্জেক্টত %s বৈশিষ্ট্য নাই" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "অব্জেক্টত %s বৈশিষ্ট্য নাই" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s মান `%s': `:' ৰ অনুমতি নাই" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s মান `%s': `:' ৰ অনুমতি নাই" #: modules/files.c:1136 msgid "entry already present in file" msgstr "নথিপত্ৰতত নিবেশ বৰ্তমানে উপস্থিত আছে" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'লৈ লিখা নাযায়: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "পদাৰ্থৰ অব্জেক্টত %s বৈশিষ্ট্য নাই" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "যুজিয় নাম থকা প্ৰবিষ্টি ইতিমধ্যে নথিপত্ৰত উপস্থিত আছে" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' ৰ গুপুত কৰা গুপ্তশব্দত অনুমতি নাই" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "গুপ্তশব্দ এনক্ৰিপ্ট কৰোঁতে সমস্যা" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' আৰু `%s' মডুলসমূহ সংযুক্ত কৰিব নোৱাৰি" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "চুপাৰ-ইউজাৰৰ অধিকাৰসহ সঞ্চালিত হোৱা নাই" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "কোনো শ্বে'ডো নথিপত্ৰ নাই -- নিষ্ক্ৰিয় কৰা হৈছে" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Ldap লাইব্ৰেৰি আৰম্ভ কৰোঁতে সমস্যা" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP প্ৰোটোকল %d সংস্কৰণেৰ সৈতে স্থাপন কৰা নাযায়" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP সেৱকৰ সৈতে TLS মীমাংসা কৰা সম্ভৱ নহয়" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP সেৱকে bind কৰা সম্ভৱ নহয়" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP সেৱকে bind কৰা সম্ভৱ নহয়, `%s' ৰূপে প্ৰথম প্ৰচেষ্টা কৰা হৈছে: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ব্যৱহাৰকৰোঁতাৰ অব্জেক্ট কোনো `%s' বৈশিষ্ট্য নাই" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ব্যৱহাৰকৰোঁতাৰ অব্জেক্ট `%s' বিনা নিৰ্মিত হৈছে" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP পঞ্জিকা নিবেশ সৃষ্টি কৰোঁতে সমস্যা: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP পঞ্জিকা নিবেশ পৰিবৰ্তন কৰোঁতে সমস্যা: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP পঞ্জিকা নিবেশৰ নাম পৰিবৰ্তন কৰোঁতে সমস্যা: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "অব্জেক্টত কোনো %s বৈশিষ্ট্য নাই" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP পঞ্জিকা নিবেশ আঁতৰাওঁতে সমস্যা: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "অব্জেক্টত %s বৈশিষ্ট্য নাই" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "অসমৰ্থিত গুপ্তশব্দ এনক্ৰিপছনৰ আঁচনি" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP পঞ্জিকাত এই ধৰণৰ কোনো বস্তু নাই" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "কোনো `%s' বৈশিষ্ট্য পোৱা নাযায়" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s ৰ বাবে LDAP পঞ্জিকাত গুপ্তশব্দ নিৰ্ধাৰণ কৰোঁতে সমস্যা: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP সেৱকৰ নাম" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind গুপ্তশব্দ" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ব্যৱহাৰকৰোঁতা" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL ৰ অনুমোদন ব্যৱহাৰকৰোঁতা" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ব্যৱহাৰকৰোঁতা সৃষ্টি কৰোঁতে Cyrus SASL সমস্যা: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ব্যৱহাৰকৰোঁতাক আঁতৰুৱাৰ সময়ত Cyrus SASL ভুল: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL আৰম্ভ কৰোঁতে সমস্যা: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ব্যৱহাৰকৰোঁতাৰ বাবে ব্যক্তিগত পঞ্জিকা সৃষ্টি কৰোঁতে সমস্যা" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ব্যৱহাৰকৰোঁতাৰ ব্যক্তিগত পঞ্জিকা আঁতৰাওঁতে সমস্যা" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ব্যৱহাৰকৰোঁতাৰ ব্যক্তিগত পঞ্জিকা গমন কৰোঁতে ভুল" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s আৰম্ভ কৰোঁতে সমস্যা: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "অবৈধ ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd ID ৰ সমষ্টিৰ সন্ধান কৰা হৈছে ।\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s সমষ্টিৰ সন্ধান কৰা হৈছে ।\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd ID ৰ ব্যৱহাৰকৰোঁতাৰ সন্ধান কৰা হৈছে ।\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s ব্যৱহাৰকৰোঁতাক সন্ধান কৰা হৈছে ।\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "নিবেশ পোৱা নাযায় ।\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "প্ৰম্পটসমূহ সফল হ'ল ।\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "প্ৰম্পটসমূহ বিফল হ'ল ।\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ব্যৱহাৰকৰোঁতাৰ অবিকল্পিত অব্জেক্ট ক্লাছ:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ব্যৱহাৰকৰোঁতাৰ অবিকল্পিত বৈশিষ্ট্যৰ নাম:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ব্যৱহাৰকৰোঁতাৰ অবিকল্পিত বৈশিষ্ট্য আহৰণ কৰা হৈছে:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ব্যৱহাৰকৰোঁতাৰ গঠন নকল কৰা হৈছে:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "বেক-আপ নথিপত্ৰ `%s' বৰ্তমানে উপস্থিত আছে আৰু এই কোনো সাধাৰণ নথিপত্ৰ নহয়" #~ msgid "backup file size mismatch" #~ msgstr "বেক-আপ নথিপত্ৰৰ মাপত অমিল" po/bg.po000066400000000000000000001327571471266067600124620ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Boril Gourinov , 2004 # Miloslav Trmač , 2011 # Valentin Laskov , 2011-2013 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-08-16 04:04-0400\n" "Last-Translator: Valentin Laskov \n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/fedora/" "language/bg/)\n" "Language: bg\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Неуспешен отказ от привилегии.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Вътрешна грешка.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s не е оторизиран да променя информацията на %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Неизвестен потребителски контекст" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Не може да установи контекста за /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Грешка при инициализиране на PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Неуспешно удостоверяване на %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Вътрешна грешка на PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Удостовери се неизвестен потребител.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Несъответстващ потребител.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "подканване за всичко в информацията" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "показвай параметрите за стареене за потребителя" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "минимум дни между смени на паролата" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "ДНИ" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "максимум дни между смени на паролата" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "дата на последна смяна на паролата в дни след 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "брой дни след датата на изтичане на паролата, когато акаунтът да се счита за " "неактивен" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "дата на изтичане на паролата в дни след 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "дни за предупреждаване на потребителя преди изтичането" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ПАРАМЕТЪР...] потребител" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Грешка при анализа на аргументите: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Не е посочено име на потребител.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Грешка при инициализацията на %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Потребител %s не съществува.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Акаунта е заключен.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Акаунта не е заключен.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Минимум:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Максимум:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Максимум:\tНяма\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Предупреждение:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Неактивен:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Неактивен:\tНикога\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Трябва да промени паролата при следващото влизане" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Никога" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Последна промяна:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Срокът на паролата изтича:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Паролата е неактивна:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Акаунтът изтича на:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Неуспех при промяна на информацията за срока за %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ПАРАМЕТЪР...] [потребител]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Не е посочено име на потребител, няма име за uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Промяна на finger информацията за %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Пълно име" #: apps/lchfn.c:151 msgid "Surname" msgstr "Презиме" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Лично име" #: apps/lchfn.c:172 msgid "Office" msgstr "Работа" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Служебен телефон" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Домашен телефон" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Електронна поща" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger информацията не е променена: грешен вход.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger информацията е променена.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger информацията не е променена: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Промяна на командния интерпретатор за %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Нов команден интерпретатор" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Командният интерпретатор не е променен: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Командният интерпретатор е променен.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid за новата група" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "създава системна група" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ПАРАМЕТЪР...] група" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Не е посочено име на група.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Невалиден групов идентификатор %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Неуспех при създаване на група: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Група %s не съществува.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Група %s не може да бъде премахната: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "задава GID за група" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "променя групата така, че да има даденото име" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "ИМЕ" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "парола в прав текст за употреба с групата" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "НИЗ" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "pre-hashed парола за употреба с групата" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "списък администратори за добавяне" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "списък администратори за премахване" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "списък членове на група за добавяне" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "списък членове на група за премахване" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "заключва група" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "отключва група" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "И -L и -U са указани едновременно.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Неуспешно задаване на парола за група %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Група %s не може да бъде заключена: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Група %s не може да бъде отключена: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Група %s не може да бъде модифицирана: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Грешка при търсене на %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "показвай членовете на посочената група вместо членството в групи на " "посочения потребител" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "показвай информацията за членството по име, а не по UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Не е посочено име на група, ще бъде използвана %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Не е посочено име на група, няма име за gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Не е посочен потребител, ще бъде използван %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s не съжествува\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "файл със записи на информация за потребителя" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ПЪТ" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "не създавай домашни директории" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "не създавай директории за съхранение на поща" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ПАРАМЕТЪР...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Грешка при отваряне на `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Грешка при създаване на потребител `%s': некоректно форматиран ред.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Невалиден потребителски идентификатор %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Отказано създаването на потребител с UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" "Грешка при създаването на група за `%s' с групов идентификатор %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Отказано използването на опасна домашна директория `%s' за %s по " "подразбиране\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Грешка при създаване на домашна директория за %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Грешка при създаване на mail spool за %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Грешка при задаване начална парола за %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Грешка при създаване на потребителски акаунт за %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "задай парола на групата вместо на потребителя" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "нова парола в прав текст" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "нова криптирана парола" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "прочети новата парола в прав текст от дадения дескриптор" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "прочети новата криптирана парола от дадения дескриптор" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Промяна паролата на %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Нова парола" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Нова парола (потвърждение)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Паролите не съвпадат, опитайте отново.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Смяната на паролата прекъсната.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Грешка при четене от дескриптора на файл %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Грешка при задаване паролата за потребител %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Грешка при задаване паролата за група %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Паролата е променена.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "създава системен потребител" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS информация за новия потребител" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "домашна директория за новия потребител" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "директория с файлове за новия потребител" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell за новия потребител" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid за новия потребител" #: apps/luseradd.c:71 msgid "group for new user" msgstr "група за новия потребител" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "не създавай домашна директория за потребителя" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "не създавай група със същото като на потребителя име" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "common име на новия потребител" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "собствено име на новия потребител" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "фамилно име на новия потребител" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "номер на стая на новия потребител" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "номер на телефон на новия потребител" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "номер на домашен телефон на новия потребител" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Група %jd не съществува\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Грешка при създаване на група `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Неуспех при създаването на акаунт: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Грешка при създаване на %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Грешка при създаване на mail spool: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "не премахвай личната група на потребителя, ако има такава" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "премахни домашната директория на потребителя" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Потребител %s не може да бъде изтрит: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s нямаше gid номер.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Не съществува група с идентификатор %jd, не може да се премахне.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Групата с идентификатор %jd нямаше име.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Група %s не може да бъде изтрита: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "грешка при премахване на домашна директория за потребител" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Грешка при премахване на mail spool: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS информация" #: apps/lusermod.c:61 msgid "home directory" msgstr "домашна директория" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "премести съдържанието на домашната директория" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "задава shell за потребителя" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "задава UID за потребителя" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "задава първичен GID за потребителя" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "заменя името за влизане на потребителя" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "парола в прав текст за потребителя" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "pre-hashed парола за потребителя" #: apps/lusermod.c:76 msgid "lock account" msgstr "заключва акаунта" #: apps/lusermod.c:79 msgid "unlock account" msgstr "отключва акаунта" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "задава common име за потребител" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "задава собствено име за потребител" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "задава фамилно име за потребител" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "задава номер на стая на потребител" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "задава номер на телефон на потребител" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "задава номер на домашен телефон на потребител" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Неуспешно задаване парола за потребител %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Потребител %s не може да бъде заключен: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Потребител %s не може да бъде отключен: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Предупреждение: Група %jd не съществува.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Потребител %s не може да бъде изменен: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Група %s не може да бъде изменена: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Няма стара домашна директория за %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Няма нова домашна директория за %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Грешка при преместване на %s към %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "не може да бъде отворен конфигурационен файл `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "не може да stat конфигурационния файл `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "конфигурационния файл `%s' е твърде голям" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "не може да бъде прочетен конфигурационния файл `%s': %s" #: lib/error.c:62 msgid "success" msgstr "успешно" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "модула е деактивиран от конфигурацията" #: lib/error.c:66 msgid "generic error" msgstr "обща грешка" #: lib/error.c:68 msgid "not enough privileges" msgstr "недостатъчни права" #: lib/error.c:70 msgid "access denied" msgstr "достъпа забранен" #: lib/error.c:72 msgid "bad user/group name" msgstr "лошо име на потребител/група" #: lib/error.c:74 msgid "bad user/group id" msgstr "лошо id на потребител/група" #: lib/error.c:76 msgid "user/group name in use" msgstr "името на потребител/група вече се ползва" #: lib/error.c:78 msgid "user/group id in use" msgstr "такова id на потребител/група вече се ползва" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "грешка при манипулиране атрибутите на терминала" #: lib/error.c:82 msgid "error opening file" msgstr "грешка при отваряне на файл" #: lib/error.c:84 msgid "error locking file" msgstr "грешка при заключване на файл" #: lib/error.c:86 msgid "error statting file" msgstr "грешка при получаване състоянието на файл" #: lib/error.c:88 msgid "error reading file" msgstr "грешка при четене на файл" #: lib/error.c:90 msgid "error writing to file" msgstr "грешка при запис във файл" #: lib/error.c:92 msgid "data not found in file" msgstr "данните не са намерени във файла" #: lib/error.c:94 msgid "internal initialization error" msgstr "вътрешна грешка при инициализацията" #: lib/error.c:96 msgid "error loading module" msgstr "грешка при зареждане на модул" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "грешка при откриване на символ в модула" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "грешна версия на библиотека/модул" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "отключването ще направи паролата празно поле" #: lib/error.c:105 msgid "invalid attribute value" msgstr "невалидна стойност на атрибут" #: lib/error.c:107 msgid "invalid module combination" msgstr "невалидно комбиниране на модул" #: lib/error.c:109 #, fuzzy msgid "user's home directory not owned by them" msgstr "домашна директория за новия потребител" #: lib/error.c:115 msgid "unknown error" msgstr "неизвестна грешка" #: lib/misc.c:240 msgid "invalid number" msgstr "невалиден номер" #: lib/misc.c:254 msgid "invalid ID" msgstr "невалиден ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "няма инициализираща функция %s в `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "грешна версия на модул в `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "модул `%s' не дефинира `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "грешка при четене атрибутите на терминала" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "грешка при задаване атрибутите на терминала" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "грешка при четене от терминала" #: lib/user.c:218 msgid "name is not set" msgstr "името не е зададено" #: lib/user.c:223 msgid "name is too short" msgstr "името е твърде късо" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "името е твърде дълго (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "името съдържа не-ASCII знаци" #: lib/user.c:242 msgid "name contains control characters" msgstr "името съдържа контролни знаци" #: lib/user.c:249 msgid "name contains whitespace" msgstr "името съдържа интервали" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "името започва с тире" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "името съдържа невалиден знак `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "потребител %s няма UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "не е намерен потребител %s" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "група %s няма GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "не е намерена група %s" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "потребител %jd няма име" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "група %jd няма име" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "потребителят няма нито име нито UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "групата няма нито име нито GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Отказано използване на опасна домашна директория `%s' по подразбиране" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Невалидна стойност по подразбиране на поле %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "грешка при заключване на файл: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "грешка при получаване подразбрания защитен контекст: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "не може да получи защитния контекст на `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "не може да се установи защитния контекст в `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "грешка при получаване подразбрания защитен контекст: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "не може да получи защитния контекст за `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "не може да се отвори `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "грешка при получаване състоянието на `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "грешка при създаване на `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Грешка при променяне на собственика на `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Грешка при смяна на режима на `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Грешка при четене на `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Грешка при записването на`%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "не може да се чете от `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Грешка при преместване на %s към %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Грешка при смяна на режима на `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Грешка при четене на `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Грешка при четене на `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "обектът от записа няма атрибут %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "обектът няма атрибут %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s стойността `%s': `:' не е позволено" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s стойността `%s': `:' не е позволено" #: modules/files.c:1136 msgid "entry already present in file" msgstr "записът вече присъства във файла" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "не може да се пише в `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "обектът от записа няма атрибут %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "позицията с конфликт в името вече съществува във файл" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' не е позволено в криптирана парола" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "грешка при криптиране на паролата" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "Модулите `%s' и `%s' не могат да се комбинират" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "няма да бъде изпълнено с администраторски права" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "няма наличен shadow файл -- деактивиране" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "грешка при инициализация на ldap библиотеката" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "не може да бъде установена версията на LDAP протокола на %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "не може да бъде договорен TLS с LDAP сървъра" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "грешка при свързване с LDAP сървъра" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "грешка при свързване с LDAP сървъра, първи опит като `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "потребителския обект нямаше атрибут %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "потребителския обект създаден без `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "грешка при създаване на запис в LDAP директорията: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "грешка при промяна на LDAP директориен запис: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "грешка при преименуване на запис в LDAP директорията: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "обектът нямаше атрибут %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "грешка при премахване на запис в LDAP директорията: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "обектът няма атрибут %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "Неподдържана схема за криптиране на парола" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "няма такъв обект в LDAP директорията" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "няма намерен атрибут `%s'" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "грешка при задаване парола в LDAP директорията за %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Име на LDAP сървър" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Базов DN за LDAP търсене" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP DN за връзка" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP парола за връзка" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL Потребител" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL Упълномощаване на потребител" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Грешка на Cyrus SASL при създаване на потребител: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Грешка на Cyrus SASL при премахване на потребител: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "грешка при инициализация на Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "грешка при създаване домашна директория за потребител" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "грешка при премахване на домашна директория за потребител" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "грешка при преместване домашната директория на потребител" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Грешка при инициализация на %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Невалиден идентификатор %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Търсене на група с идентификатор %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Търсене на група именувана %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Търсене на потребител с идентификатор %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Търсене на потребител наименуван %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Запис не е намерен.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Промптовете успяха.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Промптовете се провалиха.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Стандартни класове за потребителски обект:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Стандартни потребителски атрибути:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Извличане на стандартни потребителски атрибути:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Копиране на потребителска структура:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "резервното копие `%s' съществува и не е обикновен файл" #~ msgid "backup file size mismatch" #~ msgstr "големината на резервното копие не съвпада" po/bn.po000066400000000000000000001353441471266067600124640ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Ayesha Akhtar , 2012 # Jamil Ahmed , 2006 # Mahay Alam Khan , 2012 # Miloslav Trmač , 2011 # newton , 2012 # Robin Mehdee , 2012 # Runa Bhattacharjee , 2008 # runab , 2004, 2005, 2006, 2007, 2008, 2009, 2010 # runa , 2012 # Samia Niamatullah , 2005 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Bengali (http://www.transifex.com/projects/p/fedora/language/" "bn/)\n" "Language: bn\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "অধিকার হ্রাসের প্রচেষ্টা ব্যর্থ।\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "অভ্যন্তরীণ সমস্যা।\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s-র, %s-র finger সংক্রান্ত তথ্য পরিবর্তন করার অধিকার নেই।\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "ব্যবহারকারীর প্রাসঙ্গিক বিবরণ অজানা" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd-র ডিফল্ট প্রসঙ্গ নির্ধারণ করা সম্ভব হয়নি\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM আরম্ভ করতে সমস্যা।\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s-র পরিচয়প্রমাণ প্রক্রিয়া ব্যর্থ হয়েছে।\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "PAM-র অভ্যন্তরীণ সমস্যা `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "অজানা ব্যবহারকারী অনুমোদিত রয়েছেন।\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ব্যবহারকারীর গরমিল।\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] user" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "আর্গুমেন্ট পার্স করতে সমস্যা: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "কোনো ব্যবহারকারীর নাম উল্লেখ করা হয়নি।\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s আরম্ভ করতে সমস্যা: %s।\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s ব্যবহারকারী বর্তমানে উপস্থিত নেই।\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "অ্যাকাউন্ট লক করা আছে।\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "অ্যাকাউন্ট লক করা নেই।\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "সর্বনিম্ন:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "সর্বোচ্চ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "সতর্কবার্তা:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "নিষ্ক্রিয়:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "কখনো নয়" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "সর্বশেষ পরিবর্তন:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "পাসওয়ার্ডের মেয়াদপূর্তী:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "পাসওয়ার্ড নিষ্ক্রিয়:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "অ্যাকাউন্টের মেয়াদপূর্তী:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s সংক্রান্ত পুরোনো তথ্য পরিবর্তনের প্রচেষ্টা ব্যর্থ: %s।\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "কোনো ব্যবহারকারীর নাম নির্দিষ্ট হয়নি, %d uid-র কোনো নাম উল্লিখিত হয়নি।\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s সংক্রান্ত finger তথ্য পরিবর্তন করা হচ্ছে।\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "সম্পূর্ণ নাম" #: apps/lchfn.c:151 msgid "Surname" msgstr "পদবি" #: apps/lchfn.c:162 msgid "Given Name" msgstr "প্রদত্ত নাম" #: apps/lchfn.c:172 msgid "Office" msgstr "কর্মস্থল" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "কর্মস্থলের ফোন" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "গৃহের ফোন" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ই-মেইল ঠিকানা" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger সংক্রান্ত তথ্য পরিবর্তন করা যায়নি: ইনপুটজড়িত ত্রুটি।\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger সংক্রান্ত তথ্য পরিবর্তন করা হয়েছে।\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger সংক্রান্ত তথ্য পরিবর্তন করা হয়নি: %s।\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s-র শেল পরিবর্তন করা হচ্ছে।\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "নতুন শেল" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "শেল পরিবর্তিত হয়নি: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "শেল পরিবর্তিত হয়েছে।\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] group" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "কোনো দলের নাম নির্ধারণ করা হয়নি।\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "দলের অবৈধ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "দল তৈরি করতে ব্যর্থ: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s দলটি বর্তমানে উপস্থিত নেই।\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s দলটি মুছে ফেলা সম্ভব হয়নি: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L এবং -U দুটিই নির্দিষ্ট করা হয়েছে।\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s দলের পাসওয়ার্ড তৈরি করতে ব্যর্থ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s দলটি লক করা যায়নি: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s দলটি আন-লক করা যায়নি: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s দল পরিবর্তন করা যায়নি: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s অনুসন্ধানে সমস্যা: %s।\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "দলের নাম উল্লেখ করা হয়নি, %s ব্যবহার করা হচ্ছে।\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "দলের নাম উল্লেখ করা হয়নি, %d gid-র জন্য কোনো নাম লেখা হয়নি।\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ব্যবহারকারীর নাম উল্লেখ করা হয়নি, %s ব্যবহার করা হচ্ছে।\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s বর্তমানে উপস্থিত নেই\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' খুলতে সমস্যা: %s।\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "`%s' -র জন্য অ্যাকাউন্ট তৈরি করতে সমস্যা: পংক্তিটি সঠিক বিন্যাসে গঠিত হয়নি।\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ব্যবহারকারী অবৈধ ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 ব্যবহার করে অ্যাকাউন্ট তৈরি করা হবে না।\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s'-র জন্য, GID %jd ব্যবহার করে দল তৈরি করতে সমস্যা: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "ডিফল্টরূপে, ক্ষতিকর ব্যক্তিগত ডিরেক্টরি `%s'-টি %s-র জন্য ব্যবহার করতে প্রত্যাখ্যান করা " "হয়েছে\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s-র জন্য ব্যক্তিগত (হোম) ডিরেক্টরি তৈরি করতে সমস্যা: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s-র জন্য প্রারম্ভিক পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s-র জন্য ব্যবহারকারীর অ্যাকাউন্ট তৈরি করতে সমস্যা:%s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s-র পাসওয়ার্ড পরিবর্তন করা হচ্ছে।\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "নতুন পাসওয়ার্ড" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "নতুন পাসওয়ার্ড (নিশ্চায়ন)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "পাসওয়ার্ড দুটি মেলেনি, পুনরায় চেষ্টা করুন।\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "পাসওয়ার্ড পরিবর্তন প্রক্রিয়া বাতিল করা হয়েছে।\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ফাইল ডিসক্রিপ্টর %d থেকে পড়তে সমস্যা দেখা দিয়েছে।\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s।\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s দলের জন্য পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s।\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "পাসওয়ার্ড পরিবর্তিত হয়েছে।\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd দলটি বর্তমানে উপস্থিত নেই।\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' দল তৈরি করতে সমস্যা: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "অ্যাকাউন্ট তৈরি করতে ব্যর্থ: %s।\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s তৈরি করতে সমস্যা: %s।\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "ব্যবহারকারী %s'র অ্যাকাউন্ট মুছে ফেলা সম্ভব হয়নি: %s।\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s-র কোনো gid সংখ্যা নেই।\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "%jd GIDসহ কোনো দল বর্তমানে উপস্থিত নেই, মুছে ফেলা সম্ভব নয়।\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "%jd GIDসহ দলের কোনো নাম উল্লিখিত হয়নি।\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s দলটি মুছে ফেলা সম্ভব হয়নি: %s।\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ব্যবহারকারীর ব্যক্তিগত (হোম) ডিরেক্টরি মুছে ফেলতে সমস্যা" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s ব্যবহারকারীকে লক (lock) করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s ব্যবহারকারীকে আন-লক (unlock) করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "সতর্কবার্তা: %jd ID সহ দলটি বর্তমানে উপস্থিত নেই।\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s ব্যবহারকারীর তথ্য পরিবর্তন করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s দলের তথ্য পরিবর্তন করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s-র ক্ষেত্রে পুরোনো ব্যক্তিগত (হোম) ডিরেক্টরি উপস্থিত নেই।\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s-র কোনো নতুন ব্যক্তিগত (হোম) ডিরেক্টরি উপস্থিত নেই।\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s কে %s-এ সরিয়ে নিতে সমস্যা হয়েছে: %s।\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "কনফিগারেশন ফাইল `%s' খোলা যায়নি: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "কনফিগারেশন ফাইল `%s' stat করা যায়নি: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "কনফিগারেশন ফাইল `%s' অত্যাধিক বড়" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "কনফিগারেশন ফাইল `%s' পড়া যায়নি: %s" #: lib/error.c:62 msgid "success" msgstr "সফল" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "কনফিগারেশনের দরুণ মডিউলটি নিষ্ক্রিয় হয়ে গেছে" #: lib/error.c:66 msgid "generic error" msgstr "সাধারণ সমস্যা" #: lib/error.c:68 msgid "not enough privileges" msgstr "অপর্যাপ্ত অধিকার" #: lib/error.c:70 msgid "access denied" msgstr "অনুমোদন করা হয়নি" #: lib/error.c:72 msgid "bad user/group name" msgstr "অবৈধ ব্যবহারকারী/দলের নাম" #: lib/error.c:74 msgid "bad user/group id" msgstr "অবৈধ ব্যবহারকারী/দলের id" #: lib/error.c:76 msgid "user/group name in use" msgstr "ব্যবহারকারী/দলের নাম বর্তমানে ব্যবহৃত হচ্ছে" #: lib/error.c:78 msgid "user/group id in use" msgstr "ব্যবহারকারী/দলের id বর্তমানে ব্যবহৃত হচ্ছে" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "টার্মিনালের বৈশিষ্ট্য পরিবর্তন করতে সমস্যা" #: lib/error.c:82 msgid "error opening file" msgstr "ফাইল খুলতে সমস্যা" #: lib/error.c:84 msgid "error locking file" msgstr "ফাইল লক করতে সমস্যা" #: lib/error.c:86 msgid "error statting file" msgstr "ফাইল stat করতে সমস্যা" #: lib/error.c:88 msgid "error reading file" msgstr "ফাইল পড়তে সমস্যা" #: lib/error.c:90 msgid "error writing to file" msgstr "ফাইলে লিখতে সমস্যা" #: lib/error.c:92 msgid "data not found in file" msgstr "ফাইলে তথ্য পাওয়া যায়নি" #: lib/error.c:94 msgid "internal initialization error" msgstr "অভ্যন্তরীণ প্রারম্ভিক সমস্যা" #: lib/error.c:96 msgid "error loading module" msgstr "মডিউল লোড করতে সমস্যা" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "মডিউলের সিম্বল মীমাংসা করতে সমস্যা" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "লাইব্রেরি/মডিউলের সংস্করণে গরমিল" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "আন-লক করা হলে পাসওয়ার্ডের ক্ষেত্র ফাঁকা হয়ে যাবে" #: lib/error.c:105 msgid "invalid attribute value" msgstr "অ্যাট্রিবিউটের মান বৈধ নয়" #: lib/error.c:107 msgid "invalid module combination" msgstr "বৈধ রূপে মডিউল একত্রিত করা হয়নি" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "অজানা সমস্যা" #: lib/misc.c:240 msgid "invalid number" msgstr "অবৈধ সংখ্যা" #: lib/misc.c:254 msgid "invalid ID" msgstr "অবৈধ ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%s প্রারম্ভিক কার্য `%s'-র মধ্যে উপস্থিত নেই" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s'-র মডিউল সংস্করণে গরমিল" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' মডিউলের দ্বারা `%s'-র ব্যাখ্যা করা যায়নি" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "টার্মিনালের বৈশিষ্ট্য পড়তে সমস্যা" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "টার্মিনালের বৈশিষ্ট্য নির্ধারণ করতে সমস্যা" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "টার্মিনাল থেকে পড়তে সমস্যা" #: lib/user.c:218 msgid "name is not set" msgstr "নাম নির্ধারণ করা হয়নি" #: lib/user.c:223 msgid "name is too short" msgstr "নাম অত্যাধিক ছোট" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "উল্লিখিত নাম অত্যাধিক লম্বা (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "নামের মধ্য non-ASCII অক্ষর লেখা হয়েছে" #: lib/user.c:242 msgid "name contains control characters" msgstr "নামের মধ্য নিয়ন্ত্রক (control) অক্ষর লেখা হয়েছে" #: lib/user.c:249 msgid "name contains whitespace" msgstr "নামের মধ্যে শূণ্যস্থান রয়েছে" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "নামের প্রারম্ভে হাইফেন চিহ্ন (-) উপস্থিত রয়েছে" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "নামের মধ্য অবৈধ অক্ষর `%c' লেখা হয়েছে" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s নামক ব্যবহারকারীর ক্ষেত্রে UID ধার্য করা হয়নি" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "%s নামক দলের ক্ষেত্রে GID ধার্য করা হয়নি" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd ব্যবহারকারীর নাম উল্লিখিত নেই" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "%jd দলের নাম উল্লিখিত নেই" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ব্যবহারকারীর নাম ও UID ধার্য করা হয়নি" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "দলের নাম ও GID ধার্য করা হয়নি" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ডিফল্টরূপে, ক্ষতিকর ব্যক্তিগত ডিরেক্টরি `%s' ব্যবহার প্রত্যাখ্যান করা হয়েছে" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ক্ষেত্রে ডিফল্ট মান বৈধ নয়: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ফাইল লক করতে সমস্যা: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ডিফল্ট প্রাসঙ্গিক নিরাপত্তার বিবরণ নির্ধারণ করা যায়নি: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s'-র জন্য প্রাসঙ্গিক নিরাপত্তার বিবরণ প্রাপ্ত করা যায়নি: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ডিফল্ট প্রাসঙ্গিক নিরাপত্তার বিবরণ`%s' হিসাবে নির্ধারণ করা যায়নি: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ডিফল্ট প্রাসঙ্গিক নিরাপত্তার বিবরণ নির্ধারণ করা যায়নি: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s'-র জন্য প্রাসঙ্গিক নিরাপত্তার বিবরণ প্রাপ্ত করা যায়নি: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' খোলা সম্ভব হয়নি: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' stat করা যায়নি: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' তৈরি করতে সমস্যা: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s'-র মালিকানা পরিবর্তন করতে সমস্যা: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s'-র মোড পরিবর্তন করতে ত্রুটি: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' পড়তে সমস্যা: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' লিখতে সমস্যা: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' থেকে পড়া সম্ভব হয়নি: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s কে %s-এ সরিয়ে নিতে সমস্যা হয়েছে: %s।\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s'-র মোড পরিবর্তন করতে ত্রুটি: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' পড়তে সমস্যা: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' পড়তে সমস্যা: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "স্বত্বার অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s মান `%s': `:' অনুমোদিত নয়" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s মান `%s': `:' অনুমোদিত নয়" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ফাইলের মধ্যে এন্ট্রি বর্তমানে উপস্থিত আছে" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'-এ লেখা যায়নি: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "স্বত্বার অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "দ্বন্দযুক্ত নাম সহ একটি এন্ট্রি ফাইলের মধ্যে বর্তমানে উপস্থিত আছে" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "এনক্রিপ্ট করা পাসওয়ার্ডের মধ্যে `:' ব্যবহার করা যাবে না" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "পাসওয়ার্ড এনক্রিপ্ট করতে সমস্যা" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' ও `%s' মডিউলগুলি একত্রিত করা যাবে না" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "সুপার-ইউজারের অধিকারসহ সঞ্চালিত হচ্ছে না" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "কোনো শেডো ফাইল উপস্থিত নেই -- নিষ্ক্রিয় করা হচ্ছে" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Ldap লাইব্রেরি আরম্ভ করতে সমস্যা" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP প্রোটোকল %d সংস্করণের সাথে স্থাপন করা যায়নি" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP সার্ভারের সাথে TLS মীমাংসা করা সম্ভব হয়নি" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP সার্ভারে bind করা সম্ভব হয়নি" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP সার্ভারে bind করা সম্ভব হয়নি, `%s' রূপে প্রথম প্রচেষ্টা করা হয়েছে: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ব্যবহারকারীর অবজেক্টে কোনো `%s' বৈশিষ্ট্য উপস্থিত নেই" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ব্যবহারকারীর অবজেক্ট `%s' বিনা নির্মিত হয়েছে" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রি তৈরি করতে সমস্যা: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রি পরিবর্তন করতে সমস্যা: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রির নাম পরিবর্তন করতে সমস্যা: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "অবজেক্টের মধ্যে কোনো %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রি মুছে ফেলতে সমস্যা: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "পাসওয়ার্ড এনক্রিপশনের বিন্যাস সমর্থিত নয়" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ডিরেক্টরির মধ্যে এই ধরনের কোনো বস্তু উপস্থিত নেই" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "কোনো `%s' বৈশিষ্ট্য পাওয়া যায়নি" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s-র জন্য LDAP ডিরেক্টরিতে পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP সার্ভারের নাম" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind পাসওয়ার্ড" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ব্যবহারকারী" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-র অনুমোদন ব্যবহারকারী" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ব্যবহারকারী তৈরি করতে Cyrus SASL সংক্রান্ত সমস্যা: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ব্যবহারকারী মুছে ফেলার সময় Cyrus SASL সংক্রান্ত সমস্যা: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL আরম্ভ করতে সমস্যা: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ব্যবহারকারীর জন্য ব্যক্তিগত (হোম) ডিরেক্টরি তৈরি করতে সমস্যা" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ব্যবহারকারীর ব্যক্তিগত (হোম) ডিরেক্টরি মুছে ফেলতে সমস্যা" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ব্যবহারকারীর ব্যক্তিগত (হোম) ডিরেক্টরি সরাতে সমস্যা" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s আরম্ভ করতে সমস্যা: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "অবৈধ ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd ID-ধারী দলের সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s নামক দলের সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd ID-ধারী ব্যবহারকারীর সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s নামক ব্যবহারকারীর সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "এন্ট্রি খুঁজে পাওয়া যায়নি।\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "সফল চিহ্নকারী প্রম্পট।\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "বিফল চিহ্নকারী প্রম্পট\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ব্যবহারকারীর ডিফল্ট অবজেক্ট ক্লাস:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ব্যবহারকারীর ডিফল্ট বৈশিষ্ট্যর নাম:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ব্যবহারকারীর ডিফল্ট বৈশিষ্ট্য আহরণ করা হচ্ছে:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ব্যবহারকারীর বৈশিষ্ট্যের পরিকাঠামো কপি করা হচ্ছে:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "ব্যাক-আপ ফাইল `%s' বর্তমানে উপস্থিত আছে এবং এটি কোনো সাধারণ ফাইল নয়" #~ msgid "backup file size mismatch" #~ msgstr "ব্যাক-আপ ফাইলের মাপে গরমিল" po/bn_IN.po000066400000000000000000001347551471266067600130570ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Runa Bhattacharjee , 2008 # runab , 2004, 2005, 2006, 2007, 2008, 2009, 2010 # runa , 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Bengali (India) (http://www.transifex.com/projects/p/fedora/" "language/bn_IN/)\n" "Language: bn_IN\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "অধিকার হ্রাসের প্রচেষ্টা ব্যর্থ।\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "অভ্যন্তরীণ সমস্যা।\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s-র, %s-র finger সংক্রান্ত তথ্য পরিবর্তন করার অধিকার নেই।\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "ব্যবহারকারীর প্রাসঙ্গিক বিবরণ অজানা" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd-র ডিফল্ট প্রসঙ্গ নির্ধারণ করা সম্ভব হয়নি\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM আরম্ভ করতে সমস্যা।\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s-র পরিচয়প্রমাণ প্রক্রিয়া ব্যর্থ হয়েছে।\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "PAM-র অভ্যন্তরীণ সমস্যা `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "অজানা ব্যবহারকারী অনুমোদিত রয়েছেন।\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ব্যবহারকারীর গরমিল।\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] user" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "আর্গুমেন্ট পার্স করতে সমস্যা: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "কোনো ব্যবহারকারীর নাম উল্লেখ করা হয়নি।\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s আরম্ভ করতে সমস্যা: %s।\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s ব্যবহারকারী বর্তমানে উপস্থিত নেই।\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "অ্যাকাউন্ট লক করা আছে।\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "অ্যাকাউন্ট লক করা নেই।\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "সর্বনিম্ন:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "সর্বোচ্চ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "সতর্কবার্তা:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "নিষ্ক্রিয়:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "কখনো নয়" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "সর্বশেষ পরিবর্তন:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "পাসওয়ার্ডের মেয়াদপূর্তী:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "পাসওয়ার্ড নিষ্ক্রিয়:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "অ্যাকাউন্টের মেয়াদপূর্তী:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s সংক্রান্ত পুরোনো তথ্য পরিবর্তনের প্রচেষ্টা ব্যর্থ: %s।\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "কোনো ব্যবহারকারীর নাম নির্দিষ্ট হয়নি, %d uid-র কোনো নাম উল্লিখিত হয়নি।\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s সংক্রান্ত finger তথ্য পরিবর্তন করা হচ্ছে।\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "সম্পূর্ণ নাম" #: apps/lchfn.c:151 msgid "Surname" msgstr "পদবি" #: apps/lchfn.c:162 msgid "Given Name" msgstr "প্রদত্ত নাম" #: apps/lchfn.c:172 msgid "Office" msgstr "কর্মস্থল" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "কর্মস্থলের ফোন" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "গৃহের ফোন" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ই-মেইল ঠিকানা" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger সংক্রান্ত তথ্য পরিবর্তন করা যায়নি: ইনপুটজড়িত ত্রুটি।\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger সংক্রান্ত তথ্য পরিবর্তন করা হয়েছে।\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger সংক্রান্ত তথ্য পরিবর্তন করা হয়নি: %s।\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s-র শেল পরিবর্তন করা হচ্ছে।\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "নতুন শেল" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "শেল পরিবর্তিত হয়নি: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "শেল পরিবর্তিত হয়েছে।\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] group" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "কোনো দলের নাম নির্ধারণ করা হয়নি।\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "দলের অবৈধ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "দল তৈরি করতে ব্যর্থ: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s দলটি বর্তমানে উপস্থিত নেই।\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s দলটি মুছে ফেলা সম্ভব হয়নি: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L এবং -U দুটিই নির্দিষ্ট করা হয়েছে।\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s দলের পাসওয়ার্ড তৈরি করতে ব্যর্থ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s দলটি লক করা যায়নি: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s দলটি আন-লক করা যায়নি: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s দল পরিবর্তন করা যায়নি: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s অনুসন্ধানে সমস্যা: %s।\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "দলের নাম উল্লেখ করা হয়নি, %s ব্যবহার করা হচ্ছে।\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "দলের নাম উল্লেখ করা হয়নি, %d gid-র জন্য কোনো নাম লেখা হয়নি।\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ব্যবহারকারীর নাম উল্লেখ করা হয়নি, %s ব্যবহার করা হচ্ছে।\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s বর্তমানে উপস্থিত নেই\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' খুলতে সমস্যা: %s।\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "`%s' -র জন্য অ্যাকাউন্ট তৈরি করতে সমস্যা: পংক্তিটি সঠিক বিন্যাসে গঠিত হয়নি।\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ব্যবহারকারী অবৈধ ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 ব্যবহার করে অ্যাকাউন্ট তৈরি করা হবে না।\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s'-র জন্য, GID %jd ব্যবহার করে দল তৈরি করতে সমস্যা: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "ডিফল্টরূপে, ক্ষতিকর ব্যক্তিগত ডিরেক্টরি `%s'-টি %s-র জন্য ব্যবহার করতে প্রত্যাখ্যান করা " "হয়েছে\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s-র জন্য ব্যক্তিগত (হোম) ডিরেক্টরি তৈরি করতে সমস্যা: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s-র জন্য প্রারম্ভিক পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s-র জন্য ব্যবহারকারীর অ্যাকাউন্ট তৈরি করতে সমস্যা:%s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s-র পাসওয়ার্ড পরিবর্তন করা হচ্ছে।\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "নতুন পাসওয়ার্ড" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "নতুন পাসওয়ার্ড (নিশ্চায়ন)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "পাসওয়ার্ড দুটি মেলেনি, পুনরায় চেষ্টা করুন।\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "পাসওয়ার্ড পরিবর্তন প্রক্রিয়া বাতিল করা হয়েছে।\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ফাইল ডিসক্রিপ্টর %d থেকে পড়তে সমস্যা দেখা দিয়েছে।\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s।\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s দলের জন্য পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s।\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "পাসওয়ার্ড পরিবর্তিত হয়েছে।\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd দলটি বর্তমানে উপস্থিত নেই।\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' দল তৈরি করতে সমস্যা: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "অ্যাকাউন্ট তৈরি করতে ব্যর্থ: %s।\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s তৈরি করতে সমস্যা: %s।\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "ব্যবহারকারী %s'র অ্যাকাউন্ট মুছে ফেলা সম্ভব হয়নি: %s।\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s-র কোনো gid সংখ্যা নেই।\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "%jd GIDসহ কোনো দল বর্তমানে উপস্থিত নেই, মুছে ফেলা সম্ভব নয়।\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "%jd GIDসহ দলের কোনো নাম উল্লিখিত হয়নি।\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s দলটি মুছে ফেলা সম্ভব হয়নি: %s।\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ব্যবহারকারীর ব্যক্তিগত (হোম) ডিরেক্টরি মুছে ফেলতে সমস্যা" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s ব্যবহারকারীকে লক (lock) করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s ব্যবহারকারীকে আন-লক (unlock) করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "সতর্কবার্তা: %jd ID সহ দলটি বর্তমানে উপস্থিত নেই।\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s ব্যবহারকারীর তথ্য পরিবর্তন করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s দলের তথ্য পরিবর্তন করা সম্ভব হয়নি: %s।\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s-র ক্ষেত্রে পুরোনো ব্যক্তিগত (হোম) ডিরেক্টরি উপস্থিত নেই।\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s-র কোনো নতুন ব্যক্তিগত (হোম) ডিরেক্টরি উপস্থিত নেই।\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s কে %s-এ সরিয়ে নিতে সমস্যা হয়েছে: %s।\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "কনফিগারেশন ফাইল `%s' খোলা যায়নি: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "কনফিগারেশন ফাইল `%s' stat করা যায়নি: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "কনফিগারেশন ফাইল `%s' অত্যাধিক বড়" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "কনফিগারেশন ফাইল `%s' পড়া যায়নি: %s" #: lib/error.c:62 msgid "success" msgstr "সফল" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "কনফিগারেশনের দরুণ মডিউলটি নিষ্ক্রিয় হয়ে গেছে" #: lib/error.c:66 msgid "generic error" msgstr "সাধারণ সমস্যা" #: lib/error.c:68 msgid "not enough privileges" msgstr "অপর্যাপ্ত অধিকার" #: lib/error.c:70 msgid "access denied" msgstr "অনুমোদন করা হয়নি" #: lib/error.c:72 msgid "bad user/group name" msgstr "অবৈধ ব্যবহারকারী/দলের নাম" #: lib/error.c:74 msgid "bad user/group id" msgstr "অবৈধ ব্যবহারকারী/দলের id" #: lib/error.c:76 msgid "user/group name in use" msgstr "ব্যবহারকারী/দলের নাম বর্তমানে ব্যবহৃত হচ্ছে" #: lib/error.c:78 msgid "user/group id in use" msgstr "ব্যবহারকারী/দলের id বর্তমানে ব্যবহৃত হচ্ছে" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "টার্মিনালের বৈশিষ্ট্য পরিবর্তন করতে সমস্যা" #: lib/error.c:82 msgid "error opening file" msgstr "ফাইল খুলতে সমস্যা" #: lib/error.c:84 msgid "error locking file" msgstr "ফাইল লক করতে সমস্যা" #: lib/error.c:86 msgid "error statting file" msgstr "ফাইল stat করতে সমস্যা" #: lib/error.c:88 msgid "error reading file" msgstr "ফাইল পড়তে সমস্যা" #: lib/error.c:90 msgid "error writing to file" msgstr "ফাইলে লিখতে সমস্যা" #: lib/error.c:92 msgid "data not found in file" msgstr "ফাইলে তথ্য পাওয়া যায়নি" #: lib/error.c:94 msgid "internal initialization error" msgstr "অভ্যন্তরীণ প্রারম্ভিক সমস্যা" #: lib/error.c:96 msgid "error loading module" msgstr "মডিউল লোড করতে সমস্যা" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "মডিউলের সিম্বল মীমাংসা করতে সমস্যা" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "লাইব্রেরি/মডিউলের সংস্করণে গরমিল" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "আন-লক করা হলে পাসওয়ার্ডের ক্ষেত্র ফাঁকা হয়ে যাবে" #: lib/error.c:105 msgid "invalid attribute value" msgstr "অ্যাট্রিবিউটের মান বৈধ নয়" #: lib/error.c:107 msgid "invalid module combination" msgstr "বৈধ রূপে মডিউল একত্রিত করা হয়নি" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "অজানা সমস্যা" #: lib/misc.c:240 msgid "invalid number" msgstr "অবৈধ সংখ্যা" #: lib/misc.c:254 msgid "invalid ID" msgstr "অবৈধ ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%s প্রারম্ভিক কার্য `%s'-র মধ্যে উপস্থিত নেই" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s'-র মডিউল সংস্করণে গরমিল" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' মডিউলের দ্বারা `%s'-র ব্যাখ্যা করা যায়নি" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "টার্মিনালের বৈশিষ্ট্য পড়তে সমস্যা" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "টার্মিনালের বৈশিষ্ট্য নির্ধারণ করতে সমস্যা" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "টার্মিনাল থেকে পড়তে সমস্যা" #: lib/user.c:218 msgid "name is not set" msgstr "নাম নির্ধারণ করা হয়নি" #: lib/user.c:223 msgid "name is too short" msgstr "নাম অত্যাধিক ছোট" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "উল্লিখিত নাম অত্যাধিক লম্বা (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "নামের মধ্য non-ASCII অক্ষর লেখা হয়েছে" #: lib/user.c:242 msgid "name contains control characters" msgstr "নামের মধ্য নিয়ন্ত্রক (control) অক্ষর লেখা হয়েছে" #: lib/user.c:249 msgid "name contains whitespace" msgstr "নামের মধ্যে শূণ্যস্থান রয়েছে" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "নামের প্রারম্ভে হাইফেন চিহ্ন (-) উপস্থিত রয়েছে" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "নামের মধ্য অবৈধ অক্ষর `%c' লেখা হয়েছে" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s নামক ব্যবহারকারীর ক্ষেত্রে UID ধার্য করা হয়নি" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "%s নামক দলের ক্ষেত্রে GID ধার্য করা হয়নি" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd ব্যবহারকারীর নাম উল্লিখিত নেই" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "%jd দলের নাম উল্লিখিত নেই" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ব্যবহারকারীর নাম ও UID ধার্য করা হয়নি" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "দলের নাম ও GID ধার্য করা হয়নি" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ডিফল্টরূপে, ক্ষতিকর ব্যক্তিগত ডিরেক্টরি `%s' ব্যবহার প্রত্যাখ্যান করা হয়েছে" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ক্ষেত্রে ডিফল্ট মান বৈধ নয়: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ফাইল লক করতে সমস্যা: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ডিফল্ট প্রাসঙ্গিক নিরাপত্তার বিবরণ নির্ধারণ করা যায়নি: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s'-র জন্য প্রাসঙ্গিক নিরাপত্তার বিবরণ প্রাপ্ত করা যায়নি: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ডিফল্ট প্রাসঙ্গিক নিরাপত্তার বিবরণ`%s' হিসাবে নির্ধারণ করা যায়নি: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ডিফল্ট প্রাসঙ্গিক নিরাপত্তার বিবরণ নির্ধারণ করা যায়নি: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s'-র জন্য প্রাসঙ্গিক নিরাপত্তার বিবরণ প্রাপ্ত করা যায়নি: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' খোলা সম্ভব হয়নি: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' stat করা যায়নি: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' তৈরি করতে সমস্যা: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s'-র মালিকানা পরিবর্তন করতে সমস্যা: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s'-র মোড পরিবর্তন করতে ত্রুটি: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' পড়তে সমস্যা: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' লিখতে সমস্যা: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' থেকে পড়া সম্ভব হয়নি: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s কে %s-এ সরিয়ে নিতে সমস্যা হয়েছে: %s।\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s'-র মোড পরিবর্তন করতে ত্রুটি: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' পড়তে সমস্যা: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' পড়তে সমস্যা: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "স্বত্বার অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s মান `%s': `:' অনুমোদিত নয়" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s মান `%s': `:' অনুমোদিত নয়" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ফাইলের মধ্যে এন্ট্রি বর্তমানে উপস্থিত আছে" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'-এ লেখা যায়নি: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "স্বত্বার অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "দ্বন্দযুক্ত নাম সহ একটি এন্ট্রি ফাইলের মধ্যে বর্তমানে উপস্থিত আছে" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "এনক্রিপ্ট করা পাসওয়ার্ডের মধ্যে `:' ব্যবহার করা যাবে না" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "পাসওয়ার্ড এনক্রিপ্ট করতে সমস্যা" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' ও `%s' মডিউলগুলি একত্রিত করা যাবে না" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "সুপার-ইউজারের অধিকারসহ সঞ্চালিত হচ্ছে না" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "কোনো শেডো ফাইল উপস্থিত নেই -- নিষ্ক্রিয় করা হচ্ছে" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Ldap লাইব্রেরি আরম্ভ করতে সমস্যা" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP প্রোটোকল %d সংস্করণের সাথে স্থাপন করা যায়নি" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP সার্ভারের সাথে TLS মীমাংসা করা সম্ভব হয়নি" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP সার্ভারে bind করা সম্ভব হয়নি" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP সার্ভারে bind করা সম্ভব হয়নি, `%s' রূপে প্রথম প্রচেষ্টা করা হয়েছে: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ব্যবহারকারীর অবজেক্টে কোনো `%s' বৈশিষ্ট্য উপস্থিত নেই" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ব্যবহারকারীর অবজেক্ট `%s' বিনা নির্মিত হয়েছে" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রি তৈরি করতে সমস্যা: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রি পরিবর্তন করতে সমস্যা: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রির নাম পরিবর্তন করতে সমস্যা: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "অবজেক্টের মধ্যে কোনো %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP ডিরেক্টরি এন্ট্রি মুছে ফেলতে সমস্যা: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "অবজেক্টের মধ্যে %s বৈশিষ্ট্য উপস্থিত নেই" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "পাসওয়ার্ড এনক্রিপশনের বিন্যাস সমর্থিত নয়" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ডিরেক্টরির মধ্যে এই ধরনের কোনো বস্তু উপস্থিত নেই" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "কোনো `%s' বৈশিষ্ট্য পাওয়া যায়নি" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s-র জন্য LDAP ডিরেক্টরিতে পাসওয়ার্ড নির্ধারণ করতে সমস্যা: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP সার্ভারের নাম" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind পাসওয়ার্ড" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ব্যবহারকারী" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-র অনুমোদন ব্যবহারকারী" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ব্যবহারকারী তৈরি করতে Cyrus SASL সংক্রান্ত সমস্যা: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ব্যবহারকারী মুছে ফেলার সময় Cyrus SASL সংক্রান্ত সমস্যা: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL আরম্ভ করতে সমস্যা: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ব্যবহারকারীর জন্য ব্যক্তিগত (হোম) ডিরেক্টরি তৈরি করতে সমস্যা" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ব্যবহারকারীর ব্যক্তিগত (হোম) ডিরেক্টরি মুছে ফেলতে সমস্যা" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ব্যবহারকারীর ব্যক্তিগত (হোম) ডিরেক্টরি সরাতে সমস্যা" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s আরম্ভ করতে সমস্যা: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "অবৈধ ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd ID-ধারী দলের সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s নামক দলের সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd ID-ধারী ব্যবহারকারীর সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s নামক ব্যবহারকারীর সন্ধান করা হচ্ছে।\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "এন্ট্রি খুঁজে পাওয়া যায়নি।\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "সফল চিহ্নকারী প্রম্পট।\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "বিফল চিহ্নকারী প্রম্পট\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ব্যবহারকারীর ডিফল্ট অবজেক্ট ক্লাস:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ব্যবহারকারীর ডিফল্ট বৈশিষ্ট্যর নাম:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ব্যবহারকারীর ডিফল্ট বৈশিষ্ট্য আহরণ করা হচ্ছে:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ব্যবহারকারীর বৈশিষ্ট্যের পরিকাঠামো কপি করা হচ্ছে:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "ব্যাক-আপ ফাইল `%s' বর্তমানে উপস্থিত আছে এবং এটি কোনো সাধারণ ফাইল নয়" #~ msgid "backup file size mismatch" #~ msgstr "ব্যাক-আপ ফাইলের মাপে গরমিল" po/bs.po000066400000000000000000001043311471266067600124610ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Adnan Hodzic , 2007 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Bosnian (http://www.transifex.com/projects/p/fedora/language/" "bs/)\n" "Language: bs\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Odbacivanje privilegija nije uspjelo.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interna pogreška.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s nema dopuštenja za izmjenu finger podatka o %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Nepoznati kontekst korisnika" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Nije moguće postaviti zadani kontekst za /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Pogreška pri inicijalizaciji PAM-a.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Provjere autentičnosti za %s nije uspjela.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interna pogreška PAM-a `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Autentifikacija nepoznatog korisnika.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Neodgovarajući korisnik.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCIJA...] korisnik" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Pogreška pri raščlanjivanju argumenata: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Korisničko ime nije određeno.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Pogreška pri inicijalizaciji %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Korisnik %s ne postoji.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Nalog je zaključan.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Nalog nije zaključan.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nikad" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Posljednja izmjena:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Lozinka zastarijeva:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Neaktivna lozinka:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Nalog zastarijeva:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Uređivanje podataka o zastari za %s nije uspjelo: %s.\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCIJA...] [korisnik]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Korisničko ime nije određeno. Nema naziva za uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Izmjena podataka usluge finger za %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Puno ime" #: apps/lchfn.c:151 msgid "Surname" msgstr "Prezime" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Ime" #: apps/lchfn.c:172 msgid "Office" msgstr "Ured" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Uredski telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon (kućni)" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adresa e-pošte" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Podaci usluge finger nisu izmijenjene: pogreška unosa.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Podaci usluge finger izmijenjeni su.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Podaci usluge finger nisu izmijenjene: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Promjena korisničke ljuske za %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nova ljuska" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Korisnička ljuska nije promijenjena:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Korisnička ljuska je promijenjena.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCIJA...] grupa" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Naziv grupe nije određen.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Neispravan ID grupe %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Izrada grupe nije uspjela: %s.\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupa %s ne postoji.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupu %s nije moguće izbrisati: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Podjednako su određeni -L i -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Postavljanja lozinke za grupu %s nije uspjelo: %s.\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grupu %s nije moguće zaključati: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grupu %s nije moguće otključati: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grupu %s nije moguće izmijeniti: %s.\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Pogreška pri pretraživanju %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Naziv grupe nije određen. Bit će upotrijebljen %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Naziv grupe nije određen. Nema naziva za gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nije određeno korisničko ime. Bit će upotrijebljen %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCIJA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Pogreška pri otvaranju `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Pogreška pri izradi naloga za `%s': linija je nepravilno oblikovana.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Neispravan ID korisnika %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Izrada naloga s UID 0 je odbijena.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Pogreška pri izradi grupe za `%s' uz GID %jd: %s.\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Pogreška pri izradi početne mape za %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Pogreška pri postavljanju početne lozinke za %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Pogreška pri izradi korisničkog naloga za %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Izmjena lozinke za %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nova lozinka" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nova lozinka (potvrdite)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Lozinke se ne podudaraju, pokušajte ponovo.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Izmjena lozinke je otkazana.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Pogreška pri postavljanju lozinke za korisnika %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Pogreška pri postavljanju lozinke za grupu %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Lozinka je izmijenjena.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupa %jd ne postoji.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Pogreška pri izradi grupe `%s': %s.\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Izradi naloga nije uspjela: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Pogreška pri izradi %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Brisanje korisnika %s nije moguće: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nema GID broj.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Ne postoji grupa s GID %jd. Nema uklanjanja.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupa s GID %jd nije imala naziv grupe.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Brisanje grupe %s nije moguće: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "Pogreška pri uklanjanju početne mape za korisnika" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Postavljanja lozinke za korisnika %s nije uspjelo: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Korisnik %s nije mogao biti zaključan: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Korisnik %s nije mogao biti otključan: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Korisnik %s nije mogao biti izmijenjen: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Izmjena grupe %s nije moguća: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Prethodna početna mapa za %s ne postoji.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Novi naziv za mapu %s ne postoji.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Pogreška pri premještanju %s u %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "Otvaranje konfiguracijske datoteke`%s' nije uspjelo: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "Pokretanje konfiguracijske datoteke`%s' nije uspjelo: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Konfiguracijska datoteka`%s' je prevelika" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "Čitanje konfiguracijske datoteke`%s' nije uspjelo: %s" #: lib/error.c:62 msgid "success" msgstr "Uspjeh" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "Modul je onemogućen u konfiguraciji" #: lib/error.c:66 msgid "generic error" msgstr "Generička pogreška" #: lib/error.c:68 msgid "not enough privileges" msgstr "Nema dovoljno privilegija" #: lib/error.c:70 msgid "access denied" msgstr "Pristup odbijen" #: lib/error.c:72 msgid "bad user/group name" msgstr "Loše ime korisnika ili naziv grupe" #: lib/error.c:74 msgid "bad user/group id" msgstr "Loš ID korisnika ili grupe" #: lib/error.c:76 msgid "user/group name in use" msgstr "Ime korisnika ili naziv grupe je u upotrebi" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID korisnika ili grupe je u upotrebi" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "Pogreška pri rukovanju s atributima terminala" #: lib/error.c:82 msgid "error opening file" msgstr "Pogreška pri otvaranju datoteke" #: lib/error.c:84 msgid "error locking file" msgstr "Pogreška pri zaključavanju datoteke" #: lib/error.c:86 msgid "error statting file" msgstr "Pogreška datoteke statistika" #: lib/error.c:88 msgid "error reading file" msgstr "Pogreška pri čitanju datoteke" #: lib/error.c:90 msgid "error writing to file" msgstr "Pogreška pri zapisivanju u datoteku" #: lib/error.c:92 msgid "data not found in file" msgstr "Podatak nije pronađen u datoteci" #: lib/error.c:94 msgid "internal initialization error" msgstr "Interna greška inicijalizacije" #: lib/error.c:96 msgid "error loading module" msgstr "Pogreška pri učitavanju modula" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "Pogreška pri razrješavanju znaka u modulu" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "Ne podudaraju se verzije biblioteke i modula" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "Otključavanje će polje lozinke učiniti praznim" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "Nepoznata pogreška" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "Nema funkcije pokretanja %s u `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "Ne podudaraju se verzije modula u `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "Modul `%s' ne određuje `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "Pogreška pri čitanju atributa terminala" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "Pogreška pri postavljanju atributa terminala" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "Pogreška pri čitanja iz terminala" #: lib/user.c:218 msgid "name is not set" msgstr "Naziv nije zadan" #: lib/user.c:223 msgid "name is too short" msgstr "Naziv je prekratak" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "Naziv je predugačak (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "Naziv sadrži znakove koji nisu ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "Naziv sadrži kontrolne znakove" #: lib/user.c:249 msgid "name contains whitespace" msgstr "Naziv sadrži prazna mjesta (razmake)" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "Naziv započinje znakom rastavljanja" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "Naziv sadrži neispravni znak `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Korisnik %s nema UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "Grupa %s nema GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "Korisnik %jd nema naziva" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Grupa %jd nema naziva" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "Korisnik nema ni naziv ni UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "Grupa nema ni naziv ni UID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "Pogreška pri zaključavanju datoteke: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "Dohvaćanje sigurnosnog sadržaja `%s' nije uspjelo: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "Dohvaćanje sigurnosnog sadržaja u `%s' nije uspjelo: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "Dohvaćanje sigurnosnog sadržaja `%s' nije uspjelo: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "Otvaranje`%s' nije uspjelo: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "Izrada statistike`%s' nije uspjela: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "Pogreška pri izradi`%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Pogreška pri izmjeni vlasnika`%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Pogreška pri čitanju `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Pogreška pri zapisivanju `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "Čitanje iz `%s' nije moguće: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Pogreška pri premještanju %s u %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Pogreška pri otvaranju `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Pogreška pri čitanju `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Pogreška pri čitanju `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "Objekt entiteta nema atribut %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "Objekt nema atribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "Unos već postoji u datoteci" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "Zapisivanje u `%s' nije moguće: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "Objekt entiteta nema atribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "Pogreška pri šifriranju lozinke" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "Ne izvršava se s pravima superkorisnika" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "Datoteka lozinki u sjeni ne postoji -- Bit će onemogućeno" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Pogreška pri inicijalizaciji ldap biblioteke" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "Zadavanje LDAP protokola za verziju %d nije uspjelo" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS pregovaranja s LDAP poslužiteljem nije uspjelo" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "Povezivanje s LDAP poslužiteljem nije uspjelo" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "Povezivanje s LDAP poslužiteljem nije uspjelo. Prvi pokušaj kao %s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "Korisnički objekt nije imao atribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "Korisnički objekt je izrađen bez `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "Pogreška pri izradi unosa LDAP imenika: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "Pogreška pri uređivanju unosa LDAP imenika: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "Pogreška pri preimenovanju unosa LDAP imenika: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "Objekt nije imao atribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "Pogreška pri uklanjanju unosa LDAP imenika: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "Objekt nema atribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "Takav objekt ne postoji u LDAP imeniku" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "Atribut `%s' nije pronađen" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "Pogreška pri postavljanju lozinke u LDAP imeniku za %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Naziv LDAP poslužitelja" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Osnovna DN LDAP pretrage" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind lozinka" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL korisnik" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL korisnik autorizacije" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Pogreška pri izradi Cyrus SASL korisnika: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Pogreška pri uklanjanju Cyrus SASL korisnika: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Pogreška pri inicijalizaciji Cyrus SASL-a: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "Pogreška pri izradi početne mape za korisnika" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "Pogreška pri uklanjanju početne mape za korisnika" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "Pogreška pri premještanju početne mape za korisnika" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Pogreška pri inicijalizaciji %s: %s.\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Neispravan ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Pretražuje se za grupom s ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Pretražuje se za grupom s nazivom %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Pretražuje se za korisnikom s ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Pretražuje se za korisnikom s nazivom %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Unos nije pronađen.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Odzivi su uspjeli.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Odzivi nisu uspjeli.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Zadane klase korisničkih objekata:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Zadani atributi korisničkih naziva: \n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Dohvaćanje zdanih korisničkih atributa:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopiranje strukture korisnika:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "" #~ "Datoteka sigurnosnog spremanja`%s' postoji i nije regularna datoteka" #~ msgid "backup file size mismatch" #~ msgstr "Ne podudara se veličina datoteke sigurnosnog spremanja" po/ca.po000066400000000000000000001170621471266067600124450ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Bernabé Borrero , 2012 # Isabel Cama , 2004 # Miloslav Trmač , 2011 # Xavier Conde Rueda , 2004 # Robert Antoni Buj Gelonch , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-05-09 07:56-0400\n" "Last-Translator: Robert Antoni Buj Gelonch \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/fedora/language/" "ca/)\n" "Language: ca\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "No s'han pogut eliminar els privilegis.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "S'ha produït un error intern.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s no té permís per canviar la informació de finger de %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Context d'usuari desconegut" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "No s'ha pogut establir el context predeterminat per a /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "S'ha produït un error en iniciar PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Ha fallat l'autenticació per a %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "S'ha produït un error intern «%s» del PAM.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "S'ha autenticat un usuari desconegut.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "No coincideix l'usuari.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "pregunta per tota la informació" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "llista els paràmetres de l'antiguitat per a l'usuari" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "mínim de dies entre els canvis de contrasenya" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DIES" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "màxim de dies entre els canvis de contrasenya" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "data de l'últim canvi de contrasenya en dies des de l'1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "nombre de dies després de la data de venciment de la contrasenya quan el " "compte es considera inactiu" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "data del venciment de la contrasenya en dies des de l'1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "dies abans del venciment per començar a advertir a l'usuari" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCIÓ...] usuari" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "S'ha produït un error en analitzar els arguments: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "No s'ha especificat cap nom d'usuari.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "S'ha produït un error en inicialitzar %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "L'usuari %s no existeix.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "El compte està bloquejat.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "El compte no està bloquejat.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Mínim:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Màxim:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Màxim:\tCap\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Advertència:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactiu:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inactiu:\tMai\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Ha de canviar la contrasenya en el següent inici de sessió" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Mai" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Últim canvi:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "La contrasenya venç:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Contrasenya inactiva:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "El compte venç:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "No s'ha pogut modificar la informació d'antiguitat de %s: %s.\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCIÓ...] [usuari]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" "No s'ha especificat cap nom d'usuari, no hi ha cap nom per a l'uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "S'està canviant la informació del finger per a %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nom complet" #: apps/lchfn.c:151 msgid "Surname" msgstr "Cognom" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nom facilitat" #: apps/lchfn.c:172 msgid "Office" msgstr "Oficina" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telèfon de l'oficina" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telèfon particular" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adreça de correu electrònic" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "La informació del finger no ha canviat: error d'entrada.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "La informació del finger ha canviat.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "La informació del finger no ha canviat: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "S'està canviant el shell per a %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nou shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "No s'ha canviat el shell: %s.\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "S'ha canviat el shell.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid per al nou grup" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NÚM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "crea un grup de sistema" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCIÓ...] grup" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "No s'ha especificat cap nom de grup.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "L'Id. del grup %s no és vàlid\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Ha fallat la creació del grup: %s.\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "El grup %s no existeix.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "No s'ha pogut eliminar el grup %s: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "estableix el GID per al grup" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "canvia el grup perquè tingui el nom indicat" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NOM" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "contrasenya en text pla per utilitzar amb el grup" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "TEXT" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "contrasenya pre-hash per utilitzar amb l'usuari" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "llista dels administradors a afegir" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "llista dels administradors a eliminar" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "llista dels membres del grup a afegir" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "llista dels membres del grup a eliminar" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "bloqueja el grup" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "desbloqueja el grup" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "S'han especificat -L i -U a la vegada.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "No s'ha pogut definir la contrasenya per al grup %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "No s'ha pogut bloquejar el grup %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "No s'ha pogut desbloquejar el grup %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "No s'ha pogut modificar el grup %s: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "S'ha produït un error en cercar %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "llista els membres d'un grup amb nom en lloc de les afiliacions del grup per " "a l'usuari amb nom" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "tan sols llista la informació de l'afiliació per nom i no per UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "No s'ha especificat cap nom de grup, s'utilitza %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "No s'ha especificat cap nom de grup, el gid %d no té nom.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "No s'ha especificat cap nom d'usuari, s'utilitza %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s no existeix.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fitxer amb els registres d'informació d'usuari" #: apps/lnewusers.c:49 msgid "PATH" msgstr "CAMÍ" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "no creïs els directoris d'inici" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "no creïs les cues de correu" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCIÓ...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "S'ha produït un error en obrir «%s» %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "S'ha produït un error en crear un compte per a «%s»: s'ha formatat la línia " "incorrectament.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "L'Id. de l'usuari %s no és vàlid\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "No es pot crear un compte amb l'UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "S'ha produït un error en crear un grup per a «%s» amb el GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Es rebutja la utilització per defecte del directori d'inici perillós «%s» " "per a «%s»\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "S'ha produït un error en crear un directori d'inici per a %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "S'ha produït un error en crear la cua de correu per a %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" "S'ha produït un error en establir la contrasenya inicial per a %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "S'ha produït un error en crear un compte per a %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "estableix la contrasenya de grup en lloc de la contrasenya d'usuari" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nova contrasenya en text pla" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nova contrasenya xifrada" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "llegeix la nova contrasenya en text pla per al descriptor indicat" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "llegeix la nova contrasenya xifrada per al descriptor indicat" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "S'està canviant la contrasenya per a %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nova contrasenya" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nova contrasenya (confirmació)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Les contrasenyes són diferents, intenteu-ho de nou.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "S'ha cancel·lat el canvi de contrasenya.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "S'ha produït un error en llegir des del descriptor de fitxer %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" "S'ha produït un error en configurar la contrasenya per a l'usuari %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" "S'ha produït un error en configurar la contrasenya per al grup %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "S'ha canviat la contrasenya.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "crea un usuari de sistema" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "informació GECOS per al nou usuari" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "directori d'inici per al nou usuari" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "directori amb fitxers per al nou usuari" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell per al nou usuari" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid per al nou usuari" #: apps/luseradd.c:71 msgid "group for new user" msgstr "grup per al nou usuari" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "no creïs el directori d'inici per a l'usuari" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "no creïs el grup amb el mateix nom de l'usuari" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "nom comú per al nou usuari" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "nom per al nou usuari" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "cognom per al nou usuari" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "número de despatx per al nou usuari" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "número de telèfon per al nou usuari" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "número de telèfon de casa per al nou usuari" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "El grup %jd no existeix\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "S'ha produït un error en crear el grup «%s»: %s.\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "No s'ha pogut crear el compte: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "S'ha produït un error en crear %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "S'ha produït un error en crear la cua de correu: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "no eliminis el grup privat de l'usuari si l'usuari en té un" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "elimina el directori d'inici de l'usuari" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "No s'ha pogut eliminar l'usuari %s: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s no té un número de gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "No existeix cap grup amb el GID %jd, no s'elimina.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "El grup amb el GID %jd no tenia un nom de grup.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "No s'ha pogut eliminar el grup %s: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "S'ha produït un error en eliminar el directori d'inici: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "S'ha produït un error en eliminar la cua de correu: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "informació GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "directori d'inici" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "mou els continguts del directori d'inici" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "estableix el shell per a l'usuari" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "estableix l'UID per a l'usuari" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "estableix el GID primari per a l'usuari" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "canvia el nom d'inici de sessió per a l'usuari" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "contrasenya en text pla per a l'usuari" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "contrasenya pre-hash per a l'usuari" #: apps/lusermod.c:76 msgid "lock account" msgstr "bloqueja el compte" #: apps/lusermod.c:79 msgid "unlock account" msgstr "desbloqueja el compte" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "estableix el nom comú per a l'usuari" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "estableix el nom per a l'usuari" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "estableix el cognom per a l'usuari" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "estableix el número de despatx per a l'usuari" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "estableix el número de telèfon per a l'usuari" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "estableix el número de telèfon de casa per a l'usuari" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "No s'ha pogut definir la contrasenya per a l'usuari %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "L'usuari %s no s'ha pogut bloquejar: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "L'usuari %s no s'ha pogut desbloquejar: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Advertència: el grup amb l'Id. %jd no existeix\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "No s'ha pogut modificar l'usuari %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "No s'ha pogut modificar el grup %s: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "No hi ha cap directori personal antic per a %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "No hi ha cap directori personal nou per a %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "S'ha produït un error en moure %s cap a %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "no s'ha pogut obrir el fitxer de configuració «%s»: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "no s'ha pogut obtenir informació del fitxer de configuració «%s»: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "el fitxer de configuració «%s» és massa gran" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "no s'ha pogut llegir el fitxer de configuració «%s»: %s" #: lib/error.c:62 msgid "success" msgstr "correcte" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "mòdul deshabilitat per la configuració" #: lib/error.c:66 msgid "generic error" msgstr "error genèric" #: lib/error.c:68 msgid "not enough privileges" msgstr "no té prou privilegis" #: lib/error.c:70 msgid "access denied" msgstr "accés denegat" #: lib/error.c:72 msgid "bad user/group name" msgstr "nom d'usuari o de grup incorrecte" #: lib/error.c:74 msgid "bad user/group id" msgstr "Id. d'usuari o de grup incorrecte" #: lib/error.c:76 msgid "user/group name in use" msgstr "el nom d'usuari o de grup ja s'està utilitzant" #: lib/error.c:78 msgid "user/group id in use" msgstr "l'Id. d'usuari o de grup ja s'està utilitzant" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "s'ha produït un error en manipular els atributs del terminal" #: lib/error.c:82 msgid "error opening file" msgstr "s'ha produït un error en obrir el fitxer" #: lib/error.c:84 msgid "error locking file" msgstr "s'ha produït un error en bloquejar el fitxer" #: lib/error.c:86 msgid "error statting file" msgstr "s'ha produït un error en intentar obtenir l'estat del fitxer" #: lib/error.c:88 msgid "error reading file" msgstr "s'ha produït un error en llegir el fitxer" #: lib/error.c:90 msgid "error writing to file" msgstr "s'ha produït un error en escriure al fitxer" #: lib/error.c:92 msgid "data not found in file" msgstr "no s'han trobat les dades al fitxer" #: lib/error.c:94 msgid "internal initialization error" msgstr "error d'inicialització interna" #: lib/error.c:96 msgid "error loading module" msgstr "s'ha produït un error en carregar el mòdul" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "s'ha produït un error en determinar el símbol al mòdul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "la versió del mòdul o de la biblioteca no coincideix" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "en desbloquejar, el camp de la contrasenya quedarà buit" #: lib/error.c:105 msgid "invalid attribute value" msgstr "el valor de l'atribut no és vàlid" #: lib/error.c:107 msgid "invalid module combination" msgstr "la combinació de mòdul no és vàlida" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "directori d'inici de l'usuari que no és de la seva propietat" #: lib/error.c:115 msgid "unknown error" msgstr "error desconegut" #: lib/misc.c:240 msgid "invalid number" msgstr "el número no és vàlid" #: lib/misc.c:254 msgid "invalid ID" msgstr "l'Id. no és vàlid" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "no s'ha trobat cap funció d'inicialització %s a «%s»" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "la versió del mòdul no coincideix a «%s»" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "el mòdul %s no defineix «%s»" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "s'ha produït un error en llegir els atributs del terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "s'ha produït un error en configurar els atributs del terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "s'ha produït un error en llegir del terminal" #: lib/user.c:218 msgid "name is not set" msgstr "no s'ha definit el nom" #: lib/user.c:223 msgid "name is too short" msgstr "el nom és massa curt" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "el nom és massa llarg (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "el nom conté caràcters que no són ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "el nom conté caràcters de control" #: lib/user.c:249 msgid "name contains whitespace" msgstr "el nom conté espais en blanc" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "el nom comença amb un guió" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "el nom conté el caràcter no vàlid «%c»" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "l'usuari %s no té UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "no s'ha trobat l'usuari %s" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "el grup %s no té GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "no s'ha trobat el grup %s" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "l'usuari %jd no té nom" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "El grup %jd no té nom" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "l'usuari no té ni nom ni UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "el grup no té ni nom ni GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Es rebutja la utilització per defecte del directori d'inici perillós «%s»" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "El valor per defecte del camp %s no és vàlid: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "s'ha produït un error en bloquejar el fitxer: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "no s'ha pogut obtenir el context de seguretat per defecte: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "no s'ha pogut obtenir el context de seguretat de «%s»: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "no s'ha pogut establir el context de seguretat per defecte a «%s»: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "no s'ha pogut obtenir el context de seguretat per defecte: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "no s'ha pogut determinar el context de seguretat per a «%s»: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "no s'ha pogut obrir «%s»: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "no s'ha pogut obtenir informació de «%s»: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "s'ha produït un error en crear «%s»: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "S'ha produït un error en canviar el propietari de «%s»: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "S'ha produït un error en canviar el mode de «%s»: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "S'ha produït un error en llegir «%s»: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "S'ha produït un error en escriure «%s»: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "no s'ha pogut llegir des de «%s»: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "S'ha produït un error en moure %s cap a %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "S'ha produït un error en canviar el mode de «%s»: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "S'ha produït un error en llegir «%s»: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "S'ha produït un error en llegir «%s»: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "l'objecte de l'entitat no té l'atribut %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "l'objecte no té cap atribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s valor «%s»: ':' no està permès" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s valor «%s»: ':' no està permès" #: modules/files.c:1136 msgid "entry already present in file" msgstr "el registre ja està present al fitxer" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "no s'ha pogut escriure a «%s»: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "l'objecte de l'entitat no té l'atribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "el registre amb el nom conflictiu ja es troba en el fitxer" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "no es permet ':' a la contrasenya xifrada" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "s'ha produït un error en xifrar la contrasenya" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "els mòduls «%s» i «%s» no es poden combinar" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "no s'està executant amb permisos de superusuari" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "no hi ha cap fitxer shadow present -- es deshabilitarà" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "s'ha produït un error en inicialitzar la biblioteca ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "no s'ha pogut establir la versió del protocol LDAP a %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS no ha pogut negociar amb el servidor de LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "no s'ha pogut crear un vincle amb el servidor de LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "no s'ha pogut vincular amb el servidor de LDAP. El primer intent ha estat " "com a «%s»: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "l'objecte de l'usuari no tenia atribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "s'ha creat l'objecte d'usuari sense «%s»" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "s'ha produït un error en crear l'entrada del directori de LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" "s'ha produït un error en modificar el registre del directori del LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "s'ha produït un error en canviar l'entrada del directori del LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "l'objecte no tenia cap atribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "s'ha produït un error en eliminar l'entrada del directori LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "l'objecte no té cap atribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "esquema de xifratge de contrasenyes no disponible" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "aquest objecte no existeix en el directori LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "no s'ha trobat cap atribut «%s»" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" "s'ha produït un error en establir una contrasenya en el directori LDAP per a " "%s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nom del servidor LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "DN de la base de cerca de LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN del vincle de LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Contrasenya del vincle de LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Usuari del SASL del LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Usuari d'autorització del SASL del LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "s'ha produït un error del SASL en crear un usuari del Cyrus: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "s'ha produït un error del SASL en eliminar un usuari del Cyrus: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "s'ha produït un error en inicialitzar el SASL del Cyrus: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "s'ha produït un error en crear el directori personal per a l'usuari" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "s'ha produït un error en eliminar el directori personal per a l'usuari" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "s'ha produït un error en moure el directori personal per a l'usuari" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "S'ha produït un error en inicialitzar %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "L'Id. %s no és vàlid\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "S'està cercant el grup amb l'Id. %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "S'està cercant el grup anomenat %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "S'està cercant l'usuari amb l'Id. %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "S'està cercant l'usuari anomenat %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "No s'ha trobat el registre.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Les sol·licituds s'han completat amb èxit.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Les sol·licituds han fallat.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Classes d'objecte de l'usuari per defecte:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Noms d'atribut de l'usuari per defecte:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "S'estan definint els atributs de l'usuari per defecte:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "S'està copiant l'estructura de l'usuari:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "la còpia de seguretat «%s» existeix i no és un fitxer convencional" #~ msgid "backup file size mismatch" #~ msgstr "la mida del fitxer de còpia de seguretat no coincideix" po/cs.po000066400000000000000000001127631471266067600124720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Adam Pribyl , 2008 # Zdenek Chmelar , 2013 # Jan Varta , 2013 # Milan Kerslager , 2002 # Miloslav Trmač , 2011-2013 # Miloslav Trmač , 2011 # Miloslav Trmač , 2011-2015 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-07-23 21:02+0200\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Czech (http://www.transifex.com/projects/p/fedora/language/" "cs/)\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Chyba při zahazování práv.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interní chyba.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s není autorizován měnit informace finger o %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Neznámý kontext uživatele" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Nemohu nastavit implicitní kontext pro /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Chyba při inicializaci PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Chyba při autentizaci %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interní chyba PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Autentizován neznámý uživatel.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Uživatel se neshoduje.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "ptát se na všechny informace" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "vypsat informace o stárnutí pro uživatele" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minimum dní mezi změnami hesla" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DNY" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maximum dní mezi změnami hesla" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "datum poslední změny hesla ve dnech od 1. 1. 1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "počet dní po datu vypršení hesla, kdy je účet považován za neaktivní" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "datum vypršení hesla ve dnech od 1. 1. 1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "dny před vypršením, kdy začít varovat uživatele" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[VOLBY...] uživatel" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Chyba při zpracovávání argumentů: `%s'.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nebylo zadáno jméno uživatele.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Chyba při inicializaci %s: %s\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Uživatel %s neexistuje.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Účet je zablokován.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Účet není zablokován.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum:\tŽádné\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Varování:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Neaktivní:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Neaktivní:\tNikdy\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Musí změnit heslo při příštím přihlášení" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nikdy" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Poslední změna:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Heslo vyprší:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Heslo neaktivní:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Účet vyprší:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Nemohu změnit informace o %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[VOLBY...] [uživatel]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nebylo zadáno jméno uživatele, chybí jméno pro uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Měním údaje finger pro %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Plné jméno" #: apps/lchfn.c:151 msgid "Surname" msgstr "Příjmení" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Křestní jméno" #: apps/lchfn.c:172 msgid "Office" msgstr "Kancelář" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefon do kanceláře" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon domů" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-mailová adresa" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Údaje finger nezměněny: chyba vstupu.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Údaje finger změněny.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Údaje finger nezměněny: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Měním shell pro %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nový shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell nebyl změněn: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell změněn.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid pro novou skupinu" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "ČÍSLO" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "vytvořit systémovou skupinu" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[VOLBY...] skupina" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nebylo zadáno jméno skupiny.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Neplatné ID skupiny %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Chyba při vytváření skupiny: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Skupina %s neexistuje.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Skupinu %s nelze odstranit: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "nastavit GID pro skupinu" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "změnit skupinu, aby měla zadaný název" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NÁZEV" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "nešifrované heslo, které pro skupinu použít" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "ŘETĚZEC" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "předhashované heslo, které pro skupinu použít" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "seznam správců, které přidat" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "seznam správců, které odstranit" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "seznam členů skupiny, které přidat" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "seznam členů skupiny, které odstranit" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "zamknout skupinu" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "odemknout skupinu" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Použito zároveň -L a -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Nemohu nastavit heslo skupinu %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Skupinu %s nelze uzamknout: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Skupinu %s nelze odemknout: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Skupinu %s nelze změnit: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Chyba při vyhledávání %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "vypsat členy zadané skupiny místo členství ve skupinách pro zadaného " "uživatele" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "vypsat informace o členství jen podle názvu, ne UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nebylo zadáno jméno skupiny, používám %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nebylo zadáno jméno skupiny, chybí jméno pro gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nebylo zadáno jméno uživatele, používám %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s neexistuje\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "soubor se záznamy informací o uživatelích" #: apps/lnewusers.c:49 msgid "PATH" msgstr "CESTA" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "nevytvářet domovské adresáře" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "nevytvářet poštovní spooly" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[VOLBY...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Chyba při otevírání '%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Chyba při vytváření účtu pro '%s': nesprávně formátovaný řádek.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Neplatné ID uživatele %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Odmítám vytvořit účet s UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Chyba při vytváření skupiny pro `%s' s GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Odmítám implicitně použít nebezpečný domovský adresář `%s' pro %s\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Chyba při vytváření domovského adresáře pro %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Chyba vytváření pošty pro %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "chyba při nastavování hesla pro %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Chyba při vytváření uživatelského účtu pro %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "nastavit heslo skupiny místo hesla uživatele" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nové nešifrované heslo" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nové šifrované heslo" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "číst nové nešifrované heslo z daného deskriptoru" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "číst nové šifrované heslo z daného deskriptoru" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Měním heslo pro %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nové heslo" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nové heslo (potvrďte)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Hesla nesouhlasí, zkuste to znovu.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Změna hesla zrušena.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Chyba při čtení z deskriptoru souboru %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Chyba při nastavování hesla pro uživatele %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Chyba při nastavování hesla pro skupinu %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Heslo změněno.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "vytvořit systémového uživatele" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "informace GECOS pro nového uživatele" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "domovský adresář pro nového uživatele" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "adresář se soubory pro nového uživatele" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell pro nového uživatele" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid pro nového uživatele" #: apps/luseradd.c:71 msgid "group for new user" msgstr "skupina pro nového uživatele" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "nevytvářet domovský adresář pro uživatele" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "nevytvářet skupinu se stejným názvem jako uživatel" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "obecné jméno nového uživatele" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "křestní jméno nového uživatele" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "příjmení nového uživatele" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "číslo místnosti nového uživatele" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "telefonní číslo nového uživatele" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "domácí telefonní číslo nového uživatele" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Skupina %jd neexistuje\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Chyba při vytváření skupiny `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Vytváření účtu selhalo: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Chyba při vytváření %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Chyba vytváření pošty: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "neodstraňovat soukromou skupinu uživatele, pokud ji má" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "odstranit uživatelův domovský adresář" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Uživatele %s nelze odstranit: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nemá GID číslo.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Skupina s GID %jd neexistuje, neodstraňuji.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Skupina s GID %jd nemá jméno skupiny.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Skupinu %s nelze odstranit: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Chyba při odstraňování domovského adresáře: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Chyba odstraňování pošty: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "informace GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "domovský adresář" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "přesunout obsah domovského adresáře" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "nastavit shell pro uživatele" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "nastavit UID pro uživatele" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "nastavit primární GID pro uživatele" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "změnit přihlašovací jméno pro uživatele" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "nešifrované heslo pro uživatele" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "předhashované heslo pro uživatele" #: apps/lusermod.c:76 msgid "lock account" msgstr "zamknout účet" #: apps/lusermod.c:79 msgid "unlock account" msgstr "odemknout účet" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "nastavit obecné jméno pro uživatele" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "nastavit křestní jméno pro uživatele" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "nastavit příjmení pro uživatele" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "nastavit číslo místnosti pro uživatele" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "nastavit telefonní číslo pro uživatele" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "nastavit domácí telefonní číslo pro uživatele" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Chyba při nastavování hesla pro uživatele %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Uživatele %s nelze uzamknout: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Uživatele %s nelze odemknout: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Varování: Skupina s ID %jd neexistuje.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Uživatele %s nelze změnit: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Skupinu %s nelze změnit: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Starý domovský adresář pro %s neexistuje.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Nový domovský adresář pro %s nebyl vytvořen.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Chyba při přesunu %s do %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "nemohu otevřít soubor s nastavením `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "nemohu stat soubor s nastavením `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "soubor s nastavením `%s' je příliš velký" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "nemohu číst soubor s nastavením `%s': %s" #: lib/error.c:62 msgid "success" msgstr "úspěch" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul zakázán v konfiguraci" #: lib/error.c:66 msgid "generic error" msgstr "všeobecná chyba" #: lib/error.c:68 msgid "not enough privileges" msgstr "nedostatečné oprávnění" #: lib/error.c:70 msgid "access denied" msgstr "přístup odepřen" #: lib/error.c:72 msgid "bad user/group name" msgstr "chybné jméno uživatele/skupiny" #: lib/error.c:74 msgid "bad user/group id" msgstr "chybné ID uživatele/skupiny" #: lib/error.c:76 msgid "user/group name in use" msgstr "jméno uživatele/skupiny je již používáno" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID uživatele/skupiny je již používáno" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "chyba při manipulaci s atributy terminálu" #: lib/error.c:82 msgid "error opening file" msgstr "chyba při otevírání souboru" #: lib/error.c:84 msgid "error locking file" msgstr "chyba při zamykání souboru" #: lib/error.c:86 msgid "error statting file" msgstr "chyba při zjišťování údajů o souboru" #: lib/error.c:88 msgid "error reading file" msgstr "chyba při čtení souboru" #: lib/error.c:90 msgid "error writing to file" msgstr "chyba při zápisu do souboru" #: lib/error.c:92 msgid "data not found in file" msgstr "data nebyla v souboru nalezena" #: lib/error.c:94 msgid "internal initialization error" msgstr "interní chyba při inicializaci" #: lib/error.c:96 msgid "error loading module" msgstr "chyba při zavádění modulu" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "chyba při zpracování symbolů v modulu" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "nesouhlasí verze knihovny a modulu" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "po odemčení by pole hesla bylo prázdné" #: lib/error.c:105 msgid "invalid attribute value" msgstr "neplatná hodnota atributu" #: lib/error.c:107 msgid "invalid module combination" msgstr "neplatná kombinace modulů" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "domovský adresář uživatele jím není vlastněn" #: lib/error.c:115 msgid "unknown error" msgstr "neznámá chyba" #: lib/misc.c:240 msgid "invalid number" msgstr "neplatné číslo" #: lib/misc.c:254 msgid "invalid ID" msgstr "neplatné ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "chybí inicializační funkce %s v '%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "nesouhlasí verze modulu v '%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul `%s' nedefinuje `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "chyba při čtení atributů terminálu" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "chyba při nastavování atributů terminálu" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "chyba při čtení z terminálu" #: lib/user.c:218 msgid "name is not set" msgstr "jméno není nastaveno" #: lib/user.c:223 msgid "name is too short" msgstr "jméno je příliš krátké" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "jméno je příliš dlouhé (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "jméno obsahuje ne-ASCII znaky" #: lib/user.c:242 msgid "name contains control characters" msgstr "jméno obsahuje řídící znaky" #: lib/user.c:249 msgid "name contains whitespace" msgstr "jméno obsahuje mezery" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "jméno začíná pomlčkou" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "jméno obsahuje neplatný znak `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "uživatel %s nemá UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "uživatel %s nenalezen" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "skupina %s nemá GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "skupina %s nenalezena" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "uživatel %jd nemá jméno" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "skupina %jd nemá jméno" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "uživatel nemá ani jméno, ani UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "skupina nemá ani jméno, ani GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Odmítám implicitně použít nebezpečný domovský adresář `%s'" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Neplatná implicitní hodnota pole %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "chyba při zamykání souboru: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "nemohu získat implicitní kontext zabezpečení: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "nemohu získat kontext zabezpečení `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "nemohu nastavit implicitní kontext zabezpečení na `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "nemohu získat implicitní kontext zabezpečení: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "nemohu určit kontext zabezpečení pro `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "nemohu otevřít `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "nemohu zjistit informace o `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "chyba při vytváření `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Chyba při změně vlastníka `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Chyba při změně módu `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Chyba při čtení '%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Chyba při zápisu `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "nemohu číst z `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "Neplatný obsah zámku `%s'" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "Zámek %s drží proces %ju" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "Chyba při odstraňování zastaralého zámku `%s': %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "chyba při otevírání dočasného souboru pro `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "Nemohu získat zámek `%s': %s\"" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "Chyba při vyhledávání '%s': %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "Chyba při nahrazování '%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "objekt entita nemá atribut %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objekt nemá atribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s hodnota `%s': `\\n' není povoleno" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s hodnota `%s': `:' není povoleno" #: modules/files.c:1136 msgid "entry already present in file" msgstr "položka je již v souboru obsažena" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "nemohu zapsat do `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "objekt entita nemá atribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "položka s kolidujícím názvem je již v souboru obsažena" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' a `\\n' není povoleno v šifrovaném hesle" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "chyba při šifrování hesla" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "moduly `%s' a `%s' nemohou být kombinovány" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "nespuštěno s právy administrátora (root)" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "chybí soubor shadow -- zakazuji" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "chyba při inicializaci LDAP knihovny" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "nemohu nastavit protokol LDAP na verzi %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "nemohu domluvit TLS s LDAP serverem" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "nemohu se připojit k LDAP serveru" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "nemohu se připojit k LDAP serveru, první pokus jako `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "objekt uživatel nemá atribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "objekt uživatel byl vytvořen bez '%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "chyba při tvorbě LDAP položky: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "chyba při modifikaci LDAP položky: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "chyba při přejmenovávání LDAP položky: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objekt nemá atribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "chyba při odstraňování LDAP položky: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objekt nemá atribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "nepodporované schéma šifrování hesla" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "není objekt v LDAP adresáři" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "atribut '%s' nenalezen" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "chyba při nastavování hesla v LDAP adresáři pro %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Jméno LDAP serveru" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind heslo" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL uživatel" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL uživatel pro autentizaci" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Chyba Cyrus SASL při vytváření uživatele: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Chyba Cyrus SASL při odstraňování uživatele: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "chyba při inicializaci Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "chyba při vytváření domovského adresáře pro uživatele" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "chyba při odstraňování domovského adresáře pro uživatele" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "chyba při přesouvání domovského adresáře pro uživatele" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Chyba při inicializaci %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Neplatné ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Hledám skupinu s ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Hledám skupinu pojmenovanou %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Hledám uživatele s ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Hledám uživatele se jménem %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Položka nenalezena.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Výzvy uspěly.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Výzvy selhaly.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Implicitní třídy objektů uživatel:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Implicitní jména atributů uživatele:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Načítám implicitní atributy uživatele:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopíruji uživatelskou strukturu:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "záloha souboru '%s' existuje a není to normální soubor" #~ msgid "backup file size mismatch" #~ msgstr "nesouhlasí velikost záložního souboru" po/cy.po000066400000000000000000001040251471266067600124700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Translation by Owain Green , 2004 # Updated by Rhys Jones , 2005 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Welsh (http://www.transifex.com/projects/p/fedora/language/" "cy/)\n" "Language: cy\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) ? 0 : (n==2) ? 1 : (n != 8 && n != " "11) ? 2 : 3;\n" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Methwyd gollwng breintiau.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Gwall mewnol.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "Does gan %s ddim caniatâd i newid gwybodaeth 'finger' %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Cyd-destun defnyddiwr yn anhysbys" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Methu gosod y cyd-destun rhagosodedig ar gyfer /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Gwall wrth ymgychwyn PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Methodd dilysiant ar gyfer %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Gwall PAM mewnol `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Dilyswyd defnyddiwr anhysbys.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Defnyddiwr anghydwedd.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[DEWISIAD...] defnyddiwr" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Gwall wrth ddyrannu ymresymiadau: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Ni phenodwyd enw defnyddiwr.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Gwall wrth ymgychwyn %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Nid yw'r defnyddiwr %s yn bodoli.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Mae'r cyfrif ar glo.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Nid yw'r cyfrif ar glo.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Isafswm:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Uchafswm:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Rhybudd:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Anweithredol:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Byth" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Newid Diwethaf:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Cyfrinair yn Darfod:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Cyfrinair Anweithredol:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Cyfrif yn Darfod:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Methwyd addasu'r wybodaeth heneiddio ar gyfer %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[DEWISIAD...] [defnyddiwr]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Ni phenodwyd enw defnyddiwr, dim enw ar gyfer uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Yn newid gwybodaeth byseddu ar gyfer %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Enw Llawn" #: apps/lchfn.c:151 msgid "Surname" msgstr "Cyfenw" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Enw Cyntaf" #: apps/lchfn.c:172 msgid "Office" msgstr "Swyddfa" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Ffôn Swyddfa" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Ffôn Cartref" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Cyfeiriad E-Bost" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Ni newidiwyd gwybodaeth fyseddu: gwall mewnbwn.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Newidiwyd gwybodaeth fyseddu.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Ni newidiwyd gwybodaeth fyseddu: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Yn newid plisgyn ar gyfer %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Plisgyn Newydd" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Ni newidiwyd y plisgyn: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Newidiwyd y plisgyn.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[DEWISIAD...] grŵp" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Ni phenodwyd enw grŵp.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "%s yn ID grŵp annilys\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Methwyd creu'r grŵp: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Nid yw'r grŵp %s yn bodoli.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Nid oedd modd dileu'r grŵp %s: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Penodwyd -L ac -U ill dau.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Methwyd gosod cyfrinair ar gyfer y grŵp %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Nid oedd modd cloi'r grŵp %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Nid oedd modd datgloi’r grŵp %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Nid oedd modd addasu'r grŵp %s: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Gwall wrth waredu %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Ni phenodwyd enw grŵp, yn defnyddio %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Ni phenodwyd enw grŵp, dim enw ar gyfer gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Ni phenodwyd enw defnyddiwr, yn defnyddio %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "{DEWISIAD...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Gwall wrth agor `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Gwall wrth greu cyfrif ar gyfer `%s': llinell wedi'i fformadu'n anghywir.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "%s yn ID defnyddiwr annilys\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Yn gwrthod creu cyfrif â UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Gwall wrth greu grŵp ar gyfer `%s' â GID %jd: %s.\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Gwall wrth greu cyfeiriadur cartref ar gyfer %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Gwall wrth osod cyfrinair dechreuol ar gyfer %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Gwall wrth greu cyfrif defnyddiwr ar gyfer %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Yn newid cyfrinair ar gyfer %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Cyfrinair newydd" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Cyfrinair newydd (gwiriwch)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Nid yw'r cyfrineiriau'n cydweddu, ceisiwch eto.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Diddymwyd newid y cyfrinair.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Gwall wrth osod cyfrinair ar gyfer defnyddiwr %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Gwall wrth osod cyfrinair ar gyfer grŵp %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Newidiwyd y cyfrinair.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Nid yw'r grŵp %jd yn bodoli\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Gwall wrth greu grŵp `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Methodd creu'r cyfrif: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Gwall wrth greu %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Nid oedd modd dileu'r defnyddiwr %s: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "Nid oedd rhif gid gyda %s.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Nid oes grŵp â'r GID %jd yn bodoli, felly gwaredir e ddim.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Doedd gan y grŵp â'r GID %jd ddim enw.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Nid oedd modd dileu'r grŵp %s: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "gwall wrth waredu cyfeiriadur cartref ar gyfer y defnyddiwr" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Methwyd gosod cyfrinair ar gyfer y defnyddiwr %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Nid oedd modd cloi'r defnyddiwr %s: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Nid oedd modd datgloi’r defnyddiwr %s: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Nid oedd modd addasu'r defnyddiwr %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Nid oedd modd addasu'r grŵp %s: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Nid oes hen gyfeiriadur cartref ar gyfer %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Nid oes cyfeiriadur cartref newydd ar gyfer %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Gwall wrth symud %s i %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "methwyd agor ffeil gyflunio `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "methwyd statio ffeil gyflunio `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Mae ffeil gyfluniad '%s' yn rhy fawr" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "methwyd darllen ffeil gyflunio `%s': %s" #: lib/error.c:62 msgid "success" msgstr "llwyddiant" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "analluogwyd y modwl gan gyfluniad" #: lib/error.c:66 msgid "generic error" msgstr "gwall cyffredinol" #: lib/error.c:68 msgid "not enough privileges" msgstr "diffyg breintiau" #: lib/error.c:70 msgid "access denied" msgstr "gwrthodwyd cyrchiad" #: lib/error.c:72 msgid "bad user/group name" msgstr "enw defnyddiwr/grŵp gwael" #: lib/error.c:74 msgid "bad user/group id" msgstr "dynodiad defnyddiwr/grŵp gwael" #: lib/error.c:76 msgid "user/group name in use" msgstr "enw defnyddiwr/grŵp mewn defnydd" #: lib/error.c:78 msgid "user/group id in use" msgstr "dynodiad defnyddiwr/grŵp mewn defnydd" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "gwall wrth drin priodoleddau terfynell" #: lib/error.c:82 msgid "error opening file" msgstr "gwall wrth agor ffeil" #: lib/error.c:84 msgid "error locking file" msgstr "gwall wrth gloi ffeil" #: lib/error.c:86 msgid "error statting file" msgstr "gwall wrth statio ffeil" #: lib/error.c:88 msgid "error reading file" msgstr "gwall wrth ddarllen ffeil" #: lib/error.c:90 msgid "error writing to file" msgstr "gwall wrth ysgrifennu i ffeil" #: lib/error.c:92 msgid "data not found in file" msgstr "ni chanfuwyd y data yn y ffeil" #: lib/error.c:94 msgid "internal initialization error" msgstr "gwall ymgychwyn mewnol" #: lib/error.c:96 msgid "error loading module" msgstr "gwall wrth lwytho modwl" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "gwall wrth ddatrys symbol mewn modwl" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "Fersiwn llyfrgell/modwl yn wahanol" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "mi fyddai datgloi yn achosi i'r maes cyfrinair fod yn wag" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "gwall anhysbys" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "dim ffwythiant ymgychwyn %s yn `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "anghydweddiad fersiwn modwl yn `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "nid yw modiwl '%s' yn diffinio '%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "gwall wrth ddarllen priodoleddau terfynell" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "gwall wrth osod priodoleddau terfynell" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "gwall wrth ddarllen o derfynell" #: lib/user.c:218 msgid "name is not set" msgstr "enw heb ei osod" #: lib/user.c:223 msgid "name is too short" msgstr "mae'r enw rhy fyr" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "Mae enw yn rhy hir (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "mae'r enw'n cynnwys nodau di-ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "mae'r enw'n cynnwys nodau rheoli" #: lib/user.c:249 msgid "name contains whitespace" msgstr "mae'r enw'n cynnwys gofod gwyn" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "Enw yn cychwyn gyda chysylltnod" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "mae'r enw'n cynnwys nod annilys `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Nid oes UID gan defynddiwr %s" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "Nid oes GID gan grŵp %s" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "Nid oes enw gan defnyddiwr %jd" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Nid oes enw gan grŵp %jd" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "Nid oes enw neu UID gan defynddiwr %jd" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "Nid oes enw neu GID gan grŵp %jd" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Annilys yw'r gwerth rhagosodiedig o maes %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "gwall wrth gloi ffeil: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "methwyd cael cyd-destun diogelwch `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "methwyd gosod y cyd-destun diogelwch rhagosodedig i `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "methwyd cael cyd-destun diogelwch `%s': %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "methwyd agor: `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "methwyd statio: `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "gwall wrth greu: `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Gwall wrth newid perchennog `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Gwall wrth ddarllen `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Gwall wrth ysgrifennu `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "methwyd darllen o `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Gwall wrth symud %s i %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Gwall wrth agor `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Gwall wrth ddarllen `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Gwall wrth ddarllen `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "nid oes gan y gwrthrych endid briodoledd %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "nid oes gan y gwrthrych briodoledd %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "cofnod eisoes yn bresennol yn y ffeil" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "methwyd ysgrifennu i `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "nid oes gan y gwrthrych endid briodoledd %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "gwall wrth amgryptio cyfrinair" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ddim yn gweithredu â breintiau'r uwchddefnydiwr" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "dim ffeil gysgod yn bresennol -- yn analluogi" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "gwall wrth ymgychwyn y llyfrgell ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "methwyd gosod y protocol LDAP i fersiwn %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "methwyd trafod TLS â'r gweinydd LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "methwyd rhwymo â'r gweinydd LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "methwyd rhwymo â'r gweinydd LDAP, cynnig cyntaf fel `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "nid oedd priodoledd %s gan y gwrthrych defnyddiwr" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "crëwyd y gwrthrych defnyddiwr heb `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "gwall wrth greu cofnod cyfeiriadur LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "gwall wrth addasu cofnod cyfeiriadur LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "gwall wrth ail-enwi cofnod cyfeiriadur LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "nid oedd gan y gwrthrych briodoledd %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "gwall wrth waredu'r cofnod cyfeiriadur LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "nid oes gan y gwrthrych briodoledd %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "nid oes y fath wrthrych yn y cyfeiriadur LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ni chanfuwyd priodoledd `%s'" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "gwall wrth osod cyfrinair yn y cyfeiriadur LDAP ar gyfer %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Enw Gweinydd LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "EP Sail Chwilio LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "EP Rhwymo LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Cyfrinair Rhwymo LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Defnyddiwr SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Defnyddiwr Awdurdodi SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Gwall SASL Cyrus wrth greu'r defnyddiwr: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Gwall SASL Cyrus wrth greu'r defnyddiwr: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "gwall wrth ymgychwyn SASL Cyrus: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "gwall wrth greu cyfeiriadur cartref ar gyfer y defnyddiwr" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "gwall wrth waredu cyfeiriadur cartref ar gyfer y defnyddiwr" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "gwall wrth symud cyfeiriadur cartref ar gyfer y defnyddiwr" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Gwall wrth ymgychwyn %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID annilys %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Yn chwilio am grŵp â'r ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Yn chwilio am grŵp o'r enw %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Yn chwilio am ddefnyddiwr â'r ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Yn chwilio am ddefnyddiwr o'r enw %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Cofnod heb ei ganfod.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Promptiau wedi llwyddo.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Promptiau wedi methu.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Dosbarthiadau gwrthrych defnyddiwr rhagosodedig:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Enwau priodoleddau gwrthrych defnyddiwr rhagosodedig:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Yn nôl priodoleddau defnyddiwr rhagosodedig:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Yn copïo strwythur defnyddiwr:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "mae'r ffeil wrthgefn `%s' yn bodoli, ac nid yw'n ffeil arferol" #~ msgid "backup file size mismatch" #~ msgstr "maint ffeiliau wrthgefn yn wahanol i'w gilydd" po/da.po000066400000000000000000001121361471266067600124430ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Keld Simonsen , 2001, 2005 # Keld Simonsen , 2005, 2006, 2007 # Kris Thomsen , 2009-2013 # Martin Willemoes Hansen , 2004 # Miloslav Trmač , 2011 # Kris , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-04-22 04:07-0400\n" "Last-Translator: Kris \n" "Language-Team: Danish (http://www.transifex.com/projects/p/fedora/language/" "da/)\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" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Kunne ikke fjerne rettigheder.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Intern fejl.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s er ikke godkendt til at ændre finger-info for %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Ukendte brugeromgivelser" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Kan ikke sætte standardomgivelser for /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Fejl ved initiering af PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Godkendelse mislykkedes for %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Intern PAM-fejl \"%s\".\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Ukendt bruger godkendt.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Manglende bruger-overensstemmelse.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "bed om alle informationer" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "oplist brugerens forældelses-parametre" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minimum antal dage mellem adgangskode-ændringer" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DAGE" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maksimum antal dage mellem skift af adgangskode" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "dato siden sidste adgangskode-ændring i dage siden 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "antal af dage efter adgangskode-udløbsdato'en, før konto'en anses som inaktiv" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "adgangskode-udløbsdato i dage siden 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "dage før udløb begynder at advare bruger" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[TILVALG...] bruger" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Fejl ved tolkning af argumenter: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Brugernavn ikke specificeret.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Fejl ved initialisering af %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Bruger %s eksisterer ikke.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Konto er låst.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Konto er ikke låst.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maksimum:\tIngen\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Advarsel:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inaktiv:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inaktiv:\tAldrig\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Adgangskode skal ændres ved næste indlogning" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Aldrig" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Sidste ændring:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Adgangskode udløber:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Adgangskode inaktiv:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Konto udløber:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Fejl ved ændring af aldringsinformation for %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[TILVALG...] [bruger]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Intet brugernavn specificeret, intet navn for uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Skifter fingerinformation for %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Fulde navn" #: apps/lchfn.c:151 msgid "Surname" msgstr "Efternavn" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Givet navn" #: apps/lchfn.c:172 msgid "Office" msgstr "Kontor" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Kontortelefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Hjemmetelefon" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-postadresse" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger-information ikke ændret: fejl i inddata.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger-information ændret.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger-information ikke ændret: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Ændrer skal for %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Ny skal" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Skal ikke ændret: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Skal ændret.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid for ny gruppe" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUMMER" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "opret en systemgruppe" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[TILVALG...] gruppe" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Intet gruppenavn specificeret.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ugyldig gruppe-ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Oprettelse af gruppe mislykkedes: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Gruppe %s eksisterer ikke.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Gruppe %s kunne ikke slettes: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "indstil GID for gruppe" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "ændr gruppe til at have givet navn" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAVN" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "klartekst-adgangskode til brug med gruppe" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRENG" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "præ-hashet adgangskode til brug med gruppe" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "liste over administratorer som skal tilføjes" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "liste over administratorer som skal fjernes" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "liste over gruppe-medlemmer som skal tilføjes" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "liste over gruppe-medlemmer som skal fjernes" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "lås gruppe" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "lås gruppe op" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Både -L og -U specificeret.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Fejl ved indstilling af adgangskode for gruppe %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Gruppe %s kunne ikke låses: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Gruppe %s kunne ikke låses op: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Gruppe %s kunne ikke ændres: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Fejl ved opslag af %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "medlemmer af en navngivet gruppe istedet for den navngivne brugers gruppe-" "medlemsskaber" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "oplist kun medlemsskab-information efter navn, og ikke UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Intet gruppenavn specificeret, bruger %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Intet gruppenavn specificeret, intet navn for gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Brugernavn ikke specificeret, bruger %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s eksisterer ikke\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fil med optegnelser over bruger-information" #: apps/lnewusers.c:49 msgid "PATH" msgstr "STI" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "opret ikke hjemme-mapper" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "opret ikke mail-køer" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[TILVALG...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Fejl ved åbning af \"%s\": %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Fejl under opretelse af konto for \"%s\": linjen er formatteret forkert.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ugyldig bruger-ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Nægter at oprette konto med UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Fejl ved oprettelse af gruppe for \"%s\" med GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Nægter at bruge farlig hjemmemappe \"%s\" til %s som standard\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Fejl ved oprettelse af hjemmekatalog for %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Fejl under oprettelse af mailspool for %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Fejl ved indstilling af første adgangskode for %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Fejl ved oprettelse af brugerkonto for %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "indstil gruppe-adgangskode istedet for bruger-adgangskode" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "ny almindelig adgangskode" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nyt krypteret adgangskode" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "læs ny almindelig adgangskode fra given beskriver" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "læs ny krypteret adgangskode fra given beskriver" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Ændrer adgangskode for %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Ny adgangskode" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Ny adgangskode (bekræft)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Adgangskoder er ikke ens, prøv igen.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Ændring af adgangskode annulleret.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Fejl under læsning fra fil-deskriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Fejl ved indstilling af adgangskode for bruger %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Fejl ved indstilling af adgangskode for gruppe %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Adgangskode ændret.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "opret en systembruger" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "ny brugers GECOS-information" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "hjemme-mappe til ny bruger" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "mappe med filer til den nye bruger" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell til ny bruger" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid til ny bruger" #: apps/luseradd.c:71 msgid "group for new user" msgstr "gruppe til ny bruger" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "opret ikke en hjemme-mappe til brugeren" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "opret ikke en gruppe med samme navn som brugeren" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "ny brugers almindelige navn" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "ny brugers fornavn" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "ny brugers efternavn" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "ny brugers værelsesnummer" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "ny brugers telefonnummer" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "ny brugers hjemme-telefonnummer" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Gruppe %jd eksisterer ikke\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Fejl ved oprettelse af gruppe \"%s\": %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Fejl ved oprettelse af konto: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Fejl ved oprettelse af %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Fejl under oprettelse af mailspool: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "fjern ikke brugerens private gruppe, hvis brugeren har en" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "fjern brugerens hjemme-mappe" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Bruger %s kunne ikke slettes: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s havde ikke gid-nummer.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Ingen gruppe med GID %jd eksisterer, fjerner ikke.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Gruppe med GID %jd havde ikke et gruppenavn.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Gruppe %s kunne ikke slettes: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Fejl ved fjernelse af hjemmemappe: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Fejl under fjernelse af mailspool: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS-information" #: apps/lusermod.c:61 msgid "home directory" msgstr "hjemme-mappe" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "flyt hjemme-mappe-indhold" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "indstil shell for bruger" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "indstil UID for bruger" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "indstil primær GID for bruger" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "skift logind-navn for bruger" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "brugerens klartekst-adgangskode" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "brugerens præ-hashede adgangskode" #: apps/lusermod.c:76 msgid "lock account" msgstr "lås konto" #: apps/lusermod.c:79 msgid "unlock account" msgstr "lås konto op" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "indstil brugerens almindelige navn" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "indstil brugerens fornavn" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "indstil brugerens efternavn" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "indstil brugerens værelsesnummer" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "indstil brugerens telefonnummer" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "indstil brugerens hjemme-telefonnummer" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Fejl ved indstilling af adgangskode for bruger %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Bruger %s kunne ikke låses: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Bruger %s kunne ikke låses op: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Advarsel: Gruppe med ID %jd eksisterer ikke.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Bruger %s kunne ikke ændres: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Gruppe %s kunne ikke ændres: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Ingen gammel hjemmemappe for %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Ingen ny hjemmemappe for %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Fejl ved flytning af %s til %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "kunne ikke åbne konfigurationsfil \"%s\": %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "kunne ikke få stat()-oplysninger på konfigurationsfil \"%s\": %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "konfigurationsfil \"%s\" er for stor" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "kunne ikke læse konfigurationsfil \"%s\": %s" #: lib/error.c:62 msgid "success" msgstr "problemfrit" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul deaktiveret i konfigurationen" #: lib/error.c:66 msgid "generic error" msgstr "generisk fejl" #: lib/error.c:68 msgid "not enough privileges" msgstr "ikke tilstrækkelige privilegier" #: lib/error.c:70 msgid "access denied" msgstr "adgang nægtet" #: lib/error.c:72 msgid "bad user/group name" msgstr "forkert bruger- eller gruppenavn" #: lib/error.c:74 msgid "bad user/group id" msgstr "forkert bruger- eller gruppe-id" #: lib/error.c:76 msgid "user/group name in use" msgstr "bruger- eller gruppenavn i brug" #: lib/error.c:78 msgid "user/group id in use" msgstr "bruger- eller gruppe-id i brug" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "fejl ved behandling af terminalegenskaber" #: lib/error.c:82 msgid "error opening file" msgstr "fejl ved åbning af fil" #: lib/error.c:84 msgid "error locking file" msgstr "fejl ved låsning af fil" #: lib/error.c:86 msgid "error statting file" msgstr "fejl ved oplysning på fil" #: lib/error.c:88 msgid "error reading file" msgstr "fejl ved læsning af fil" #: lib/error.c:90 msgid "error writing to file" msgstr "fejl ved skrivning af fil" #: lib/error.c:92 msgid "data not found in file" msgstr "data ikke fundet i fil" #: lib/error.c:94 msgid "internal initialization error" msgstr "intern fejl ved initialisering" #: lib/error.c:96 msgid "error loading module" msgstr "fejl ved indlæsning af modul" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "fejl ved løsning af symbol i modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "uoverensstemmelse med version i bibliotek eller modul" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "oplåsning ville gøre adgangskodefeltet tomt" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ugyldig attributværdi" #: lib/error.c:107 msgid "invalid module combination" msgstr "ugyldig modulkombination" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "brugeres hjemmemappe ikke ejet af dem " #: lib/error.c:115 msgid "unknown error" msgstr "ukendt fejl" #: lib/misc.c:240 msgid "invalid number" msgstr "ugyldigt nummer" #: lib/misc.c:254 msgid "invalid ID" msgstr "ugyldig ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ingen initialiseringsfunktion %s i \"%s\"" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "uoverensstemmelse med modulversion i \"%s\"" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul \"%s\" definerer ikke \"%s\"" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "fejl ved læsning af terminal-egenskaber" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "fejl ved indstilling af terminal-egenskaber" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "fejl ved læsning fra terminal" #: lib/user.c:218 msgid "name is not set" msgstr "navn er ikke sat" #: lib/user.c:223 msgid "name is too short" msgstr "navn er for kort" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "navn er for langt (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "navn indeholder tegn udenfor ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "navn indeholder kontroltegn" #: lib/user.c:249 msgid "name contains whitespace" msgstr "navn indeholder blanktegn" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "navn starter med en bindestreg" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "navn indeholder ugyldigt tegn \"%c\"" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "bruger %s har ingen UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "bruger %s ikke fundet" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "gruppe %s har ingen GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "gruppe %s ikke fundet" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "bruger %jd har ikke noget navn" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "gruppe %jd har ikke noget navn" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "bruger har hverken et navn eller en UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "gruppe har hverken et navn eller en GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Nægter at bruge farlig hjemmemappe \"%s\" som standard" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ugyldig standardværdi af felt %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "fejl ved låsning af fil: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "kunne ikke få fat på standard sikkerhedsomgivelser: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "kunne ikke få fat på sikkerhedsomgivelser til \"%s\": %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "kunne ikke sætte standard sikkerhedsomgivelser til \"%s\": %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "kunne ikke få fat på standard sikkerhedsomgivelser: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "kunne ikke bestemme sikkerhedsomgivelser til \"%s\": %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "kunne ikke åbne \"%s\": %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "kunne ikke køre stat på \"%s\": %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "fejl ved oprettelse af \"%s\": %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Fejl ved ændring af ejer for \"%s\": %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Fejl under tilstandsskift for \"%s\": %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Fejl ved læsning af \"%s\": %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Fejl ved skrivning \"%s\": %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "kunne ikke læse fra \"%s\": %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Fejl ved flytning af %s til %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Fejl under tilstandsskift for \"%s\": %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Fejl ved læsning af \"%s\": %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Fejl ved læsning af \"%s\": %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "entitetsobjekt har ingen %s-attribut" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objektet har ikke attribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s værdi \"%s\": \":\" ikke tilladt" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s værdi \"%s\": \":\" ikke tilladt" #: modules/files.c:1136 msgid "entry already present in file" msgstr "opføringen findes allerede i filen" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "kunne ikke skrive til \"%s\": %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entitetsobjekt har ingen %s-attribut" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "element med konfliktende navn findes allerede i filen" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "\":\" ikke tilladt i krypteret adgangskode" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "fejl ved kryptering af adgangskode" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "modulerne \"%s\" og \"%s\" kan ikke kombineres" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "kører ikke med superbruger-privilegier" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "der findes ingen skyggefil -- deaktiverer" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "fejl ved initialisering af ldap-bibliotek" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "kunne ikke sætte LDAP-protokol til version %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "kunne ikke omsætte TLS med LDAP-server" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "kunne ikke binde til LDAP-server" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "kunne ikke binde til LDAP-server, første forsøg som \"%s\": %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "bruger-objektet havde ingen %s-attribut" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "brugerobjektet blev oprettet uden \"%s\"" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "fejl ved oprettelse af LDAP-mappeindgang: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "fejl ved ændring af LDAP-mappeopføring: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "fejl ved ændring af navn på LDAP-mappeindgang %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objektet havde ingen %s-attribut" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "fejl ved fjernelse af LDAP-mappeopføring: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objektet har ikke attribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "ikke understøttet krypteringsskema for adgangskode" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "ingen sådanne objekter i LDAP-mappen" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ingen \"%s\"-attribut fundet" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "fejl ved indstilling af adgangskode i LDAP-mappen for %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Navn på LDAP-server" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP søgebase DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind-adgangskode" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL-bruger" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-godkendelsesbruger" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus-SASL fejl ved oprettelse af bruger: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus-SASL fejl ved fjernelse af bruger: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "fejl ved initialisering af Cyrus-SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "fejl ved oprettelse af hjemmemappe for bruger" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "fejl ved fjernelse af hjemmemappe for bruger" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "fejl ved flytning af hjemmemappe for bruger" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Fejl ved initialisering af %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ugyldig ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Søger efter gruppe med ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Søger efter gruppe med navn %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Søger efter bruger med ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Søger efter bruger ved navn %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Opføring ikke fundet.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Forespørgsler lykkedes.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Forespørgsler mislykkedes.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Standardklasser for brugerobjekter:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Standardnavn for brugerattributter:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Henter standard brugerattributter:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopierer brugerstruktur:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "sikkerhedskopifilen \"%s\" eksisterer og er ikke en almindelig fil" #~ msgid "backup file size mismatch" #~ msgstr "uoverensstemmelse med filstørrelse for sikkerhedskopiering" po/de.po000066400000000000000000001165031471266067600124510ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Bernd Groh , 2002, 2003 # Claudia Krug , 2001 # Fabian Affolter , 2008, 2009 # Jens , 2009 # Laurin , 2011 # Mario Blättermann , 2011 # Miloslav Trmač , 2011 # Robert Scheck , 2005, 2007 # Roman Spirgi , 2012-2013 # Roman Spirgi , 2011, 2012 # Ronny Buchmann , 2005, 2006 # sknirT omiT , 2010 # Timo Trinks , 2007 # Verena , 2004 # Roman Spirgi , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-03-22 07:11-0400\n" "Last-Translator: Roman Spirgi \n" "Language-Team: German (http://www.transifex.com/projects/p/fedora/language/" "de/)\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Privilegien können nicht abgegeben werden.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interner Fehler.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ist nicht autorisiert, Finger-Einstellungen von %s zu ändern\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Unbekannter Benutzerinhalt" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Vorgangskontext für /etc/passwd kann nicht gesetzt werden\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Fehler beim Initialisieren von PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Authentifizierung fehlgeschlagen: %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interner PAM-Fehler »%s«.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Unbekannter Benutzer authentifiziert.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Benutzer stimmt nicht überein.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "Bei allen Informationen nachfragen" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "Alterungs-Parameter für den Benutzer auflisten" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "Minimale Zeitspanne in Tagen zwischen Passwortänderungen" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "TAGE" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "Maximale Zeitspanne in Tagen zwischen Passwortänderungen" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "Datum der letzten Passwortänderung in Tagen seit 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "Anzahl Tage nach Ablaufdatum des Passworts, an dem das Konto als inaktiv " "angesehen wird" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "Zeitraum seit dem Passwort-Ablaufdatum in Tagen seit 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "Benachrichtung des Benutzers eine bestimmte Anzahl Tage vor dem Ablaufdatum" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] Benutzer" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Fehler beim Verarbeiten von Argumenten: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Es wurde kein Benutzername angegeben.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Fehler beim Initialisieren von %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Benutzer %s existiert nicht.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Benutzerkonto ist gesperrt.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Benutzerkonto ist nicht gesperrt.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum:\tNicht festgelegt\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Warnung:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Nicht aktiv:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inaktiv:\tNiemals\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Passwort muss beim nächsten Login geändert werden" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nie" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Letzte Änderung:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Passwort läuft ab:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Passwort nicht aktiv:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Benutzerkonto läuft ab:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Ablauf-Einstellungen konnten nicht geändert werden für %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [Benutzer]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Kein Benutzername angegeben, kein Name für uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Finger-Einstellungen für %s werden geändert.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Vollständiger Name" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nachname" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Vorname" #: apps/lchfn.c:172 msgid "Office" msgstr "Büro" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefon (Arbeit)" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon (Zuhause)" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-Mail-Adresse" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger-Informationen nicht geändert: Eingabefehler.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger-Informationen geändert.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger-Informationen nicht geändert: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Shell für %s wird geändert.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Neue Shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell nicht geändert: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell geändert.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid für neue Gruppe" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "Eine System-Gruppe erstellen" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] Gruppe" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Es wurde kein Gruppenname angegeben.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ungültige Gruppenkennung %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Die Erzeugung der Gruppe ist fehlgeschlagen: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Gruppe %s existiert nicht.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Gruppe %s konnte nicht gelöscht werden: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "GID für Gruppe festlegen" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "Gruppe auf den vorgegebenen Namen ändern" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAME" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "Klartext-Passwort für die Gruppen-Benutzung" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRING" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "Vor-verschlüsseltes Passwort (pre-hash) für die Benutzung der Gruppe" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "Hinzuzufügende Administratoren-Liste" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "Zu entfernende Administratoren-Liste" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "Hinzuzufügende Mitglieder-Liste" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "Zu entfernende Mitgliederliste" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "Gruppe sperren" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "Gruppe entsperren" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Sowohl -L als auch -U angegeben.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Passwort konnte nicht gesetzt werden für Gruppe %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Gruppe %s konnte nicht gesperrt werden: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Gruppe %s konnte nicht entsperrt werden: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Gruppe %s konnte nicht geändert werden: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Fehler beim Nachschlagen von %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "Auflistung von Mitgliedern einer benannten Gruppe anstelle der Gruppen-" "Mitgliedschaften des benannten Benutzer" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" "Auflistung der Mitgliedschafts-Information nach Name und nicht nach UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Kein Gruppenname angegeben, %s wird benutzt.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Kein Gruppenname angegeben, kein Name für gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Kein Benutzername angegeben, %s wird benutzt.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s existiert nicht\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "Datei mit Einträgen der Benutzerinformationen" #: apps/lnewusers.c:49 msgid "PATH" msgstr "PFAD" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "Erstelle keine Home-Verzeichnisse" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "Erstelle keine Mail-Spools" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Fehler beim Öffnen von »%s«: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Fehler beim Erstellen des Benutzerkontos für `»%s«: Zeile inkorrekt " "formatiert.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ungültige Benutzerkennung %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Erstellen eines Benutzerkontos mit UID 0 verweigert.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Fehler beim Erstellen der Gruppe für »%s« mit GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Verwendung des unsachgemäßen Benutzerordners »%s« für %s wird standardmäßig " "abgelehnt\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Fehler beim Erstellen des persönlichen Ordners für %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Fehler beim Erstellen von Mail-Zwischenspeicher für %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Fehler beim Setzen des Initialpassworts für %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Fehler beim Erstellen des Benutzerkontos für %s: %s.\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "Setze Gruppen-Passwort anstelle Benutzerpasswort" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "Neues Klartext-Passwort" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "Neues verschlüsseltes Passwort" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "Lese neues Klartext-Passwort aus dem gegebenen Deskriptor" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "Lese neues verschlüsseltes Passwort aus dem gegebenen Deskriptor" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Passwort für »%s« geändert.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Neues Passwort" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Neues Passwort (Bestätigen)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Passwörter stimmen nicht überein. Noch einmal eingeben.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Passwortänderung abgebrochen.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Fehler beim Lesen von Dateideskriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Fehler beim Erstellen des Passworts für Benutzer %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Fehler beim Erstellen des Passworts für Gruppe %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Passwort geändert.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "Erstelle einen System-Benutzer" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS-Information für neuen Benutzer" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "Home-Verzeichnis für neuen Benutzer" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "Daten-Verzeichnis für neuen Benutzer" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "Shell für neuen Benutzer" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "UID für neuen Benutzer" #: apps/luseradd.c:71 msgid "group for new user" msgstr "Gruppe für neuen Benutzer" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "Erstelle kein Home-Verzeichnis für den Benutzer" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "Erstelle keine Gruppe mit dem gleichen Namen des Benutzers" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "Gebräuchlicher Name für neuen Benutzer" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "Vorname des neuen Benutzers" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "Nachname des neuen Benutzers" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "Raum-Name für neuen Benutzer" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "Telefonnummer für neuen Benutzer" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "Private Telefonnummer für neuen Benutzer" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Gruppe %jd existiert nicht\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Fehler beim Erstellen der Gruppe »%s«: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Die Erzeugung des Benutzerkontos ist fehlgeschlagen: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Fehler bei der Erzeugung von %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Fehler beim Erstellen von Mail-Zwischenspeicher: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" "Entferne die private Gruppe des Benutzers nicht, falls der Benutzer eine hat" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "Entferne das Home-Verzeichnis des Benutzers" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Benutzer %s konnte nicht gelöscht werden: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s hatte keine GID-Nummer.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Gruppe mit GID %jd existiert nicht, wird nicht entfernt.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Gruppe mit GID %jd hat keinen Gruppennamen.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Gruppe %s konnte nicht gelöscht werden: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Fehler beim Entfernen des persönlichen Ordners: %s\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Fehler beim Entfernen von Mail-Zwischenspeicher: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS-Information" #: apps/lusermod.c:61 msgid "home directory" msgstr "Home-Verzeichnis" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "Verschiebe die Inhalte des Home-Verzeichnisses" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "Shell für Benutzer festlegen" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "UID für Benutzer festlegen" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "Primäre GID für Benutzer festlegen" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "Ändere Login-Name des Benutzers" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "Klartext-Passwort des Benutzers" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "Vor-verschlüsseltes Passwort (pre-hash) des Benutzers" #: apps/lusermod.c:76 msgid "lock account" msgstr "Konto sperren" #: apps/lusermod.c:79 msgid "unlock account" msgstr "Konto entsperren" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "Gebräuchlicher Name für den Benutzer wählen" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "Vornamen des Benutzers festlegen" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "Nachname des Benutzers festlegen " #: apps/lusermod.c:87 msgid "set room number for user" msgstr "Raum-Nummer des Benutzers festlegen" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "Telefonnummer des Benutzers festlegen" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "Private Telefonnummer des Benutzers festlegen" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Passwort konnte für Benutzer %s nicht eingestellt werden: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Benutzer %s konnte nicht gesperrt werden: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Benutzer %s konnte nicht freigegeben werden: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Warnung: Gruppe mit Kennung %jd existiert nicht.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Benutzer %s konnte nicht geändert werden: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Gruppe %s konnte nicht geändert werden: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Kein alter persönlicher Ordner für %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Kein neuer persönlicher Ordner für %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Fehler beim Verschieben von %s zu %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "Konfigurationsdatei »%s« konnte nicht geöffnet werden: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "stat konnte nicht ausgeführt werden für Konfigurationsdatei »%s«: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Konfigurationsdatei »%s« ist zu groß" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "Konfigurationsdatei »%s« konnte nicht gelesen werden: %s" #: lib/error.c:62 msgid "success" msgstr "Erfolg" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "Modul durch die Konfiguration deaktiviert" #: lib/error.c:66 msgid "generic error" msgstr "Allgemeiner Fehler" #: lib/error.c:68 msgid "not enough privileges" msgstr "Keine ausreichenden Berechtigungen" #: lib/error.c:70 msgid "access denied" msgstr "Zugriff verweigert" #: lib/error.c:72 msgid "bad user/group name" msgstr "Ungültiger Benutzer-/Gruppenname" #: lib/error.c:74 msgid "bad user/group id" msgstr "Ungültige Benutzer-/Gruppenkennung" #: lib/error.c:76 msgid "user/group name in use" msgstr "Benutzer-/Gruppenname wird bereits verwendet" #: lib/error.c:78 msgid "user/group id in use" msgstr "Benutzer-/Gruppenkennung wird bereits verwendet" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "Fehler beim Bearbeiten der Terminalattribute" #: lib/error.c:82 msgid "error opening file" msgstr "Fehler beim Öffnen der Datei" #: lib/error.c:84 msgid "error locking file" msgstr "Fehler beim Sperren der Datei" #: lib/error.c:86 msgid "error statting file" msgstr "Fehler beim Ermitteln der Dateiinformationen" #: lib/error.c:88 msgid "error reading file" msgstr "Fehler beim Lesen der Datei" #: lib/error.c:90 msgid "error writing to file" msgstr "Fehler beim Schreiben in die Datei" #: lib/error.c:92 msgid "data not found in file" msgstr "Daten wurden in der Datei nicht gefunden" #: lib/error.c:94 msgid "internal initialization error" msgstr "Interner Fehler bei der Initialisierung" #: lib/error.c:96 msgid "error loading module" msgstr "Fehler beim Laden des Moduls" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "Fehler beim Auflösen des Symbols im Modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "Bibliothek-/Modulversion stimmt nicht überein" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "Entsperrung würde das Passwortfeld leer machen" #: lib/error.c:105 msgid "invalid attribute value" msgstr "Ungültiger Attributwert" #: lib/error.c:107 msgid "invalid module combination" msgstr "Ungültige Modulkombination" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "Home-Verzeichnis für neuen Benutzer" #: lib/error.c:115 msgid "unknown error" msgstr "Unbekannter Fehler" #: lib/misc.c:240 msgid "invalid number" msgstr "Ungültige Nummer" #: lib/misc.c:254 msgid "invalid ID" msgstr "Ungültige Kennung" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "Keine Initialisierungsfunktion %s in »%s«" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "Fehlende Übereinstimmung von Modulversionen in »%s«" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "Modul %s definiert »%s« nicht" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "Fehler beim Lesen der Terminalattribute" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "Fehler beim Einstellen der Terminalattribute" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "Fehler beim Lesen vom Terminal" #: lib/user.c:218 msgid "name is not set" msgstr "Name ist nicht definiert" #: lib/user.c:223 msgid "name is too short" msgstr "Name ist zu kurz" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "Name ist zu lang (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "Name enthält Nicht-ASCII-Zeichen" #: lib/user.c:242 msgid "name contains control characters" msgstr "Name enthält Kontrollzeichen" #: lib/user.c:249 msgid "name contains whitespace" msgstr "Name enthält Leerzeichen" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "Name beginnt mit einem Bindestrich" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "Name enthält ungültiges Zeichen »%c«" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Benutzer %s hat keine Benutzerkennung" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "Benutzer %s nicht gefunden" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "Gruppe %s hat keine Gruppenkennung" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "Gruppe %s nicht gefunden" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "Benutzer %jd ist namenlos" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Gruppe %jd ist namenlos" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "Benutzer ist namenlos und hat keine Benutzerkennung" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "Gruppe ist namenlos und hat keine Gruppenkennung" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Verwendung des unsachgemäßen Benutzerordners »%s« wird standardmäßig " "abgelehnt" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ungültiger Wert in Feld %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "Fehler beim Sperren der Datei: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "Standard-Sicherheitskontext konnte nicht gesetzt werden: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "Sicherheitskontext »%s« konnte nicht ermittelt werden: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "Sicherheitskontext konnte nicht nach »%s« geschrieben werden: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "Standard-Sicherheitskontext konnte nicht gesetzt werden: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "Sicherheitskontext »%s« konnte nicht bestimmt werden: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "»%s« konnte nicht geöffnet werden: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "stat »%s« konnte nicht ausgeführt werden: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "Fehler beim Erzeugen von »%s«: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Fehler beim Ändern des Eigentümers von »%s«: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Fehler beim Ändern des Modus von `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Fehler beim Lesen von »%s«: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Fehler beim Schreiben von »%s«: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "»%s« konnte nicht gelesen werden: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Fehler beim Verschieben von %s zu %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Fehler beim Ändern des Modus von `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Fehler beim Lesen von »%s«: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Fehler beim Lesen von »%s«: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "Entitätsobjekt besitzt kein %s-Attribut" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "Objekt besitzt kein Attribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s-Wert »%s«: »:« ist nicht erlaubt" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s-Wert »%s«: »:« ist nicht erlaubt" #: modules/files.c:1136 msgid "entry already present in file" msgstr "Eintrag bereits in der Datei vorhanden" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "Nach »%s« konnte nicht geschrieben werden: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "Entitätsobjekt besitzt kein %s-Attribut" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "Eintrag mit kollidierendem Namen bereits in der Datei vorhanden" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "»:« ist nicht erlaubt in verschlüsselten Passwörtern" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "Fehler beim Verschlüsseln des Passworts" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "Die Module »%s« und »%s« können nicht miteinander kombiniert werden" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "Keine Ausführung mit Administrator-Rechten." #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "Keine Shadow-Datei vorhanden -- wird deaktiviert." #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Fehler bei der Initialisierung der LDAP-Bibliothek" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP-Protokoll konnte nicht auf Version %d eingestellt werden" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS-Serververbindung konnte nicht ausgehandelt werden" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "Verbindung zum LDAP-Server konnte nicht aufgebaut werden" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "Verbindung zum LDAP-Server konnte nicht aufgebaut werden, erster Versuch als " "»%s«: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "Benutzerobjekt hatte kein Attribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "Benutzerobjekt wurde ohne »%s« erstellt" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "Fehler beim Erstellen eines LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "Fehler bei der Änderung des LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "Fehler beim Umbenennen des LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "Objekt hatte kein Attribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "Fehler beim Entfernen des LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "Objekt besitzt kein Attribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "Nicht unterstütztes Passwort-Verschlüsselungsschema" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "Kein entsprechendes Objekt im LDAP-Verzeichnis vorhanden" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "Kein »%s«-Attribut gefunden" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "Fehler beim Einrichten des Passworts im LDAP-Verzeichnis für %s: %s." #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP-Servername" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Basissuche-DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind-Passwort" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL-Benutzer" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-Autorisierungsbenutzer" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL-Fehler beim Erstellen des Benutzers: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL-Fehler beim Entfernen des Benutzers: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Fehler beim Initialisieren von Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "Fehler beim Erstellen des persönlichen Ordners für Benutzer" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "Fehler beim Entfernen des persönlichen Ordners für Benutzer" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "Fehler beim Verschieben des persönlichen Ordners für Benutzer" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Fehler beim Initialisieren von %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ungültige Kennung %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Nach Gruppe mit Kennung %jd wird gesucht.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Nach Gruppe mit Namen %s wird gesucht.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Nach Benutzer mit Kennung %jd wird gesucht.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Nach Benutzer mit Namen %s wird gesucht.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Eintrag wurde nicht gefunden.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Eingabeaufforderungen erfolgreich.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Eingabeaufforderungen fehlgeschlagen.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Standardmäßige Benutzerobjekt-Klassen:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Standardmäßige Benutzerattribut-Namen:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Nach standardmäßigen Benutzerattributen wird gesucht:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Benutzerstrukturen werden kopiert:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "Sicherungsdatei »%s« ist vorhanden und keine reguläre Datei" #~ msgid "backup file size mismatch" #~ msgstr "Sicherungsdateigröße passt nicht" po/de_CH.po000066400000000000000000001062251471266067600130230ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Fabian Affolter , 2009 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/" "fedora/language/de_CH/)\n" "Language: de_CH\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Privilegien können nicht abgegeben werden.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interner Fehler.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ist nicht autorisiert Finger-Einstellungen von %s zu ändern\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Unbekannter Benutzerinhalt" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Kann Standard-Kontext für /etc/passwd nicht setzen\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Fehler beim Initialisieren von PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Authentifizierung fehlgeschlagen: %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interner PAM-Fehler `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Unbekannter Benutzer authentifiziert.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Benutzer stimmt nicht überein.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] Benutzer" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Fehler beim Parsen von Argumenten: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Es wurde kein Benutzername angegeben.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Fehler beim Initialisieren von %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Benutzer %s existiert nicht.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Benutzerkonto ist gesperrt.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Benutzerkonto ist nicht gesperrt.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Warnung:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Nicht aktiv:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nie" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Letzte Änderung:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Passwort läuft ab:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Passwort nicht aktiv:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Benutzerkonto läuft ab:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Ablauf-Einstellungen konnten nicht geändert werden für %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Kein Benutzername angegeben, kein Name für uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Finger-Einstellungen für %s werden geändert.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Vollständiger Name" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nachname" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Vorname" #: apps/lchfn.c:172 msgid "Office" msgstr "Büro" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefon (Arbeit)" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon (Zuhause)" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-Mail-Adresse" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger-Informationen nicht geändert: Eingabefehler.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger-Informationen geändert.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger-Informationen nicht geändert: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Shell für %s ändern.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Neue Shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell nicht geändert: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell geändert.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] Gruppe" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Es wurde kein Gruppenname angegeben.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ungültige Gruppen-ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Die Erzeugung der Gruppe ist fehlgeschlagen: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Gruppe %s existiert nicht.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Gruppe %s konnte nicht gelöscht werden: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Sowohl -L als auch -U angegeben.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Passwort konnte nicht gesetzt werden für Gruppe %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Gruppe %s konnte nicht gesperrt werden: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Gruppe %s konnte nicht entsperrt werden: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Gruppe %s konnte nicht modifiziert werden: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Fehler beim Nachschlagen von %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Kein Gruppenname angegeben, benutze %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Kein Gruppenname angegeben, kein Name für gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Kein Benutzername angegeben, benutze %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Fehler beim Öffnen von `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Fehler beim Erstellen des Benutzerkontos für `%s': Zeile inkorrekt " "formatiert.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ungültige Benutzer-ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Erstellen eines Benutzerkontos mit UID 0 verweigert.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Fehler beim Erstellen der Gruppe für `%s' mit GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Fehler beim Erstellen des persönlichen Verzeichnisses für %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Fehler beim Setzen des Initialpassworts für %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Fehler beim Erstellen des Benutzerkontos für %s: %s.\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Passwort für `%s geändert.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Neues Passwort" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Neues Passwort (Bestätigen)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Passwörter stimmen nicht überein. Noch einmal eingeben.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Passwortänderung abgebrochen.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Fehler beim Erstellen des Passworts für Benutzer %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Fehler beim Erstellen des Passworts für Gruppe %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Passwort geändert.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Gruppe %jd existiert nicht\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Fehler beim Erstellen der Gruppe `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Die Erzeugung des Benutzerkontos ist fehlgeschlagen: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Fehler bei der Erzeugung von %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Benutzer %s konnte nicht gelöscht werden: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s hatte keine GID-Nummer.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Gruppe mit GID %jd existiert nicht, entferne sie nicht.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Gruppe mit GID %jd hat keinen Gruppennamen.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Gruppe %s konnte nicht gelöscht werden: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "Fehler beim Entfernen des persönlichen Verzeichnisses für Benutzer" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Passwort konnte für Benutzer %s nicht eingestellt werden: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Benutzer %s konnte nicht gesperrt werden: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Benutzer %s konnte nicht freigegeben werden: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Warnung: Gruppe mit ID %jd existiert nicht.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Benutzer %s konnte nicht geändert werden: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Gruppe %s konnte nicht modifiziert werden: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Kein altes persönliches Verzeichnis für %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Kein neues persönliches Verzeichnis für %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Fehler beim Verschieben von %s zu %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "stat konnte nicht ausgeführt werden für Konfigurationsdatei `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Konfigurationsdatei `%s' ist zu gross" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "Konfigurationsdatei `%s' konnte nicht gelesen werden: %s" #: lib/error.c:62 msgid "success" msgstr "Erfolg" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "Modul durch die Konfiguration deaktiviert" #: lib/error.c:66 msgid "generic error" msgstr "Allgemeiner Fehler" #: lib/error.c:68 msgid "not enough privileges" msgstr "Keine ausreichenden Berechtigungen" #: lib/error.c:70 msgid "access denied" msgstr "Zugriff verweigert" #: lib/error.c:72 msgid "bad user/group name" msgstr "Ungültiger Benutzer/Gruppenname" #: lib/error.c:74 msgid "bad user/group id" msgstr "Ungültige Benutzer/Gruppen ID" #: lib/error.c:76 msgid "user/group name in use" msgstr "Benutzer/Gruppenname wird bereits verwendet" #: lib/error.c:78 msgid "user/group id in use" msgstr "Benutzer/Gruppen ID wird bereits verwendet" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "Fehler beim Bearbeiten der Terminalattribute" #: lib/error.c:82 msgid "error opening file" msgstr "Fehler beim Öffnen der Datei" #: lib/error.c:84 msgid "error locking file" msgstr "Fehler beim Sperren der Datei" #: lib/error.c:86 msgid "error statting file" msgstr "Fehler beim Ermitteln der Dateiinformationen" #: lib/error.c:88 msgid "error reading file" msgstr "Fehler beim Lesen der Datei" #: lib/error.c:90 msgid "error writing to file" msgstr "Fehler beim Schreiben in die Datei" #: lib/error.c:92 msgid "data not found in file" msgstr "Daten wurden in der Datei nicht gefunden" #: lib/error.c:94 msgid "internal initialization error" msgstr "Interner Fehler bei der Initialisierung" #: lib/error.c:96 msgid "error loading module" msgstr "Fehler beim Laden des Moduls" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "Fehler beim Auflösen des Symbols im Modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "Bibliothek/Modulversion stimmt nicht überein" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "Entsperrung würde das Passwortfeld leer machen" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "Unbekannter Fehler" #: lib/misc.c:240 msgid "invalid number" msgstr "Ungültige Nummer" #: lib/misc.c:254 msgid "invalid ID" msgstr "Ungültige ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "keine Initialisierungsfunktion %s in `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "Fehlende Übereinstimmung von Modulversionen in `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "Modul %s definiert `%s' nicht" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "Fehler beim Lesen der Terminalattribute" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "Fehler beim Einstellen der Terminalattribute" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "Fehler beim Lesen vom Terminal" #: lib/user.c:218 msgid "name is not set" msgstr "Name ist nicht gesetzt" #: lib/user.c:223 msgid "name is too short" msgstr "Name ist zu kurz" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "Name ist zu lang (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "Name enthält nicht-ASCII Zeichen" #: lib/user.c:242 msgid "name contains control characters" msgstr "Name enthält Kontrollzeichen" #: lib/user.c:249 msgid "name contains whitespace" msgstr "Name enthält Leerzeichen" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "Name beginnt mit einem Bindestrich" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "Name enthält ungültiges Zeichen `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Benutzer %s hat keine Benutzernummer (UID)" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "Gruppe %s hat keine Gruppennummer (GID)" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "Benutzer %jd ist namenlos" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Gruppe %jd ist namenlos" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "Benutzer ist namenlos und hat keine Benutzernummer (UID)" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "Gruppe ist namenlos und hat keine Gruppennummer (GID)" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ungültiger Wert in Feld %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "Fehler beim Sperren der Datei: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "konnte Standard-Sicherheitskontext nicht setzen: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "konnte Sicherheitskontext `%s' nicht bekommen: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "Sicherheitskontext konnte nicht nach `%s' geschrieben werden: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "konnte Standard-Sicherheitskontext nicht setzen: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "konnte Sicherheitskontext `%s' nicht bestimmen: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' konnte nicht geöffnet werden: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "stat `%s' konnte nicht ausgeführt werden: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "Fehler beim Erzeugen von `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Fehler beim Ändern des Eigentümers von `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Fehler beim Lesen von `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Fehler beim Schreiben von `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' konnte nicht gelesen werden: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Fehler beim Verschieben von %s zu %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Fehler beim Öffnen von `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Fehler beim Lesen von `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Fehler beim Lesen von `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "Entitätsobjekt besitzt kein %s Attribut" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "Objekt besitzt kein Attribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s Wert`%s': `:' nicht erlaubt" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s Wert`%s': `:' nicht erlaubt" #: modules/files.c:1136 msgid "entry already present in file" msgstr "Eintrag bereits in der Datei vorhanden" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "nach `%s' konnte nicht geschrieben werden: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "Entitätsobjekt besitzt kein %s Attribut" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' nicht erlaubt in verschlüsselten Passwörtern" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "Fehler beim Verschlüsseln des Passworts" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "Keine Ausführung mit Administrator-Rechten." #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "Keine Shadow-Datei vorhanden -- Deaktiviere." #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Fehler bei der Initialisierung der LDAP-Bibliothek" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP-Protokoll konnte nicht auf Version %d eingestellt werden" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS-Serververbindung konnte nicht ausgehandelt werden" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "Konnte nicht zum LDAP-Server verbinden" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "Konnte nicht zum LDAP-Server verbinden, erster Versuch `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "Benutzerobjekt hatte kein Attribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "Benutzerobjekt wurde ohne `%s' erstellt" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "Fehler beim Erstellen eines LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "Fehler bei der Änderung des LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "Fehler beim Umbenennen des LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "Objekt hatte kein Attribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "Fehler beim Entfernen des LDAP-Verzeichniseintrags: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "Objekt besitzt kein Attribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "nicht unterstütztes Passwort-Verschlüsselungsschema" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "Kein entsprechendes Objekt im LDAP-Verzeichnis vorhanden" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "kein `%s' Attribut gefunden" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "Fehler beim Einrichten des Passworts im LDAP-Verzeichnis für %s: %s." #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP-Servername" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Suche Basis-DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind-Passwort" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL-Benutzer" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-Autorisierungsbenutzer" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL-Fehler beim Erstellen des Benutzers: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL-Fehler beim Entfernen des Benutzers: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Fehler beim Initialisieren von Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "Fehler beim Erstellen des persönlichen Verzeichnisses für Benutzer" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "Fehler beim Entfernen des persönlichen Verzeichnisses für Benutzer" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "Fehler beim Verschieben des persönlichen Verzeichnisses für Benutzer" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Fehler beim Initialisieren von %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ungültige ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Suche nach Gruppe mit ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Suche nach Gruppe mit Namen %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Suche nach Benutzer mit ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Suche nach Benutzer mit Namen %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Eintrag wurde nicht gefunden.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Prompts erfolgreich.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Prompts fehlgeschlagen.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Standardmässige Benutzerobjekt-Klassen:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Standardmässige Benutzerattribut-Namen:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Suche nach standardmässigen Benutzerattributen:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Benutzerstrukturen kopieren:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "Backup-Datei `%s' ist vorhanden und keine reguläre Datei" #~ msgid "backup file size mismatch" #~ msgstr "Sicherungsdateigrösse passt nicht" po/el.po000066400000000000000000001343521471266067600124630ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Dimitris Glaros , 2011, 2012 # Dimitris Glezos , 2006, 2007 # ioza1964 , 2013 # Kostas Papadimas , 2009 # Miloslav Trmač , 2011 # Simos Xenitellis , 2006 # mitzie , 2013 # Thalia Papoutsaki , 2010 # KAT.RAT12 , 2013 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-08-06 04:52-0400\n" "Last-Translator: ioza1964 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/fedora/language/" "el/)\n" "Language: el\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Αποτυχία εγκατάλειψης δικαιωμάτων.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Εσωτερικό σφάλμα.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "O %s δεν επιτρέπεται να τροποποιήσει τις πληροφορίες finger του %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Άγνωστο πλαίσιο χρήστη" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Αδυναμία ορισμού προεπιλεγμένου περιβάλλοντος για /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Σφάλμα αρχικοποίησης PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Η πιστοποίηση απέτυχε για %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Εσωτερικό σφάλμα PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Πιστοποιήθηκε άγνωστος χρήστης.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Κακό ταίριασμα χρήστη.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "έτοιμο για όλες τις πληροφορίες " #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "προβάλετε χρονικές παραμέτρους για τον χρήστη στη λίστα " #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "ελάχιστος αριθμός ημερών ανάμεσα στις αλλαγές " #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "ΗΜΕΡΕΣ" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "μέγιστος αριθμός ημερών μεταξύ των αλλαγών κωδικών πρόσβασης " #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "ημερομηνία τελευταίας αλλαγής κωδκού από τις 1/1/70." #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "αριθμός ημερών μετά την λήξη του κωδικού πρόσβασης όταν ο λογαρισμός είναι " "ανενεργός " #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "ημερομηνία λήξης κωδικού πρόσβασης σε μέρες από 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "μέρες πριν την ειδοποίηση του χρήστη για την λήξη." #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ΕΠΙΛΟΓΗ...] χρήστης" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Σφάλμα κατά την ανάλυση ορισμάτων: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Δεν έχει οριστεί όνομα χρήστη.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Σφάλμα κατά την αρχικοποίηση %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Ο χρήστης %s δεν υπάρχει.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Ο λογαριασμός είναι κλειδωμένος.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Ο λογαριασμός δεν είναι κλειδωμένος.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Ελάχιστο:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Μέγιστο:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Μέγιστο: Τίποτα\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Προειδοποίηση:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Ανενεργό:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Ανενεργό: Ποτέ\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Πρέπει να αλλάξει ο κωδικός στην επόμενη σύνδεση " #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Ποτέ" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Τελευταία αλλαγή:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Ο κωδικός λήγει:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Ανενεργός κωδικός:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Ο λογαριασμός λήγει:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Αδυναμία τροποποίησης πληροφοριών aging για %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ΕΠΙΛΟΓΗ...] [χρήστης]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Δεν καθορίστηκε όνομα χρήστη, κανένα όνομα για uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Τροποποίηση προσωπικών πληροφοριών για %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Πλήρες όνομα" #: apps/lchfn.c:151 msgid "Surname" msgstr "Επώνυμο" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Δοθέν όνομα" #: apps/lchfn.c:172 msgid "Office" msgstr "Γραφείο" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Τηλέφωνο γραφείου" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Τηλέφωνο οικίας" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Διεύθυνση E-Mail " #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Οι πληροφορίες Finger δεν άλλαξαν: σφάλμα εισόδου.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Οι πληροφορίες Finger άλλαξαν.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Οι πληροφορίες Finger δεν άλλαξαν: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Τροποποίηση κελύφους για %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Νέο κέλυφος" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Δεν έγινε αλλαγή κελύφους: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Έγινε αλλαγή κελύφους.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid για νέα ομάδα " #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "ΑΡΙΘ." #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "δημιουργείστε συστημική ομάδα " #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ΕΠΙΛΟΓΗ...] ομάδα" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Δεν έχει οριστεί όνομα ομάδας.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Μη έγκυρο ID ομάδας %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Η δημιουργία ομάδας απέτυχε: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Η ομάδα %s δεν υπάρχει.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Δε μπόρεσε να γίνει διαγραφή ομάδας %s: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "εγκατασττήστε το GID για την ομάδα. " #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "αλλαγή της ομάδς για να έχει συγκεκριμένο όνομα " #: apps/lgroupmod.c:60 msgid "NAME" msgstr "ΟΝΟΜΑ " #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "κωδικός πρόσβασης βασικού κειμένου για χρήση με την ομάδα " #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "ΣΕΙΡΑ " #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "προ-θεώρημένος κωδικός πρόσβασης για χρήση με την ομάδα " #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "πρόσθση λίστας διαχειριστών " #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "λίστα διαχειριστών για αφαίρεση " #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "λίστα μελών ομάδας για πρόσθεση" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "λίστα μελών ομάδας για αφαίρεση " #: apps/lgroupmod.c:73 msgid "lock group" msgstr "ξεκλειδώστε την ομάδα " #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "ξεκλειδώστε ομάδα " #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Καθορίστηκε και το -L και το -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Αποτυχία ορισμού συνθηματικού για ομάδα %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Δε μπόρεσε να γίνει κλείδωμα ομάδας %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Δε μπόρεσε να γίνει ξεκλείδωμα ομάδας %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Δε μπόρεσε να γίνει τροποποίηση ομάδας %s: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Σφάλμα εύρεσης %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "λίστα μελών μιας συγκεκριμένης ομάδας αντί των εγγραφών μελών για τον " "ονομασμένο χρήστη. " #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "πληροφοριες μόνο για την λίστα συνδρομής με όνομα, και όχι UID/GID. " #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Δεν έχει οριστεί όνομα ομάδας, γίνεται χρήση %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Δεν έχει οριστεί όνομα ομάδας, κανένα όνομα για gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Δεν έχει οριστεί όνομα χρήστη, γίνεται χρήση %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr " %s δεν υπάρχει\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "φάκελλος με εγγραφές πληροφοριών χρήστη " #: apps/lnewusers.c:49 msgid "PATH" msgstr "ΕΙΣΟΔΟΣ " #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "μην δημιουργήσετε λίστα διευθύνσεων για χρήστη " #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "μην δημιουργείτε συνωστισμό μηνυμάτων " #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ΕΠΙΛΟΓΗ...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Σφάλμα ανοίγματος `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Σφάλμα δημιουργία λογαριασμού για `%s': μη επιτρεπτή μορφοποίηση γραμμής.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Μη έγκυρο ID χρήστη %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Άρνηση δημιουργίας λογαριασμού με UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Σφάλμα στη δημιουργία ομάδας για `%s' με GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Απαγόρευσή χρήσης πρόσβασις κατάλογου `%s 'για%s από προεπιλογή\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Σφάλμα ορισμού αρχικού καταλόγου για %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" "Σφάλμα στη δημιουργία του ταχυδρομικού νήματος για %s: %s\n" "\n" "\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Σφάλμα ορισμού αρχικού συνθηματικού για %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Σφάλμα δημιουργίας λογαριασμού χρήστη για %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "βάλτε κωδικό ομάδας αντί κωδικό χρήστη " #: apps/lpasswd.c:52 msgid "new plain password" msgstr "νέος κωδικός πεδίου " #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "νέος κωδικός με απόκρυψη " #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "διαβάστε τον νέο κωδικό πεδίο από την δοσμένη περιγραφή " #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "διαβάστε τον νέο κωδικό πεδίο από την δοσμένη περιγραφή " #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Αλλαγή συνθηματικού για %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Νέος κωδικός" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Νέος κωδικός (επιβεβαίωση)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Οι κωδικοί δε συμπίπτουν, παρακαλώ προσπαθήστε ξανά.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Ακύρωση αλλαγής συνθηματικού.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Σφάλμα κατά την ανάγνωση από το αρχείο Περιγραφή %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Σφάλμα ορισμού συνθηματικού για το χρήστη %s: %s\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Σφάλμα ορισμού συνθηματικού για την ομάδα %s: %s\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Το συνθηματικό άλλαξε.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "δημιουργήστε χρήστη συστήματος " #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "Πληροφορίες GEGOS για τον νέο χρήστη " #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "αρχική λίστα διευθύνσεων για τον νέο χρήστη " #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "λίστα διευθύνσεων με φακέλλους για τον νέο χρήστη " #: apps/luseradd.c:67 msgid "shell for new user" msgstr "περίβλημα για τον νέο χρήστη " #: apps/luseradd.c:69 msgid "uid for new user" msgstr "Πληροφορίες GEGOS για τον νέο χρήστη " #: apps/luseradd.c:71 msgid "group for new user" msgstr "ομάδα για τον νέο χρήστη " #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "μην δημιουργήσετε λίστα διευθύνσεων για χρήστη " #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "μην δημιουργείτε ομάδα με το ίδιο όνομα χρήστη " #: apps/luseradd.c:81 msgid "common name for new user" msgstr "κοινό όνομα για τον νέο χρήστη " #: apps/luseradd.c:83 msgid "given name for new user" msgstr "δεδομένο όνομα για νέο χρήστη " #: apps/luseradd.c:85 msgid "surname for new user" msgstr "επίθετο του νέου χρήστη " #: apps/luseradd.c:87 msgid "room number for new user" msgstr "αριθμός χώρου για τον νέο χρήστη " #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "αριθμός τηλεφώνου για τον νέο χρήστη " #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "αρχική λίστα διευθύνσεων για τον νέο χρήστη " #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Δεν υπάρχει η ομάδα %jd\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Σφάλμα στη δημιουργία ομάδας `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Αποτυχία δημιουργίας λογαριασμού: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Σφάλμα στη δημιουργία %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" "Σφάλμα στη δημιουργία του ταχυδρομικού νήματος: %s\n" "\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "μην αφαιρείτε την προσωπική ομάδα χρήστη, αν ο χρήστης έχει μία " #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "αφαιρέστε την λίστα διευθύνσεων χρήστη " #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Δεν είναι δυνατή η διαγραφή του χρήστη %s: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s δεν έχει αριθμό gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Με υπάρχει ομάδα με GID %jd, δεν γίνεται απομάκρυνση.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Η ομάδα με GID %jd δεν έχει όνομα ομάδας.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Δεν ήταν δυνατή η διαγραφή της ομάδας %s: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "σφάλμα διαγραφής αρχικού καταλόγου χρήστη" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Σφάλμα απομάκρυνσης ταχυδρομικού νήματος: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "πληροφορίες GECOS " #: apps/lusermod.c:61 msgid "home directory" msgstr "αρχική λίστα διευθύνσεων για τον νέο χρήστη " #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "μετακινείστε τα περιεχόμενα της λίστας σπιτιών " #: apps/lusermod.c:65 msgid "set shell for user" msgstr "θέστε το πλαίσιο για τον χρήστη " #: apps/lusermod.c:67 msgid "set UID for user" msgstr "θέστε το UID για τον χρήστη " #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "θέστε το βασικό GID του χρήστη " #: apps/lusermod.c:71 msgid "change login name for user" msgstr "αλλάξτε τον κωδικό εισόδπυ για τον χρήστη " #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "κωδικός κυρίως κειμένου για τον χρήστη " #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "προ-κλείδωσμα κωδικού για τον χρήστη " #: apps/lusermod.c:76 msgid "lock account" msgstr "κλείδωμα λογαριασμού " #: apps/lusermod.c:79 msgid "unlock account" msgstr "ξεκλείδωμα λογαρισμού " #: apps/lusermod.c:81 msgid "set common name for user" msgstr "βάλτε κοινό όνομα χρήστη " #: apps/lusermod.c:83 msgid "set given name for user" msgstr "βάλτε συγκεκριμένο όνομα χρήστη " #: apps/lusermod.c:85 msgid "set surname for user" msgstr "βάλτε κύριο όνομα χρήστη " #: apps/lusermod.c:87 msgid "set room number for user" msgstr "βάλτε αριθμό δωματίου χρήστη " #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "βάλτε αριθμό τηλεφώνου για τον χρήστη " #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "βάλτε αριθμό τηλεφώνου για τον χρήστη " #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Αποτυχία στον ορισμό συνθηματικού για το χρήστη %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Δε μπόρεσε να γίνει κλείδωμα του χρήστη %s: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Δε μπόρεσε να γίνει ξεκλείδωμα του χρήστη %s: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Προειδοποίηση: Η ομάδα με ID %jd δεν υπάρχει.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Δε μπόρεσε να γίνει τροποποίηση του χρήστη %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Δε μπόρεσε να γίνει κλείδωμα της ομάδας %s: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Δεν υπάρχει παλιός αρχικός κατάλογος για %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Δεν υπάρχει νέος αρχικός κατάλογος για %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Σφάλμα στη μετακίνηση του %s στο %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "δεν ήταν δυνατό το άνοιγμα του αρχείου ρύθμισης `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "δεν ήταν δυνατό το stat του αρχείου ρύθμισης `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "το αρχείο ρύθμισης `%s' είναι πολύ μεγάλο" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "αδυναμία ανάγνωσης αρχείου ρυθμίσεων `%s': %s" #: lib/error.c:62 msgid "success" msgstr "επιτυχία" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "το άρθρωμα είναι απενεργοποιημένο μέσω ρύθμισης" #: lib/error.c:66 msgid "generic error" msgstr "γενικό σφάλμα" #: lib/error.c:68 msgid "not enough privileges" msgstr "ανεπαρκή προνόμια χρήστη" #: lib/error.c:70 msgid "access denied" msgstr "Άρνηση πρόσβασης" #: lib/error.c:72 msgid "bad user/group name" msgstr "κακό όνομα χρήστη/ομάδας" #: lib/error.c:74 msgid "bad user/group id" msgstr "κακό id χρήστη/ομάδας" #: lib/error.c:76 msgid "user/group name in use" msgstr "όνομα χρήστη/ομάδας σε χρήση" #: lib/error.c:78 msgid "user/group id in use" msgstr "id χρήστη/ομάδας σε χρήση" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "σφάλμα χειραγώγησης γνωρισμάτων τερματικού" #: lib/error.c:82 msgid "error opening file" msgstr "σφάλμα στο άνοιγμα αρχείου" #: lib/error.c:84 msgid "error locking file" msgstr "Σφάλμα στο κλείδωμα αρχείου" #: lib/error.c:86 msgid "error statting file" msgstr "Σφάλμα στο stat αρχείου" #: lib/error.c:88 msgid "error reading file" msgstr "Σφάλμα στην ανάγνωση αρχείου" #: lib/error.c:90 msgid "error writing to file" msgstr "Σφάλμα στην εγγραφή στο αρχείο" #: lib/error.c:92 msgid "data not found in file" msgstr "δεν βρέθηκαν δεδομένα στο αρχείο" #: lib/error.c:94 msgid "internal initialization error" msgstr "εσωτερικό σφάλμα αρχικοποίησης" #: lib/error.c:96 msgid "error loading module" msgstr "σφάλμα φόρτωσης αρθρώματος" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "σφάλμα στην επίλυση συμβόλου στο άρθρωμα" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "αταίριαστη έκδοση αρθρώματος/βιβλιοθήκης" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "το ξεκλείδωμα θα καταστήσει το πεδίο κωδικού κενό" #: lib/error.c:105 msgid "invalid attribute value" msgstr "μη έγκυρη τιμή χαρακτηριστικού" #: lib/error.c:107 msgid "invalid module combination" msgstr "μη έγκυρος συνδυασμό module" #: lib/error.c:109 #, fuzzy msgid "user's home directory not owned by them" msgstr "αρχική λίστα διευθύνσεων για τον νέο χρήστη " #: lib/error.c:115 msgid "unknown error" msgstr "άγνωστο σφάλμα" #: lib/misc.c:240 msgid "invalid number" msgstr "μη έγκυρος αριθμός" #: lib/misc.c:254 msgid "invalid ID" msgstr "μη έγκυρο ID " #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "δεν υπάρχει συνάρτηση αρχικοποίησης %s in `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "αταίριαστη έκδοση αρθρώματος σε `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "το άρθρωμα `%s' δεν ορίζει `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "σφάλμα κατά την ανάγνωση των γνωρισμάτων τερματικού" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "σφάλμα κατά τον ορισμό των γνωρισμάτων τερματικού" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "σφάλμα ανάγνωσης από τερματικό" #: lib/user.c:218 msgid "name is not set" msgstr "το όνομα δεν έχει οριστεί" #: lib/user.c:223 msgid "name is too short" msgstr "το όνομα είναι πολύ σύντομο" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "το όνομα είναι πολύ μακρύ (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "Το όνομα περιέχει χαρακτήρες εκτός συνόλου ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "το όνομα περιέχει χαρακτήρες ελέγχου" #: lib/user.c:249 msgid "name contains whitespace" msgstr "το όνομα περιέχει κενό διάστημα" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "το όνομα ξεκινά με μια παύλα" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "το όνομα περιέχει μη έγκυρο χαρακτήρα `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "ο χρήστης %s δεν έχει UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "ο χρήστης %s δεν βρέθηκε " #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "η ομάδα %s δεν έχει GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "η ομάδα %s δεν βρέθηκε " #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "ο χρήστης %jd δεν έχει όνομα" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "η ομάδα %jd δεν έχει όνομα" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ο χρήστης δεν έχει όνομα ούτε UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "η ομάδα δεν έχει όνομα ούτε UID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Άρνησή χρίσης επικίνδυνου κατάλογου `%s 'από προεπιλογή" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Μη έγκυρη προεπιλεγμένη τιμή για το πεδίο %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "σφάλμα κλειδώματος αρχείου %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "αδυναμία λήψης προεπιλεγμένου περιβάλλοντος ασφάλειας: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "αδυναμία λήψης περιβάλλοντος ασφάλειας του `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "αδυναμία λήψης περιβάλλοντος ασφάλειας του `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "αδυναμία λήψης προεπιλεγμένου περιβάλλοντος ασφάλειας: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "αδυναμία καθορισμού περιβάλλοντος ασφάλειας του `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "αδυναμία ανοίγματος `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "αδυναμία stat `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "σφάλμα στη δημιουργία `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Σφάλμα αλλαγής ιδιοκτήτη του `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Σφάλμα αλλαγής την κατάσταση του `%s:%s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Σφάλμα στην ανάγνωση `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Σφάλμα εγγραφής `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "αδυναμία ανάγνωσης από `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Σφάλμα στη μετακίνηση του %s στο %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Σφάλμα αλλαγής την κατάσταση του `%s:%s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Σφάλμα στην ανάγνωση `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Σφάλμα στην ανάγνωση `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "το αντικείμενο οντότητας δεν έχει γνώρισμα %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "το αντικείμενο δεν έχει ιδιότητα %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "η %s τιμή `%s': `:' δεν επιτρέπεται" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "η %s τιμή `%s': `:' δεν επιτρέπεται" #: modules/files.c:1136 msgid "entry already present in file" msgstr "η καταχώριση υπάρχει ήδη στο αρχείο" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "αδυναμία εγγραφής σε `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "το αντικείμενο οντότητας δεν έχει γνώρισμα %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "καταχώρηση με όνομα που υπάρχει ήδη" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "η `:' δεν επιτρέπεται σε κρυπτογραφημένο συνθηματικό" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "σφάλμα κρυπτογράφησης συνθηματικού" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "το `%s 'και`%s' μονάδες δεν μπορούν να συνδυαστούν" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "δεν γίνεται εκτέλεση με προνόμια υπερχρήστη" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "δεν υπάρχει αρχείο shadow -- γίνεται πενεργοποίηση" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "σφάλμα κατά την ενεργοποίηση της βιβλιοθήκης ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "δε μπόρεσε να οριστεί πρωτόκολλο LDAP στην έκδοση %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "δεν ήταν δυνατή η πιστοποίηση TLS στο διακομιστή LDAP." #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "αδυναμία δέσμευσης με τον εξυπηρετητή LDAP," #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "αδυναμία δέσμευσης με τον εξυπηρετητή LDAP, πρώτη προσπάθεια ως `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "το αντικείμενο χρήστη δεν είχε όρισμα %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "το αντικείμενο χρήστη δημιουργήθηκε χωρίς `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "Σφάλμα δημιουργίας εγγραφής καταλόγου LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "Σφάλμα επεξεργασίας εγγραφής καταλόγου LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "Σφάλμα μετονομασίας εγγραφής καταλόγου LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "το αντικείμενο δεν έχει ιδιότητα %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "σφάλμα κατά την απομάκρυνση καταχώρισης καταλόγου LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "το αντικείμενο δεν έχει ιδιότητα %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "μη υποστηριζόμενο σχήμα κρυπτογράφησης συνθηματικού" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "δεν υπάρχει τέτοιο αντικείμενο στον κατάλογο LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "δε βρέθηκε ιδιότητα `%s'" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "σφάλμα καθορισμού συνθηματικού στον κατάλογο LDAP για %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Όνομα εξυπηρετητή LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Συνθηματικό LDAP Bind" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Χρήστης LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Χρήστης εξουσιοδότησης LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Σφάλμα Cyrus SASL στη δημιουργία χρήστη: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Σφάλμα Cyrus SASL στη διαγραφή χρήστη: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "σφάλμα αρχικοποίησης Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "σφάλμα δημιουργίας αρχικού καταλόγου χρήστη" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "σφάλμα διαγραφής αρχικού καταλόγου χρήστη" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "σφάλμα μετακίνησης αρχικού καταλόγου χρήστη" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Σφάλμα αρχικοποίησης %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Μη έγκυρο ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Αναζήτηση για ομάδα με ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Αναζήτηση για ομάδα με όνομα %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Αναζήτηση για χρήστη με ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Αναζήτηση για χρήστη με όνομα %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Η είσοδος δε βρέθηκε\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Οι ειδοποιήσεις ολοκληρώθηκαν.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Οι ειδοποιήσεις απέτυχαν.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Προεπιλεγμένες κλάσεις αντικειμένων χρήστη:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Προεπιλεγμένα ονόματα ιδιοτήτων χρήστη:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Λήψη προεπιλεγμένων ιδιοτήτων χρήστη:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Αντιγραφή δομής χρήστη:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "" #~ "το αντίγραφο ασφάλειας`%s' υπάρχει αλλά δεν είναι ένα κανονικό αρχείο." #~ msgid "backup file size mismatch" #~ msgstr "αταίριαστο μέγεθος αντιγράφου ασφαλείας" po/en_GB.po000066400000000000000000001016471471266067600130360ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Abigail Brady , Bastien Nocera , 2007 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/" "fedora/language/en_GB/)\n" "Language: en_GB\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Failed to drop privileges.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Internal error.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s is not authorized to change the finger info of %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Unknown user context" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Can't set default context for /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Error initializing PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Authentication failed for %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Internal PAM error `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Unknown user authenticated.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "User mismatch.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] user" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Error parsing arguments: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "No user name specified.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Error initializing %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "User %s does not exist.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Account is locked.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Account is not locked.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Warning:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactive:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Never" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Last Change:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Password Expires:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Password Inactive:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Account Expires:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Failed to modify aging information for %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "No user name specified, no name for uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Changing finger information for %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Full Name" #: apps/lchfn.c:151 msgid "Surname" msgstr "Surname" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Given Name" #: apps/lchfn.c:172 msgid "Office" msgstr "Office" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Office Phone" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Home Phone" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-Mail Address" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger information not changed: input error.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger information changed.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger information not changed: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Changing shell for %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "New Shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell not changed: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell changed.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] group" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "No group name specified.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Invalid group ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Group creation failed: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Group %s does not exist.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Group %s could not be deleted: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Both -L and -U specified.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Failed to set password for group %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Group %s could not be locked: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Group %s could not be unlocked: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Group %s could not be modified: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Error looking up %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "No group name specified, using %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "No group name specified, no name for gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "No user name specified, using %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Error opening `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Error creating account for `%s': line improperly formatted.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Invalid user ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Refusing to create account with UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Error creating group for `%s' with GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Error creating home directory for %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Error setting initial password for %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Error creating user account for %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Changing password for %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "New password" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "New password (confirm)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Passwords do not match, try again.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Password change cancelled.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Error setting password for user %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Error setting password for group %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Password changed.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Group %jd does not exist\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Error creating group `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Account creation failed: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Error creating %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "User %s could not be deleted: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s did not have a gid number.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "No group with GID %jd exists, not removing.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Group with GID %jd did not have a group name.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Group %s could not be deleted: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "error removing home directory for user" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Failed to set password for user %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "User %s could not be locked: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "User %s could not be unlocked: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "User %s could not be modified: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Group %s could not be modified: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "No old home directory for %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "No new home directory for %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Error moving %s to %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "could not open configuration file `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "could not stat configuration file `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "configuration file `%s' is too large" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "could not read configuration file `%s': %s" #: lib/error.c:62 msgid "success" msgstr "success" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "module disabled by configuration" #: lib/error.c:66 msgid "generic error" msgstr "generic error" #: lib/error.c:68 msgid "not enough privileges" msgstr "not enough privileges" #: lib/error.c:70 msgid "access denied" msgstr "access denied" #: lib/error.c:72 msgid "bad user/group name" msgstr "bad user/group name" #: lib/error.c:74 msgid "bad user/group id" msgstr "bad user/group id" #: lib/error.c:76 msgid "user/group name in use" msgstr "user/group name in use" #: lib/error.c:78 msgid "user/group id in use" msgstr "user/group id in use" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "error manipulating terminal attributes" #: lib/error.c:82 msgid "error opening file" msgstr "error opening file" #: lib/error.c:84 msgid "error locking file" msgstr "error locking file" #: lib/error.c:86 msgid "error statting file" msgstr "error statting file" #: lib/error.c:88 msgid "error reading file" msgstr "error reading file" #: lib/error.c:90 msgid "error writing to file" msgstr "error writing to file" #: lib/error.c:92 msgid "data not found in file" msgstr "data not found in file" #: lib/error.c:94 msgid "internal initialization error" msgstr "internal initialization error" #: lib/error.c:96 msgid "error loading module" msgstr "error loading module" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "error resolving symbol in module" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "library/module version mismatch" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "unlocking would make the password field empty" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "unknown error" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "no initialization function %s in `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "module version mismatch in `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "module `%s' does not define `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "error reading terminal attributes" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "error setting terminal attributes" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "error reading from terminal" #: lib/user.c:218 msgid "name is not set" msgstr "name is not set" #: lib/user.c:223 msgid "name is too short" msgstr "name is too short" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "name is too long (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "name contains non-ASCII characters" #: lib/user.c:242 msgid "name contains control characters" msgstr "name contains control characters" #: lib/user.c:249 msgid "name contains whitespace" msgstr "name contains whitespace" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "name starts with a hyphen" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "name contains invalid char `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "user %s has no UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "group %s has no GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "user %jd has no name" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "group %jd has no name" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "user has neither a name nor an UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "group has neither a name nor a GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Invalid default value of field %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "error locking file: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "couldn't get security context of `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "couldn't set default security context to `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "couldn't get security context of `%s': %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "couldn't open `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "couldn't stat `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "error creating `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Error changing owner of `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Error reading `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Error writing `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "couldn't read from `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Error moving %s to %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Error opening `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Error reading `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Error reading `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "entity object has no %s attribute" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "object has no %s attribute" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "entry already present in file" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "couldn't write to `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entity object has no %s attribute" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "error encrypting password" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "not executing with superuser privileges" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "no shadow file present -- disabling" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "error initializing ldap library" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "could not set LDAP protocol to version %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "could not negotiate TLS with LDAP server" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "could not bind to LDAP server" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "could not bind to LDAP server, first attempt as `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "user object had no %s attribute" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "user object was created with no `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "error creating a LDAP directory entry: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "error modifying LDAP directory entry: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "error renaming LDAP directory entry: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "object had no %s attribute" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "error removing LDAP directory entry: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "object has no %s attribute" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "no such object in LDAP directory" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "no `%s' attribute found" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "error setting password in LDAP directory for %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP Server Name" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind Password" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL User" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL Authorization User" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL error creating user: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL error removing user: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "error initializing Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "error creating home directory for user" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "error removing home directory for user" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "error moving home directory for user" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Error initializing %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Invalid ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Searching for group with ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Searching for group named %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Searching for user with ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Searching for user named %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Entry not found.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Prompts succeeded.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Prompts failed.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Default user object classes:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Default user attribute names:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Getting default user attributes:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Copying user structure:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "backup file `%s' exists and is not a regular file" #~ msgid "backup file size mismatch" #~ msgstr "backup file size mismatch" po/es.po000066400000000000000000001150471471266067600124720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # alex_pe , 2012 # Claudio Rodrigo Pereyra Diaz , 2011-2013 # Domingo Becker , 2008,2012 # Manuel Ospina , 2005 # Miloslav Trmač , 2011 # Yelitza Louze , 2003, 2004 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/fedora/language/" "es/)\n" "Language: es\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Imposible disminuir privilegios.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Error interno.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s no está autorizado para cambiar la información de finger de %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Contexto de usuario desconocido" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "No se pudo establecer el contexto predeterminado para /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Error inicializando PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autentificación fallida para %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Error interno `%s' de PAM.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Autenticado usuario desconocido.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "No corresponde el usuario.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "solicitar toda la información" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "lista parámetros de envejecimiento para el usuario" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "cantidad mínima de días entre las modificaciones de contraseñas" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DIAS" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "cantidad máxima de días entre las modificaciones de contraseñas" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" "fecha de la última modificación de la contraseña, en días, desde 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "cantidad de días posteriores a la fecha de vencimiento de la contraseña para " "que la cuenta sea considerada inactiva" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "fecha de vencimiento de la contraseña, en días, desde 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "cantidad de días previos al vencimiento para advertir al usuario" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCIÓN...] usuario" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Error al analizar argumentos %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "No se especificó nombre de usuario.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Error inicializando %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "El usuario %s no existe.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "La cuenta está bloqueada.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "La cuenta no está bloqueada.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Mínimo:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Máximo:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Máximo:\tNinguno\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Aviso:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactivo:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inactivo:\tNunca\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Debe cambiar la contraseña en el proximo ingreso" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nunca" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Último cambio:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Contraseña caduca:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Contraseña inactiva:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Cuenta caduca:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Falló al modificar la información de caducidad para %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCIÓN...] [usuario]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "No se especificó nombre de usuario, no hay un nombre para el uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Cambiando la información de finger para %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nombre completo" #: apps/lchfn.c:151 msgid "Surname" msgstr "Apellido" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nombre" #: apps/lchfn.c:172 msgid "Office" msgstr "Oficina" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Teléfono de oficina" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Teléfono particular" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Dirección de correo electrónico" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Información de finger sin modificaciones: error de entrada.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Información de finger modificada.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Información de finger sin modificaciones: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Cambiando el shell por %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nuevo shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell sin modificar: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell modificado.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid para el nuevo grupo" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "crear un grupo de sistema" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCIÓN...] grupo" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "No se especificó ningún nombre de grupo.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID de grupo %s no válida\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Falló la creación del grupo: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "El grupo %s no existe.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "No se pudo eliminar el grupo %s: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "definir un GID para un grupo" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "modificar el grupo para que posea el nombre definido" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NOMBRE" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "contraseña en formato de texto simple para utilizarse con el grupo" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "CADENA" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "contraseña pre-hasheada para utilizar con el grupo" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "lista de administradores a ser agregados" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "lista de administradores a ser eliminados" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "lista de miembros del grupo a ser agregados" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "lista de miembros del grupo a ser eliminados" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "bloquear grupo" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "desbloquear grupo" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Especificación de -L y -U\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Falló al establecer la contraseña para el grupo %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "No se pudo bloquear el grupo %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "No se pudo desbloquear el grupo %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "El grupo %s no se pudo modificar:%s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Error al buscar %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "muestra los miembros de un grupo determinado en lugar de las membresías al " "grupo del usuario identificado" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "solo muestra información de membresía por nombre, y no por UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "No se especificó ningún nombre de grupo, usando %s .\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "No se especificó ningún nombre de grupo, no hay nombre para gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "No se especificó nombre de usuario, usando %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s no existe\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "archivo con registro de información del usuario" #: apps/lnewusers.c:49 msgid "PATH" msgstr "RUTA" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "no generar directorios personales" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "no generar almacenamientos de correo" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCIÓN...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Error en la lectura `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Error creando cuenta para `%s': la línea no está formateada de la forma " "correcta.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID de usuario %s no válida\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Rechazando la creación de cuenta con UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Error en la creación de un grupo para `%s' con GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Por defecto, para %s se niega la utilización del directorio principal " "peligroso `%s'\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Error creando directorio principal para %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Error al crear receptor de correo para %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Error en la configuración de la contraseña para %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Error creando cuenta de usuario para %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "define contraseña de grupo en lugar de una contraseña de usuario" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nueva contraseña de texto simple" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nueva contraseña cifrada" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "lee una nueva contraseña de texto simple desde el descriptor ofrecido" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "lee una nueva contraseña cifrada desde el descriptor ofrecido" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Cambiando contraseña para %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nueva contraseña" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nueva contraseña (confirmar)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Las contraseñas no coinciden, por favor inténtelo nuevamente.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Cancelado el cambio de contraseñas.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Error al leer el archivo descriptor: %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Error al configurar la contraseña para el usuario %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Error en la configuración de la contraseña para el grupo %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Contraseña modificada.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "crea un usuario del sistema" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "información GECOS del nuevo usuario" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "directorio personal para el nuevo usuario" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "directorio con archivos para el nuevo usuario" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell para el nuevo usuario" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid del nuevo usuario" #: apps/luseradd.c:71 msgid "group for new user" msgstr "grupo del nuevo usuario" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "no genera un directorio personal para el usuario" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "no genera un grupo con el mismo nombre del usuario" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "nombre general del nuevo usuario" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "nombre definido del nuevo usuario" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "apellido del nuevo usuario" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "número de habitación del nuevo usuario" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "número telefónico del nuevo usuario" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "número telefónico personal del nuevo usuario" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "El grupo %jd no existe.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Error en la creación del grupo `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Creación de la cuenta fallida: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Error creando %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Error al crear receptor de correo: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "si es que posee uno, no elimina el grupo privado del usuario " #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "elimina el directorio personal del usuario" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "No se pudo eliminar el usuario %s: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s no tenía un número gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "No existe ningún grupo con %jd de GID, no se eliminará.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "El grupo de GID %jd no tenía un nombre de grupo.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "No se pudo eliminar el grupo %s: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "error al eliminar el directorio principal para el usuario" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Error al eliminar el receptor de correo: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "información GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "directorio personal" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "traslada los contenidos del directorio personal" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "define el shell para el usuario" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "define el UID para el usuario" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "define el GID primario para el usuario" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "modifica el nombre de registro del usuario" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "contraseña de texto simple del usuario" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "contraseña previamente hasheada para el usuario" #: apps/lusermod.c:76 msgid "lock account" msgstr "bloquear cuenta" #: apps/lusermod.c:79 msgid "unlock account" msgstr "desbloquear cuenta" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "definir un nombre general para el usuario" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "definir el nombre otorgado al usuario" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "definir el apellido del usuario" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "definir número de habitación del usuario" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "definir numero telefónico del usuario" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "definir número telefónico personal del usario" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Intento fallido de configurar la contraseña para el usuario %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "No se pudo bloquear el usuario %s: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "No se pudo desbloquear el ususario %s: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Advertencia: El grupo con ID %jd no existe.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "No se pudo modificar el usuario %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "El grupo %s no se pudo modificar:%s\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Ningún directorio principal antiguo para %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Ningún directorio principal para %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Error al trasladar %s a %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "no se pudo abrir el archivo de configuración `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "no se pudo hacer stat del archivo de configuración `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "el archivo de configuración `%s' es demasiado extenso." #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "no se pudo leer el archivo de configuración `%s': %s" #: lib/error.c:62 msgid "success" msgstr "éxito" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "módulo deshabilitado por la configuración" #: lib/error.c:66 msgid "generic error" msgstr "error genérico" #: lib/error.c:68 msgid "not enough privileges" msgstr "No existen suficientes privilegios" #: lib/error.c:70 msgid "access denied" msgstr "acceso denegado" #: lib/error.c:72 msgid "bad user/group name" msgstr "Nombre de usuario/grupo incorrecto" #: lib/error.c:74 msgid "bad user/group id" msgstr "id de usuario/grupo incorrecto" #: lib/error.c:76 msgid "user/group name in use" msgstr "Nombre de usuario/grupo usado" #: lib/error.c:78 msgid "user/group id in use" msgstr "id de usuario/grupo usado" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "error al manipular atributos de terminal" #: lib/error.c:82 msgid "error opening file" msgstr "error al abrir el fichero" #: lib/error.c:84 msgid "error locking file" msgstr "error al cerrar el fichero" #: lib/error.c:86 msgid "error statting file" msgstr "error al hacer stat del archivo" #: lib/error.c:88 msgid "error reading file" msgstr "error al cerrar el fichero" #: lib/error.c:90 msgid "error writing to file" msgstr "error al escribir el fichero" #: lib/error.c:92 msgid "data not found in file" msgstr "no se han encontrado los datos en el fichero" #: lib/error.c:94 msgid "internal initialization error" msgstr "error interno de iniciación" #: lib/error.c:96 msgid "error loading module" msgstr "error al cargar el módulo" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "error al determinar el símbolo en el módulo" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "versión de biblioteca/módulo discordante" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "desbloquear dejaría el campo contraseña vacío" #: lib/error.c:105 msgid "invalid attribute value" msgstr "valor de atributo inválido" #: lib/error.c:107 msgid "invalid module combination" msgstr "combinación de módulos invalida" #: lib/error.c:109 #, fuzzy msgid "user's home directory not owned by them" msgstr "directorio personal para el nuevo usuario" #: lib/error.c:115 msgid "unknown error" msgstr "error desconocido" #: lib/misc.c:240 msgid "invalid number" msgstr "número inválido" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID inválido" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ninguna función de inicialización de %s en `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "versión de módulo discordante en `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "el módulo `%s' no define `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "error al leer los atributos del terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "error en la configuración de los atributos del terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "error al leer desde el terminal" #: lib/user.c:218 msgid "name is not set" msgstr "no se ha establecido un nombre" #: lib/user.c:223 msgid "name is too short" msgstr "el nombre es muy corto" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "nombre demasiado largo·(%zu·>·%d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "el nombre contiene caracteres que no son ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "el nombre contiene caracteres de control" #: lib/user.c:249 msgid "name contains whitespace" msgstr "el nombre contiene espacios en blanco" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "el nombre comienza con un guión" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "el nombre contiene un caracter inválido: `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "el usuario %s no tiene UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "usuario %s no encontrado" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "el grupo %s no tiene GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "grupo %s no encontrado" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "el usuario %jd no tiene nombre" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "el grupo %jd no tiene nombre" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "el usuario no tiene nombre ni un UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "el grupo no tiene un nombre ni un GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Por defecto, se niega la utilización del directorio principal peligroso `%s'" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Valor por defecto inválido en el campo %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "error cerrando fichero: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "no se pudo obtener el contexto de seguridad predeterminado: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "no se pudo obtener el contexto de seguridad `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" "no se pudo configurar el contexto de seguridad predeterminado a `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "no se pudo obtener el contexto de seguridad predeterminado: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "no se pudo determinar el contexto de seguridad `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "no se pudo abrir `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "no se pudo efectuar el stat `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "error al crear `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Error cambiando dueño de `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Error cambiando modo de `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Error al eliminar %s: %s." #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Error al escribir `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "no se pudo leer desde `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Error al trasladar %s a %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Error cambiando modo de `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Error al eliminar %s: %s." #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Error al eliminar %s: %s." #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "el objeto de entidad no tiene ningún atributo %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "el objeto no tiene atributos %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s valor `%s': `:' no permitido" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s valor `%s': `:' no permitido" #: modules/files.c:1136 msgid "entry already present in file" msgstr "la entrada ya se ha hecho presente en el archivo" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "no se pudo escribir en `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "el objeto de entidad no tiene ningún atributo %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ya existe en el archivo una entrada con el nombre en conflicto" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' no permitido en contraseñas encriptada" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "error al encriptar la contraseña" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "los módulos `%s' y `%s' no pueden ser combinados" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "No se ejecuta con privilegios de superusuario." #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "Ningún archivo shadow presente -- deshabilitando." #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "error al inicializar la biblioteca ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "no se pudo establecer un protocolo LDAP para la versión %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "no se pudo negociar TLS con el servidor LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "no se pudo vincular al servidor LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "no se pudo vincular al servidor LDAP, primer intento como `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "el objeto de usuario no tiene ningún atributo %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "el objeto de usuario ha sido creado sin `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "error al crear una entrada al directorio LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "error al modificar la entrada del directorio LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "error al renombrar la entrada del directorio LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "el objeto no tiene ningún atributo %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "error al eliminar la entrada del directorio LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "el objeto no tiene atributos %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "esquema de encriptado de contraseñas no soportado" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "Objeto no encontrado en el directorio LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "Atributo `%s' no encontrado" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "Error configurando contraseña en el directorio LDAP para %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nombre del servidor LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "DN base de búsqueda de LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN Bind LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Contraseña Bind LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Usuario SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Usuario de autorización SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Error Cyrus SASL al crear usuario: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Error Cyrus SASL al eliminar usuario: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "error al inicializar Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "error al crear directorio principal para el usuario" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "error al eliminar el directorio principal para el usuario" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "error moviendo el directorio principal para el usuario" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Error al iniciar %s: %s.\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID %s no válida\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Buscando grupo con ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Buscando grupo llamado %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Buscando usuario con ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Buscando usuario llamado %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "No se ha encontrado la entrada.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Los avisos fueron exitosos.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Fallaron los avisos.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Tipos de objetos de usuario predeterminados:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nombres de atributos de usuario predeterminados:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Obtención de los atributos de usuario predeterminados:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Copia de la estructura de usuario:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "" #~ "Existe un fichero de copia de seguridad `%s' y no es un fichero habitual" #~ msgid "backup file size mismatch" #~ msgstr "tamaño de archivo de copia de seguridad discordante" po/et.po000066400000000000000000001030741471266067600124700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Allan Sims , 2004 # Marek Laane , 2012 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Estonian (http://www.transifex.com/projects/p/fedora/language/" "et/)\n" "Language: et\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Õiguste eemaldamine ebaõnnestus.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Sisemine viga.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ei ole volitatud muutma %s infot\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "tundmatu kasutaja kontekst" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "vaike konteksti seadistamine /etc/passwd jaoks ei ole võimalik\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM lähtestamisel esines viga.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s tuvastamine ebaõnnestus.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Sisemine PAM viga `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "tuvastati tundmatu kasutaja.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Kasutaja ei sobi.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[VALIK...] kasutaja" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Argumentide analüüsimise viga: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Kasutajanimi täpsustamata.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s lähtestamisel esines viga: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Kasutajat %s ei ole olemas.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Konto on lukustatud.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Konto ei ole lukustatud.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Miinimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Hoiatus:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Mitteaktiivne:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Mitte kunagi" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Viimati muudetud:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Parool aegub:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Parool on kehtetu:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Konto aegub:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Vananenud %s informatsiooni muutmine ebaõnnestus: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[VALIK...] [kasutaja]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Kasutajanimi määramata, nimi puudub uid %d jaoks.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Sõrminformatsiooni muutmine %s jaoks.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Täisnimi" #: apps/lchfn.c:151 msgid "Surname" msgstr "Perekonnanimi" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Eesnimi" #: apps/lchfn.c:172 msgid "Office" msgstr "Kontor" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Kontori telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Kodune telefon" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-posti aadress" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Sõrminfot ei ole muudetud: sisendi viga.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Sõrminfo on muudetud.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Sõrminfot ei ole muudetud: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Kesta muutmine %s jaoks.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Uus kest" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Kesta ei muudetud: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Kest muudetud.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[VALIK...] grupp" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Grupinimi on määramata.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Vigane grupi ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Grupi loomine ebaõnnestus: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Gruppi %s ei ole olemas.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Gruppi %s pole võimalik kustutada: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Mõlemad -L ja -U on täpsustamata.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Grupi %s parooli seadmine ebaõnnestus: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Gruppi %s lukustamine ei ole võimalik: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Gruppi %s lukust lahti tegemine ei ole võimalik: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Gruppi %s pole võimalik muuta: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Viga %s otsimisel: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Grupinimi täpsustamata, kasutatakse %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Grupinimi täpsustamata, gid %d jaoks puudub nimi.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Kasutajanimi täpsustamata, kasutatakse %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s puudub\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[VALIK...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' avamise viga: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Konto loomise viga `%s' jaoks: rida ebasobivalt vormindatud.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Vigane kasutaja ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Segadus konto loomisel kui UID on 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Viga grupi `%s' loomisel kui GID on %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Viga %s kodukataloogi loomisel: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Viga %s esialgse parooli seadmisel: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Viga kasutajale %s konto loomisel: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s parooli muutmine.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Uus parool" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Uus parool (kinnitus)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Paroolid ei ühti, proovi uuesti.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Parooli muutmisest loobutud.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Tõrge failideskriptori %d lugemisel.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Viga kasutaja %s parooli seadmisel: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Viga grupi %s parooli seadmisel: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Parool on muudetud.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Gruppi %jd ei ole olemas\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Viga grupi `%s' loomisel: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Konto loomine ebaõnnestus: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Viga %s loomisel: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Kasutajat %s pole võimalik kustutada: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ei ole gid numbrit.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Gruppi GID-ga %jd ei ole olemas, seda ei eemaldata.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupil GID-ga %jd puudub nimi.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Gruppi %s pole võimalik kustutada: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "kasutaja kodukataloogi kustutamise viga" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Kasutaja %s parooli seadmine ebaõnnestus: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Kasutajat %s pole võimalik lukustada: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Kasutajat %s pole võimalik lukust lahti teha: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Kasutajat %s pole võimalik muuta: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Gruppi %s pole võimalik muuta: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s-il puudub vana kodukataloogi.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s-il puudub uus kodukataloogi.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Viga %s liigutamisel %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "aeadete faili `%s' avadmine pole võimalik: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "seadete faili `%s' avamine pole võimalik: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "seadete faili `%s' on liiga suur" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "seadete faili `%s' avamine pole võimalik: %s" #: lib/error.c:62 msgid "success" msgstr "edu" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "moodul on seadistustes keelatud" #: lib/error.c:66 msgid "generic error" msgstr "üldine viga" #: lib/error.c:68 msgid "not enough privileges" msgstr "ebapiisavad õigused" #: lib/error.c:70 msgid "access denied" msgstr "ligipääs keelatud" #: lib/error.c:72 msgid "bad user/group name" msgstr "halb kasutaja-/grupinimi" #: lib/error.c:74 msgid "bad user/group id" msgstr "halb kasutaja/grupi id" #: lib/error.c:76 msgid "user/group name in use" msgstr "kasutaja-/grupinimi on kasutusel" #: lib/error.c:78 msgid "user/group id in use" msgstr "kasutaja/grupi id on kasutusel" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "viga terminali atribuutide käsitlemisel" #: lib/error.c:82 msgid "error opening file" msgstr "faili avamise viga" #: lib/error.c:84 msgid "error locking file" msgstr "faili lukustamise viga" #: lib/error.c:86 msgid "error statting file" msgstr "faili esitamise viga" #: lib/error.c:88 msgid "error reading file" msgstr "faili lugemise viga" #: lib/error.c:90 msgid "error writing to file" msgstr "viga faili kirjutamisel " #: lib/error.c:92 msgid "data not found in file" msgstr "failis puuduvad andmed" #: lib/error.c:94 msgid "internal initialization error" msgstr "sisemine lähtestamise viga" #: lib/error.c:96 msgid "error loading module" msgstr "mooduli laadimise viga" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "sümbolite lahendamise viga moodulis" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "teegi/mooduli versioon ei sobi" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "lahti lukustamine võib teha parooli välja tühjaks" #: lib/error.c:105 msgid "invalid attribute value" msgstr "vigane atribuudi väärtus" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "tundmatu viga" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "vigane ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "puudub häälestusfunktsioon %s `%s'-s" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "mooduli versiooni mitteühtivus `%s'-s" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "moodul `%s' ei defineeri `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "viga terminali atribuutide lugemisel" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "viga terminali atribuutide seadmisel" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "viga terminalist lugemisel" #: lib/user.c:218 msgid "name is not set" msgstr "nime ei ole seatud" #: lib/user.c:223 msgid "name is too short" msgstr "nimi on liiga lühike" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "nimi on liiga pikk (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "nimi sisaldab mitte-ASCII märke" #: lib/user.c:242 msgid "name contains control characters" msgstr "nimi sisaldab kontrollmärke" #: lib/user.c:249 msgid "name contains whitespace" msgstr "nimi sisaldab tühikuid" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "nimi algab sidekriipsuga" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "nimi sisaldab vigast märki `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "kasutajal %s puudub UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "grupil %s puudub GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "kasutajal %jd puudub nimi" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "grupil %jd puudub nimi" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "kasutajal puudub nii nimi kui ka UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "grupil puudub nii nimi kui ka GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Välja %s vigane vaikeväärtus: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "viga faili lukustamisel: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "turvakonteksti `%s' saamine ei ole võimalik: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "vaike turvakonteksti seadistamine `%s'-ile ei ole võimalik: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "turvakonteksti `%s' saamine ei ole võimalik: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' avamine pole võimalik: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s'-i polnud võimalik esitada: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "viga `%s' loomisel: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Viga `%s' omaniku muutmisel: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Viga `%s' lugemisel:%s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Viga `%s' kirjutamisel: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s'-st lugemine pole võimalik: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Viga %s liigutamisel %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' avamise viga: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Viga `%s' lugemisel:%s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Viga `%s' lugemisel:%s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "üksuse objektil puudub atribuut %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objektil puudub atribuut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s väärtus `%s': `:' ei ole lubatud" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s väärtus `%s': `:' ei ole lubatud" #: modules/files.c:1136 msgid "entry already present in file" msgstr "failis on üksus juba olemas" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'-i kirjutamine pole võimalik: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "üksuse objektil puudub atribuut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' ei ole lubatud krüptitud paroolis" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "parooli krüpteerimise viga" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "superkasutaja õigustega ei käivitata" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "varifail puudub - keelatud" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap teegi lähtestamise viga" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP protokolli polnud võimalik seada versioonile %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" "Transpordikihi turbeprotokollil (TLS) polnud võimalik suhelda LDAP serveriga" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP serverit polnud võimalik siduda" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP serverit polnud võimalik siduda, esmalt üritati `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "kasutaja objektil puudub atribuut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "kasutaja objekt loodi `%s'-ta" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP kataloogi üksuse loomise viga: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP kataloogi üksuse muutmise viga: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP kataloogi üksuse ümbernimetamise viga: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objektil puudus atribuut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP kataloogi üksuse eemaldamise viga: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objektil puudub atribuut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP kataloogis puudub selline objekt" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s'-i atribuuti ei leitud" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "parooli seadmisel LDAP kataloogile %s tekkis viga: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP serverinimi" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP sidumise baasnumber" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP sidumise number" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP sidumise parool" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL kasutaja" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL kasutaja autoriseerimine" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL viga kasutaja loomisel: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL viga kasutaja eemaldamisel: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "viga Cyrus SASL lähtestamisel: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "kasutaja kodukataloogi loomise viga" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "kasutaja kodukataloogi kustutamise viga" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "kasutaja kodukataloogi liigutamise viga" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s lähtestamise viga: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Vigane ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID-ga %jd grupi otsimine.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s nimelise grupi otsimine.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID-ga %jd kasutaja otsimine.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s nimelise kasutaja otsimine.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Üksust ei leitud.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Viibad õnnestusid.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Viibad ebaõnnestusid.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Kasutaja vaikeobjektide klassid:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Kasutaja vaikeatribuutide nimed:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Kasutaja vaikeatribuutide saamine:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kasutajastruktuuri kopeerimine:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "on olemas varundfail %s, mis ei ole tavaline fail" #~ msgid "backup file size mismatch" #~ msgstr "varundfaili suurus ei sobi" po/eu.po000066400000000000000000000663161471266067600125000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Asier Iturralde Sarasola , 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Basque (http://www.transifex.com/projects/p/fedora/language/" "eu/)\n" "Language: eu\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Barne-errorea.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Kontua blokeatuta dago.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Abisua:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Inoiz ez" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Izen osoa" #: apps/lchfn.c:151 msgid "Surname" msgstr "Abizena" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Izena" #: apps/lchfn.c:172 msgid "Office" msgstr "Bulegoa" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Bulegoko telefonoa" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Etxeko telefonoa" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-posta helbidea" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Shell berria" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[AUKERA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "Pasahitz berria" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Pasahitz berria (berretsi)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Pasahitzak ez datoz bat, saiatu berriro.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Pasahitza aldatuta.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd taldea ez da existitzen.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "errorea fitxategia irakurtzean" #: lib/error.c:90 msgid "error writing to file" msgstr "errorea fitxategian idaztean" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "errore ezezaguna" #: lib/misc.c:240 msgid "invalid number" msgstr "zenbaki baliogabea" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID baliogabea" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "izena laburregia da" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/fi.po000066400000000000000000001056701471266067600124620ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Mikko Ikola , 2004 # Miloslav Trmač , 2011 # Ville Skyttä , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/fedora/language/" "fi/)\n" "Language: fi\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Oikeuksien pudottaminen epäonnistui.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Sisäinen virhe.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" "käyttäjällä %s ei ole valtuutusta muuttaa käyttäjän %s finger-tietoja\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Tuntematon käyttäjäympäristö" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Tiedoston /etc/passwd oletusympäristöä ei voi asettaa\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Virhe PAM:n alustamisessa.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Todennus epäonnistui %s:lle.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Sisäinen PAM-virhe ”%s”.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Tuntematon käyttäjä on kirjautunut.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Käyttäjän tiedot ei täsmää.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[VALITSIN...] käyttäjä" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Argumenttien käsittelyssä tapahtui virhe: %s\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Käyttäjänimeä ei ole määritelty.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Virhe alustettaessa %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Käyttäjää %s ei ole olemassa.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Tunnus on lukittu.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Tunnus ei ole lukittu.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimi:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimi:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Varoitus:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Pois käytöstä:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Ei koskaan" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Edellinen muutos:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Salasana vanhentuu:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Salasana pois käytöstä:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Tunnus vanhentuu:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Vanhenemistiedon muuttaminen epäonnistui %s:lle: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[VALITSIN...] [käyttäjä]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Käyttäjänimeä ei määritelty, ei nimeä uid:lle %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Vaihdetaan käyttäjän %s finger-tiedot.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Koko nimi" #: apps/lchfn.c:151 msgid "Surname" msgstr "Sukunimi" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Etunimi" #: apps/lchfn.c:172 msgid "Office" msgstr "Toimisto" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Toimistopuhelin" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Kotipuhelin" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Sähköpostiosoite" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger-tietoja ei muutettu: syöttövirhe.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger-tiedot muutettu.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger-tietoja ei muutettu: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Vaihdetaan käyttäjän %s komentotulkki.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Uusi komentotulkki" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Komentotulkkia ei vaihdettu: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Komentotulkki vaihdettu.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[VALITSIN...] ryhmä" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Ryhmän nimeä ei määritelty.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Epäkelpo ryhmätunnus %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Ryhmän luominen epäonnistui: %s.\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Ryhmää %s ei ole olemassa.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Ryhmää %s ei voitu poistaa: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Sekä -L että -U annettu.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Salasanan asettaminen ryhmälle %s epäonnistui: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Ryhmää %s ei voitu lukita: %s.\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Ryhmän %s lukitusta ei voitu avata: %s.\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Ryhmää %s ei voitu muokata: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Virhe etsittäessä %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Ryhmänimeä ei määritelty, käytetään %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Ryhmänimeä ei määritelty, ei nimeä gid:lle %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Käyttäjänimeä ei määritelty, käytetään %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s ei ole olemassa\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[VALITSIN...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Virhe avattaessa ”%s”: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Virhe luotaessa tunnusta käyttäjälle ”%s”: virheellinen rivi.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Epäkelpo käyttäjätunnus %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Kieltäydytään luomasta tunnusta UID:llä 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Virhe luotaessa ryhmää ”%s” GID:llä %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Vaarallista kotihakemistoa ”%s” ei käytetä käyttäjälle ”%s” oletuksena\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Virhe kotihakemiston luomisessa kohteelle %s:%s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Virhe ensimmäisen salasanan asettamisessa käyttäjälle %s:%s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Virhe käyttäjätunnuksen luomisessa kohteelle %s:%s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Vaihdetaan salasana käyttäjälle %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Uusi salasana" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Uusi salasana (vahvistus)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Salasanat eivät täsmää, yritä uudelleen.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Salasanan vaihto peruutettu.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Virhe luettaessa tiedostokuvaajasta %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Virhe salasanan asettamisessa käyttäjälle %s:%s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Virhe salasanan asettamisessa ryhmälle %s:%s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Salasana vaihdettu.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Ryhmää %jd ei ole olemassa\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Virhe luotaessa ryhmää ”%s”: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Tunnuksen luominen epäonnistu: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Virhe luotaessa %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Käyttäjää %s ei voitu poistaa: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s:lla ei ollut gid-numeroa.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Ryhmää GID:llä %jd ei ole olemassa, ei poisteta.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Ryhmällä, jonka GID on %jd, ei ollut ryhmänimeä.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Ryhmää %s ei voitu poistaa: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "virhe kotihakemiston poistamisessa käyttäjälle" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Salasanan asettaminen käyttäjälle %s:%s epäonnistui.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Käyttäjää %s ei voitu lukita: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Käyttäjän %s lukitusta ei voitu avata: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Varoitus: Ryhmää ID:llä %jd ei ole olemassa.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Käyttäjää %s ei voitu muokata: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Ryhmää %s ei voitu muokata: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Käyttäjällä %s ei ole vanhaa kotihakemistoa.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Käyttäjällä %s ei ole uutta kotihakemistoa.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Virhe siirrettäessä %s kohteeseen %s:%s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "ei voitu avata asetustiedostoa ”%s”: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "ei voitu avata asetustiedostoa ”%s”: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "asetustiedosto ”%s” on liian suuri" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "ei voitu avata asetustiedostoa ”%s”: %s" #: lib/error.c:62 msgid "success" msgstr "onnistui" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "moduuli asetettu pois käytöstä" #: lib/error.c:66 msgid "generic error" msgstr "yleinen virhe" #: lib/error.c:68 msgid "not enough privileges" msgstr "ei riittävästi oikeuksia" #: lib/error.c:70 msgid "access denied" msgstr "pääsy evätty" #: lib/error.c:72 msgid "bad user/group name" msgstr "väärä käyttäjä/ryhmä nimi" #: lib/error.c:74 msgid "bad user/group id" msgstr "väärä käyttäjä/ryhmä id" #: lib/error.c:76 msgid "user/group name in use" msgstr "käyttäjä/ryhmä nimi käytössä" #: lib/error.c:78 msgid "user/group id in use" msgstr "käyttäjä/ryhmä id käytössä" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "virhe päätteen attribuutteja muutettaessa" #: lib/error.c:82 msgid "error opening file" msgstr "virhe tiedoston avaamisessa" #: lib/error.c:84 msgid "error locking file" msgstr "virhe tiedoston lukitsemisessa" #: lib/error.c:86 msgid "error statting file" msgstr "virhe tiedoston avaamisessa" #: lib/error.c:88 msgid "error reading file" msgstr "virhe tiedoston lukemisessa" #: lib/error.c:90 msgid "error writing to file" msgstr "virhe tiedostoon kirjoittamisessa" #: lib/error.c:92 msgid "data not found in file" msgstr "dataa ei löytynyt tiedostosta" #: lib/error.c:94 msgid "internal initialization error" msgstr "sisäinen alustusvirhe" #: lib/error.c:96 msgid "error loading module" msgstr "virhe moduulin lataamisessa" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "virhe symbolin selvityksessä moduulissa" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "kirjasto/moduuli versioristiriita" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "lukituksen avaaminen tyhjentäisi salasanakentän" #: lib/error.c:105 msgid "invalid attribute value" msgstr "epäkelpo attribuutin arvo" #: lib/error.c:107 msgid "invalid module combination" msgstr "epäkelpo moduuliyhdistelmä" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "tuntematon virhe" #: lib/misc.c:240 msgid "invalid number" msgstr "virheellinen numero" #: lib/misc.c:254 msgid "invalid ID" msgstr "virheellinen ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ei alustusfunktiota %s kohteessa ”%s”" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "moduulin versioristiriita ”%s”" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "moduuli ”%s” ei määrittele ”%s”" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "virhe päätteen attribuutteja luettaessa" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "virhe päätteen attribuutteja asetettaessa" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "virhe luettaessa päätteeltä" #: lib/user.c:218 msgid "name is not set" msgstr "nimeä ei ole asetettu" #: lib/user.c:223 msgid "name is too short" msgstr "nimi on liian lyhyt" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "nimi on liian pitkä (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "nimi sisältää ei-ASCII-merkkejä" #: lib/user.c:242 msgid "name contains control characters" msgstr "nimi sisältää kontrollimerkkejä" #: lib/user.c:249 msgid "name contains whitespace" msgstr "nimi sisältää välilyöntejä" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "nimi alkaa väliviivalla" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "nimi sisältää virheellisen merkin ”%c”" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Käyttäjällä %s ei ole UID:tä" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "ryhmällä %s ei ole GID:tä" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "käyttäjällä %jd ei ole nimeä" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "ryhmällä %jd ei ole nimeä" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "käyttäjällä ei ole nimeä eikä UID:tä" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "ryhmällä ei ole nimeä eikä GID:tä" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Vaarallista kotihakemistoa ”%s” ei käytetä oletuksena" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Kentän %s oletusarvo ei kelpaa: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "virhe tiedoston lukitsemisessa: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ei voitu hakea oletusturvaympäristöä: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "ei voitu hakea turvaympäristöä ”%s”: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ei voitu asettaa oletusturvakontekstia ”%s”: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ei voitu hakea oletusturvaympäristöä: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "ei voitu määrittää turvaympäristöä ”%s”: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "ei voitu avata ”%s”: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "ei voitu avata ”%s”: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "virhe luotaessa ”%s”: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "”%s”:n omistajaa vaihdettaessa tapahtui virhe: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Virhe luettaessa ”%s”: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Virhe kirjoitettaessa ”%s”: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "ei voitu lukea kohteesta ”%s”: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Virhe siirrettäessä %s kohteeseen %s:%s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Virhe avattaessa ”%s”: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Virhe luettaessa ”%s”: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Virhe luettaessa ”%s”: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "elementillä ei ole %s-attribuuttia" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "elementillä ei ole %s-attribuuttia" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s arvo ”%s”: merkkiä ”:” ei sallita" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s arvo ”%s”: merkkiä ”:” ei sallita" #: modules/files.c:1136 msgid "entry already present in file" msgstr "merkintä on jo tiedostossa" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "ei voitu kirjoittaa ”%s”: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "tiedostossa on jo merkintä samalla nimellä" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "merkkiä ”:” ei sallita salatussa salasanassa" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "virhe salasanan kryptauksessa" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "\"%s\" ja \"%s\" moduuleita ei voi yhdistää" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ei suoriteta pääkäyttäjän oikeuksilla" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "varjosalasanatiedostoa ei ole – otetaan pois käytöstä" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "virhe ldap-kirjaston alustamisessa" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "ei voitu asettaa LDAP-protokollaa versioon %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "ei voitu tehdä TLS-neuvottelua LDAP-palvelimen kanssa" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "sitoutuminen LDAP-palvelimeen epäonnistui" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "ei voitu sitoutua LDAP-palvelimelle, ensimmäinen yritys ”%s”: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "käyttäjäobjektilla ei ole attribuuttia %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "käyttäjäobjekti luotiin ilman attribuuttia ”%s”" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "virhe LDAP-hakemistomerkinnän luomisessa: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "virhe LDAP-hakemistomerkinnän luomisessa: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "virhe LDAP-hakemistomerkinnän uudelleennimeämisessä: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "elementillä ei ollut %s-attribuuttia" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "virhe poistettaessa LDAP-hakemistomerkintää: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "elementillä ei ole %s-attribuuttia" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "salasanojen salausmuotoa ei tueta" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "objektia ei ole LDAP-hakemistossa" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "”%s”-attribuuttia ei löytynyt" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "virhe asetettaessa salasanaa LDAP-hakemiston kohteelle %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP-palvelimen nimi" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP-haun Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind -salasana" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL -käyttäjä" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL -valtuutuksen käyttäjä" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL -virhe käyttäjän luomisessa: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL -virhe käyttäjän poistamisessa: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "virhe alustettaessa Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "virhe kotihakemiston luomisessa käyttäjälle" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "virhe kotihakemiston poistamisessa käyttäjälle" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "virhe kotihakemiston siirtämisessä käyttäjälle" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Virhe alustettaessa %s:%s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Epäkelpo ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Etsitään ryhmää ID:llä %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Etsitään %s-nimistä ryhmää.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Etsitään käyttäjää ID:llä %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Etsitään %s-nimistä käyttäjää.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Merkintää ei löydy.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Kehotteet onnistuivat.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Kehotteet epäonnistuivat.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Oletuskäyttäjäobjektiluokat:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Oletuskäyttäjäattribuuttien nimet:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Haetaan oletuskäyttäjäattribuutteja:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopioidaan käyttäjän rakenne:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "varmuuskopiotiedosto ”%s” on olemassa eikä se ole normaali tiedosto" #~ msgid "backup file size mismatch" #~ msgstr "varmuuskopiotiedoston koko ei täsmää" po/fr.po000066400000000000000000001210031471266067600124570ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Alain PORTAL , 2007 # Audrey Simons , 2004, 2005 # Bettina De Monti , 2001 # Boris BARNIER , 2011 # Elodie, 2011 # Gauthier Ancelin , 2007, 2008 # Jérôme Fenal , 2012-2013 # Kévin Raymond , 2012 # Miloslav Trmač , 2011 # Sam Friedmann , 2009 # Thomas Canniot , 2007 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-03-17 21:20+0000\n" "Last-Translator: Jean-Baptiste Holcroft \n" "Language-Team: French \n" "Language: fr\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: Weblate 4.15.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Échec lors de l’abandon des privilèges.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Erreur interne.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s n’est pas autorisé à modifier les informations finger de %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Contexte utilisateur inconnu" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Impossible de définir le contexte par défaut pour /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Erreur lors de l’initialisation de PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Échec de l’authentification pour %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Erreur PAM interne « %s ».\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Utilisateur inconnu authentifié.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Non correspondance de l’utilisateur.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "demander toutes les informations" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "afficher les informations d’expiration pour l’utilisateur" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "nombre de jours minimum entre deux changements de mot de passe" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "JOURS" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "nombre de jours maximum entre deux changements de mot de passe" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "date du dernier changement de mot de passe en jours depuis le 1/1/1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "nombre de jours après l’expiration du mot de passe déclenchant la " "désactivation du compte" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "date de l’expiration du mot de passe en jours depuis le 1/1/1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "nombre de jours avant expiration pour commencer à prévenir l’utilisateur" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] utilisateur" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Erreur lors de l’analyse des paramètres : %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Aucun nom d’utilisateur indiqué.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Erreur lors de l’initialisation de %s : %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "L’utilisateur %s n’existe pas.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Le compte est verrouillé.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Le compte n’est pas verrouillé.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum :\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum :\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum :\taucun\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Avertissement :\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactif :\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inactif :\tjamais\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Le mot de passe doit être modifié à la prochaine connexion" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Jamais" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Dernière modification :\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Expiration du mot de passe :\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Mot de passe inactif :\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Expiration du compte :\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Impossible de modifier les informations d’expiration pour %s : %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [utilisateur]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Aucun nom d’utilisateur indiqué, aucun nom pour l’UID %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Modification des informations finger pour %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nom complet" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nom" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Prénom" #: apps/lchfn.c:172 msgid "Office" msgstr "Bureau" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Téléphone professionnel" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Téléphone privé" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adresse électronique" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Informations finger non modifiées : erreur de saisie.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Informations finger modifiées.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Informations finger non modifiées : %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Modifier l’interpréteur de commandes pour %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nouvel interpréteur de commandes" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Interpréteur de commandes non modifié : %s.\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Interpréteur de commande modifié.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid du nouveau groupe" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "créer un groupe système" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] groupe" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Aucun nom de groupe indiqué.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID groupe %s invalide\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "La création du groupe a échoué : %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Le groupe %s n’existe pas.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Le groupe %s ne peut pas être supprimé : %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "modifier le GID du groupe" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "modifier le nom du groupe" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NOM" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "mot de passe en clair pour le groupe" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRING" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "mot de passe chiffré pour le groupe" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "liste des administrateurs à ajouter" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "liste des administrateurs à retirer" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "liste des membres du groupe à ajouter" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "liste des membres du groupe à retirer" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "verrouiller le groupe" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "déverrouiller le groupe" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Aussi bien -L que -U indiqués.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Erreur lors de la définition du mot de passe du groupe %s : %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Le groupe %s ne peut pas être verrouillé : %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Le groupe %s ne peut pas être déverrouillé : %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Le groupe %s ne peut pas être modifié : %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Erreur lors de la vérification de %s : %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "afficher les utilisateurs d’un groupe nommé au lieu des appartenances de " "groupe de l’utilisateur" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "afficher les appartenances par nom et non par UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Aucun nom de groupe indiqué, utilisation de %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Aucun nom de groupe indiqué, aucun nom pour %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Aucun nom d’utilisateur indiqué, utilisation de %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s n’existe pas\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fichier contenant les informations des utilisateurs" #: apps/lnewusers.c:49 msgid "PATH" msgstr "CHEMIN" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "ne pas créer les répertoires utilisateurs" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "ne pas créer les conteneurs de messagerie" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Erreur lors de la lecture de « %s » : %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Erreur lors de la création d’un compte pour « %s » : ligne mal formatée.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID utilisateur %s invalide\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Création du compte avec l’UID 0 refusée.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Erreur lors de la création du groupe pour« %s » avec le GID %jd : %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Utilisation par défaut du répertoire personnel dangereux « %s » pour %s " "refusée\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Erreur lors de la création du dossier personnel pour %s : %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Erreur lors de la création du spool de courriel pour %s : %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Erreur lors de la définition du mot de passe initial pour %s : %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Erreur lors de la création du compte utilisateur pour %s : %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "modifier le mot de passe du groupe et non de l’utilisateur" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nouveau mot de passe en clair" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nouveau mot de passe chiffré" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "lire les mots de passe en clair depuis le descripteur donné" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "lire les mots de passe chiffrés depuis le descripteur donné" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Changement du mot de passe pour %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nouveau mot de passe" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nouveau mot de passe (confirmation)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Les mots de passe ne sont pas identiques, essayez de nouveau.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Modification du mot de passe annulée.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Erreur de lecture depuis le descripteur de fichier %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" "Erreur lors de la définition du mot de passe pour l’utilisateur %s : %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Erreur lors de la définition du mot de passe pour le groupe %s : %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Mot de passe modifié.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "créer un utilisateur système" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "informations GECOS du nouvel utilisateur" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "répertoire du nouvel utilisateur" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "répertoire contenant les fichiers pour le nouvel utilisateur" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell du nouvel utilisateur" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid du nouvel utilisateur" #: apps/luseradd.c:71 msgid "group for new user" msgstr "groupe du nouvel utilisateur" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "ne pas créer de répertoire pour l’utilisateur" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "ne pas créer de groupe portant le même nom que l’utilisateur" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "nom commun du nouvel utilisateur" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "prénom du nouvel utilisateur" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "nom de famille du nouvel utilisateur" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "numéro de pièce du nouvel utilisateur" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "numéro de téléphone du nouvel utilisateur" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "numéro de téléphone du domicile du nouvel utilisateur" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Le groupe %jd n’existe pas\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Erreur lors de la création du groupe « %s » : %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "La création du compte a échoué : %s\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Erreur lors de la création de %s : %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Erreur lors de la création du spool de courriel : %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "ne pas supprimer le groupe privé de l’utilisateur si celui-ci en a un" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "supprimer le répertoire de l’utilisateur" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "L’utilisateur %s n’a pas pu être supprimé : %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s n’avait pas de numéro GID.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Aucun groupe avec le GID %jd n’existe. Suppression impossible.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Le groupe avec le GID %jd n’avait pas de nom de groupe.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Le groupe %s ne peut pas être supprimé : %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Erreur lors de la suppression du dossier personnel : %s\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Erreur lors de la suppression du spool de courriel : %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "informations GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "répertoire utilisateur" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "déplacer le contenu du répertoire utilisateur" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "modifier le shell de l’utilisateur" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "modifier l’UID de l’utilisateur" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "modifier le GID primaire de l’utilisateur" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "modifier l’identifiant de connexion de l’utilisateur" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "mot de passe en clair de l’utilisateur" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "mot de passe chiffré de l’utilisateur" #: apps/lusermod.c:76 msgid "lock account" msgstr "verrouiller le compte" #: apps/lusermod.c:79 msgid "unlock account" msgstr "déverrouiller le compte" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "modifier le nom commun de l’utilisateur" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "modifier le prénom de l’utilisateur" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "modifier le nom de famille de l’utilisateur" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "modifier le numéro de pièce de l’utilisateur" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "modifier le numéro de téléphone de l’utilisateur" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "modifier le numéro de téléphone du domicile de l’utilisateur" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" "Erreur lors de la définition du mot de passe pour l’utilisateur %s : %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "L’utilisateur %s n’a pas pu être verrouillé : %s\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "L’utilisateur %s n’a pas pu être déverrouillé : %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Avertissement : le groupe d’ID %jd n’existe pas.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "L’utilisateur %s n’a pas pu être modifié : %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Le groupe %s n’a pas pu être modifié : %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Aucun ancien dossier personnel pour %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Aucun nouveau dossier personnel pour %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Erreur lors du déplacement de %s vers %s : %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "impossible d’ouvrir le fichier de configuration « %s » : %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" "impossible d’exécuter la fonction stat sur le fichier de configuration « %s »" " : %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "le fichier de configuration « %s » est trop grand" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "impossible de lire le fichier de configuration « %s » : %s" #: lib/error.c:62 msgid "success" msgstr "réussi" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "module désactivé par la configuration" #: lib/error.c:66 msgid "generic error" msgstr "erreur générique" #: lib/error.c:68 msgid "not enough privileges" msgstr "permissions insuffisantes" #: lib/error.c:70 msgid "access denied" msgstr "accès refusé" #: lib/error.c:72 msgid "bad user/group name" msgstr "nom d’utilisateur/de groupe incorrect" #: lib/error.c:74 msgid "bad user/group id" msgstr "ID utilisateur/groupe incorrect" #: lib/error.c:76 msgid "user/group name in use" msgstr "nom d’utilisateur/de groupe en cours d’utilisation" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID utilisateur/groupe en cours d’utilisation" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "erreur lors de la modification des attributs du terminal" #: lib/error.c:82 msgid "error opening file" msgstr "erreur lors de l’ouverture du fichier" #: lib/error.c:84 msgid "error locking file" msgstr "erreur lors du verrouillage du fichier" #: lib/error.c:86 msgid "error statting file" msgstr "impossible d’appliquer la fonction stat au fichier" #: lib/error.c:88 msgid "error reading file" msgstr "erreur lors de la lecture du fichier" #: lib/error.c:90 msgid "error writing to file" msgstr "erreur lors de l’écriture sur fichier" #: lib/error.c:92 msgid "data not found in file" msgstr "données non trouvées dans le fichier" #: lib/error.c:94 msgid "internal initialization error" msgstr "erreur d’initialisation interne" #: lib/error.c:96 msgid "error loading module" msgstr "erreur lors du chargement du module" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "erreur lors de la conversion du symbole en module" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "incohérence de version du module/de la bibliothèque" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "le déverrouillage viderait le champ du mot de passe" #: lib/error.c:105 msgid "invalid attribute value" msgstr "la valeur de l’attribut est invalide" #: lib/error.c:107 msgid "invalid module combination" msgstr "l’association des modules est invalide" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "le répertoire de l’utilisateur ne lui appartient pas" #: lib/error.c:115 msgid "unknown error" msgstr "erreur inconnue" #: lib/misc.c:240 msgid "invalid number" msgstr "numéro invalide" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID invalide" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "aucune fonction d’initialisation %s dans « %s »" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "incohérence de version du module dans « %s »" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "le module « %s » ne définit pas « %s »" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "erreur lors de la lecture des attributs du terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "erreur lors de la configuration des attributs du terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "erreur de lecture depuis le terminal" #: lib/user.c:218 msgid "name is not set" msgstr "le nom n’est pas défini" #: lib/user.c:223 msgid "name is too short" msgstr "le nom est trop court" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "le nom est trop long (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "le nom contient des caractères qui ne sont pas des caractères ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "le nom contient des caractères de contrôle" #: lib/user.c:249 msgid "name contains whitespace" msgstr "le nom contient des espaces" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "le nom commence par un trait d’union" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "le nom contient un caractère incorrect « %c »" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "l’utilisateur %s n’a pas d’UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "utilisateur %s introuvable" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "le groupe %s n’a pas de GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "groupe %s introuvable" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "l’utilisateur %jd n’a pas de nom" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "le groupe %jd n’a pas de nom" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "l’utilisateur n’a ni nom ni UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "le groupe n’a ni nom ni GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Utilisation par défaut du répertoire personnel dangereux « %s » refusée" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Valeur par défaut du champs %s invalide : %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "erreur lors du verrouillage du fichier : %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "impossible d’obtenir le contexte de sécurité par défaut : %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "impossible d’obtenir le contexte de sécurité de « %s » : %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "impossible de définir le contexte de sécurité par défaut à « %s » : %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" "impossible d’obtenir l’identificateur de contexte pour le fichier selabel : " "%s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "impossible de déterminer le contexte de sécurité de « %s » : %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "impossible d’ouvrir « %s » : %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "impossible d’exécuter la fonction stat « %s » : %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "erreur lors de la création de « %s » : %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Erreur lors du changement du propriétaire de « %s » : %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Erreur lors du changement de mode de « %s » : %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Erreur lors de la lecture de « %s » : %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Erreur lors de l’écriture de « %s » : %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "impossible de lire à partir de « %s » : %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "Le contenu du verrou « %s » est invalide" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "Le verrou %s est détenu par le processus %ju" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "Erreur lors de la suppression du verrou d’état %s : %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "erreur lors de l’ouverture du fichier temporaire pour « %s » : %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "Le verrou n’a pas pu être obtenu « %s » : %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "Erreur lors de la résolution de « %s » : %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "Erreur lors du remplacement de « %s » : %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "l’objet dupliqué n’a pas d’attribut %s" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "l’objet original n’a pas d’attribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "L’ID %lu est déjà utilisé par %s" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s valeur « %s » : « \\n" " » non autorisée" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s valeur « %s » : « : » non autorisé" #: modules/files.c:1136 msgid "entry already present in file" msgstr "entrée déjà présente dans le fichier" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "impossible d’écrire sur « %s » : %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "l’objet d’entité n’a pas d’attribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "entrée avec un nom en conflit déjà présente dans le fichier" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "« : » et « \\n" " » non permis dans le mot de passe chiffré" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "erreur lors du chiffrage du mot de passe" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "les modules « %s » et « %s » ne peuvent pas être associés" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "exécution sans les permissions du superutilisateur" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "pas de fichier shadow présent -- désactivation" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "erreur lors de l’initialisation de la bibliothèque LDAP" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "impossible de régler le protocole LDAP sur la version %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "impossible de négocier TLS avec le serveur LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "impossible de se lier au serveur LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "impossible de se lier au serveur LDAP, première tentative en tant que " "« %s » : %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "l’objet utilisateur n’a pas d’attribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "l’objet utilisateur a été créé sans « %s »" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "erreur lors de la création d’une entrée dans l’annuaire LDAP : %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "erreur lors de la modification de l’entrée dans l’annuaire LDAP : %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "erreur lors du changement du nom de l’entrée dans l’annuaire LDAP : %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "l’objet n’avait pas d’attribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "erreur lors de la suppression de l’entrée dans l’annuaire LDAP : %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "l’objet n’a pas d’attribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "méthode de chiffrement du mot de passe non prise en charge" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "objet non présent dans l’annuaire LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "aucun attribut « %s » trouvé" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" "erreur lors de la définition du mot de passe dans l’annuaire LDAP pour %s : " "%s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nom du serveur LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "DN de la base de recherche LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN de liaison LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Mot de passe LDAP Bind" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Utilisateur LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Utilisateur d’autorisation LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Erreur Cyrus SASL lors de la création de l’utilisateur : %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Erreur Cyrus SASL lors de la suppression de l’utilisateur : %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Erreur lors de l’initialisation Cyrus SASL : %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "Erreur lors de la création du dossier personnel pour l’utilisateur" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "Erreur lors de la suppression du dossier personnel pour l’utilisateur" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "Erreur lors du déplacement du dossier personnel pour l’utilisateur" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Erreur lors de l’initialisation de %s : %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID %s invalide\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Recherche du groupe avec l’ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Recherche du groupe appelé %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Recherche de l’utilisateur avec l’ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Recherche de l’utilisateur nommé %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Entrée non trouvée.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Invites réussies.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Invites échouées.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Classes d’objet d’utilisateur par défaut :\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Noms des attributs des utilisateurs par défaut :\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Obtention des attributs des utilisateurs par défaut :\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Copie de la structure de l’utilisateur :\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "le fichier de sauvegarde « %s » existe et il n'est pas standard" #~ msgid "backup file size mismatch" #~ msgstr "incohérence de la taille du fichier de sauvegarde" po/gu.po000066400000000000000000001305711471266067600124750ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Ankit Patel , 2004, 2005, 2006, 2007, 2008 # Miloslav Trmač , 2011 # sweta , 2008, 2009, 2010 # sweta , 2011 # sweta , 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Gujarati (http://www.transifex.com/projects/p/fedora/language/" "gu/)\n" "Language: gu\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "ખાસ ફાયદાઓ છોડી મૂકવામાં નિષ્ફળ.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "આંતરિક ભૂલ.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s એ %s ફીંગર જાણકારી બદલવા માટે સત્તાધિકારીત નથી\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "અજ્ઞાત વપરાશકર્તા સંદર્ભ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd માટે મૂળભૂત સંદર્ભ સુયોજિત કરી શકતા નથી\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM નો પ્રારંભ કરવામાં ભૂલ.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s માટેનું સત્તાધિકરણ નિષ્ફળ.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "આંતરિક PAM ભૂલ `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "અજ્ઞાત વપરાશકર્તા સત્તાધિકારીત થયો.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "વપરાશકર્તા બંધબેસતો નથી.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] વપરાશકર્તા" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "દલીલોનું પદચ્છેદ કરવામાં ભૂલ: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "કોઈ વપરાશકર્તા નામ સ્પષ્ટ કરેલ નથી.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s નો પ્રારંભ કરવામાં ભૂલ: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "વપરાશકર્તા %s અસ્તિત્વમાં નથી.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "ખાતાને તાળું લગાવાયેલ છે.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "ખાતાને તાળું લગાવાયેલ નથી.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "ન્યુનતમ:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "મહત્તમ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "ચેતવણી:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "અસક્રિય:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "ક્યારેય નહિં" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "છેલ્લો ફેરફાર:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "પાસવર્ડની મર્યાદા પૂરી થાય છે:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "પાસવર્ડ નિષ્ક્રિય છે:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "ખાતાની મર્યાદા પૂરી થાય છે:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s માટેની એજીંગ જાણકારી સુધારવામાં નિષ્ફળ: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "કોઈ વપરાશકર્તા નામ સ્પષ્ટ કરેલ નથી, uid %d માટે કોઈ નામ નથી.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s માટેની ફીંગર જાણકારી બદલી રહ્યા છીએ.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "પૂરું નામ" #: apps/lchfn.c:151 msgid "Surname" msgstr "અટક" #: apps/lchfn.c:162 msgid "Given Name" msgstr "આપેલ નામ" #: apps/lchfn.c:172 msgid "Office" msgstr "ઓફિસ" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "ઓફિસનો ફોન" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "ઘરનો ફોન" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ઈ-મેઈલ સરનામું" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "ફીંગર જાણકારી બદલાયેલ નથી: ઈનપુટ ભૂલ.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "ફીંગર જાણકારી બદલાયેલ છે.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "ફીંગર જાણકારી બદલાયેલ નથી: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s માટે શેલ બદલી રહ્યા છીએ.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "નવો શેલ" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "શેલ બદલાયેલ નથી: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "શેલ બદલાયેલ છે.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] જૂથ" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "કોઈ જૂથ નામ સ્પષ્ટ કરેલ નથી.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "અયોગ્ય જૂથ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "જૂથ બનાવવામાં નિષ્ફળતા: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "જૂથ %s અસ્તિત્વમાં નથી.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "જૂથ %s કાઢી શકાયું નથી: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "બંને -L અને -U સ્પષ્ટ કરેલ છે.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "જૂથ %s માટે પાસવર્ડ સુયોજિત કરવામાં નિષ્ફળ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "જૂથ %s ને તાળુ મારી શકાયું નહિં: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "જૂથ %s નું તાળુ ખોલી શકાયું નહિં: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "જૂથ %s સુધારી શકાયું નહિં: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s જોવામાં ભૂલ: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "કોઈ જૂથ નામ સ્પષ્ટ કરેલ નથી, %s વાપરી રહ્યા છીએ.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "કોઈ જૂથ નામ સ્પષ્ટ કરેલ નથી, gid %d માટે કોઈ નામ નથી.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "કોઈ વપરાશકર્તા નામ સ્પષ્ટ કરેલ નથી, %s વાપરી રહ્યા છીએ.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s અસ્તિત્વમાં નથી\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' ખોલવામાં ભૂલ: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' માટે ખાતુ બનાવવામાં ભૂલ: લીટીનું બંધારણ અયોગ્ય રીતે ઘડાયેલ છે.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "અયોગ્ય વપરાશકર્તા ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID ૦ સાથે ખાતું બનાવવાનું નકારી રહ્યા છીએ.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' માટે GID %jd સાથે જૂથ બનાવવામાં ભૂલ: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "મૂળભૂત દ્દારા %s માટે જોખમકારક ઘર ડિરેક્ટરી `%s' ને વાપરવાની ના પાડી રહ્યા છે\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s માટે ઘર ડિરેક્ટરી બનાવવામાં ભૂલ: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s માટે પ્રારંભિક પાસવર્ડ સુયોજિત કરવામાં ભૂલ: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s માટે ખાતા જાણકારી બનાવવામાં ભૂલ: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s માટે પાસવર્ડ બદલી રહ્યા છીએ.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "નવો પાસવર્ડ" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "નવો પાસવર્ડ (ખાતરી)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "પાસવર્ડો બંધબેસતા નથી, ફરીથી પ્રયત્ન કરો.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "પાસવર્ડ બદલવાનું નકારાઈ ગયું.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ફાઇલ વર્ણનકર્તા %d માંથી વાંચતી વખતે ભૂલ.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "વપરાશકર્તા %s માટે પાસવર્ડ સુયોજિત કરવામાં ભૂલ: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "જૂથ %s માટે પાસવર્ડ સુયોજિત કરવામાં ભૂલ: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "પાસવર્ડ બદલાઈ ગયેલ છે.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "જૂથ %jd અસ્તિત્વમાં નથી\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "જૂથ `%s' બનાવવામાં ભૂલ: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "ખાતું બનાવવામાં નિષ્ફળ: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s બનાવવામાં ભૂલ: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "વપરાશકર્તા %s કાઢી શકાયો નથી: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s એ gid સંખ્યા આપતું નથી.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd વાળું કોઈ જૂથ અસ્તિત્વમાં નથી, દૂર કરતા નથી.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd વાળા જૂથ પાસે કોઈ કોઈ જૂથ નામ નથી.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "જૂથ %s કાઢી શકાયું નથી: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "વપરાશકર્તા માટે ઘર ડિરેક્ટરી દૂર કરવામાં ભૂલ" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "વપરાશકર્તા %s માટે પાસવર્ડ સુયોજિત કરવામાં નિષ્ફળ: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "વપરાશકર્તા %s ને તાળુ મારી શકાયું નથી: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "વપરાશકર્તા %s ને તાળુ ખોલી શકાયું નહિં: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "ચેતવણી: ID %jd સાથેનું જૂથ અસ્તિત્વમાં નથી.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "વપરાશકર્તા %s સુધારી શકાયો નહિં: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "જૂથ %s સુધારી શકાયું નહિં: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s માટે કોઈ જૂની ઘર ડિરેક્ટરી નથી.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s માટે કોઈ નવી ઘર ડિરેક્ટરી નથી.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s ને %s માં ખસેડતી વખતે ભૂલ: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "રુપરેખાંકન ફાઈલ `%s' ખોલી શક્યા નહિં: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "રુપરેખાંકન ફાઈલ `%s' કહી શક્યા નહિં: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "રુપરેખાંકન ફાઈલ `%s' ખૂબ મોટી છે" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "રુપરેખાંકન ફાઈલ `%s' વાંચી શક્યા નહિં: %s" #: lib/error.c:62 msgid "success" msgstr "સફળતા" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "રુપરેખાંકન દ્વારા મોડ્યુલ નિષ્ક્રિય થઈ ગયેલ છે" #: lib/error.c:66 msgid "generic error" msgstr "સામાન્ય ભૂલ" #: lib/error.c:68 msgid "not enough privileges" msgstr "કોઈ પૂરતા ફાયદાકારક ક્ષેત્રો નથી" #: lib/error.c:70 msgid "access denied" msgstr "પરવાનગી નથી" #: lib/error.c:72 msgid "bad user/group name" msgstr "ખરાબ વપરાશકર્તા/જૂથ નામ" #: lib/error.c:74 msgid "bad user/group id" msgstr "ખરાબ વપરાશકર્તા/જૂથ id" #: lib/error.c:76 msgid "user/group name in use" msgstr "વપરાશકર્તા/જૂથ નામ વપરાશમાં છે" #: lib/error.c:78 msgid "user/group id in use" msgstr "વપરાશકર્તા/જૂથ id વપરાશમાં છે" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ટર્મિનલની લાક્ષણિકતાઓ સુધારવામાં ભૂલ" #: lib/error.c:82 msgid "error opening file" msgstr "ફાઈલ ખોલવામાં ભૂલ" #: lib/error.c:84 msgid "error locking file" msgstr "ફાઈલને તાળુ મારવામાં ભૂલ" #: lib/error.c:86 msgid "error statting file" msgstr "ફાઈલની સ્થિતિ કહેવામાં ભૂલ" #: lib/error.c:88 msgid "error reading file" msgstr "ફાઈલ વાંચવામાં ભૂલ" #: lib/error.c:90 msgid "error writing to file" msgstr "ફાઈલમાં લખવામાં ભૂલ" #: lib/error.c:92 msgid "data not found in file" msgstr "ફાઈલમાં કોઈ માહિતી મળી નથી" #: lib/error.c:94 msgid "internal initialization error" msgstr "આંતરિક પ્રારંભિક ભૂલ" #: lib/error.c:96 msgid "error loading module" msgstr "મોડ્યુલ લાવવામાં ભૂલ" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "મોડ્યુલમાં સંજ્ઞા ઉકેલવામાં ભૂલ" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "લાઈબ્રેરી/મોડ્યુલની આવૃત્તિ બંધબેસતી નથી" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "તાળું ખોલવાનું પાસવર્ડ ક્ષેત્રને ખાલી બનાવે છે" #: lib/error.c:105 msgid "invalid attribute value" msgstr "અયોગ્ય ગુણધર્મ કિંમત" #: lib/error.c:107 msgid "invalid module combination" msgstr "અયોગ્ય મોડ્યુલ સંયોજન" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "અજ્ઞાત ભૂલ" #: lib/misc.c:240 msgid "invalid number" msgstr "અયોગ્ય નંબર" #: lib/misc.c:254 msgid "invalid ID" msgstr "અયોગ્ય ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "કોઈ પ્રારંભ વિધેય %s નથી `%s' માં" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' માં મોડ્યુલની આવૃત્તિ બંધબેસતી નથી" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "મોડ્યુલ `%s' એ `%s' વ્યાખ્યાયિત કરતું નથી" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ટર્મિનલની લાક્ષણિકતાઓ વાંચવામાં ભૂલ" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ટર્મિનલની લાક્ષણિકતાઓ સુયોજિત કરવામાં ભૂલ" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ટર્મિનલમાંથી વાંચવામાં ભૂલ" #: lib/user.c:218 msgid "name is not set" msgstr "નામ સુયોજિત નથી" #: lib/user.c:223 msgid "name is too short" msgstr "નામ ખૂબ નાનું છે" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "નામ ખૂબ લાંબુ છે (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "નામ બિન-ASCII અક્ષરો સમાવે છે" #: lib/user.c:242 msgid "name contains control characters" msgstr "નામ નિયંત્રક અક્ષરો સમાવે છે" #: lib/user.c:249 msgid "name contains whitespace" msgstr "નામ ખાલી જગ્યાઓ સમાવે છે" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "નામ હાયફન (~) થી શરૂ થાય છે" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "નામ અયોગ્ય અક્ષર `%c' સમાવે છે" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "વપરાશકર્તા %s ને કોઈ UID નથી" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "જૂથ %s ને કોઈ GID નથી" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "વપરાશકર્તા %jd ને કોઈ નામ નથી" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "જૂથ %jd ને કોઈ નામ નથી" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "વપરાશકર્તાને ક્યાં તો નામ કે UID નથી" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "જૂથને નહિં તો નામ કે GID છે" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "મૂળભૂત દ્દારા જોખમકારક ઘર ડિરેક્ટરી `%s' ને વાપરવાની ના પાડી રહ્યા છે" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "ક્ષેત્ર %s ની મૂળભૂત કિંમત અયોગ્ય છે: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ફાઈલને તાળુ લગાવવામાં ભૂલ: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "મૂળભૂત સુરક્ષા સંદર્ભ મેળવી શક્યા નહિં: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' નો સુરક્ષા સંદર્ભ મેળવી શક્યા નહિં: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' માં મૂળભૂત સુરક્ષા સંદર્ભ સુયોજિત કરી શક્યા નહિં: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "મૂળભૂત સુરક્ષા સંદર્ભ મેળવી શક્યા નહિં: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' માટેનો સુરક્ષા સંદર્ભ નક્કી કરી શક્યા નહિં: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' ખોલી શક્યા નહિં: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' ની સ્થિતિ કહી શક્યા નહિં: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' બનાવવામાં ભૂલ: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' નો માલિક બદલવામાં ભૂલ: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' ની સ્થિતિને બદલતી વખતે ભૂલ: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' વાંચવામાં ભૂલ: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' લખવામાં ભૂલ: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' માંથી વાંચી શક્યા નહિં: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s ને %s માં ખસેડતી વખતે ભૂલ: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' ની સ્થિતિને બદલતી વખતે ભૂલ: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' વાંચવામાં ભૂલ: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' વાંચવામાં ભૂલ: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "એન્ટીટી ઓબ્જેક્ટ પાસે કોઈ %s લક્ષણ નથી" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ઓબ્જેક્ટ પાસે કોઈ %s લક્ષણ નથી" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s કિંમત `%s': `:' પરવાનગી આપેલ નથી" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s કિંમત `%s': `:' પરવાનગી આપેલ નથી" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ફાઈલમાં પ્રવેશ પહેલાથી જ હાજર છે" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' માં લખી શક્યા નહિં: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "એન્ટીટી ઓબ્જેક્ટ પાસે કોઈ %s લક્ષણ નથી" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "એકબીજા સાથે અથડાતા નામ સાથે નોંધણી પહેલેથી જ ફાઇલમાં હાજર છે" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' એનક્રિપ્ટ થયેલ પાસવર્ડમાં પરવાનગી આપેલ નથી" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "પાસવર્ડ એનક્રિપ્ટ કરવામાં ભૂલ" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' અને `%s' મોડ્યુલોને ભેગા કરી શકાતા નથી" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "શ્રેષ્ઠ વપરાશકર્તાની ફાયદાકારક સ્થિતિ સાથે નથી ચલાવી રહ્યા" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "કોઈ શેડો ફાઈલ હાજર નથી -- નિષ્ક્રિય કરી રહ્યા છીએ" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap લાઈબ્રેરીનો પ્રારંભ કરવામાં ભૂલ" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP પ્રોટોકોલને આવૃત્તિ %d સાથે સુયોજિત કરી શક્યા નહિં" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS ને LDAP સર્વર સાથે અવગણી શક્યા નહિં" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP સર્વરમાં જોડાણ કરી શક્યા નહિં" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP સર્વરમાં જોડાણ કરી શક્યા નહિં, `%s' ને પ્રથમ વાર લેતાં: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "વપરાશકર્તા ઓબ્જેક્ટ પાસે કોઈ %s લક્ષણ નહતું" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "વપરાશકર્તા ઓબ્જેક્ટ કોઈ `%s' સાથે બન્યું નહતું" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP ડિરેક્ટરી પ્રવેશ બનાવવામાં ભૂલ: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP ડિરેક્ટરી પ્રવેશ સુધારવામાં ભૂલ: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP ડિરેક્ટરી પ્રવેશનું નામ બદલવામાં ભૂલ: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ઓબ્જેક્ટ પાસે કોઈ %s લક્ષણ નહતું" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP ડિરેક્ટરી પ્રવેશ દૂર કરવામાં ભૂલ: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ઓબ્જેક્ટ પાસે કોઈ %s લક્ષણ નથી" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "બિનઆધારભૂત પાસવર્ડ એનક્રિપ્શન યોજના" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ડિરેક્ટરીમાં આવો કોઈ ઓબ્જેક્ટ નથી" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "કોઈ `%s' લક્ષણ મળ્યું નથી" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "LDAP ડિરેક્ટરીમાં %s માટે પાસવર્ડ સુયોજિત કરવામાં ભૂલ: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP સર્વર નામ" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP શોધનો આધાર DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP બાઈન્ડ DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP બાઈન્ડ પાસવર્ડ" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL વપરાશકર્તા" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL સત્તાધિકરણ વપરાશકર્તા" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "વપરાશકર્તા બનાવવામાં Cyrus SASL ભૂલ: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "વપરાશકર્તા દૂર કરવામાં Cyrus SASL ભૂલ: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL નો પ્રારંભ કરવામાં ભૂલ: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "વપરાશકર્તા માટે ઘર ડિરેક્ટરી બનાવવામાં ભૂલ" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "વપરાશકર્તા માટે ઘર ડિરેક્ટરી દૂર કરવામાં ભૂલ" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "વપરાશકર્તા માટે ઘર ડિરેક્ટરી ખસેડવામાં ભૂલ" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s નો પ્રારંભ કરવામાં ભૂલ: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "અયોગ્ય ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd વાળા જૂથ માટે શોધ કરી રહ્યા છીએ.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s નામવાળા જૂથ માટે શોધ કરી રહ્યા છીએ.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd વાળા વપરાશકર્તા માટે શોધ કરી રહ્યા છીએ.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s નામવાળા વપરાશકર્તા માટે શોધ કરી રહ્યા છીએ.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "પ્રવેશ મળ્યો નથી.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "પ્રોમ્પ્ટ કરવામાં સફળતા મળી.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "પ્રોમ્પ્ટ કરવામાં નિષ્ફળ.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "મૂળભૂત વપરાશકર્તા ઓબ્જેક્ટ વર્ગો:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "મૂળભૂત વપરાશકર્તા લક્ષણોના નામો:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "મૂળભૂત વપરાશકર્તા લક્ષણો મેળવી રહ્યા છીએ:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "વપરાશકર્તા સંરચનાની નકલ કરી રહ્યા છીએ:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "બેકઅપ ફાઈલ `%s' અસ્તિત્વમાં છે અને એ નિયમિત ફાઈલ નથી" #~ msgid "backup file size mismatch" #~ msgstr "બેકઅપ ફાઈલ માપ બંધબેસતું નથી" po/he.po000066400000000000000000000746541471266067600124670ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/fedora/language/" "he/)\n" "Language: he\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "כישלון בוויתור על הרשאות.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "שגיאה פנימית.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "המשתמש %s אינו מורשה לשנות מידע כללי (finger info) של %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "הקשר משתמש לא ידוע" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "קביעת ברירת מחדל להקשר עבור ‎/etc/passwd נכשלה\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "שגיאה באתחול PAM.‏\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "שגיאת אימות עבור %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "שגיאת PAM פנימית '%s`.‏\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "אומת משתמש לא מוכר.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "אי התאמה של המשתמש.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[אפשרות...] משתמש" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "שגיאה בפענוח פרמטרים: %s.‏\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "לא צויין שם משתמש.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "שגיאה באתחול %s:‏ %s.‏\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "המשתמש %s אינו קיים.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "החשבון נעול.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "החשבון אינו נעול.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "מזערי:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "מירבי:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "אתרעה:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "לא פעיל:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "לעולם לא" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "עדכון אחרון:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "פקיעת תוקף ססמה:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "ססמה לא פעילה:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "פקיעת תוקף חשבון:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "כישלון בעדכון מידע אודות התיישנות עבור %s:‏ %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[אפשרות...] [משתמש]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "לא צויין שם משתמש, אין שם עבור uid %d.‏\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "שינוי מידע כללי (finger) עבור %s.‏\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "שם מלא" #: apps/lchfn.c:151 msgid "Surname" msgstr "שם משפחה" #: apps/lchfn.c:162 msgid "Given Name" msgstr "שם פרטי" #: apps/lchfn.c:172 msgid "Office" msgstr "משרד" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "טלפון בעבודה" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "טלפון בבית" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "כתובת דואר" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "מידע כללי (finger) לא עודכן: שגיאת קלט.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "מידע כללי (finger) עודכן.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "מידע כללי (finger) לא עודכן: %s.‏\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "מעדכן shell עבור %s.‏\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "ה-shell לא עודכן: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "ה-shell עודכן.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[אפשרות...] קבוצה" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "לא צויין שם קבוצה.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "זיהוי קבוצה %s שגוי\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "יצירת קבוצה נכשלה: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "הקבוצה %s אינה קיימת.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "מחיקת הקבוצה %s נכשלה: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "נכשלה קביעת ססמה לקבוצה %s:‏ %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "נכשלה נעילת הקבוצה %s:‏ %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "נכשל שחרור נעילת הקבוצה %s:‏ %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "נכשל עדכון הקבוצה %s:‏ %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "איתור %s נכשל: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "לא צויין שם קבוצה, משתמש ב-%s.‏\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "לא צויין שם קבוצה, אין שם עבור gid‏‏ %d.‏\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "לא צויין שם חשבון, משתמש ב-%s.‏\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[אפשרות...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "שגיאה בפתיחת '%s`:‏ %s.‏\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "יצירת חשבון עבור '%s` נכשלה: שורה במבנה שגוי.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "זיהוי משתמש שגוי %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "מסרב ליצור חשבון עם זיהוי משתמש (UID)‏ 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "יצירת קבוצה עבור '%s` נכשלה עם GID ‏%jd:‏ %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "כישלון ביצירת תיקיית בית עבור %s:‏ %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "כישלון בקביעת ססמה התחלתית עבור %s:‏ %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "כישלון ביצירת חשבון משתמש עבור %s:‏ %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "שינוי ססמה עבור %s.‏\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "ססמה חדשה" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "ססמה חדשה (אישור)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "ססמאות אינן תואמות, יש לנסות שנית.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "שינוי ססמה בוטל.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "כישלון בקביעת ססמה עבור המשתמש %s:‏ %s.‏\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "כישלון בקביעת ססמה עבור הקבוצה %s:‏ %s.‏\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "ססמה עודכנה.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "הקבוצה %jd אינה קיימת\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "שגיאה ביצירת קבוצה '%s`:‏ %s.‏\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "יצירת חשבון משתמש נכשלה: %s.‏\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "כישלון ביצירת %s:‏ %s.‏\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "לא ניתן למחוק את המשתמש %s:‏ %s.‏\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "לקבוצה %s לא היה מספר זיהוי (gid).‏\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "אין קבוצה עם מספר זיהוי (GID)‏ %jd, לא ניתן למחוק.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "כישלון ביצירת תיקיית בית עבור %s:‏ %s\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "שגיאה בשינוי בעלות '%s`:‏ %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "שגיאה בקריאת '%s`:‏ %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "שגיאה בכתיבת '%s`:‏ %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "שגיאה בקריאת '%s`:‏ %s" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "שגיאה בפתיחת '%s`:‏ %s.‏\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "שגיאה בקריאת '%s`:‏ %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "שגיאה בקריאת '%s`:‏ %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/hi.po000066400000000000000000001277131471266067600124660ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Rajesh Ranjan , 2007 # Miloslav Trmač , 2011 # Rajesh Ranjan , 2009 # Rajesh Ranjan , 2004, 2005, 2006, 2008, 2009, 2011, 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/fedora/language/" "hi/)\n" "Language: hi\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "विशेषाधिकार हटाने में असफल.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "आंतरिक त्रुटि.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s की पहचान को बदलने के लिए %s अधिकृत नहीं है\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "अज्ञात उपयोक्ता संदर्भ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd के लिए मूलभूत संदर्भ व्यवस्थित नहीं कर सकता\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM प्रारंभिकीकरण त्रुटि.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s के लिए सत्यापन असफल.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "आंतरिक PAM त्रुटि`%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "अज्ञात उपयोक्ता सत्यापित.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "उपयोक्ता बेमेल.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[विकल्प...] उपयोक्ता" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "तर्कों को विश्लेषण करने में त्रुटि: %s।\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "कोई उपयोक्ता नाम निर्दिष्ट नहीं किया गया.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr " %s के प्रारंभिकीकरण में त्रुटि: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s उपयोक्ता जीवंत नहीं है.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "लेखा तालकित है.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "लेखा तालकित नहीं है.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "न्यूनतम:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "अधिकतम:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "चेतावनी:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "निष्क्रिय:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "कभी नहीं" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "अंतिम बदलाव:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "शब्दकूट अंत:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "शब्दकूट निष्क्रिय:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "लेखा अंत:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s के लिए पुरानी जानकारी रूपांतरित करने में असफल: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[विकल्प...] [उपयोक्ता]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "कोई उपयोक्ता नाम निर्दिष्ट नहीं किया गया,uid %d के लिए नाम नहीं है.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s के लिए फिंगर जानकारी बदली जा रही है.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "पूरा नाम" #: apps/lchfn.c:151 msgid "Surname" msgstr "उपनाम" #: apps/lchfn.c:162 msgid "Given Name" msgstr "दिया नाम" #: apps/lchfn.c:172 msgid "Office" msgstr "कार्यालय" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "कार्यालय दूरभाष" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "घर दूरभाष" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ई-डाक पता" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "फिंगर जानकारी नहीं बदली गई: निवेश त्रुटि.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "फिंगर जानकारी बदली गई.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "फिंगर जानकारी नहीं बदली गई: %s।\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s के लिए शैल बदला जा रहा है.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "नया शैल" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "शैल नहीं बदला गया:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "शैल बदला गया.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[विकल्प...] समूह" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "कोई समूह नाम निर्दिष्ट नहीं किया गया.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "अमान्य समूह ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "समूह निर्माण असफल: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s समूह उपस्थित नहीं है.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "समूह %s को विलोपित नहीं कर सका: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L और -U दोनों निर्दिष्ट है. \n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s समूह के लिए शब्दकूट जमावट असफल: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s समूह को तालकित नहीं किया जा सकता: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s समूह को अतालकित नहीं किया जा सकता: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s समूह को परिवर्तित नहीं किया जा सका: %ss\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s देखने में त्रुटि: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "%s के प्रयोग से कोई समूह नाम निर्दिष्ट नहीं किया गया.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "कोई समूह नाम निर्दिष्ट नहीं किया गया, gid %d के लिए कोई नाम नहीं है.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "%s के प्रयोग से कोई उपयोक्ता नाम निर्दिष्ट नहीं किया गया.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s मौजूद नहीं है\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[विकल्प...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' खोलने में त्रुटि: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' के लिए लेखा बनाने में त्रुटि: लाइन सही तरीके से संरूपित नहीं किया गया.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "अमान्य उपयोक्ता ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 से लेखा बनाने के लिए इंकार कर रहा है\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' के लिए GID %jd से समूह बनाने में त्रुटि: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "ख़तरनाक घर निर्देशिका `%s' को %s के लिए तयशुदा रूप से प्रयोग के लिए अस्वीकृत कर रहा है\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s के लिए घर निर्देशिका बनाने में त्रुटि: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s के लिए प्रारंभिक शब्दकूट जमा करने में त्रुटि: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s के लिए उपयोक्ता लेखा बनाने में त्रुटि: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s के लिए शब्दकूट बदला जा रहा है.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "नया शब्दकूट" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "नया शब्दकूट (निश्चित करें)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "शब्दकूट मिल नहीं रहे,पुन:प्रयास करें.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "शब्दकूट बदलाव रद्द किया गया.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "विवरणकर्ता %d से फ़ाइल पढ़ने में त्रुटि.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s उपयोक्ता के लिए शब्दकूट जमावट त्रुटि: %s।\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s समूह के लिए शब्दकूट जमावट त्रुटि: %s।\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "शब्दकूट बदला गया.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd समूह उपस्थित नहीं है.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' समूह बनाने में त्रुटि: %s.\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "लेखा बनावट असफल: %s।\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s बनाने में त्रुटि: %s।\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "उपयोक्ता %s को विलोपित नहीं कर सका: %s।\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s के gid अंक नहीं है.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd के साथ कोई जीवंत समूह मौजूद है, नहीं हटा रहे हैं.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd समूह का कोई समूह नाम नहीं है.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "समूह %s को विलोपित नहीं कर सका: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "उपयोक्ता के लिए घर निर्देशिका हटाने में त्रुटि" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s उपयोक्ता के लिए शब्दकूट जमावट असफल: %s।\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s उपयोक्ता को तालकित नहीं कर सका: %s।\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s उपयोक्ता को अतालकित नहीं कर सका: %s।\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "चेतावनी: ID %jd के साथ समूह मौजूद नहीं है.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s उपयोक्ता को परिवर्तित नहीं कर सका: %s।\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s समूह को परिवर्तित नहीं कर सका: %s।\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s की कोई पुरानी घर निर्देशिका नहीं है.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s की कोई नई घर निर्देशिका नहीं है.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s से %s को चलाने में त्रुटि: %s।\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' विन्यास फाइल खोल नहीं सका: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' विन्यास फाइल स्टेट नहीं कर सका: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "`%s' विन्यास फाइल काफी बड़ा है" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "`%s' विन्यास फाइल पढ़ नहीं सका: %s" #: lib/error.c:62 msgid "success" msgstr "सफल" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "विन्यास से मॉड्यूल असमर्थ किया गया" #: lib/error.c:66 msgid "generic error" msgstr "जेनेरिक त्रुटि" #: lib/error.c:68 msgid "not enough privileges" msgstr "अधिकार काफी नहीं हैं" #: lib/error.c:70 msgid "access denied" msgstr "अभिगम निषेध" #: lib/error.c:72 msgid "bad user/group name" msgstr "बुरा उपयोक्ता/समूह नाम" #: lib/error.c:74 msgid "bad user/group id" msgstr "बुरा उपयोक्ता/समूह id" #: lib/error.c:76 msgid "user/group name in use" msgstr "उपयोक्ता/समूह नाम प्रयोग में है" #: lib/error.c:78 msgid "user/group id in use" msgstr "उपयोक्ता/समूह id प्रयोग में है" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "टर्मिनल गुण से छेड़छाड़ करने में त्रुटि" #: lib/error.c:82 msgid "error opening file" msgstr "फाइल खुलने में त्रुटि" #: lib/error.c:84 msgid "error locking file" msgstr "फाइल तालकित करने में त्रुटि" #: lib/error.c:86 msgid "error statting file" msgstr "फाइल स्थाई करने में त्रुटि" #: lib/error.c:88 msgid "error reading file" msgstr "फाइल पढ़ने में त्रुटि" #: lib/error.c:90 msgid "error writing to file" msgstr "फाइल को लिखने में त्रुटि" #: lib/error.c:92 msgid "data not found in file" msgstr "फाइल में आंकडा नहीं मिला" #: lib/error.c:94 msgid "internal initialization error" msgstr "आंतरिक प्रारंभिकीकरण त्रुटि" #: lib/error.c:96 msgid "error loading module" msgstr "मॉड्यूल भारित करने में त्रुटि" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "मॉड्यूल में प्रतीक वियोजन करने में त्रुटि" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "लाइब्रेरी/मॉड्यूल संस्करण बेमेल" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "अतालाकित करना शब्दकूट क्षेत्र को खाली रखेगा." #: lib/error.c:105 msgid "invalid attribute value" msgstr "अवैध गुण मान" #: lib/error.c:107 msgid "invalid module combination" msgstr "अवैध मॉड्यूल संयोग" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "अज्ञात त्रुटि" #: lib/misc.c:240 msgid "invalid number" msgstr "अमान्य संख्या" #: lib/misc.c:254 msgid "invalid ID" msgstr "अमान्य ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%s फलन प्रारंभिकीकरण, '%s' में नहीं है" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' में मॉड्यूल संस्करण मेल नहीं खाता" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' मौड्यूल `%s' को परिभाषित नहीं करता है" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "टर्मिनल गुण पढने में त्रुटि" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "टर्मिनल गुण जमावट में त्रुटि" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "टर्मिनल से पढ़ने में त्रुटि" #: lib/user.c:218 msgid "name is not set" msgstr "नाम नहीं जमा है" #: lib/user.c:223 msgid "name is too short" msgstr "नाम बहुत छोटा है" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "नाम काफी लंबा है (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "नाम में गैर-ASCII अक्षर समाहित हैं" #: lib/user.c:242 msgid "name contains control characters" msgstr "नाम में नियंत्रण संप्रतीक समाहित है" #: lib/user.c:249 msgid "name contains whitespace" msgstr "नाम में रिक्तस्थान समाहित है" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "नाम हाइफन से शुरू होता है" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "नाम में अनुचित अक्षर `%c' समाहित है" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "उपयोक्ता के पास %s कोई UID नहीं है." #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "समूह के पास %s कोई GID नहीं है" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "उपयोक्ता %jd के पास कोई नाम नहीं है" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "समूह %jd का कोई नाम नहीं है" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "उपयोक्ता के पास कोई नाम या UID नहीं है" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "समूह के पास न तो नाम है न GID." #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ख़तरनाक घर निर्देशिका `%s' को तयशुदा रूप से प्रयोग के लिए अस्वीकृत कर रहा है" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s क्षेत्र का अवैध मूलभूत मान: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "%s फाइल तालकित करने में त्रुटि" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "मूलभूत सुरक्षा संदर्भ व्यवस्थित पा नहीं सका: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' का सुरक्षा संदर्भ पा नहीं सका: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' में मूलभूत सुरक्षा संदर्भ व्यवस्थित नहीं कर सका: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "मूलभूत सुरक्षा संदर्भ व्यवस्थित पा नहीं सका: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' का सुरक्षा संदर्भ निर्धारित नहीं कर सका: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' खोल नहीं सका: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' stat नहीं कर सका: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' बनाने में त्रुटि: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' के स्वामित्व बदलाव में त्रुटि: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' मोड बदलने में त्रुटि: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' पढ़ने में त्रुटि: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' लिखने में त्रुटि: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' से पढ़ नहीं सका: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s से %s को चलाने में त्रुटि: %s।\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' मोड बदलने में त्रुटि: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' पढ़ने में त्रुटि: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' पढ़ने में त्रुटि: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "एंटिटी वस्तु का %s गुण नहीं है " #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "वस्तु में %s गुण नहीं है" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s मान `%s': `:' नहीं अनुमति प्राप्त" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s मान `%s': `:' नहीं अनुमति प्राप्त" #: modules/files.c:1136 msgid "entry already present in file" msgstr "फाइल में प्रविष्टि पहले से है" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' को लिख नहीं सका: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "एंटिटी वस्तु का %s गुण नहीं है " #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "फाइल में विरोधी नाम के साथ प्रविष्टि पहले से मौजूद है" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' गोपित कूटशब्द में अनुमति प्राप्त नहीं" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "शब्दकूट गोपन में त्रुटि " #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' और `%s' मॉड्यूल को जोड़ा नहीं जा सकता है" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "सुपरयूजर विशेषाधिकार से निष्पादन नहीं कर रहा है" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "कोई शेडो फाइल नहीं है -- असमर्थ कर रहा है" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap क्रमादेश प्रारंभिकीकरण त्रुटि" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "%d संस्करण को LDAP प्रोटोकॉल सेट नहीं कर सका " #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP सर्वर से TLS संबंधित नहीं कर सका" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP सर्वर से जुड नहीं सका" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP सर्वर से जुड नहीं सका, पहले `%s' रूप में प्रयास करें: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "उपयोक्ता वस्तु का %s गुण नहीं था" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "उपयोक्ता वस्तु को `%s' के बिना बनाया गया था" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि बनाने में त्रुटि: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि रूपांतरित करने में त्रुटि: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि के पुनर्नामकरण में त्रुटि: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "वस्तु में %s गुण नहीं था" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि को हटाने में त्रुटि: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "वस्तु में %s गुण नहीं है" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "असमर्थित कूटशब्द गोपन योजना" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP निर्देशिका में ऐसे कुछ वस्तु नहीं है" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "कोई `%s' गुण नहीं मिला" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s के लिए LDAP निर्देशिका में शब्दकूट जमावट त्रुटि: %s " #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP सर्वर नाम " #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP खोज आधार DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP बंधन DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP बंधन शब्दकूट" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL उपयोक्ता" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL प्राधिकरण उपयोक्ता" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "%s उपयोक्ता बनाने में सायरस SASL त्रुटि" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "%s उपयोक्ता हटाने में सायरस SASL त्रुटि" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "%s सायरस SASL प्रारंभिकीकरण त्रुटि" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "उपयोक्ता के लिए घर निर्देशिका बनाने में त्रुटि" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "उपयोक्ता के लिए घर निर्देशिका हटाने में त्रुटि" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "उपयोक्ता के लिए घर निर्देशिका चलाने में त्रुटि" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s प्रारंभिकीकरण त्रुटि: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "अमान्य ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd से समूह की खोज हो रही है.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s नामित समूह के लिए खोज हो रही है.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd से उपयोक्ता के लिए खोज हो रही है.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s नामित उपयोक्ता के लिए खोज हो रही है.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "प्रविष्टि नहीं मिली.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "प्रांप्ट सफल हुआ.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "प्रांप्ट विफल हुआ.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "मूलभूत उपयोक्ता वस्तु वर्गों:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "मूलभूत उपयोक्ता गुण नाम:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "मूलभूत उपयोक्ता गुण ले रहे हैं:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "उपयोक्ता संरचना प्रतिलिपि कर रहा है:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "`%s' बैकअप फाइल जीवंत है और एक नियमित फाइल नहीं है" #~ msgid "backup file size mismatch" #~ msgstr "बैकअप फाइल आकार मेल नहीं खाया" po/hr.po000066400000000000000000001044241471266067600124710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/fedora/language/" "hr/)\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" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Odbacivanje privilegija nije uspjelo.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interna pogreška.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s nema dopuštenja za izmjenu finger podatka o %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Nepoznati kontekst korisnika" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Nije moguće postaviti zadani kontekst za /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Pogreška pri inicijalizaciji PAM-a.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Provjere autentičnosti za %s nije uspjela.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interna pogreška PAM-a `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Autentifikacija nepoznatog korisnika.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Neodgovarajući korisnik.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCIJA...] korisnik" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Pogreška pri raščlanjivanju argumenata: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Korisničko ime nije određeno.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Pogreška pri inicijalizaciji %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Korisnik %s ne postoji.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Nalog je zaključan.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Nalog nije zaključan.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Najmanje:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Najviše:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Upozorenje:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Neaktivno:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nikad" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Posljednja izmjena:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Lozinka zastarijeva:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Neaktivna lozinka:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Nalog zastarijeva:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Uređivanje podataka o zastari za %s nije uspjelo: %s.\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCIJA...] [korisnik]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Korisničko ime nije određeno. Nema naziva za uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Izmjena podataka usluge finger za %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Puno ime" #: apps/lchfn.c:151 msgid "Surname" msgstr "Prezime" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Ime" #: apps/lchfn.c:172 msgid "Office" msgstr "Ured" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Uredski telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon (kućni)" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adresa e-pošte" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Podaci usluge finger nisu izmijenjene: pogreška unosa.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Podaci usluge finger izmijenjeni su.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Podaci usluge finger nisu izmijenjene: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Promjena korisničke ljuske za %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nova ljuska" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Korisnička ljuska nije promijenjena:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Korisnička ljuska je promijenjena.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCIJA...] grupa" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Naziv grupe nije određen.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Neispravan ID grupe %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Izrada grupe nije uspjela: %s.\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupa %s ne postoji.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupu %s nije moguće izbrisati: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Podjednako su određeni -L i -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Postavljanja lozinke za grupu %s nije uspjelo: %s.\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grupu %s nije moguće zaključati: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grupu %s nije moguće otključati: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grupu %s nije moguće izmijeniti: %s.\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Pogreška pri pretraživanju %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Naziv grupe nije određen. Bit će upotrijebljen %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Naziv grupe nije određen. Nema naziva za gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nije određeno korisničko ime. Bit će upotrijebljen %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCIJA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Pogreška pri otvaranju `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Pogreška pri izradi naloga za `%s': linija je nepravilno oblikovana.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Neispravan ID korisnika %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Izrada naloga s UID 0 je odbijena.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Pogreška pri izradi grupe za `%s' uz GID %jd: %s.\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Pogreška pri izradi početne mape za %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Pogreška pri postavljanju početne lozinke za %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Pogreška pri izradi korisničkog naloga za %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Izmjena lozinke za %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nova lozinka" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nova lozinka (potvrdite)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Lozinke se ne podudaraju, pokušajte ponovo.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Izmjena lozinke je otkazana.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Pogreška pri postavljanju lozinke za korisnika %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Pogreška pri postavljanju lozinke za grupu %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Lozinka je izmijenjena.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupa %jd ne postoji.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Pogreška pri izradi grupe `%s': %s.\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Izradi naloga nije uspjela: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Pogreška pri izradi %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Brisanje korisnika %s nije moguće: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nema GID broj.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Ne postoji grupa s GID %jd. Nema uklanjanja.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupa s GID %jd nije imala naziv grupe.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Brisanje grupe %s nije moguće: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "Pogreška pri uklanjanju početne mape za korisnika" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Postavljanja lozinke za korisnika %s nije uspjelo: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Korisnik %s nije mogao biti zaključan: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Korisnik %s nije mogao biti otključan: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Korisnik %s nije mogao biti izmijenjen: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Izmjena grupe %s nije moguća: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Prethodna početna mapa za %s ne postoji.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Novi naziv za mapu %s ne postoji.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Pogreška pri premještanju %s u %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "Otvaranje konfiguracijske datoteke`%s' nije uspjelo: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "Pokretanje konfiguracijske datoteke`%s' nije uspjelo: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Konfiguracijska datoteka`%s' je prevelika" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "Čitanje konfiguracijske datoteke`%s' nije uspjelo: %s" #: lib/error.c:62 msgid "success" msgstr "Uspjeh" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "Modul je onemogućen u konfiguraciji" #: lib/error.c:66 msgid "generic error" msgstr "Generička pogreška" #: lib/error.c:68 msgid "not enough privileges" msgstr "Nema dovoljno privilegija" #: lib/error.c:70 msgid "access denied" msgstr "Pristup odbijen" #: lib/error.c:72 msgid "bad user/group name" msgstr "Loše ime korisnika ili naziv grupe" #: lib/error.c:74 msgid "bad user/group id" msgstr "Loš ID korisnika ili grupe" #: lib/error.c:76 msgid "user/group name in use" msgstr "Ime korisnika ili naziv grupe je u upotrebi" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID korisnika ili grupe je u upotrebi" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "Pogreška pri rukovanju s atributima terminala" #: lib/error.c:82 msgid "error opening file" msgstr "Pogreška pri otvaranju datoteke" #: lib/error.c:84 msgid "error locking file" msgstr "Pogreška pri zaključavanju datoteke" #: lib/error.c:86 msgid "error statting file" msgstr "Pogreška datoteke statistika" #: lib/error.c:88 msgid "error reading file" msgstr "Pogreška pri čitanju datoteke" #: lib/error.c:90 msgid "error writing to file" msgstr "Pogreška pri zapisivanju u datoteku" #: lib/error.c:92 msgid "data not found in file" msgstr "Podatak nije pronađen u datoteci" #: lib/error.c:94 msgid "internal initialization error" msgstr "Interna greška inicijalizacije" #: lib/error.c:96 msgid "error loading module" msgstr "Pogreška pri učitavanju modula" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "Pogreška pri razrješavanju znaka u modulu" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "Ne podudaraju se verzije biblioteke i modula" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "Otključavanje će polje lozinke učiniti praznim" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "Nepoznata pogreška" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "Nema funkcije pokretanja %s u `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "Ne podudaraju se verzije modula u `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "Modul `%s' ne određuje `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "Pogreška pri čitanju atributa terminala" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "Pogreška pri postavljanju atributa terminala" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "Pogreška pri čitanja iz terminala" #: lib/user.c:218 msgid "name is not set" msgstr "Naziv nije zadan" #: lib/user.c:223 msgid "name is too short" msgstr "Naziv je prekratak" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "Naziv je predugačak (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "Naziv sadrži znakove koji nisu ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "Naziv sadrži kontrolne znakove" #: lib/user.c:249 msgid "name contains whitespace" msgstr "Naziv sadrži prazna mjesta (razmake)" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "Naziv započinje znakom rastavljanja" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "Naziv sadrži neispravni znak `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Korisnik %s nema UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "Grupa %s nema GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "Korisnik %jd nema naziva" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Grupa %jd nema naziva" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "Korisnik nema ni naziv ni UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "Grupa nema ni naziv ni UID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Neispravana zadana vrijednost polja %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "Pogreška pri zaključavanju datoteke: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "Dohvaćanje sigurnosnog sadržaja `%s' nije uspjelo: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "Dohvaćanje sigurnosnog sadržaja u `%s' nije uspjelo: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "Dohvaćanje sigurnosnog sadržaja `%s' nije uspjelo: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "Otvaranje`%s' nije uspjelo: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "Izrada statistike`%s' nije uspjela: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "Pogreška pri izradi`%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Pogreška pri izmjeni vlasnika`%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Pogreška pri čitanju `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Pogreška pri zapisivanju `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "Čitanje iz `%s' nije moguće: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Pogreška pri premještanju %s u %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Pogreška pri otvaranju `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Pogreška pri čitanju `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Pogreška pri čitanju `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "Objekt entiteta nema atribut %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "Objekt nema atribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "Unos već postoji u datoteci" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "Zapisivanje u `%s' nije moguće: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "Objekt entiteta nema atribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "Pogreška pri šifriranju lozinke" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "Ne izvršava se s pravima superkorisnika" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "Datoteka lozinki u sjeni ne postoji -- Bit će onemogućeno" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "Pogreška pri inicijalizaciji ldap biblioteke" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "Zadavanje LDAP protokola za verziju %d nije uspjelo" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS pregovaranja s LDAP poslužiteljem nije uspjelo" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "Povezivanje s LDAP poslužiteljem nije uspjelo" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "Povezivanje s LDAP poslužiteljem nije uspjelo. Prvi pokušaj kao %s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "Korisnički objekt nije imao atribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "Korisnički objekt je izrađen bez `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "Pogreška pri izradi unosa LDAP imenika: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "Pogreška pri uređivanju unosa LDAP imenika: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "Pogreška pri preimenovanju unosa LDAP imenika: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "Objekt nije imao atribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "Pogreška pri uklanjanju unosa LDAP imenika: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "Objekt nema atribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "Takav objekt ne postoji u LDAP imeniku" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "Atribut `%s' nije pronađen" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "Pogreška pri postavljanju lozinke u LDAP imeniku za %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Naziv LDAP poslužitelja" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Osnovna DN LDAP pretrage" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind lozinka" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL korisnik" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL korisnik autorizacije" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Pogreška pri izradi Cyrus SASL korisnika: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Pogreška pri uklanjanju Cyrus SASL korisnika: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Pogreška pri inicijalizaciji Cyrus SASL-a: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "Pogreška pri izradi početne mape za korisnika" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "Pogreška pri uklanjanju početne mape za korisnika" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "Pogreška pri premještanju početne mape za korisnika" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Pogreška pri inicijalizaciji %s: %s.\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Neispravan ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Pretražuje se za grupom s ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Pretražuje se za grupom s nazivom %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Pretražuje se za korisnikom s ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Pretražuje se za korisnikom s nazivom %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Unos nije pronađen.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Odzivi su uspjeli.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Odzivi nisu uspjeli.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Zadane klase korisničkih objekata:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Zadani atributi korisničkih naziva: \n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Dohvaćanje zdanih korisničkih atributa:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopiranje strukture korisnika:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "" #~ "Datoteka sigurnosnog spremanja`%s' postoji i nije regularna datoteka" #~ msgid "backup file size mismatch" #~ msgstr "Ne podudara se veličina datoteke sigurnosnog spremanja" po/hu.po000066400000000000000000001160771471266067600125030ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Arpad Biro , 2004, 2005, 2007 # Laszlo Dvornik , 2004 # Miloslav Trmač , 2011 # Nikolas Slivka , 2010 # ptr , 2011 # Tamas Szanto , 2003 # Zoltan Hoppár , 2011-2013 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-10-04 06:35+0000\n" "Last-Translator: Hoppár Zoltán \n" "Language-Team: Hungarian \n" "Language: hu\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: Weblate 5.0.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Jogosultságok eldobása sikertelen.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Belső hiba.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s nem jogosult %s személyes adatainak megváltoztatására\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Ismeretlen felhasználói környezet" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" "Az alapértelmezett kontextus beállítása nem sikerült a /etc/passwd " "esetében \n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Hiba a PAM inicializálásakor.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Azonosítás mint \"%s\" sikertelen\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Belső PAM hiba `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Ismeretlen felhasználó hitelesítve.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Felhasználói eltérés.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "összes információ megjelenítése" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "lista a felhasználó időkorlát paramétereiről" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minimális napok száma jelszó váltások között" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "NAPOK" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maximális napok száma jelszó váltások között" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "az utolsó jelszó cseréje napokban 1970/1/1 óta" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "hány nappal a jelszó lejárata után váljon a regisztrált fiók inaktívvá" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "jelszó lejárati ideje napokban 1970/01/01 óta" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "hány nappal kezdjen el a lejárat előtt figyelmeztetést küldeni" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCIÓ...] felhasználó" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Hiba a paraméter értelmezésekor: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nincs felhasználónév megadva.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Hiba a(z) %s inicializálásakor: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s felhasználó nem létezik.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Azonosító zárolva.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Fiók nincs lezárva.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum:\tNincs\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Figyelmeztetés:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inaktív:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inaktív:\tSoha\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Meg kell változtatnia jelszavát a következő bejelentkezésnél" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Soha" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Utolsó módosítás:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Jelszó lejár:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "jelszó inaktív:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Azonosító lejár:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s elévülési információit nem sikerült módosítani: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCIÓ...] [felhasználó]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nincs felhasználónév megadva, nincs név a(z) %d uid-hoz.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s személyes adatainak megváltoztatása.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Teljes név" #: apps/lchfn.c:151 msgid "Surname" msgstr "Vezetéknév" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Utónév" #: apps/lchfn.c:172 msgid "Office" msgstr "Munkahely" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Munkahelyi telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Otthoni telefon" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-mail cím" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "A személyes információk nem változtak: beviteli hiba. \n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Az információ frissítése megtörtént.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "A személyes adatok nem változtak: %s \n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s parancsértelmezőjének megváltoztatása. \n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Új shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell nem változott: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell megváltozott.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "az új csoport GID azonosítója" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "SZÁM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "rendszercsoport készítése" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCIÓ...] csoport" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nincs csoportnév megadva.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Érvénytelen csoportazonosító %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Csoportl étrehozása meghiúsult: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "A(z) %s csoport nem létezik.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "A(z) %s csoport nem törölhető : %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "GID beállítása a csoporthoz" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "csoport megváltoztatása egy megadott névre" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NÉV" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "sima szöveges jelszó csoporttal való használathoz" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "SZÖVEG" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "elő-hash-elt jelszó a csoporttal való használathoz" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "hozzáadandó adminisztrátorok listája" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "eltávolítandó adminisztrátorok listája" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "hozzáadandó csoporttagok listája" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "eltávolítandó csoporttagok listája" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "csoport zárolása" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "csoport feloldása" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L és -U is meg van adva.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Hiba a(z) %s csoport jelszavának beállításakor: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s csoportot nem lehet zárolni: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s csoportot nem lehet feloldani: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s csoportot nem lehet módosítani: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Hiba %s keresése közben: %s \n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "csak a megnevezett csoport tagjait listázza - a megnevezett felhasználó " "csoporttagságai helyett" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "csak tagsági információkat listázza - de ne UID/GID, hanem név alapján" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nincs csoportnév megadva, %s használata.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nincs csoportnév megadva, nincs név a(z) %d gid-hez.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nincs felhasználónév megadva, %s használata.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s nem létezik\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fájl felhasználói információs bejegyzésekkel" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ELÉRÉSI ÚT" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "ne készítsen home könyvtárakat" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "ne készítsen levélgyüjtőket" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCIÓ...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Hiba a(z) `%s' megnyitásakor: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "A fiók létrehozása `%s' számára nem sikerült: a sor nem megfelelően " "formázott.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Érvénytelen felhasználói azonosító %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Felhasználó létrehozása 0 UID-val megtagadva.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "A(z) `%s' csoport nem hozható létre %jd GID-el: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "`%s' veszélyes home könyvtár használati jogának megtagadása %s számára " "alapértelmezésként\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Hiba történt %s saját könyvtárának létrehozásakor: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Hiba a levéltár %s részére való létrehozásakor: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s kezdeti jelszávanak beállítása nem sikerült: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Hiba történt %s felhasználói fiók létrehozásakor: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "állítsa be a csoport jelszavának a felhasználó jelszava helyett" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "új titkosítatlan jelszó" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "új titkosított jelszó" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "az új titkosítatlan jelszó beolvasása a megadott leírófájlból" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "az új titkosított jelszó beolvasása a megadott leírófájlból" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s jelszavának megváltoztatása.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Új jelszó" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Új jelszó (megerősítés)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "A két jelszó nem egyezik meg, próbálja újból.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Jelszóváltoztatás megszakítva.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Hiba %d fájl leírójának olvasásakor.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Hiba történt %s felhasználó jelszavának beállításakor: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Hiba történt %s csoport jelszavának beállításakor: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "A jelszó megváltoztatva.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "rendszer felhasználó készítése" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "az új felhasználó GECOS információi" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "az új felhasználó home mappája" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "az új felhasználó könyvtára fájlokkal" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "az új felhasználó shell-je" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "az új felhasználó UID-je" #: apps/luseradd.c:71 msgid "group for new user" msgstr "az új felhasználó csoportja" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "ne készítsen home könyvtárat a felhasználó számára" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "ne készítsen felhasználó nevével megegyező csoportot" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "az új felhasználó közös neve" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "az új felhasználó kitalált neve" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "az új felhasználó utóneve" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "az új felhasználó szobaszáma" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "az új felhasználó telefonszáma" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "az új felhasználó otthoni telefonszáma" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd csoport nem létezik\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Hiba történt `%s' csoport létrehozásakor: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Azonosító létrehozása meghiúsult: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Hiba történt %s létrehozásakor: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Hiba a levéltár létrehozásakor: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" "ne távolítsa el a felhasználó privát csoportját, ha rendelkezik ilyennel" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "távolítsa el felhasználók home mappáját" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "%s felhasználó nem törölhető: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nem rendelkezik GID számmal.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Nincs csoport %jd GID azonosítóval, így nincs eltávolítás sem.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "A %jd GID azonosítójú csoportnak nincs csoportneve.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s csoportot nem lehet törölni: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Hiba a home könyvtár eltávolításakor: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Hiba a levéltár törlésekor: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS információk" #: apps/lusermod.c:61 msgid "home directory" msgstr "home könyvtár" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "home könyvtár tartalmának elmozgatása" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "parancsértelmező beállítása fehasználó számára" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "UID beállítása a felhasználó számára" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "elsődleges GID beállítása a felhasználó számára" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "bejelentkezési név megváltozatása a felhasználónál" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "egyszerű szöveges jelszó a felhasználónak" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "elő-hash-elt jelszó a felhasználó számára" #: apps/lusermod.c:76 msgid "lock account" msgstr "felhasználói fiók zárolása" #: apps/lusermod.c:79 msgid "unlock account" msgstr "felhasználói fiók feloldása" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "közös név megadása a felhasználó számára" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "megadott név beállítása a felhasználó számára" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "vezetéknév beállítása a felhasználó számára" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "szobaszám beállítása a felhasználó számára" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "telefonszám beállítása a felhasználó számára" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "otthoni telefonszám beállítása a felhasználó számára" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Hiba történt %s felhasználó jelszavának beállításakor: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s felhasználót nem lehet zárolni: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s felhasználó nem megnyitható: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Figyelem: Csoport %jd GID azonosítóval nem létezik.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s felhasználó nem módosítható: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s csoport nem módosítható: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s nem rendelkezik régi saját könyvtárral.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s nem rendelkezik új saját könyvtárral.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Hiba történt %s mozgatásakor %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' konfigurációs fájl nem nyitható meg: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' konfigurációs fájl nem elérhető: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "`%s' konfigurációs fájl túl nagy" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "a(z) `%s' konfigurációs fájlt nem lehet olvasni: %s" #: lib/error.c:62 msgid "success" msgstr "kész" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul kikapcsolva a konfigurációból" #: lib/error.c:66 msgid "generic error" msgstr "általános hiba" #: lib/error.c:68 msgid "not enough privileges" msgstr "nincs elég jogosultság" #: lib/error.c:70 msgid "access denied" msgstr "hozzáférés megtagadva" #: lib/error.c:72 msgid "bad user/group name" msgstr "rossz felhasználónév / csoportnév" #: lib/error.c:74 msgid "bad user/group id" msgstr "rossz felhasználó/csoport azonosító" #: lib/error.c:76 msgid "user/group name in use" msgstr "felhasználónév/csoportnév használatban" #: lib/error.c:78 msgid "user/group id in use" msgstr "felhasználó/csoport azonosító használatban" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "hiba a terminálattribútumok kezelésekor" #: lib/error.c:82 msgid "error opening file" msgstr "hiba a fájl megnyitásakor" #: lib/error.c:84 msgid "error locking file" msgstr "hiba a fájl zárolásakor" #: lib/error.c:86 msgid "error statting file" msgstr "hiba a fájl beállításakor" #: lib/error.c:88 msgid "error reading file" msgstr "hiba a fájl olvasásakor" #: lib/error.c:90 msgid "error writing to file" msgstr "hiba a fájlba való íráskor" #: lib/error.c:92 msgid "data not found in file" msgstr "az adat nem található a fájlban" #: lib/error.c:94 msgid "internal initialization error" msgstr "belső inicializálási hiba" #: lib/error.c:96 msgid "error loading module" msgstr "hiba a modul betöltésekor" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "hiba a modulszimbólum feloldásakor" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "könyvtár/modul verzió eltérő" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "a feloldás üresen hagyná a jelszó-mezőt" #: lib/error.c:105 msgid "invalid attribute value" msgstr "rossz attributum érték" #: lib/error.c:107 msgid "invalid module combination" msgstr "helytelen modulkombináció" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "a felhasználó saját könyvtára, amely nem az ő tulajdonában van" #: lib/error.c:115 msgid "unknown error" msgstr "ismeretlen hiba" #: lib/misc.c:240 msgid "invalid number" msgstr "érvénytelen szám" #: lib/misc.c:254 msgid "invalid ID" msgstr "érvénytelen azonosító" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "Nem található %s inicializáló funkció itt: %s" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "modul verzió eltérés itt: %s" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' modul nincs meghatározva `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "hiba a terminálattribútumok olvasásakor" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "hiba a terminálattribútumok beállításakor" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "hiba a terminálból való olvasáskor" #: lib/user.c:218 msgid "name is not set" msgstr "név nincs beállítva" #: lib/user.c:223 msgid "name is too short" msgstr "név túl rövid" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "név túl hosszú (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "név tartalmaz nem ASCII karaktereket" #: lib/user.c:242 msgid "name contains control characters" msgstr "név tartalmaz vezérlőkaraktereket" #: lib/user.c:249 msgid "name contains whitespace" msgstr "a név tartalmaz szóközt" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "név kötőjellel kezdődik" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "név érvénytelen `%c' karaktert tartalmaz" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s felhasználónak nincs UID azonosítója" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "%s felhasználó nem található" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "%s csoportnak nincs GID azonosítója" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "%s csoport nem található" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd felhasználónak nincs neve" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "%jd csoportnak nincs neve" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "felhasználónak nincs se neve se UID azonosítója" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "csoportnak nincs neve, sem GID azonosítója" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "alapértelmezésben`%s' veszélyes home könyvtár használatának megtagadása" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s mező érvénytelen alapértelmezett értéke: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "hiba a fájl zárolásakor: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "Nem sikerült lekérni az alap futtatási kontextust: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "%s biztonsági kontextusa nem kérhető le: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "Nem sikerült beállítani az alap futtatási kontextust erre: %s: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "Nem sikerült lekérni az alap selabel fájlfuttatási kontextust: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" "Nem sikerült meghatározni az alapértelmezett kontextust az alábbi program " "számára: %s: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' nem nyitható meg: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s'-t nem lehet beállítani: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "hiba a(z) `%s' létrehozásakor: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Hiba a(z) `%s' tulajdonosának változatásakor: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Hiba a '%s' mód váltáskor: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Hiba a(z) `%s' olvasásakor: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Hiba a(z) `%s' írasakor: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "%s nem olvasható: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "A `%s' zár érvénytelen tartalma" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "A %s zárolást a %ju folyamat fenntartja" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "Hiba az elavult zár `%s' eltávolításakor: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "hiba történt a %s ideiglenes fájl megnyitásakor: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "Nem sikerült megszerezni a `%s' zárolást: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "Hiba a `%s' feloldásakor: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "Hiba a `%s' lecserélésekor: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "a duplikált objektumnak nincs %s attribútuma" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "az eredeti objektumnak nincs %s attribútuma" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "A %lu ID azonosítót %s már használja" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s érték `%s': '\\n" "' nem engedélyezett" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s érték `%s': `:' nem engedélyezett" #: modules/files.c:1136 msgid "entry already present in file" msgstr "bejegyzés már megtalálható a fájlban" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "%s nem írható: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "A(z) %s entitás-objektumnak nincs attribútuma" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "bejegyzés ellentétes névvel már a fájlban van" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "`:' és`\\n" "' nem megengedett a titkosított jelszavakban" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "hiba a jelszó titkosításakor" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "az `%s' és a `%s' modulok nem kombinálhatóak" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "nem végrehajtható rendszergazdai jogosultságokkal" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "nincs árnyék fájl -- kikapcsolás" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "hiba az ldap könyvtár beállításakor" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "az LDAP protokoll nincs beállítva a(z) %d verzióra" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "nem lehet egyeztetni a TLS-t az LDAP kiszolgálóval" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "nem lehet kapcsolódni az LDAP kiszolgálóhoz" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP kiszolgáló elérése nem sikerült. Első próbálkozás, mint %s: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "A felhasználói objektumnak nincs %s attribútuma" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "felhasználói objektum létrehozva `%s' nélkül" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "hiba az LDAP könyvtár-bejegyzés létrehozásakor: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "hiba az LDAP könyvtár-bejegyzés módosításakor: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "hiba az LDAP könyvtár-bejegyzés átnevezésekor: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objektumnak nem volt %s attribútuma" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "hiba az LDAP könyvtár-bejegyzés eltávolításakor: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objektumnak nincs %s attribútuma" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "nem támogatott jelszó titkosítási séma" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "nincs ilyen objektum az LDAP könyvtárban" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "nincs `%s' attribútum" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "hiba történt %s jelszavának beállításakor az LDAP könyvtárban: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP kiszolgálónév" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP keresés Base DN-je" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP keresés DN-je" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP kapcsolódási jelszó" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL felhasználó" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL hitelesített felhasználó" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL hiba %s felhasználó létrehozásakor" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL hiba %s felhasználó eltávolításakor" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "hiba a Cyrus SASL előkészítésekor: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "hiba a felhasználó saját könyvtárának létrehozásakor" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "hiba a felhasználó saját könyvtárának eltávolításakor" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "hiba a felhasználó saját könyvtárának mozgatásakor" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Hiba történt %s inicializálásakor: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Érvénytelen azonosító %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd azonosítójú csoport keresése.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s nevű csoport keresése.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd azonosítóval rendelkező felhasználó keresése.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s nevű felhasználó keresése.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "A bejegyzés nem található.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Kérések teljesítve.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Kérések meghiúsultak.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Alapértelmezett felhasználói objektumosztályok:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Alapértelmezett felhasználói attríbútumok nevei: \n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Alapértelmezett felhasználói attribútumok lekérése: \n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Felhasználói szerkezet másolása:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "`%s' backup fájl már létezik és nem szabályos fájl" #~ msgid "backup file size mismatch" #~ msgstr "backup fájl mérete nem egyezik" po/hy.po000066400000000000000000000652221471266067600125020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2011-10-04 10:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: hy\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/id.po000066400000000000000000001053121471266067600124510ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Dichi Al Faridi , 2011 # Erwien Samantha Y , 2004 # Miloslav Trmač , 2011 # Prima Yogi Loviniltra , 2012 # Teguh DC , 2005 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/fedora/" "language/id/)\n" "Language: id\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Gagal mencabut hak akses.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Kesalahan internal.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s tidak diijinkan untuk mengubah info finger dari %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Konteks pengguna tidak diketahui" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Tidak dapat menset konteks standar untuk /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Gagal menginisiasi PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Otentikasi gagal untuk %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Kesalahan internal PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Pengguna yang tidak dikenal terotentikasi.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Pengguna tidak cocok.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] user" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Gagal memparse argumen: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Tidak ada nama pengguna yang dimasukkan.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Gagal menginisiasi %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Pengguna %s tidak ada.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Akun dikunci.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Akun tidak dikunci.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Peringatan:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inaktif:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Tidak Pernah" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Perubahan Terakhir:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Masa berlakunya password habis:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Password Tidak Aktif:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Masa Akun Habis:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Gagal mengubah informasi masa berlaku untuk %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nama pengguna tidak dimasukkan, tidak ada nama untuk uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Mengubah informasi finger untuk %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nama Lengkap" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nama Keluarga" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nama Depan" #: apps/lchfn.c:172 msgid "Office" msgstr "Kantor" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telp. Kantor" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telp. Rumah" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Alamat E-Mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Informasi finger tidak berubah: kesalahan input.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Informasi finger berubah.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Informasi finger tidak berubah: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Mengubah shell untuk %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Shell Baru" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell tidak berubah: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell telah berubah.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] group" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Tidak ada nama grup yang dimasukkan.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID grup %s tidak valid\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Pembuatan grup gagal: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grup %s tidak ada.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grup %s tidak dapat dihapus: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L dan -U telah ditetapkan.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Gagal menset password untuk grup %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grup %s tidak dapat dikunci: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grup %s tidak dapat dibuka kuncinya: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grup %s tidak dapat diubah: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Salah saat mencari %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Tidak ada nama grup yang ditetapkan, mempergunakan %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Tidak ada nama grup yang ditetapkan, tidak ada nama untuk gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Tidak ada nama pengguna yang ditetapkan, mempergunakan %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s tidak ada\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPSI...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Gagal membuka `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Gagal saat membuat akun untuk `%s': baris tidak terformat sebagaimana " "mestinya.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID pengguna %s tidak valid\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Menolak untuk membuat akun dengan UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Gagal saat membuat grup untuk `%s' dengan GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Menolak penggunaan direktori home `%s' yang berbahaya untuk %s secara " "default\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Gagal saat membuat direktori home untuk %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Gagal saat menset password awal untuk %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Gagal saat membuat akun pengguna untuk %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Mengubah kata-sandi untuk %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Kata-sandi baru" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Kata-sandi baru (ulangi)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Kata-sandi tidak cocok, coba lagi.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Pengubahan kata sandi dibatalkan.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Kesalahan pembacaan file deskripto %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Gagal saat menset kata sandi untuk pengguna %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Gagal saat menset kata sandi untuk grup %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Kata sandi telah diubah.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grup %jd tidak ada\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Gagal saat membuat grup `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Pembuatan akun gagal: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Gagal saat membuat %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Pengguna %s tidak dapat dihapus: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s tidak memiliki nomer gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Tidak ada grup dengan GID %jd, batal menghapus.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grup dengan GID %jd tidak memiliki nama grup.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Grup %s tidak dapat dihapus: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "gagal saat menghapus direktori home untuk pengguna" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Gagal menset kata sandi untuk user %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Pengguna %s tidak dapat dikunci: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Penguna %s tidak dapat dibuka kuncinya: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Peringatan: Grup dengan ID %jd tidak ada\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Pengguna %s tidak dapat diubah: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Grup %s tidak dapat diubah: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Tidak ada direktori home lama untuk %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Tidak ada direktori home baru untuk %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Gagal saat memindahkan %s ke %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "tidak dapat membuka berkas konfigurasi `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "tidak dapat menampilkan informasi berkas konfigurasi `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "berkas konfigurasi `%s' terlalu besar" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "tidak dapat membaca berkas konfigurasi `%s': %s" #: lib/error.c:62 msgid "success" msgstr "sukses" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul dinonaktifkan oleh konfigurasi" #: lib/error.c:66 msgid "generic error" msgstr "kesalahan generik" #: lib/error.c:68 msgid "not enough privileges" msgstr "hak akses tidak mencukupi" #: lib/error.c:70 msgid "access denied" msgstr "akses ditolak" #: lib/error.c:72 msgid "bad user/group name" msgstr "Nama pengguna/grup salah" #: lib/error.c:74 msgid "bad user/group id" msgstr "id pengguna/grup salah" #: lib/error.c:76 msgid "user/group name in use" msgstr "nama pengguna/grup sedang digunakan" #: lib/error.c:78 msgid "user/group id in use" msgstr "id pengguna/grup sedang digunakan" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "gagal saat memanipulasi atribut terminal" #: lib/error.c:82 msgid "error opening file" msgstr "gagal saat membuka berkas" #: lib/error.c:84 msgid "error locking file" msgstr "gagal saat mengunci berkas" #: lib/error.c:86 msgid "error statting file" msgstr "gagal saat melihat informasi berkas" #: lib/error.c:88 msgid "error reading file" msgstr "gagal saat membaca berkas" #: lib/error.c:90 msgid "error writing to file" msgstr "gagal saat menulis ke berkas" #: lib/error.c:92 msgid "data not found in file" msgstr "data tidak ditemukan dalam berkas" #: lib/error.c:94 msgid "internal initialization error" msgstr "kesalahan internal saat menginisiasi" #: lib/error.c:96 msgid "error loading module" msgstr "gagal saat memuat modul" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "gagal saat menerjemahkan simbol dalam modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "versi pustaka/modul tidak cocok" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "membuka kunci akan membuat kolom password menjadi kosong" #: lib/error.c:105 msgid "invalid attribute value" msgstr "nilai atribut tidak valid" #: lib/error.c:107 msgid "invalid module combination" msgstr "kombinasi modul tidak valid" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "kesalahan tidak diketahui" #: lib/misc.c:240 msgid "invalid number" msgstr "nomor tidak valid" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID tidak valid" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "tidak ada fungsi penginisiasian %s dalam `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "versi modul tidak cocok dalam `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul `%s' tidak mendefinisikan `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "gagal saat membaca atribut terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "gagal saat menset atribut terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "gagal saat membaca terminal" #: lib/user.c:218 msgid "name is not set" msgstr "nama tidak diset" #: lib/user.c:223 msgid "name is too short" msgstr "nama terlalu pendek" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "nama terlalu panjang (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "nama mengandung karakter non-ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "nama mengandung karakter kontrol" #: lib/user.c:249 msgid "name contains whitespace" msgstr "nama mengandung whitespace" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "nama dimulai dengan tanda hubung" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "nama mengandung karakter `%c' yang tidak valid" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "user %s tidak memiliki UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "grup %s tidak memiliki GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "user %jd tidak memiliki nama" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Grup %jd tidak memiliki nama" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "user tidak memiliki nama ataupun UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "grup tidak memiliki nama atau GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Menolak penggunaan direktori home `%s' yang berbahaya secara default" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Nilai default kolom %s tidak valid: %s " #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "salah saat mengunci berkas: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "tidak dapat memperoleh konteks keamanan standar: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "tidak dapat memperoleh konteks keamanan dari `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "tidak dapat menset konteks keamanan standar ke `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "tidak dapat memperoleh konteks keamanan standar: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "tidak dapat menentukan konteks keamanan dari `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "tidak dapat membuka `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "tidak dapat menampilkan informasi berkas `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "gagal saat membuat `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Gagal mengubah kepemilikan dari `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Error changing mode of `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Salah pembacaan `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Gagal dalam penulisan `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "tidak dapat membaca dari `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Gagal saat memindahkan %s ke %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Error changing mode of `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Salah pembacaan `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Salah pembacaan `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "obyek entiti tidak memiliki atribut %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "obyek tidak memiliki atribut %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s bernilai '%s': ':' tidak diijinkan" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s bernilai '%s': ':' tidak diijinkan" #: modules/files.c:1136 msgid "entry already present in file" msgstr "entri telah ada dalam berkas" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "tidak dapat menulis ke `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "obyek entiti tidak memiliki atribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "entri dengan nama yang konflik telah ada dalam berkas" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "':' tidak diijinkan dalam kata sandi terenkripsi" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "salah saat meng-enkrip password" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "modul `%s' dan `%s' tidak bisa dikombinasikan" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "tidak mengeksekusi dengan hak akses superuser" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "tidak ada berkas shadow -- menonaktifkan" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "gagal saat menginisiasi pustaka ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "tidak dapat menset protokol LDAP ke versi %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "tidak dapat menegosiasikan TLS dengan server LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "tidak dapat mengikat ke server LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "tidak dapat mengikat ke server LDAP, usaha pertama adalah `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "obyek pengguna tidak memiliki atribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "obyek user telah dibuat tanpa `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "gagal saat membuat entri direktori LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "gagal saat memodifikasi entri direktori LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "gagal saat mengganti nama entri direktori LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "obyek tidak memiliki atribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "gagal saat menghapus entri direktori LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "obyek tidak memiliki atribut %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "skema enkripsi kata sandi tidak didukung" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "tidak ada obyek tersebut dalam direktori LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "tidak ada atribut `%s' yang ditemukan" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "gagal saat menset kata sandi dalam direktori LDAP untuk %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nama Server LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Pencarian Base DN LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "Bind DN LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Bind Kata sandi LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Pengguna SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Otorisasi Pengguna SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Kesalahan SASL Cyrus saat membuat pengguna: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Kesalahan SASL Cyrus saat menghapus pengguna: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "gagal saat menginisiasikan SASL Cyrus: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "gagal saat membuat direktori home untuk pengguna" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "gagal saat menghapus direktori home untuk pengguna" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "gagal saat memindahkan direktori home untuk pengguna" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "gagal saat menginisiasi %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID %s tidak valid\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Mencari grup dengan ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Mencari nama grup %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Mencari pengguna dengan ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Mencari nama pengguna %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Masukan tidak ketemu.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Prompt sukses.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Prompt gagal.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Kelas obyek pengguna standar:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nama atribut pengguna standar:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Mengambil atribut pengguna standar:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Menyalin struktur pengguna:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "ada berkas cadangan `%s' dan itu bukan berkas biasa" #~ msgid "backup file size mismatch" #~ msgstr "ukuran berkas cadangan tidak cocok" po/is.po000066400000000000000000001047561471266067600125030ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Richard Allen , 2001 # tommi , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/fedora/" "language/is/)\n" "Language: is\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Gat ekki minnkað heimildir.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Innvær villa.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s hefur ekki heimild til að breyta notandaupplýsingum %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "óþekktur notandaöryggishamur" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Get ekki stillt sjálfgefinn öryggisham /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Villa við frumstillingu PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Auðkenning mistókst hjá %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Innvær PAM villa `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "óþekktur notandi auðkenndi sig.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Misræmi í notanda.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ROFI...] notandi" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Villa við að þátta viðföng: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Ekkert notandanafn tiltekið.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Villa við að frumstilla %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Notandinn %s er ekki til.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Notandinn er læstur.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Notandinn er ekki læstur.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minnst:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Mest:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Aðvörun:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Óvirkur:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Aldrei" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Síðast breytt:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Lykilorðið rennur út:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Lykilorðið ógilt:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Aðgangurinn rennur út:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Gat ekki breytt úreldingarupplýsingum notandans %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ROFI...] [notandi]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Ekkert notandanafn tiltekið, ekkert heiti fyrir notandanúmer %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Breyti upplýsingum notandans %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Fullt nafn" #: apps/lchfn.c:151 msgid "Surname" msgstr "Eftirnafn" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nafn" #: apps/lchfn.c:172 msgid "Office" msgstr "Skrifstofa" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Vinnusími" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Heimasími" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Tölvupóstfang" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Upplýsingum notandans ekki breytt: villa.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Upplýsingum notandans breytt.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Upplýsingum notandans ekki breytt: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Skipti um skél hjá %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Ný skel" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Skél óbreytt: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Skél breytt.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ROFI...] hópur" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Enginn hópur tiltekinn.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ógilt hópnúmer %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Ekki tókst að búa til hópinn: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Hópurinn %s er ekki til.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Ekki var hægt að eyða hópnum %s: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Bæði -L og -U tiltekið.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Gat ekki sett lykilorð á hópinn %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Ekki var hægt að læsa hópnum %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Ekki var hægt að aflæsa hópnum %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Ekki var hægt að breyta hópnum %s: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Villa við að fletta upp %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Ekkert hópsheiti tiltekið, nota %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Ekkert hópsheiti tiltekið, ekkert heiti fyrir gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Ekkert notandanafn tiltekið, nota %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s er ekki til.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ROFI...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Villa við að opna `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Villa við að búa til notandaaðgang fyrir `%s': rangt sniðnar upplýsingar.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ógilt notandanúmer %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Ég neita að búa til notandaaðgang með UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Gat ekki búið til hóp fyrir `%s' með GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Neita sjálfgefið að nota hina varasömu heimamöppu `%s' fyrir %s\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Villa við að búa til heimasvæði fyrir %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Villa við að setja lykilorð fyrir %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Villa við að búa til notandaaðgang fyrir %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Breyti lykilorði notandans %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nýtt lykilorð" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nýtt lykilorð (staðfesta)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Lykilorðin eru ekki eins. Reyndu aftur.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Hætt við að breyta lykilorði.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Villa við að búa til lykilorð notandans %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Villa við að setja lykilorð fyrir hópinn %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Lykilorði breytt.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Hópurinn %jd er ekki til.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Gat ekki búið til hóp `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Gat ekki búið til notanda: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Villa við að búa %s til: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Ekki var hægt að eyða notandanum %s: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s var ekki með gid tölu.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Enginn hópur með GID %jd er til. Fjarlægi hann ekki.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Hópur með GID %jd er ekki með hópheiti.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Ekki var hægt að eyða hóp %s: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "villa við að fjarlægja heimasvæði notanda" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Gat ekki sett lykilorð notanda %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Ekki var hægt að læsa notandanum %s: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Ekki var hægt að aflæsa notandanum %s: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Aðvörun Hópur með auðkenni %jd er ekki til.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Ekki var hægt að breyta notandanum %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Ekki var hægt að breyta hópnum %s: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Ekkert gamalt heimasvæði til fyrir notandann %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Ekkert nýtt heimasvæði til fyrir notandann %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Villa við að færa %s í %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "gat ekki opnað stillingaskrána `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "gat ekki fundið stillingaskrána `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "stillingaskráin `%s' er of stór" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "gat ekki lesið stillingaskrána `%s': %s" #: lib/error.c:62 msgid "success" msgstr "tókst" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "slökkt er á einingunni skv. stillingum" #: lib/error.c:66 msgid "generic error" msgstr "almenn villa" #: lib/error.c:68 msgid "not enough privileges" msgstr "er ekki með nægar heimildir" #: lib/error.c:70 msgid "access denied" msgstr "aðgangi hafnað" #: lib/error.c:72 msgid "bad user/group name" msgstr "ógildur notandi/hópur" #: lib/error.c:74 msgid "bad user/group id" msgstr "ógildur notandi/hópnúmer" #: lib/error.c:76 msgid "user/group name in use" msgstr "notandi/hópur er þegar í notkun" #: lib/error.c:78 msgid "user/group id in use" msgstr "notandanúmer/hópnúmer er þegar í notkun" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "gat ekki breytt eiginleikum skjás" #: lib/error.c:82 msgid "error opening file" msgstr "villa við opnun skráar" #: lib/error.c:84 msgid "error locking file" msgstr "villa við að læsa skrá" #: lib/error.c:86 msgid "error statting file" msgstr "villa við að lesa skrá" #: lib/error.c:88 msgid "error reading file" msgstr "villa við að lesa skrá" #: lib/error.c:90 msgid "error writing to file" msgstr "villa við að rita skrá" #: lib/error.c:92 msgid "data not found in file" msgstr "gögnin fundust ekki í skránni" #: lib/error.c:94 msgid "internal initialization error" msgstr "villa við að frumstillingu" #: lib/error.c:96 msgid "error loading module" msgstr "villa við að lesa einingu" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "villa við að fjarlægja merkingu úr einingu" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "útgáfumismunur eininga eða skráarsafna" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ef tekið er úr lás verður lykilorðasviðið tómt" #: lib/error.c:105 msgid "invalid attribute value" msgstr "Ógilt gildi eiginleika" #: lib/error.c:107 msgid "invalid module combination" msgstr "Ógild samsetning eininga" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "óþekkt villa" #: lib/misc.c:240 msgid "invalid number" msgstr "ógilt númer" #: lib/misc.c:254 msgid "invalid ID" msgstr "ógilt auðkenni" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ekkert frumstillingastef %s í `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "útgáfumismunur eininga í `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "einingin `%s' skilgreinir ekki `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "villa við að lesa einigleika skjás" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "villa við að setja skjáeiginleika" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "villa við lestur frá skjá" #: lib/user.c:218 msgid "name is not set" msgstr "heitið er ekki stillt" #: lib/user.c:223 msgid "name is too short" msgstr "heitið er of stutt" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "heitið er of langt (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "heitið inniheldur stafi sem ekki eru ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "heitið inniheldur stjórntákn" #: lib/user.c:249 msgid "name contains whitespace" msgstr "heitið inniheldur orðabil" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "heitið byrjar á bandstriki" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "heitið inniheldur ógilt tákn `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "notandinn %s hefur ekkert UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "hópurinn %s hefur ekkert GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "notandinn %jd hefur ekkert heiti" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "hópurinn %jd hefur ekkert heiti" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "notandinn hefur hvorki heiti eða UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "hópurinn hefur hvorki heiti eða GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Neita sjálfgefið að nota hina varasömu heimamöppu `%s'" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ógilt sjálfgefið gildi í svæði %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "villa við að læsa skrá: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "gat ekki sett sjálfgefinn öryggisham: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "gat ekki lesið öryggisham `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "gat ekki sett sjálfgefinn öryggisham í `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "gat ekki sett sjálfgefinn öryggisham: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "gat ekki skilgreint öryggisham fyrir `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "gat ekki opnað `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "gat ekki fundið `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "villa við að búa til `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Villa við að breyta eiganda `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Villa við lestur `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Villa við að skrifa í `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "gat ekki lesið úr `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Villa við að færa %s í %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Villa við að opna `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Villa við lestur `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Villa við lestur `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "hluturinn er ekki með %s eiginleika" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "hluturinn hefur engann %s eiginleika" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s gildi `%s': `:' er ekki leyfilegt" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s gildi `%s': `:' er ekki leyfilegt" #: modules/files.c:1136 msgid "entry already present in file" msgstr "færslan er þegar til staðar í skránni" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "gat ekki ritað í `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "hluturinn er ekki með %s eiginleika" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "færsla sem stangast á við heitið er þegar til staðar í skránni" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' er ekki leyfilegt í dulkóðuðu lykilorði" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "villa við að dulrita lykilorðið" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "Ekki er hægt að blanda '%s' og '%s' einingum" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "er ekki keyrandi með rótarheimildum" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "engin shadow skrá til staðar -- afvirki" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "villa við að frumstilla ldap aðgerðasafnið" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "gat ekki stillt LDAP prótókollsútgáfuna á %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "gat ekki samið um TLS við LDAP þjóninn" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "gat ekki tengst LDAP þjóni" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "gat ekki tengst LDAP þjóni, fyrsta tilraun gerð sem `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "notandahluturinn hafði engann %s eiginleika" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "notandahluturinn var búinn til án `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "villa við að búa til LDAP færslu: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "villa við að breyta LDAP færslu: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "villa við að endurnefna LDAP færslu: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "hluturinn hefur engann %s eiginleika" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "villa við að fjarlægja færslu úr LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "hluturinn hefur engann %s eiginleika" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "dulkóðunarskema lykilorðs er ekki þekkt" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "enginn slíkur hlutur í LDAP skránum" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "enginn `%s' eiginleiki fannst" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "villa við að setja lykilorð í LDAP skrá fyrir %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP þjónn" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP lykilorð" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL notandi" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL Auðkennir" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL villa við að búa til notanda: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL villa við að fjarlægja notandann: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Villa við að frumstilla Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "villa við að búa til nýtt heimasvæði fyrir notandann" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "villa við að fjarlægja heimasvæði notanda" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "villa við að færa heimasvæði notanda" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Villa við að frumstilla %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ógilt kenni %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Leita að hóp númer %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Leita að hóp sem heitir %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Leita að notanda númer %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Leita að notanda sem heitir %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Færslan fannst ekki.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Fyrirspurnir tókust.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Fyrirspurnir brugðust.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Sjálfgefnar notendahlutahópar:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Sjálfgefin heiti notandaeiginleika:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Sæki sjálfgefna notandaeiginleika:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Afrita notendastrúktúr:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "afritið `%s' er til og er ekki venjuleg skrá" #~ msgid "backup file size mismatch" #~ msgstr "stærðarmunur á afritum" po/it.po000066400000000000000000001072221471266067600124730ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Bettina De Monti , 2001 # Francesco D'Aluisio , 2011 # Francesco Tombolini , 2005, 2006, 2007, 2008, 2009 # fvalen , 2012 # lewis41 <>, 2011 # Lorenzo Stobbione , 2004, 2005 # Miloslav Trmač , 2011 # Silvio Pierro , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Italian (http://www.transifex.com/projects/p/fedora/language/" "it/)\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" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Impossibile rimuovere i privilegi.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Errore interno.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s non è autorizzato a cambiare le informazioni di finger per %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Contesto utente sconosciuto" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Impossibile impostare il contesto predefinito per /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Errore nell'inizializzazione di PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autenticazione fallita per %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Errore PAM interno `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Autenticato utente sconosciuto.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Utente non corrispondente.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPZIONE...] utente" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Errore nell'analisi degli argomenti: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nessun nome utente specificato.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Errore nell'inizializzazione di %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "L'utente %s non esiste.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "L'account è bloccato.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "L'account non è bloccato.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimo:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Massimo:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Attenzione:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inattivo:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Mai" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Ultima modifica:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Scadenza password:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Password inattiva:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Scadenza account:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Impossibile modificare le informazioni sulla scadenza per %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPZIONE...] [utente]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nessun nome utente specificato, nessun nome per uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Modifica informazioni di finger per %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nome completo" #: apps/lchfn.c:151 msgid "Surname" msgstr "Cognome" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nome" #: apps/lchfn.c:172 msgid "Office" msgstr "Ufficio" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefono ufficio" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefono casa" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Indirizzo e-mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Le informazioni di finger non sono cambiate: errore di input.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Informazioni di finger modificate.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Informazioni di finger non cambiate: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Cambio della shell per %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nuova shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "La shell non è cambiata: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Modificata la shell.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPZIONE...] gruppo" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nessun nome gruppo specificato.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID gruppo %s non valido\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Creazione del gruppo fallita: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Il gruppo %s non esiste.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Il gruppo %s non può essere eliminato: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Sono stati specificati sia -L che -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Impostazione password per il gruppo %s fallita: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Il gruppo %s non può essere bloccato: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Il gruppo %s non può essere sbloccato: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Il gruppo %s non può essere modificato: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Errore nella ricerca di %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nessun nome di gruppo specificato, usando %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nessun nome di gruppo specificato, nessun nome per il gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nessun nome utente specificato, usando %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s non esiste\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPZIONE...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Errore nell'aprire `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Errore nella creazione dell'account per `%s': riga impropriamente " "formattata.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID utente %s non valido\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Rifiuto di creare un account con UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Errore nella creazione del gruppo per '%s' con GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Rifiuto di usare la directory home inappropriata `%s' per %s per " "impostazione predefinita\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Errore nella creazione della home directory per %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Errore nell'impostazione della password iniziale per %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Errore nella creazione dell'account utente per %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Cambio della password per %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nuova password" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nuova password (conferma)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Le password non corrispondono, riprovare di nuovo.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Cambio di password annullato.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Errore leggendo dal file descriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Errore nell'impostazione della password per l'utente %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Errore nell'impostazione della password per il gruppo %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Password cambiata.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Il gruppo %jd non esiste.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Errore nella creazione del gruppo `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Creazione account fallita: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Errore nella creazione di %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "L'utente %s non può essere eliminato: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s privo di un numero gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Non esiste nessun gruppo con GID %jd, nessuna rimozione.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Il gruppo con GID %jd è privo di un nome di gruppo.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Il gruppo %s non può essere eliminato: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "errore nella rimozione della home directory per l'utente" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Impostazione password per l'utente %s fallita: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "L'utente %s non può essere bloccato: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "L'utente %s non può essere sbloccato: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Attenzione: Il gruppo con ID %jd non esiste.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "L'utente %s non può essere modificato: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Il gruppo %s non può essere modificato: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Nessuna precedente directory di home per %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Nessuna nuova directory di home per %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Errore nello spostamento di %s in %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "impossibile aprire il file di configurazione `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "impossibile fare lo stat del file di configurazione `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "il file di configurazione `%s' è troppo grande" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "impossibile leggere il file di configurazione `%s': %s" #: lib/error.c:62 msgid "success" msgstr "eseguito" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modulo disabilitato da configurazione" #: lib/error.c:66 msgid "generic error" msgstr "errore generico" #: lib/error.c:68 msgid "not enough privileges" msgstr "privilegi insufficienti" #: lib/error.c:70 msgid "access denied" msgstr "accesso negato" #: lib/error.c:72 msgid "bad user/group name" msgstr "nome utente/gruppo errato" #: lib/error.c:74 msgid "bad user/group id" msgstr "ID utente/gruppo errato" #: lib/error.c:76 msgid "user/group name in use" msgstr "nome utente/gruppo in uso" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID utente/gruppo in uso" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "errore nella modifica degli attributi del terminale" #: lib/error.c:82 msgid "error opening file" msgstr "errore nell'apertura del file" #: lib/error.c:84 msgid "error locking file" msgstr "errore nel blocco del file" #: lib/error.c:86 msgid "error statting file" msgstr "errore nello stat del file" #: lib/error.c:88 msgid "error reading file" msgstr "errore nella lettura del file" #: lib/error.c:90 msgid "error writing to file" msgstr "errore nella scrittura su file" #: lib/error.c:92 msgid "data not found in file" msgstr "dati non trovati nel file" #: lib/error.c:94 msgid "internal initialization error" msgstr "errore interno di inizializzazione" #: lib/error.c:96 msgid "error loading module" msgstr "errore di caricamento del modulo" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "errore di risoluzione del simbolo nel modulo" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "mancata corrispondenza nella versione di modulo/libreria" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "lo sblocco renderà vuoto il campo della password" #: lib/error.c:105 msgid "invalid attribute value" msgstr "valore dell'attributo non valido" #: lib/error.c:107 msgid "invalid module combination" msgstr "combinazione di modulo non valida" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "errore sconosciuto" #: lib/misc.c:240 msgid "invalid number" msgstr "numero non valido" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID non valido" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "nessuna funzione di inizializzazione %s in `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "mancata corrispondenza nella versione del modulo in `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "il modulo `%s' non definisce `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "errore nella lettura degli attributi del terminale" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "errore nell'impostazione degli attributi del terminale" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "errore nella lettura dal terminale" #: lib/user.c:218 msgid "name is not set" msgstr "il nome non e' impostato" #: lib/user.c:223 msgid "name is too short" msgstr "il nome è troppo corto" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "il nome è troppo lungo (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "il nome contiene caratteri non-ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "il nome contiene caratteri di controllo" #: lib/user.c:249 msgid "name contains whitespace" msgstr "il nome contiene spazi bianchi" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "il nome inizia con un trattino" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "il nome contiene il carattere non valido `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "l'utente %s non ha alcun UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "il gruppo %s non ha alcun GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "l'utente %jd non ha alcun nome" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "il gruppo %jd non ha alcun nome" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "l'utente non ha né un nome né un UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "il gruppo non ha né un nome né un GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Rifiuto di usare la directory home inappropriata `%s' per impostazione " "predefinita" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Valore predefinito non valido del campo %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "errore nel blocco del file: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "impossibile recuperare il contesto di sicurezza predefinito: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "impossibile recuperare il contesto di sicurezza di `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "impossibile impostare il contesto di sicurezza predefinito a `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "impossibile recuperare il contesto di sicurezza predefinito: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "impossibile determinare il contesto di sicurezza per `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "impossibile aprire `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "impossibile fare lo stat di `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "errore nella creazione di `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Errore nel cambiamento del proprietario di '%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Errore modifica della modalità di `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Errore nella lettura di `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Errore nella scrittura di `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "impossibile leggere da `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Errore nello spostamento di %s in %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Errore modifica della modalità di `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Errore nella lettura di `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Errore nella lettura di `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "nessun attributo %s per l'entità" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "l'oggetto non ha nessun attributo %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s valore `%s': `:' non permesso" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s valore `%s': `:' non permesso" #: modules/files.c:1136 msgid "entry already present in file" msgstr "voce già presente nel file" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "impossibile scrivere su `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "nessun attributo %s per l'entità" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "voce con nome in conflitto già presente nel file" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' non permesso in password cifrate" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "errore nella cifratura della password" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "i moduli `%s' e `%s' non possono essere combinati" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "in esecuzione senza i privilegi di superutente" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "nessun file shadow presente -- disattivazione" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "errore nell'inizializzazione della libreria ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "impossibile impostare il protocollo LDAP alla versione %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "impossibile negoziare il TLS con il server LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "impossibile collegarsi al server LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "impossibile collegarsi al server LDAP, primo tentativo come `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "l'oggetto utente non ha nessun attributo %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "l'oggetto utente è stato creato senza `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "errore nella creazione di una voce di directory LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "errore nella modifica della voce di directory LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "errore nel rinominare la voce di directory LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "l'oggetto non ha nessun attributo %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "errore nella rimozione della voce di directory LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "l'oggetto non ha nessun attributo %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "schema di cifratura password non supportato" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "tipo di oggetto non presente nella directory LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "nessun attributo `%s' trovato" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" "errore nell'impostazione della password nella directory LDAP per %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nome del server LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Base DN di ricerca LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Password LDAP Bind" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Utente LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Autorizzazione utente LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "errore Cyrus SASL nella creazione dell'utente: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "errore Cyrus SASL nella rimozione dell'utente: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "errore nell'inizializzazione di Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "errore nella creazione della home directory per l'utente" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "errore nella rimozione della home directory per l'utente" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "errore nello spostamento della home directory per l'utente" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Errore nell'inizializzazione di %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID %s non valido\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Ricerca del gruppo con ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Ricerca del gruppo di nome %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Ricerca dell'utente con ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Ricerca dell'utente di nome %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Voce non trovata.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Comandi eseguiti con successo\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Esecuzione dei comandi fallita.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Classi oggetto utente predefinite:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nomi attributi dell'utente predefiniti:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Recupero attributi predefiniti dell'utente:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Copia della struttura dell'utente:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "il file di backup `%s' esiste e non è un file regolare" #~ msgid "backup file size mismatch" #~ msgstr "dimensione non corrispondente nel file di backup" po/ja.po000066400000000000000000001267331471266067600124610ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Hajime Taira , 2011-2012 # Hirofumi Saito , 2004, 2005, 2006 # hyuugabaru , 2007, 2009 # Kiyoto Hashida , 2002 # Kiyoto Hashida , 2009 # Makoto Mizukami , 2008 # Miloslav Trmač , 2011 # Noriko Mizumoto , 2007, 2008, 2009 # Tomoyuki KATO , 2011-2013 # 高一人参 @欠陥遺伝子 , 2011 # Yukihiro Nakai , 2001 # amoewaki , 2017. #zanata # ljanda , 2017. #zanata # amoewaki , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-04-13 07:20+0000\n" "Last-Translator: Ludek Janda \n" "Language-Team: Japanese \n" "Language: ja\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: Weblate 4.15.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "特権の停止に失敗しました。\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "内部エラーです。\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s が %s の finger 情報を変更するのは許可されていません\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "不明なユーザーのコンテキスト" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd 用のデフォルトのコンテキストが設定できません\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM の初期化に失敗しました。\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s の認証に失敗しました。\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "内部 PAM エラー `%s'。\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "不明なユーザー認証です。\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ユーザーが一致しませんでした。\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "すべての情報について入力確認する" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "ユーザーのエージングパラメーターを一覧表示する" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "パスワード変更間隔の最小日数" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "日数" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "パスワード変更後の有効日数" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "パスワード変更日 (1970/1/1 からの日数)" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "パスワード失効後、アカウントが無効であるとみなされるまでの日数" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "パスワード失効日 (1970/1/1 からの日数)" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "ユーザーに警告を開始する、パスワード失効までの日数" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[オプション...] ユーザー" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "引数の構文解析に失敗: %s\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "ユーザー名が指定されていません。\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s の初期化に失敗: %s\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "ユーザー %s は存在しません。\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "アカウントはロックされています。\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "アカウントはロックされていません。\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "最小:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "最大:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "最大値:\tなし\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "警告:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "無効:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "無効化:\tなし\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "次回ログイン時に必ずパスワードを変更" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "なし" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "最終更新: \t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "パスワード期限切れ:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "パスワード無効:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "アカウント期限切れ:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s のエージング情報の更新に失敗しました: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[オプション...] [ユーザー]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "ユーザー名が未指定で、uid %d の名前がありません。\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s 用の finger 情報を変更しています。\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "フルネーム" #: apps/lchfn.c:151 msgid "Surname" msgstr "姓" #: apps/lchfn.c:162 msgid "Given Name" msgstr "名" #: apps/lchfn.c:172 msgid "Office" msgstr "勤務先" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "勤務先電話番号" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "自宅電話番号" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "メールアドレス" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger 情報は変更されていません: 入力エラー\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger 情報が変更されました。\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger 情報は変更されていません: %s\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s 用にシェルを変更中\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "新規のシェル" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "シェル変更不可能: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "シェルが変更されました。\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "新しいグループの GID" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "番号" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "システムグループを作成します" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[オプション...] グループ" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "グループ名は指定されていません。\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "無効なグループ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "グループの作成に失敗しました: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "グループ %s は存在しません。\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "グループ %s は削除できませんでした: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "グループの GID を設定します" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "グループを、指定された名前に変更する" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "名前" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "グループに用いる平文パスワード" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "文字列" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "グループに用いるハッシュ化パスワード" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "追加する管理者の一覧" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "削除する管理者の一覧" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "追加するグループメンバーの一覧" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "削除するグループメンバーの一覧" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "グループをロックします" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "グループのロックを解除します" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L と -U の両方のオプションが指定されています。\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "グループ %s のパスワード設定に失敗しました: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "グループ %s はロックされませんでした: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "グループ %s はロック解除できませんでした: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "グループ %s は修正できませんでした: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s の検索に失敗: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "指定された名前のユーザーがメンバーであるグループの代わりに、指定された名前の" "グループのメンバーを一覧表示します" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "UID/GID ではなく、名前でのみメンバー情報を一覧表示する" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "グループ名が未指定のため、%s を使用しています。\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "グループ名が未指定のため、gid %d の名前は未設定です。\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ユーザー名が未指定のため、%s を使用しています。\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s は存在しません\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "ユーザー情報レコードを持つファイル" #: apps/lnewusers.c:49 msgid "PATH" msgstr "パス" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "ホームディレクトリーを作成しない" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "メールスプールを作成しない" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[オプション...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "%s の読み込みエラー: %s\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' 用のアカウント作成に失敗: 不正な書式が含まれています。\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "無効なユーザー ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID:0 でのアカウント作成を拒否中です。\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "%s 用に、GID %jd でグループの作成中にエラーが発生しました: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "デフォルトで、%s 用の危険なホームディレクトリー %s の使用を拒否中です\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s 用の新規ホームディレクトリー作成に失敗しました: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "%s のメールスプールの作成中にエラーが発生しました: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s 用の初期パスワード設定中にエラーが発生しました: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s 用のユーザーアカウント作成に失敗しました: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "ユーザーのパスワードの代わりにグループのパスワードを設定します" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "新しい平文パスワード" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "新しい暗号文パスワード" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "指定された記述子から新しい平文パスワードを読み込みます" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "指定された記述子から新しい暗号パスワードを読み込みます" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s のパスワード変更中にエラー。\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "新規パスワード" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "新規パスワード (確認)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "パスワードが一致しません。もう一度やり直してください。\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "パスワード変更は取り消されました。\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "エラー: ファイルディスクリプター %d から読み込めません。\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "ユーザー %s のパスワード設定に失敗: %s。\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "グループ %s のパスワード設定中にエラーが発生しました: %s 。\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "パスワード変更済み。\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "システムユーザーを作成する" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "新しいユーザーの GECOS 情報" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "新しいユーザーのホームディレクトリー" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "新しいユーザー向けファイルを持つディレクトリー" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "新しいユーザーのシェル" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "新しいユーザーの UID" #: apps/luseradd.c:71 msgid "group for new user" msgstr "新しいユーザーのグループ" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "ユーザーのホームディレクトリーを作成しない" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "ユーザーと同じ名前のグループを作成しない" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "新しいユーザーの一般名" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "新しいユーザーの名" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "新しいユーザーの姓" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "新しいユーザーの部屋番号" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "新しいユーザーの電話番号" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "新しいユーザーの自宅電話番号" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "グループ %jd は存在しません\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "グループ `%s' の作成に失敗: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "アカウントの作成に失敗しました: %s。\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s の作成に失敗: %s。\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "メールスプールの作成中にエラーが発生しました: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "ユーザーがプライベートグループを持っている場合は、それを削除しないでください" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "ユーザーのホームディレクトリーを削除する" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "ユーザー %s は削除できませんでした: %s。\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s には GID 番号がありません。\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd のグループが存在しないため、削除しません。\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd のグループにはグループ名がありません。\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "グループ %s は削除できませんでした: %s。\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "ホームディレクトリーの削除中にエラーが発生しました: %s\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "メールスプールの削除中にエラーが発生しました: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS の情報" #: apps/lusermod.c:61 msgid "home directory" msgstr "ホームディレクトリー" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "ホームディレクトリーの内容を移動する" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "ユーザーのシェルを設定する" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "ユーザーの UID を設定する" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "ユーザーのプライマリー GID を設定する" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "ユーザーのログイン名を変更する" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "ユーザーの平文パスワード" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "ユーザーのハッシュ済みパスワード" #: apps/lusermod.c:76 msgid "lock account" msgstr "アカウントをロックする" #: apps/lusermod.c:79 msgid "unlock account" msgstr "アカウントのロックを解除する" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "ユーザーの一般名を設定する" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "ユーザーの名を設定する" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "ユーザーの姓を設定する" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "ユーザーの部屋番号を設定する" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "ユーザーの電話番号を設定する" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "ユーザーの自宅電話番号を設定する" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "ユーザーのパスワード設定に失敗 %s: %s。\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "ユーザー %s はロックできませんでした: %s。\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "ユーザー %s のロックを解除できませんでした: %s。\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "警告: グループ ID %jd は存在しません。\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "ユーザー %s は編集できませんでした: %s\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "グループ %s は修正できませんでした:%s\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s には、古いホームディレクトリーがありません。\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s には、新しいホームディレクトリーがありません。\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s を %s に移動できませんでした: %s\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "設定ファイル `%s' を開けませんでした: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "設定ファイル `%s' を stat できませんでした: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "設定ファイル `%s' が大きすぎます" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "設定ファイル `%s' を読み込むことができませんでした: %s" #: lib/error.c:62 msgid "success" msgstr "成功" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "モジュールが設定で無効になっています" #: lib/error.c:66 msgid "generic error" msgstr "一般エラー" #: lib/error.c:68 msgid "not enough privileges" msgstr "権限がありません" #: lib/error.c:70 msgid "access denied" msgstr "アクセスが拒否されました" #: lib/error.c:72 msgid "bad user/group name" msgstr "正しくないユーザー名/グループ名" #: lib/error.c:74 msgid "bad user/group id" msgstr "正しくないユーザー ID/グループ ID" #: lib/error.c:76 msgid "user/group name in use" msgstr "ユーザー名/グループ名は使われています" #: lib/error.c:78 msgid "user/group id in use" msgstr "ユーザー ID/グループ ID は使われています" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "端末属性の取得にエラーが発生しました" #: lib/error.c:82 msgid "error opening file" msgstr "ファイルの読み込みに失敗" #: lib/error.c:84 msgid "error locking file" msgstr "ファイルのロックに失敗" #: lib/error.c:86 msgid "error statting file" msgstr "ファイルの stat 情報取得に失敗" #: lib/error.c:88 msgid "error reading file" msgstr "ファイルの読み込み中にエラーが発生しました" #: lib/error.c:90 msgid "error writing to file" msgstr "ファイルへの書き込み中にエラーが発生しました" #: lib/error.c:92 msgid "data not found in file" msgstr "ファイルでデータが見つかりませんでした" #: lib/error.c:94 msgid "internal initialization error" msgstr "内部の初期化に失敗" #: lib/error.c:96 msgid "error loading module" msgstr "モジュールのロードに失敗" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "モジュールのシンボル解決に失敗しました" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "ライブラリー/モジュールのバージョン不一致" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ロックを解除するとパスワード領域は空になります" #: lib/error.c:105 msgid "invalid attribute value" msgstr "無効な属性の値です" #: lib/error.c:107 msgid "invalid module combination" msgstr "無効なモジュールの組み合わせです" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "所有されていないユーザーのホームディレクトリー" #: lib/error.c:115 msgid "unknown error" msgstr "不明なエラーが発生しました" #: lib/misc.c:240 msgid "invalid number" msgstr "無効な番号" #: lib/misc.c:254 msgid "invalid ID" msgstr "無効な ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "`%s' の関数 %s で初期化できません" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' のモジュールバージョンの不一致" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "モジュール `%s' が `%s' を定義していません" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "端末属性の読み込み中にエラーが発生しました" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "端末属性の設定中にエラーが発生しました" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "端末から読み込み中にエラーが発生しました" #: lib/user.c:218 msgid "name is not set" msgstr "名前が設定されていません" #: lib/user.c:223 msgid "name is too short" msgstr "名前が短すぎます" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "名前が長すぎます (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "名前に ASCII 以外の文字があります" #: lib/user.c:242 msgid "name contains control characters" msgstr "名前が制御文字を含んでいます" #: lib/user.c:249 msgid "name contains whitespace" msgstr "名前に空白があります" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "名前がハイフンから始まっています" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "名前に無効な文字 `%c' があります" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "ユーザー %s には UID がありません" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "ユーザー %s が見つかりませんでした" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "グループ %s には GID がありません" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "グループ %s が見つかりませんでした" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "ユーザー %jd には名前がありません" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "グループ %jd には名前がありません" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ユーザーには、名前もしくは UID がありません" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "グループには、名前もしくは GID がありません" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "デフォルトで危険なホームディレクトリ `%s' の使用を拒否中です" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "領域 %s の値は無効なデフォルト値です: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ファイルのロック中にエラーが発生しました: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "デフォルトのセキュリティーコンテキストを取得できません: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' のセキュリティーコンテキストを取得できません: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' にデフォルトのセキュリティーコンテキストを設定できません: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "selabel ファイルコンテキストハンドルを取得できませんでした: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' のセキュリティーコンテキストを決定できません: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' を開けません: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' の stat 情報を取得できません: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' の作成中にエラーが発生しました: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' の所有者変更に失敗: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "エラー: `%s' のモードを変更できません: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s'の読み込みに失敗: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s'の書き込みに失敗: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' から読み込めません: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "ロック `%s' の内容が無効です" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "ロック %s は、プロセス %ju に保持されています" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "古いロック `%s' を削除する際にエラーが発生しました: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' の一時ファイルを開く際にエラーが発生しました: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "ロック `%s' を取得できません: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "`%s' を解決する際にエラーが発生しました: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "`%s' を置き換える際にエラーが発生しました: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "重複オブジェクトに %s 属性がありません" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "元のオブジェクトに %s 属性がありません" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "ID %lu は %s がすでに使用しています" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s 値 `%s': `\\n' は許可されていません" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s 値 `%s': `:' は許可されていません" #: modules/files.c:1136 msgid "entry already present in file" msgstr "エントリーは、ファイルに存在します" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' に書き込めません: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "エンティティーオブジェクトに %s 属性がありません" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "競合する名前のエントリーは、ファイルに存在します" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' および `\\n' は、暗号化パスワードでは許可されていません" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "パスワードの暗号化中にエラーが発生しました" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' と `%s' のモジュールは組み合わせることができません" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "スーパーユーザー特権で実行できません" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "shadow ファイルはありません。無効になっています" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "LDAP ライブラリーの初期化時にエラー" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP プロトコルをバージョン %d に設定できませんでした" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP サーバーと TLS ネゴシエートできませんでした" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP サーバーとバインドできませんでした" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "LDAP サーバーとバインドできませんでした。最初に `%s' として試みます: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ユーザーオブジェクトには、%s 属性がありませんでした" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ユーザーオブジェクトは、`%s' を含まずに生成されました" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP ディレクトリーエントリーの作成時にエラーが発生しました: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP ディレクトリーエントリーの変更時にエラーが発生しました: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP ディレクトリーエントリーの名前変更でエラー: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "オブジェクトには、%s 属性がありませんでした" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP ディレクトリーエントリーの削除時にエラー: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "オブジェクトには、%s 属性がありません" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "サポートされていないパスワード暗号化スキームです" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ディレクトリーには、そのようなオブジェクトがありません" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s' 属性は見つかりませんでした" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s の LDAP ディレクトリーのパスワード設定でエラー: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP サーバー名" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP 検索ベース DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP バインド DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP バインドパスワード" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ユーザー" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL 認証ユーザー" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ユーザーの作成時に Cyrus SASL エラー: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ユーザーの削除時に Cyrus SASL エラー: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL の初期化に失敗: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ユーザー用のホームディレクトリー作成に失敗しました" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ユーザーのホームディレクトリー削除に失敗しました" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ユーザーのホームディレクトリー移動に失敗しました" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s の初期化に失敗: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "無効な ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd のグループを検索中。\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "名前が %s のグループを検索中。\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd のユーザーを検索中。\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "名前が %s のユーザーを検索中。\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "エントリーは見つかりませんでした。\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "指示成功。\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "指示失敗。\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "デフォルトユーザーオブジェクトクラス:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "デフォルトユーザー属性名:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "デフォルトユーザー属性を取得中:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ユーザー構造体をコピー中:\n" #~ msgid "" #~ "error connecting to the kadm5 server for service `%s' in realm `%s': %s" #~ msgstr "レルム `%s' のサービス `%s' で、kadm5 サーバーに接続できません: %s" #~ msgid "error initializing kerberos library" #~ msgstr "kerberos ライブラリーの初期化でエラーが発生しました" #~ msgid "error parsing user name `%s' for kerberos" #~ msgstr "kerberos のユーザー名 `%s' で、構文解析エラーが発生しました" #~ msgid "entity structure has no %s or %s attributes" #~ msgstr "エンティティー構造体には、%s 属性および %s 属性がありません。" #~ msgid "entity has no %s or %s attributes" #~ msgstr "エンティティーには、%s 属性および %s 属性がありません。" #~ msgid "entity was created with no %s or %s attributes" #~ msgstr "エンティティーは、%s 属性や %s 属性を含まずに作成されました" #~ msgid "error reading information for `%s' from kerberos" #~ msgstr "kerberos から `%s' の情報を読み込んでいる時に、エラーが発生しました" #~ msgid "entity has no %s attribute" #~ msgstr "エンティティーには、 %s 属性がありません" #~ msgid "error setting password for `%s'" #~ msgstr "`%s' のパスワード設定中にエラーが発生しました" #~ msgid "Kerberos Realm" #~ msgstr "kerberos レルム" #~ msgid "Kerberos Admin Principal" #~ msgstr "kerberos 管理プリンシパル" #~ msgid "Kerberos Password for Admin Principal" #~ msgstr "管理プリンシパルの kerberos パスワード" po/ka.po000066400000000000000000001562371471266067600124640ustar00rootroot00000000000000# libuser translation to Georgian. # Copyright (C) 2022 Red Hat, Inc. # This file is distributed under the same license as the libuser package. # # Translators: Temuri Doghonadze , 2022 msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-03-17 21:20+0000\n" "Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian \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=1; plural=0;\n" "X-Generator: Weblate 4.15.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "პრივილეგიების მოცილების შეცდომა.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "შიდა შეცდომა.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s-ს %s-ის ანაბეჭდის ინფორმაციის შეცვლა არ შეუძლია\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "მომხმარებლის უცნობი კონტექსტი" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd-სთვის ნაგულისხმები კონტექსტის დაყენების შეცდომა\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM-ის ინიციალიზაციის შეცდომა.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "ავთენტიკაციის შეცდომა: %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "PAM-ის შიდა შეცდომა '%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "უცნობი მომხმარებელი ავთენტიფიცირებულია.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "მომხმარებელი არ ემთხვევა\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "ყველა ინფორმაციის მოთხოვნა" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "მომხმარებლის ასაკის პარამეტრების სიის ჩვენება" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "დღეების მინიმალური რაოდენობა პაროლის ცვლილებებს შორის" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "დღე" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "დღეების მაქსიმალური რაოდენობა პაროლის ცვლილებებს შორის" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "პაროლის ბოლო ცვლილების თარიღი 1/1/70-ის შემდეგ" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "პაროლის ვადის ამოწურვის შემდეგ გასული დღეების რაოდენობა, როცა ანგარიშის " "არააქტიურად ცხადდება" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "პაროლის ვადის გასვლის თარიღი 1/1/70-ის შემდეგ (დღეები)" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "პაროლის ვადის ამოწურვამდე დარჩენილი დღეების რაოდენობა, როცა მომხმარებელი " "გაფრთხილებული იქნება" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[პარამეტრი...] მომხმარებელი" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "არგუმენტის დამუშავების შეცდომა: %s\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "მომხმარებლის სახელი მითითებული არაა.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s-ის ინიციალიზაციის შეცდომა: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "მომხმარებელი %s არ არსებობს.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "ანგარიში დაბლოკილია.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "ანგარიში დაბლოკილი არაა.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "მინიმუმ:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "მაქსიმუმ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "მაქსიმუმ: არაფერი\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "გაფრთხილება:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "არააქტიური:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "არააქტიური: არასდროს\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "პაროლი შემდეგ შესვლაზე უნდა შეცვალოს" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "არასდროს" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "ბოლო ცვლილება:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "პაროლი იწურება:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "პაროლი არააქტიურია:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "ანგარიში იწურება:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s-სთვის ანგარიშის ინფორმაციის ცვლილების შეცდომა: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[პარამეტრი...] მომხმარებელი" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "მომხმარებლის სახელი UID-სთვის %d მითითებული არაა.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "ანაბეჭდის ინფორმაციის ცვლილება %s-სთვის.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "სრული სახელი" #: apps/lchfn.c:151 msgid "Surname" msgstr "გვარი" #: apps/lchfn.c:162 msgid "Given Name" msgstr "სახელი" #: apps/lchfn.c:172 msgid "Office" msgstr "ოფისი" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "ოფისის ტელეფონი" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "სახლის ტელეფონი" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ელფოსტის მისამართი" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "თითის ინფორმაცია არ შეცვლილა: შეყვანის შეცდომა.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "თითის ინფორმაცია შეიცვალა.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "თითის ინფორმაცია არ შეცვლილა: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s-ის გარსის შეცვლა.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "ახალი გარსი" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "გარსი არ შეცვლილა: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "გარსი შეიცვალა.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "ახალი ჯგუფის GID" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "რიცხვი" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "სისტემური ჯგუფის შექმნა" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[პარამეტრი...] ჯგუფი" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "ჯგუფის სახელი მითითებული არაა.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ჯგუფის არასწორი ID: %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "ჯგუფის შექმნის შეცდომა: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "ჯგუფი \"%s\" არ არსებობს.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "ჯგუფის (%s) წაშლა შეუძლებელია: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "ჯგუფის GID-ის დაყენება" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "ჯგუფისთვის მითითებული სახელის დარქმევა" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "სახელი" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "ჯგუფისთვის გამოყენებული მარტივი ტექსტის სახით მითითებული პაროლი" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "სტრიქონი" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "ჯგუფისთვის გამოყენებული დაჰეშილი პაროლი" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "დასამატებელი ადმინისტრატორების სია" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "წასაშლელი ადმინისტრატორების სია" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "ჯგუფის დასამატებელი წევრების სია" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "ჯგუფის წასაშლელი წევრების სია" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "ჯგუფის დაბლოკვა" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "ჯგუფის განბლოკვა" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "მითითებულია ორივე, -L და -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "პაროლის დაყენების შეცდომა ჯგუფისთვის %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "ჯგუფის (%s) დაბლოკვის შეცდომა: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "ჯგუფის (%s) განბლოკვის შეცდომა: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "ჯგუფის (%s) შეცვლის შეცდომა: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s-ის ძებნის შეცდომა: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "მითითებული მომხმარებლის ჯგუფის სიის მაგიერ მითითებული ჯგუფის წევრების " "ჩამოთვლა" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "წევრობის ინფორმაციის მხოლოდ სახელით და არა UID/GD-ით" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "ჯგუფის სახელი მითითებული არაა. გამოიყენება %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "ჯგუფის სახელი მითითებული არაა. GID-ს %d სახელი არ გააჩნია.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "მომხმარებლის სახელი მითითებული არაა. გამოიყენება %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s არ არსებობს\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "ფაილი მომხმარებლის ინფორმაციის ჩანაწერებით" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ბილიკი" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "საწყისი საქაღალდეები არ შეიქმნება" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "საფოსტო ყუთები არ შეიქმნება" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[პარამეტრი...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "%s-ის გახსნის შეცდომა: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "'%s'-სთვის ანგარიშის შექმნის შეცდომა. ხაზი არასწორადაა ფორმატირებული.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "მომხმარებლის არასწორი ID \"%s\"\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0-ით ანგარიშის შექმნაზე უარის თქმა.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "შეცდომა %s-სთვის ჯგუფის შექმნისას, GID-ით %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "საშიში საწყისი საქაღალდის (%s) %s-სთვის ნაგულისხმებად გამოყენების უარი\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s-სთვის საწყისი საქაღალდის შექმნის შეცდომა: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "%s-სთვის ფოსტის შექმნის შეცდომა: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s-სთვის საწყისი პაროლის დაყენება შეუძლებელია: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s-სთვის მომხმარებლის ანგარიშის შექმნა შეუძლებელია: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "მომხმარებლის მაგიერ ჯგუფის პაროლის დაყენება" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "ახალი უბრალო პაროლი" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "ახალი დაშიფრული პაროლი" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "ახალი უბრალო პაროლის მითითებული დესკრიპტორიდან წაკითხვა" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "ახალი დაშიფრული პაროლის მითიტებული დესკრიპტორიდან წაკითხვა" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s-ის პაროლის შეცვლა.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "ახალი პაროლი" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "ახალი პაროლი (დაადასტურეთ)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "პაროლი არ ემთხვევა. თავიდან სცადეთ.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "პაროლის ცვლილება გაუქმდა.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ფაილის დესკრიპტორიდან (%d) წაკითხვის შეცდომა.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "მომხმარებლის (%s) პაროლის დაყენების შეცდომა: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "ჯგუფის (%s) პაროლის დაყენების შეცდომა: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "პაროლი შეიცვალა.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "სისტემური მომხმარებლი შეცვლა" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS ინფორმაცია ახალი მომხმარებლისთვის" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "მომხმარებლის საწყისი საქაღალდე" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "ახალი მომხმარებლის ფაილების საქაღალდე" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "ახალი მომხმარებლის გარსი" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "ახალი მომხმარებლის UID" #: apps/luseradd.c:71 msgid "group for new user" msgstr "ახალი მომხმარებლის ჯგუფი" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "მომხმარებლის საწყისი საქაღალდე არ შეიქმნება" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "ჯგუფი იგივე სახელით, როგორიც მომხმარებლისაა, არ შეიქმნება" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "ახალი მომხმარებლის საერთო სახელი" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "ახალი მომხმარებლის ნამდვილი სახელი" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "ახალი მომხმარებლის გვარი" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "ახალი მომხმარებლის ოთახის ნომერი" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "ახალი მომხმარებლის ტელეფონის ნომერი" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "ახალი მომხმარებლის სახლის ტელეფონის ნომერი" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "ჯგუფი არ არსებობს: %jd\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "ჯგუფის (%s) შექმნის შეცდომა: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "ანგარიშის შექმნის შეცდომა: %s\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s-ის შექმნის შეცდომა: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "შეცდომა ელფოსტი შექმნისას: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "თუ მომხმარებელს ის გააჩნია, მისი პირადი ჯგუფი არ წაიშლება" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "მომხმარებლის საწყისის საქაღალდის წაშლა" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "მომხმარებლის (%s) წაშლა შეუძლებელია: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s-ს GID რიცხვი არ გააჩნია.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "ჯგუფი GID-ით %jd არ არსებობს. არ წაიშლება.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "ჯგუფს GID-ით %jd სახელი არ გააჩნია.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "ჯგუფის (%s) წაშლის შეცდომა: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "შეცდომა მომხმარებლის საწყისი საქაღალდის წაშლისას: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "ფოსტის წაშლის შეცდომა: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS ინფორმაცია" #: apps/lusermod.c:61 msgid "home directory" msgstr "საწყისი საქაღალდე" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "საწყისი საქაღალდის შემცველობის გადატანა" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "მომხმარებლის გარსის დაყენება" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "მომხმარებლის UID-ის დაყენება" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "მოხმარებლის ძირითადი GID-ის დაყენება" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "მომხმარებლის სახელის შეცვლა" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "უბრალო ტექსტური პაროლი მომხმარებლისთვის" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "დაჰეშილი პაროლი მომხმარებლისთვის" #: apps/lusermod.c:76 msgid "lock account" msgstr "ანგარიშის დაბლოკვა" #: apps/lusermod.c:79 msgid "unlock account" msgstr "ანგარიშის განბლოკვა" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "მომხმარებლის საერთო სახელის დაყენება" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "მომხმარებლის სახელის დაყენება" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "მომხმარებლის გვარის დაყენება" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "მომხმარებლის ოთახის ნომრის დაყენება" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "მომხმარებლის ტელეფონის ნომრის დაყენება" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "მომხმარებლის სახლის ტელეფონის ნომრის დაყენება" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "მომხმარებლისთვის (%s) პაროლის დაყენების შეცდომა: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "მომხმარებლის (%s) დაბლოკვის შეცდომა: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "მომხმარებლის (%s) განბლოკვის შეცდომა: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "გაფრთხლება: ჯგუფი ID-ით %jd არ არსებობს.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "მომხმარებელი %s ვერ შეიცვლება: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "ჯგუფის (%s) შეცვლის შეცდომა: %s\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s-ს ძველი საწყისი საქაღალდე არ გააჩნია.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s-ს ახალი საწყისი საქაღალდე არ გააჩნია.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s-ის %s-მდე გადატანის პრობლემა: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "კონფიგურაციის ფაილის გახსნის შეცდომა `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "კონფიგურაციის ფაილის აღმოჩენის შეცდომა `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "კონფიგურაციის ფალი ძალიან დიდია: '%s'" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "კონფიგურაციის ფაილის (%s) წაკითხვის შეცდომა: %s" #: lib/error.c:62 msgid "success" msgstr "წარმატება" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "მოდული გათიშულია კონფიგურაციის მიერ" #: lib/error.c:66 msgid "generic error" msgstr "ზოგადი შეცდომა" #: lib/error.c:68 msgid "not enough privileges" msgstr "საკმარისი პრივილეგიების გარეშე" #: lib/error.c:70 msgid "access denied" msgstr "წვდომა აკრძალულია" #: lib/error.c:72 msgid "bad user/group name" msgstr "მომხმარებლის/ჯგუფის ცუდი სახელი" #: lib/error.c:74 msgid "bad user/group id" msgstr "მომხმარებლის/ჯგუფის ცუდი ID" #: lib/error.c:76 msgid "user/group name in use" msgstr "მომხმარებლის/ჯგუფის სახელი უკვე გამოიყენება" #: lib/error.c:78 msgid "user/group id in use" msgstr "მომხმარებლის/ჯგუფის ID უკვე გამოიყენება" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ტერმინალის ატრიბუტების მართვის შეცდომა" #: lib/error.c:82 msgid "error opening file" msgstr "შეცდომა ფაილის გახსნისას" #: lib/error.c:84 msgid "error locking file" msgstr "ფაილის დაბლოკვის შეცდომა" #: lib/error.c:86 msgid "error statting file" msgstr "ფაილის აღმოჩენის შეცდომა" #: lib/error.c:88 msgid "error reading file" msgstr "ფაილის წაკითხვის შეცდომა" #: lib/error.c:90 msgid "error writing to file" msgstr "ფაილში ჩაწერის შეცდომა" #: lib/error.c:92 msgid "data not found in file" msgstr "ფაილში მონაცემების აღმოჩენის შეცდომა" #: lib/error.c:94 msgid "internal initialization error" msgstr "შიდა ინიციალიზაციის შეცდომა" #: lib/error.c:96 msgid "error loading module" msgstr "მოდულის ჩატვირთვის შეცდომა" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "მოდულში სიმბოლოს გადაწყვეტის შეცდომა" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "ბიბლიოთეკის/მოდულის შეუთავსებელი ვერსია" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "განბლოკვა პაროლის ველს ცარიელს დატოვებს" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ატრიბუტის არასწორი მნიშვნელობა" #: lib/error.c:107 msgid "invalid module combination" msgstr "მოდულების არასწორი კომბინაცია" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "მომხმარებლის საწყისი საქაღალდის მფლობელი თვითონ არაა" #: lib/error.c:115 msgid "unknown error" msgstr "უცნობი შეცდომა" #: lib/misc.c:240 msgid "invalid number" msgstr "არასწორი რიცხვი" #: lib/misc.c:254 msgid "invalid ID" msgstr "არასწორი ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%2$s-ში ინიციალიზაციის ფუნქცია %1$s ნაპოვნი არაა" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "%s-ში მოდულის ვერსია არ ემთხვევა" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "მოდული '%s' '%s'-ს არ აღწერს" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ტერმინალის ატრიბუტების წაკითხვის შედომა" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ტერმინალის ატრიბუტების დაყენების შეცდომა" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ტერმინალიდან წაკითხვის შეცდომა" #: lib/user.c:218 msgid "name is not set" msgstr "სახელი დაყენებული არაა" #: lib/user.c:223 msgid "name is too short" msgstr "სახელი ძალიან მოკლეა" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "სახელი ძალიან გრძელია (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "სახელი არა-ASCII სიმბოლოებს შეიცავს" #: lib/user.c:242 msgid "name contains control characters" msgstr "სახელი საკონტროლო სიმბოლოებს შეიცავს" #: lib/user.c:249 msgid "name contains whitespace" msgstr "სახელი ცარიელ სიმბოლოს შეიცავს" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "სახელი ჰარეთი იწყება" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "სახელი არასწორ სიმბოლოს, '%c' შეიცავს" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "მომხმარებელს %s UID არ გააჩნია" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "მომხმარებელი %s არ არსებობს" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "ჯგუფს %s GID-ი არ გააჩნია" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "ჯგუფი %s არ არსებობს" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "მომხარებელს %jd სახელი არ გააჩნია" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "ჯგუფს %jd სახელი არ გააჩნია" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "მომხმარებელს არც სახელი აქვს, არც UID-ი" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "ჯგუფის არც სახელი აქვს, არც GID-ი" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "საშიში საწყისი საქაღალდის (%s) ნაგულისხმებად გამოყენების უარი" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "ველის (%s) არასწორი ნაგულისხმები მნიშვნელობა: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ფაილის დაბლოკვის შეცდომა: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ნაგულისხმები უსაფრთხოების კონტექსტის მიღების შეცდომა: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "%s-ის უსაფრთხოების კონტექსტის მიღების შეცდომა: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "უსაფრთხოების კონტექსტის %s-ზე დაყენების შეცდომა: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "ფაილის კონტექსტის selabel-ის მიღების შეცდომა: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "%s-ის უსაფრთხოების კონტექსტის განსაზღვრის შეცდომა: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "%s-ის გახსნა შეუძლებელია: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "'%s'-ის აღმოჩენის შეცდომა: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "%s-ის შექმნის შეცდომა: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "'%s'-ის მფლობელის შეცვლის შეცდომა: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "%s-ის მოდელის შეცვლის შეცდომა: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "შეცდომა '%s'-ის კითხვისას: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "შეცდომა '%s'-ის ჩაწერისას: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "%s-დან წაკითხვა შეუძლებელია: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "ბლოკის '%s' არასწორი შემცველობა" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "ბლოკი %s ეკუთვნის პროცესს %ju" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "გაჭედილი ბლოკის '%s' წაშლის შეცდომა: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "'%s'-სთვის დროებითი ფაილის გახსნის შეცდომა: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "ბლოკის ('%s') მიღების შეცდომა: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "'%s'-ის ამოხსნის შეცდომა: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "'%s'-ის ჩანაცვლების შეცდომა: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "დუბლირებულ ობიექტს ატრიბუტი %s არ გააჩნია" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "ორიგინალ ობიექტს ატრიბუტი %s არ გააჩნია" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "ID %lu უკვე გამოიყენება %s-ის მიერ" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s-ის ნიშვნელობა '%s': '\\n" "' დაუშვებელია" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s-ის ნიშვნელობა '%s' დაუშვებელია" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ფაილში ჩანაწერი უკვე არსებობს" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "%s-ში ჩაწერის შეცდომა: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "ობიექტს ატრიბუტი (%s) არ გააჩნია" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ფაილში ჩანაწერი იგივე სახელით, უკვე არსებობს" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "დაშიფრულ პაროლში ':' და '\\n" "' დაუშვებელია" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "პაროლის დაშიფვრის შეცრომა" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "'%s' და '%s' მოდულების ერთად გამოყენება შეუძლებელია" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "საჭიროა ზემომხმარებლის პრივილეგიები" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "ფაილი shadow არ არსებობს -- გათიშვა" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "შეცდომა ldap-ის ბიბლიოთეკის ინიციალიზაციისას" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "შეცდომა LDAP-ის პროტოკოლის ვერსიის %d-ზე დაყენებისას" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "\"LDAP TLS\" სესიის დაწყების შეცდომა: %s" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "შეცდომა LDAP სერვერთან მიბმისას" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "შეცდომა LDAP სერვერთან მიბმისას. პირველი ცდა, როგორც '%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "მომხმარებლის ობიექტს ატრიბუტი %s არ გააჩნია" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "მომხმარებლის ობიექტი %s-ის გარეშე შეიქმნა" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "შეცდომა LDAP -ში ჩანაწერის შექმნისას: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "შეცდომა LDAP -ში ჩანაწერის შეცვლისას: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "შეცდომა LDAP -ში ჩანაწერის სახელის გადარქმევისას: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ობიექტს მითითებული ატრიბუტი არ გააჩნია: %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "შეცდომა LDAP -ში ჩანაწერის წაშლისას: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ობიექტს ატრიბუტი (%s) არ გააჩნია" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "პაროლის დაშიფვრის მხარდაუჭერელი სქემა" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "\"LDAP\"-ში ასეთი ობიექტი არ არსებობს" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ატრიბუტი \"%s\" არ არსებობს" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "შეცდომა LDAP-ში %s-ის პაროლის დაყენებისას: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP სერვერის სახელი" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP-ის ნაგულისხმები საბაზისო DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP -ის მისამაგრებელი DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP -ის მისამაგრებელი პაროლი" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL მომხმარებელი" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL ავტორიზაციის მომხმარებელი" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL -ის შეცდომა მომხმარებლის შექმნისას: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL -ის შეცდომა მომხმარებლის წაშლისას: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "შეცდომა Cyrus SASL-ის ინიციალიზაციისას: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "შეცდომა მომხმარებლის საწყისი საქაღალდის შექმნიას" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "შეცდომა მომხმარებლის საწყისი საქაღალდის წაშლისას" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "შეცდომა მომხმარებლის საწყისი საქაღალდის გადატანისას" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "შეცდომა %s-ის ინიციალიზაციისას: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "არასწორი ID: %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ვეძებ ჯგუფს ID-ით %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "ვეძებ ჯგუფს სახელით %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ვეძებ მომხმარებელს ID-ით %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "ვეძებ მომხმარებელს სახელით %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "ჩანაწერი ვერ ვიპოვე.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "მოთხოვნა წარმატებით დასრულდა.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "მოთხოვნის შეცდომა.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "მომხმარებლის ობიექტის ნაგულისხმები კლასები:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "მომხმარებლის ობიექტის ნაგულისხმები ატრიბუტები:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "მომხმარებლის ნაგულისხმები ატრიბუტების მიღება:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "მომხმარებლის სტრუქტურის კოპირება:\n" #~ msgid "%s did not have a home directory.\n" #~ msgstr "%s-ს საწყისი საქაღალდე არ გააჩნია.\n" #~ msgid "Error removing %s: %s.\n" #~ msgstr "%s-ის წაშლის შეცდომა: %s.\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "მარქაფის ფაილი %s არსებობს და ჩვეულებრივ ფაილს არ წარმოადგენს" #~ msgid "backup file size mismatch" #~ msgstr "მარქაფის ფაილის ზომა არ ემთხვევა" #~ msgid "" #~ "error connecting to the kadm5 server for service `%s' in realm `%s': %s" #~ msgstr "" #~ "შეცდომა kadm5 სერვერთან მიერთებისას სერვისისთვის '%s' რეალმში '%s': %s" #~ msgid "error initializing kerberos library" #~ msgstr "შეცდომა kerberos-ის ბიბლიოთეკის ინიციალიზაციისას" #~ msgid "error parsing user name `%s' for kerberos" #~ msgstr "შეცდომა მომხმარებლის სახელის kerberos-ისთვის დამუშავებისას: %s" #~ msgid "entity structure has no %s or %s attributes" #~ msgstr "ობიექტის სტრუქტურას %s ან %s ატრიბუტები არ გააჩნია" #~ msgid "entity has no %s or %s attributes" #~ msgstr "ობიექტს %s ან %s ატრიბუტები არ გააჩნია" #~ msgid "entity was created with no %s or %s attributes" #~ msgstr "ობიექტი %s ან %s ატრიბუტების გარეშე შეიქმნა" #~ msgid "error reading information for `%s' from kerberos" #~ msgstr "შეცდომა %s-ისთვის kerberos-დან ინფორმაციის წაკითხვისას" #~ msgid "entity has no %s attribute" #~ msgstr "ობიექტს ატრიბუტი (%s) არ გააჩნია" #~ msgid "error setting password for `%s'" #~ msgstr "შეცდომა '%s'-სთვის პაროლის დაყენებისას" #~ msgid "Kerberos Realm" #~ msgstr "Kerberos-ის რეალმი" #~ msgid "Kerberos Admin Principal" #~ msgstr "Kerberos-ის Admin Principal-ი" #~ msgid "Kerberos Password for Admin Principal" #~ msgstr "Kerberos-ის პაროლი Admin Principal-ისთვის" po/kn.po000066400000000000000000001370061471266067600124720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # shanky , 2012 # shankar , 2007, 2008, 2009 # shanky , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/fedora/language/" "kn/)\n" "Language: kn\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "ಸವಲತ್ತುಗಳನ್ನು ತ್ಯಜಿಸುವಲ್ಲಿ ದೋಷ.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "ಆಂತರಿಕ ದೋಷ.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ಕ್ಕೆ %s ನ ಫಿಂಗರ್ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ಅನುಮತಿ ಇಲ್ಲ\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "ಅಜ್ಞಾತ ಬಳಕೆದಾರ ಸನ್ನಿವೇಶ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd ಗೆ ಡೀಫಾಲ್ಟ್‍ ಸನ್ನಿವೇಶವನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿಲ್ಲ\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲ್ಲಿ ದೋಷ.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s ಗಾಗಿ ದೃಢೀಕರಣವು ವಿಫಲಗೊಂಡಿದೆ.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "ಆಂತರಿಕ PAM ದೋಷ `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "ಅಜ್ಞಾತ ಬಳಕೆದಾರನನ್ನು ದೃಢೀಕರಿಸಲಾಗಿದೆ.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ಬಳಕೆದಾರರು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ಆಯ್ಕೆ...] ಬಳಕೆದಾರ" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "ಆರ್ಗ್ಯುಮೆಂಟ್‍ಗಳನ್ನು ವಿವರಿಸುವಲ್ಲಿ ದೋಷ: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "ಯಾವುದೆ ಹೆಸರು ಸೂಚಿತಗೊಂಡಿಲ್ಲ.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ದೋಷ: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "ಬಳಕೆದಾರ %s ನು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "ಖಾತೆಯು ಲಾಕ್ ಆಗಿದೆ.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "ಖಾತೆಯು ಲಾಕ್ ಆಗಿಲ್ಲ.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "ಕನಿಷ್ಟ:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "ಗರಿಷ್ಟ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "ಎಚ್ಚರಿಕೆ:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "ನಿಷ್ಕ್ರಿಯ:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "ಎಂದೂ ಅಲ್ಲ" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "ಕಡೆಯ ಬದಲಾವಣೆ:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "ಗುಪ್ತಪದದ ಕಾಲಾವಧಿ ಮುಗಿದು ಹೋಗುತ್ತದೆ:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "ಗುಪ್ತಪದವು ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "ಖಾತೆಯ ಕಾಲಾವಧಿ ಮುಗಿದು ಹೋಗುತ್ತದೆ:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s ನ ಕಾಲ ತೀರುತ್ತಿರುವ ಮಾಹಿತಿಯನ್ನು ಮಾರ್ಪಡಿಸುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ಆಯ್ಕೆ...] [ಬಳಕೆದಾರ]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "ಯಾವುದೆ ಬಳಕೆದಾರ ಹೆಸರು ಸೂಚಿತಗೊಂಡಿಲ್ಲ, uid %d ಗೆ ಯಾವುದೆ ಹೆಸರಿಲ್ಲ.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s ಗಾಗಿನ ಫಿಂಗರ್ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "ಸಂಪೂರ್ಣ ಹೆಸರು" #: apps/lchfn.c:151 msgid "Surname" msgstr "ಅಡ್ಡಹೆಸರು" #: apps/lchfn.c:162 msgid "Given Name" msgstr "ಕೊಡಲಾದ ಹೆಸರು" #: apps/lchfn.c:172 msgid "Office" msgstr "ಕಛೇರಿ" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "ಕಛೇರಿ ದೂರವಾಣಿ ಸಂಖ್ಯೆ" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "ಮನೆಯ ದೂರವಾಣಿ ಸಂಖ್ಯೆ" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ಈ-ಮೈಲ್ ವಿಳಾಸ" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "ಫಿಂಗರ್ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗಿಲ್ಲ: ಆದಾನ ದೋಷ.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "ಫಿಂಗರ್ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "ಫಿಂಗರ್ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗಿಲ್ಲ: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s ಗಾಗಿ ಶೆಲ್ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "ಹೊಸ ಶೆಲ್" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "ಶೆಲ್ ಬದಲಾಗಿಲ್ಲ: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "ಶೆಲ್ ಬದಲಾಗಿದೆ.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ಆಯ್ಕೆ...] ಸಮೂಹ" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "ಯಾವುದೆ ಸಮೂಹದ ಹೆಸರು ನಿಗದಿತಗೊಂಡಿಲ್ಲ.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ಅಮಾನ್ಯ ಸಮೂಹ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "ಸಮೂಹದ ರಚನೆ ವಿಫಲಗೊಂಡಿದೆ: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "ಸಮೂಹ %s ವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "ಸಮೂಹ %s ವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L ಹಾಗೂ -U ಎರಡೂ ಸೂಚಿತಗೊಂಡಿದೆ.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "ಸಮೂಹ %s ಕ್ಕೆ ಗುಪ್ತಪದವನ್ನು ಸಿದ್ಧಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲತೆ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "ಸಮೂಹ %s ವನ್ನು ಲಾಕ್ ಮಾಡಲಾಗಿಲ್ಲ: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "ಸಮೂಹ %s ವನ್ನು ಅನ್-ಲಾಕ್ ಮಾಡಲಾಗಿಲ್ಲ: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "ಸಮೂಹ %s ವನ್ನು ಮಾರ್ಪಡಿಸಲಾಗಿಲ್ಲ: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s ಅನ್ನು ನೋಡುವಾಗ ದೋಷ: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "ಯಾವುದೆ ಸಮೂಹದ ಹೆಸರು ಸೂಚಿತಗೊಂಡಿಲ್ಲ, %s ಅನ್ನು ಬಳಸಲಾಗುತ್ತ್ತಿದೆ.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "ಯಾವುದೆ ಸಮೂಹದ ಹೆಸರು ಸೂಚಿತಗೊಂಡಿಲ್ಲ, gid %d ಗೆ ಯಾವುದೆ ಹೆಸರಿಲ್ಲ.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ಯಾವುದೆ ಬಳಕೆದಾರರ ಹೆಸರು ಸೂಚಿತಗೊಂಡಿಲ್ಲ, %s ಅನ್ನು ಬಳಸಲಾಗುತ್ತ್ತಿದೆ.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ಆಯ್ಕೆ...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' ಅನ್ನು ತೆರೆಯುವಲ್ಲಿ ದೋಷ: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' ಗಾಗಿ ಖಾತೆಯನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ: ಸಾಲು ಸಮರ್ಪಕವಾಗಿ ಫಾರ್ಮಾಟ್ ಆಗಿಲ್ಲ.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ಅಮಾನ್ಯ ಬಳಕೆದಾರ ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 ಯೊಂದಿಗೆ ಖಾತೆಯನ್ನು ಸೃಜಿಸಲು ನಿರಾಕರಿಸುತ್ತಿದೆ.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' ಗಾಗಿ GID %jd ಯೊಂದಿಗೆ ಸಮೂಹವನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಅಪಾಯಕಾರಿ ನೆಲೆ ಕಡತಕೋಶ `%s' ಅನ್ನು %s ಗಾಗಿ ಬಳಸಲು " "ನಿರಾಕರಿಸಲಾಗುತ್ತಿದೆ\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s ಗಾಗಿ ನೆಲೆ ಕಡತಕೋಶವನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s ಗೆ ಆರಂಭಿಕ ಗುಪ್ತಪದವನ್ನು ಸಿದ್ಧಗೊಳಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s ಗಾಗಿ ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s ಗಾಗಿ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "ಹೊಸ ಗುಪ್ತಪದ" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "ಹೊಸ ಗುಪ್ತಪದ (ಖಚಿತಪಡಿಸಲಾದ)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "ಗುಪ್ತಪದಗಳು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ್ಲ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "ಗುಪ್ತಪದದ ಬದಲಾವಣೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "%d ಎಂಬ ಕಡತ ವಿವರಣೆಗಾರನಿಂದ ಓದುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s ಬಳಕೆದಾರನಿಗೆ ಗುಪ್ತಪದವನ್ನು ಸಿದ್ಧಗೊಳಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s ಸಮೂಹಕ್ಕೆ ಗುಪ್ತಪದವನ್ನು ಸಿದ್ಧಗೊಳಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "ಗುಪ್ತಪದ ಬದಲಾಯಿಸಲ್ಪಟ್ಟಿದೆ.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "ಸಮೂಹ %jd ವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "ಸಮೂಹ`%s' ವನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "ಖಾತೆಯನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ವಿಫಲತೆ ಉಂಟಾಗಿದೆ: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s ಅನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ವಿಫಲತೆ ಉಂಟಾಗಿದೆ: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "ಬಳಕೆದಾರ %s ನನ್ನು ಅಳಿಸಿಹಾಕಲಾಗಲಿಲ್ಲ: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ವು ಒಂದು gid ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿಲ್ಲ.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd ಹೊಂದಿರುವ ಒಂದು ಸಮೂಹ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ, ತೆಗೆಯಲಾಗುತ್ತಿಲ್ಲ.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd ಹೊಂದಿರುವ ಸಮೂಹಕ್ಕೆ ಒಂದು ಸಮೂಹದ ಹೆಸರನ್ನು ಹೊಂದಿಲ್ಲ.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "ಸಮೂಹ %s ಅನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ಬಳಕೆದಾರರಿಗಾಗಿ ನೆಲೆ ಕಡತಕೋಶವನ್ನು ತೆಗೆದು ಹಾಕುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "ಬಳಕೆದಾರ %s ನಿಗೆ ಗುಪ್ತಪದವನ್ನು ಸಿದ್ಧಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲತೆ: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "ಬಳಕೆದಾರ %s ನನ್ನು ಲಾಕ್ ಮಾಡಲಾಗಿಲ್ಲ: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "ಬಳಕೆದಾರ %s ನನ್ನು ಅನ್-ಲಾಕ್ ಮಾಡಲಾಗಿಲ್ಲ: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "ಎಚ್ಚರಿಕೆ: ID %jd ಯನ್ನು ಹೊಂದಿರುವ ಸಮೂಹವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "ಬಳಕೆದಾರ %s ನನ್ನು ಮಾರ್ಪಾಡು ಮಾಡಲಾಗಿಲ್ಲ: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "ಸಮೂಹ %s ವನ್ನು ಮಾರ್ಪಾಡು ಮಾಡಲಾಗಿಲ್ಲ: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s ಗೆ ಹಳೆಯ ನೆಲೆ ಕಡತಕೋಶವಿಲ್ಲ.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s ಗೆ ಹೊಸ ನೆಲೆ ಕಡತಕೋಶವಿಲ್ಲ.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s ಅನ್ನು %s ಗೆ ತೆಗೆಯುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "ಸಂರಚನಾ ಕಡತ `%s' ವನ್ನು ತೆಗೆಯುವಲ್ಲಿ ದೋಷ ಎದುರಾಗಿದೆ: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "ಸಂರಚನಾ ಕಡತ `%s' ವನ್ನು ಆರಂಭಿಸಲಾಗಿಲ್ಲ: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "ಸಂರಚನಾ ಕಡತ `%s' ವು ಬಹಳ ದೊಡ್ಡದಾಗಿದೆ" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "ಸಂರಚನಾ ಕಡತ `%s' ವನ್ನು ಓದಲಾಗಿಲ್ಲ: %s" #: lib/error.c:62 msgid "success" msgstr "ಯಶಸ್ವಿಯಾಗಿದೆ" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "ಸಂರಚನೆಯಿಂದ ಘಟಕವು ಅಶಕ್ತಗೊಂಡಿದೆ" #: lib/error.c:66 msgid "generic error" msgstr "ಸಾಮಾನ್ಯ ದೋಷ" #: lib/error.c:68 msgid "not enough privileges" msgstr "ಸಾಕಷ್ಟು ಸವಲತ್ತುಗಳಿಲ್ಲ" #: lib/error.c:70 msgid "access denied" msgstr "ನಿಲುಕಣೆಯನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ" #: lib/error.c:72 msgid "bad user/group name" msgstr "ಕೆಟ್ಟ ಬಳಕೆದಾರನ/ಸಮೂಹದ ಹೆಸರು" #: lib/error.c:74 msgid "bad user/group id" msgstr "ಕೆಟ್ಟ ಬಳಕೆದಾರನ/ಸಮೂಹದ id" #: lib/error.c:76 msgid "user/group name in use" msgstr "ಬಳಸಲಾಗುತ್ತಿರುವ ಬಳಕೆದಾರನ/ಸಮೂಹದ ಹೆಸರು" #: lib/error.c:78 msgid "user/group id in use" msgstr "ಬಳಸಲಾಗುತ್ತಿರುವ ಬಳಕೆದಾರನ/ಸಮೂಹದ id" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ಟರ್ಮಿನಲ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮ್ಯಾನಿಪುಲೇಟ್ ಮಾಡುವಲ್ಲಿ ದೋಷ" #: lib/error.c:82 msgid "error opening file" msgstr "ಕಡತವನ್ನು ತೆಗೆಯುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:84 msgid "error locking file" msgstr "ಕಡತವನ್ನು ಲಾಕ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:86 msgid "error statting file" msgstr "ಕಡತವನ್ನು statting ಮಾಡುವಲ್ಲಿ ದೋಷ" #: lib/error.c:88 msgid "error reading file" msgstr "ಕಡತವನ್ನು ಓದುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:90 msgid "error writing to file" msgstr "ಕಡತಕ್ಕೆ ಬರೆಯುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:92 msgid "data not found in file" msgstr "ಕಡತದಲ್ಲಿ ದತ್ತಾಂಶವು ಕಂಡುಬಂದಿಲ್ಲ" #: lib/error.c:94 msgid "internal initialization error" msgstr "ಆಂತರಿಕ ಆರಂಭಿಕ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:96 msgid "error loading module" msgstr "ಘಟಕವನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "ಘಟಕದಲ್ಲಿ ಸಂಕೇತವನ್ನು ಪರಿಹರಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "ಲೈಬ್ರರಿ/ಘಟಕದ ಆವೃತ್ತಿಯು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ಅನ್-ಲಾಕ್ ಮಾಡುವುದರಿಂದ ಗುಪ್ತಪದ ಜಾಗವು ಖಾಲಿ ಉಳಿಯುತ್ತದೆ" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ಅಮಾನ್ಯವಾದ ಗುಣವಿಶೇಷ ಮೌಲ್ಯ" #: lib/error.c:107 msgid "invalid module combination" msgstr "ಅಮಾನ್ಯವಾದ ಮಾಡ್ಯೂಲ್ ಸಂಯೋಜನೆ" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "ಅಜ್ಞಾತ ದೋಷ" #: lib/misc.c:240 msgid "invalid number" msgstr "ಅಮಾನ್ಯ ಸಂಖ್ಯೆ" #: lib/misc.c:254 msgid "invalid ID" msgstr "ಅಮಾನ್ಯ ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ಯಾವುದೆ ಆರಂಭಿಕ ಕ್ರಿಯೆ %s ಯು `%s' ನಲ್ಲಿಲ್ಲ" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' ನಲ್ಲಿ ಘಟಕ ಆವೃತ್ತಿಯು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' ಘಟಕವು %s' ಅನ್ನು ವಿವರಿಸುವುದಿಲ್ಲ" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ಟರ್ಮಿನಲ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಓದುವಾಗ ದೋಷ" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ಟರ್ಮಿನಲ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊಂದಿಸುವಾಗ ದೋಷ" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ಟರ್ಮಿನಲ್‍ನಿಂದ ಓದುವಲ್ಲಿ ದೋಷ" #: lib/user.c:218 msgid "name is not set" msgstr "ಯಾವುದೇ ಹೆಸರು ಹೊಂದಿಸಿಲ್ಲ" #: lib/user.c:223 msgid "name is too short" msgstr "ಹೆಸರು ಬಹಳ ಚಿಕ್ಕದಾಗಿದೆ" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "ಹೆಸರು ಬಹಳ ಉದ್ದವಾಗಿದೆ (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "ಹೆಸರು ASCII-ಅಲ್ಲದ ಅಕ್ಷರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ" #: lib/user.c:242 msgid "name contains control characters" msgstr "ಹೆಸರು ನಿಯಂತ್ರಣ ಅಕ್ಷರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ಹೆಸರು ಖಾಲಿ ಜಾಗಗಳನ್ನು ಒಳಗೊಂಡಿದೆ" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "ಹೆಸರು ಅಡ್ಡಗೆರೆಯಿಂದ ಆರಂಭಗೊಳ್ಳುತ್ತದೆ" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "ಹೆಸರಿನಲ್ಲಿ ಅಮಾನ್ಯ ಅಕ್ಷರವಾದ`%c' ಇದೆ" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "ಬಳಕೆದಾರ %s ವು UID ಅನ್ನು ಹೊಂದಿಲ್ಲ" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "ಸಮೂಹ %s ವು GID ಯನ್ನು ಹೊಂದಿಲ್ಲ" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "ಬಳಕೆದಾರ %jd ನು ಹೆಸರನ್ನು ಹೊಂದಿಲ್ಲ" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "ಸಮೂಹ %jd ವು ಹೆಸರನ್ನು ಹೊಂದಿಲ್ಲ" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ಬಳಕೆದಾರ ಒಂದು ಹೆಸರು ಅಥವ ಒಂದು UID ಅನ್ನು ಹೊಂದಿಲ್ಲ" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "ಸಮೂಹವು ಒಂದು ಹೆಸರು ಅಥವ ಒಂದು GID ಅನ್ನು ಹೊಂದಿಲ್ಲ" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಅಪಾಯಕಾರಿ ನೆಲೆ ಕಡತಕೋಶ `%s' ಅನ್ನು ಬಳಸಲು ನಿರಾಕರಿಸಲಾಗುತ್ತಿದೆ" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ಕ್ಷೇತ್ರದ ಡೀಫಾಲ್ಟ್‍ ಮೌಲ್ಯವು ಅಮಾನ್ಯವಾಗಿದೆ: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ಕಡತವನ್ನು ಲಾಕ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ಡೀಫಾಲ್ಟ್‍ ಸುರಕ್ಷತಾ ಸನ್ನಿವೇಶವನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' ನ ಡೀಫಾಲ್ಟ್‍ ಸುರಕ್ಷತಾ ಸನ್ನಿವೇಶವನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ:: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ಡೀಫಾಲ್ಟ್‍ ಸುರಕ್ಷತಾ ಸನ್ನಿವೇಶವನ್ನು `%s' ಕ್ಕೆ ಹೊಂದಿಸಲಾಗಲಿಲ್ಲ: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ಡೀಫಾಲ್ಟ್‍ ಸುರಕ್ಷತಾ ಸನ್ನಿವೇಶವನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' ಕ್ಕೆ ಸುರಕ್ಷತಾ ಸನ್ನಿವೇಶವನ್ನು ನಿರ್ಧರಿಸಲಾಗಲಿಲ್ಲ: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' ಅನ್ನು ತೆರೆಯಲಾಗಿಲ್ಲ: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' ಅನ್ನು stat ಮಾಡಲಾಗಲಿಲ್ಲ: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' ಅನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' ನ ಮಾಲಿಕನನ್ನು ಬದಲಾಯಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' ನ ಕ್ರಮವನ್ನು ಬದಲಾಯಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' ಅನ್ನು ಓದುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' ಗೆ ಬರೆಯುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' ನಿಂದ ಓದಲಾಗಿಲ್ಲ: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s ಅನ್ನು %s ಗೆ ತೆಗೆಯುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' ನ ಕ್ರಮವನ್ನು ಬದಲಾಯಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' ಅನ್ನು ಓದುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' ಅನ್ನು ಓದುವಲ್ಲಿ ದೋಷ: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "ನಮೂದು ಆಬ್ಜೆಕ್ಟ್‍ %s ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿಲ್ಲ" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ಆಬ್ಜೆಕ್ಟ್‍ %s ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿಲ್ಲ" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s ಮೌಲ್ಯ `%s': `:' ಕ್ಕೆ ಅನುಮತಿ ಇಲ್ಲ" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s ಮೌಲ್ಯ `%s': `:' ಕ್ಕೆ ಅನುಮತಿ ಇಲ್ಲ" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ನಮೂದು ಈಗಾಗಲೆ ಕಡತದಲ್ಲಿದೆ" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' ಗೆ ಬರೆಯಲಾಗಿಲ್ಲ: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "ನಮೂದು ಆಬ್ಜೆಕ್ಟ್‍ %s ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿಲ್ಲ" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ಇದರೊಂದಿಗೆ ಘರ್ಷಣೆಗೆ ಕಾರಣವಾಗುವ ಹೆಸರಿನ ಒಂದು ನಮೂದು ಈಗಾಗಲೆ ಕಡತದಲ್ಲಿದೆ" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' ಗುಪ್ತಪದವನ್ನು ಗೂಢಲಿಪೀಕರಿಸುವುದಕ್ಕೆ ಬೆಂಬಲವಿಲ್ಲ" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "ಗುಪ್ತಪದವನ್ನು ಗೂಢಲಿಪೀಕರಿಸುವಲ್ಲಿ ದೋಷ" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' ಹಾಗು `%s' ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಸಂಯೋಜಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ಮೂಲಬಳಕೆದಾರನ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತಿಲ್ಲ" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "ಛಾಯಾ ಕಡತವು ಇಲ್ಲ --ಅಶಕ್ತಗೊಳಿಸಲಾಗುತ್ತಿದೆ" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap ಲೈಬ್ರರಿಯನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ದೋಷ" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಆವೃತ್ತಿ %d ಗೆ ಹೊಂದಿಸಲಾಗಿಲ್ಲ" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS ಅನ್ನು LDAP ಪರಿಚಾರಕದೊಂದಿಗೆ ವ್ಯವಹರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP ಪರಿಚಾರಕಕ್ಕೆ ಬೈಂಡ್ ಮಾಡಲಾಗಿಲ್ಲ" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP ಪರಿಚಾರಕಕ್ಕೆ ಬೈಂಡ್ ಮಾಡಲಾಗಿಲ್ಲ, ಪ್ರಥಮ ಪ್ರಯತ್ನ `%s' ಆಗಿತ್ತು: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್‍ %s ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿಲ್ಲ" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ಯಾವುದೆ `%s' ಇಲ್ಲದೆ ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್‍ ರಚಿಸಲ್ಪಟ್ಟಿದೆ" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "ಒಂದು LDAP ಕಡತಕೋಶ ನಮೂದನ್ನು ನಿರ್ಮಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "ಒಂದು LDAP ಕಡತಕೋಶ ನಮೂದನ್ನು ಮಾರ್ಪಡಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "ಒಂದು LDAP ಕಡತಕೋಶ ನಮೂದಿನ ಹೆಸರನ್ನು ಬದಲಾಯಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ಆಬ್ಜೆಕ್ಟ್‍ %s ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿರಲಿಲ್ಲ" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "ಒಂದು LDAP ಕಡತಕೋಶ ನಮೂದನ್ನು ತೆಗೆದು ಹಾಕುವಲ್ಲಿ ದೋಷ: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ಆಬ್ಜೆಕ್ಟ್‍ %s ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿಲ್ಲ" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "ಬೆಂಬಲವಿರದ ಗುಪ್ತಪದ ಗೂಢಲಿಪೀಕರಣ ಸ್ಕೀಮ್" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ಕಡತಕೋಶದಲ್ಲಿ ಯಾವುದೆ ಆಬ್ಜೆಕ್ಟ್‍ ಇಲ್ಲ" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ಯಾವುದೆ `%s' ವೈಶಿಷ್ಟ್ಯವು ಕಂಡು ಬಂದಿಲ್ಲ" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s ಕ್ಕಾಗಿ LDAP ಕಡತಕೋಶದಲ್ಲಿ ಗುಪ್ತಪದವನ್ನು ಹೊಂದಿಸುವಲ್ಲಿ ದೋಷ: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP ಪರಿಚಾರಕದ ಹೆಸರು" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP ಶೋಧನಾ ಮೂಲ DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP ಬೈಂಡ್ DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP ಬೈಂಡ್ ಗುಪ್ತಪದ" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ಬಳಕೆದಾರ" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL ದೃಢೀಕರಣ ಬಳಕೆದಾರ" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ಬಳಕೆದಾರನನ್ನು ಸೃಜಿಸುವಲ್ಲಿ Cyrus SASL ದೋಷ: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ಬಳಕೆದಾರನನ್ನು ತೆಗೆದು ಹಾಕುವಲ್ಲಿ Cyrus SASL ದೋಷ: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ದೋಷ: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ಬಳಕೆದಾರರಿಗಾಗಿ ನೆಲೆ ಕಡತಕೋಶವನ್ನು ಸೃಜಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ಬಳಕೆದಾರರಿಗಾಗಿ ನೆಲೆ ಕಡತಕೋಶವನ್ನು ತೆಗೆದು ಹಾಕುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ಬಳಕೆದಾರರಿಗಾಗಿ ನೆಲೆ ಕಡತಕೋಶವನ್ನು ಸ್ಥಳಾಂತರಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ಅಮಾನ್ಯ ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd ಯನ್ನು ಹೊಂದಿದ ಸಮೂಹಕ್ಕಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s ಹೆಸರಿನ ಸಮೂಹಕ್ಕಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd ಯನ್ನು ಹೊಂದಿದ ಬಳಕೆದಾರನಿಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s ಹೆಸರಿನ ಬಳಕೆದಾರನಿಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "ನಮೂದು ಕಂಡು ಬಂದಿಲ್ಲ.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "ಪ್ರಾಂಪ್ಟ್‍ಗಳು ಯಶಸ್ವಿಯಾಗಿವೆ.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "ಪ್ರಾಂಪ್ಟ್‍ಗಳು ವಿಫಲಗೊಂಡಿವೆ.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ಡೀಫಾಲ್ಟ್‍ ಆಬ್ಜೆಕ್ಟ್‍ ವರ್ಗಗಳು:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ಡೀಫಾಲ್ಟ್‍ ಬಳಕೆದಾರ ವೈಶಿಷ್ಟ್ಯದ ಹೆಸರುಗಳು:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ಡೀಫಾಲ್ಟ್‍ ಬಳಕೆದಾರ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ಬಳಕೆದಾರ ರಚನೆಯನ್ನ್ನು ನಕಲಿಸಲಾಗುತ್ತಿದೆ:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "ಬ್ಯಾಕ್ಅಪ್ ಕಡತ `%s' ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಹಾಗು ಅದು ಸಾಮಾನ್ಯ ಕಡತವಾಗಿಲ್ಲ" #~ msgid "backup file size mismatch" #~ msgstr "ಬ್ಯಾಕ್ಅಪ್ ಕಡತದ ಗಾತ್ರವು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" po/ko.po000066400000000000000000001202631471266067600124700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # bardisch , 2011 # trans22 , 2013 # eukim , 2006, 2007, 2008, 2009 # eukim , 2012 # Michelle Ji Yeen Kim , 2005, 2006 # Michelle J Kim , 2004 # Michelle Kim , 2001, 2002 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2024-02-13 09:36+0000\n" "Last-Translator: 김인수 \n" "Language-Team: Korean \n" "Language: ko\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: Weblate 5.3.1\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "슈퍼유저 권한을 없애는데 실패했습니다.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "내부 오류가 발생했습니다.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s는 %s의 finger 정보를 변경할 권한이 없습니다\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "알 수 없는 사용자 문맥" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd의 기본 문맥을 설정 할 수 없습니다\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM을 초기화 하는 도중 오류가 발생했습니다.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s의 인증에 실패했습니다.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "내부 PAM 오류 `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "알 수 없는 사용자 인증함.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "사용자가 일치하지 않습니다.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "모든 정보를 요청하다" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "사용자를 위한 시간경과 매개변수 나열" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "최소한의 비밀번호 유지기간" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "일" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "비밀번호 최대 유지기간" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "일단위로 표시한 1970년 1월 1일 이후 마지막으로 비밀번호가 변경될 날짜" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "계정이 비활성화 된 걸로 간주 할 때에 비밀번호 만료 날짜 이후의 일수" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "일단위 1/1/70 이후 비밀번호 만료 날짜" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "사용자에게 경고를 시작하는 만료 전 날짜" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[옵션...] 사용자" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "인수를 처리(parsing)하는 도중 오류 발생: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "사용자 이름이 지정되지 않았습니다.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s를 초기화하는 중 오류: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s 사용자가 존재하지 않습니다.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "계정이 정지되었습니다.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "계정이 정지되지 않았습니다.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "최소값:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "최대값:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "최대:\t없음\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "경고:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "비활성:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "비활성: \t사용하지 않음\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "다음 로그인에서 비밀번호를 변경해야 합니다" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "없음" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "최종 변경:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "암호 만기일:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "암호 비활성:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "계정 만기일:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s의 사용 기한(aging) 정보를 수정하는데 실패했습니다: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [사용자]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "사용자 이름과 uid %d에 대한 이름이 지정되지 않았습니다.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s를 위한 finger 정보를 변경하기\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "성명" #: apps/lchfn.c:151 msgid "Surname" msgstr "성" #: apps/lchfn.c:162 msgid "Given Name" msgstr "이름" #: apps/lchfn.c:172 msgid "Office" msgstr "직장" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "직장 전화 번호" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "집 전화 번호" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "이메일 주소" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "finger 정보가 변경되지 않았습니다: 입력 오류.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "finger 정보가 변경되었습니다.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "finger 정보가 변경되지 않았습니다: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s 용 쉘을 변경합니다.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "새로운 쉘" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "쉘이 변경되지 않았습니다: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "쉘이 변경되었습니다.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "신규 그룹을 위한 gid" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "시스템 그룹을 생성합니다" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[옵션...] 그룹" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "그룹 이름이 지정되지 않았습니다.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "잘못된 그룹 ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "그룹 생성에 실패했습니다: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s 그룹이 존재하지 않습니다.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s 그룹을 삭제할 수 없습니다: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "그룹을 위한 GID 설정" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "그룹 이름을 지정하도록 변경합니다" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "이름" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "그룹과 함께 사용하기 위한 일반텍스트 비밀번호" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "문자열" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "그룹과 함께 사용하기 위한 사전-해쉬된 비밀번호" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "추가하려는 관리자의 목록" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "제거하려는 관리자의 목록" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "추가하려는 그룹 구성원의 목록" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "제거하려는 그룹 구성원의 목록" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "잠금 그룹" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "해제 그룹" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L 와 -U 이 함께 지정되었습니다.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "그룹의 비밀번호 설정하는 데 실패함 %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s 그룹을 잠글 수 없습니다: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s 그룹 잠금을 해제할 수 없습니다: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s 그룹을 편집할 수 없습니다: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s(을)를 조회하는 도중 오류 발생: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "명명된 사용자의 그룹 구성원 대신에 명명된 그룹의 구성원 목록" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "이름 (UID/GID가 아닌)으로 회원 정보만 나열합니다" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "%s를 사용하여 그룹 이름이 지정되지 않았습니다.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "그룹 이름과 gid %d에 대한 이름이 지정되지 않았습니다.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "%s를 사용하여 사용자 이름이 지정되지 않았습니다.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s이(가) 존재하지 않습니다\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "사용자 정보 기록을 갖는 파일" #: apps/lnewusers.c:49 msgid "PATH" msgstr "경로" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "홈 디렉토리를 생성하지 않습니다" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "메일 스풀을 생성하지 않습니다" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s'(을)를 여는 도중 오류 발생: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "`%s'의 계정을 생성하는데 오류가 발생했습니다: 라인이 부적절하게 포맷되었습니" "다.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "잘못된 사용자 ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0를 가진 계정을 생성하기를 거부합니다.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s'에 GID %jd를 사용하여 그룹을 생성하는데 오류 발생: : %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "%s에 대해 기본값으로 안전하지 않은 `%s' 홈 디렉토리 사용을 거부합니다\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s의 홈 디렉토리를 생성하는 도중 오류가 발생했습니다: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "%s를 위한 전자우편 스풀 생성 중 오류 : %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "초기 비밀번호를 설정 오류 %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s의 사용자 계정을 생성하는 도중 오류 발생: %s.\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "사용자 비밀번호 대신에 그룹 비밀번호를 설정" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "신규 일반 비밀번호" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "신규 암호화된 비밀번호" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "제공된 설명자에서 신규 일반 비밀번호를 읽습니다" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "제공된 설명자에서 신규 암호화된 비밀번호를 읽습니다" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "`%s' 비밀번호를 변경하기.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "신규 비밀번호" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "신규 비밀번호 (확인)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "비밀번호가 일치하지 않습니다, 다시 입력해 주세요.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "비밀번호 변경이 취소되었습니다.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "파일 기술어 %d를 읽지 못했습니다.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "사용자 비밀번호 설정 오류 %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "그룹 비밀번호 설정 오류 %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "비밀번호가 변경되었습니다.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "시스템 사용자를 생성합니다" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "신규 사용자를 위한 GECOS 정보" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "신규 사용자를 위한 홈 디렉토리" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "신규 사용자를 위한 파일이 있는 디렉토리" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "신규 사용자를 위한 쉘" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "신규 사용자를 위한 uid" #: apps/luseradd.c:71 msgid "group for new user" msgstr "신규 사용자를 위한 그룹" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "사용자를 위한 홈 디렉토리를 생성하지 않습니다" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "사용자와 같은 동일 이름을 갖는 그룹을 생성하지 않습니다" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "신규 사용자를 위한 일반 이름" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "신규 사용자를 위해 제공된 이름" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "신규 사용자를 위한 성" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "신규 사용자를 위한 방 번호" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "신규 사용자를 위한 전화 번호" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "신규 사용자를 위한 집 전화 번호" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd 그룹이 존재하지 않습니다\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' 그룹을 생성하는 도중 오류 발생: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "계정 생성에 실패함: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s(을)를 생성하는 도중 오류 발생: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "전자우편 스풀 생성 중 오류: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "만약 사용자가 개인 그룹을 가지고 있으면, 사용자의 개인 그룹을 제거하지 마세요" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "사용자의 홈 디렉토리를 제거합니다" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "%s 사용자를 삭제할 수 없습니다: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s(은)는 gid number를 갖고 있지 않습니다.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd라는 그룹이 존재하지 않으므로, 삭제할 수 없습니다.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd 라는 그룹에는 이름이 지정되어 있지 않습니다.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s 그룹은 삭제할 수 없습니다: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "홈 디렉토리 제거 중 오류 발생: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "전자우편 스풀 제거 중 오류: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS 정보" #: apps/lusermod.c:61 msgid "home directory" msgstr "홈 디렉토리" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "홈 디렉토리 내용을 이동" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "사용자를 위한 쉘 설정" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "사용자를 위한 UID 설정" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "사용자를 위한 기본 GID 설정" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "사용자를 위한 로그인 이름 변경" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "사용자를 위한 일반 텍스트 비밀번호" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "사용자를 위한 사전-해쉬된 비밀번호" #: apps/lusermod.c:76 msgid "lock account" msgstr "계정 잠김" #: apps/lusermod.c:79 msgid "unlock account" msgstr "계정 잠김 해제" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "사용자를 위한 일반 이름 설정" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "사용자를 위해 제공된 이름 설정" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "사용자를 위한 성 설정" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "사용자를 위한 방 번호 설정" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "사용자를 위한 전화 번호 설정" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "사용자를 위한 집 전화 번호 설정" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "사용자 비밀번호를 설정하는데 실패함 %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s 사용자를 정지시킬 수 없습니다: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s 사용자의 정지를 해제할 수 없습니다: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "경고: ID %jd로된 그룹이 존재하지 않습니다.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s 사용자를 편집할 수 없습니다: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s 그룹을 편집할 수 없습니다: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s의 이전 홈 디렉토리가 없습니다.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s의 새로운 홈 디렉토리가 없습니다.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s에서 %s(으)로 이동하는 도중 오류 발생: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "설정 파일 `%s'(을)를 열 수 없습니다: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "설정 파일 `%s'에 stat 명령 실행하는데 실패했습니다: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "설정 파일 `%s' 용량이 너무 큽니다" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "설정 파일 `%s'(을)를 읽을 수 없습니다: %s" #: lib/error.c:62 msgid "success" msgstr "성공" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "설정에 의해 모듈을 사용할 수 없음" #: lib/error.c:66 msgid "generic error" msgstr "일반적인 오류" #: lib/error.c:68 msgid "not enough privileges" msgstr "수퍼유저 권한이 충분치 않음" #: lib/error.c:70 msgid "access denied" msgstr "접근이 거부됨" #: lib/error.c:72 msgid "bad user/group name" msgstr "사용자/그룹의 이름이 잘못됨" #: lib/error.c:74 msgid "bad user/group id" msgstr "사용자/그룹의 id가 잘못됨" #: lib/error.c:76 msgid "user/group name in use" msgstr "사용자/그룹의 이름이 이미 사용되고 있음" #: lib/error.c:78 msgid "user/group id in use" msgstr "사용자/그룹의 id가 이미 사용되고 있음" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "터미널 속성을 설정하는 도중 오류 발생" #: lib/error.c:82 msgid "error opening file" msgstr "파일을 여는 도중 오류 발생" #: lib/error.c:84 msgid "error locking file" msgstr "파일을 잠그는 도중 오류 발생" #: lib/error.c:86 msgid "error statting file" msgstr "파일의 상태를 확인하는 도중 오류 발생" #: lib/error.c:88 msgid "error reading file" msgstr "파일을 읽는 도중 오류 발생" #: lib/error.c:90 msgid "error writing to file" msgstr "파일에 기록하는 도중 오류 발생" #: lib/error.c:92 msgid "data not found in file" msgstr "파일에서 자료(data)를 찾을 수 없음" #: lib/error.c:94 msgid "internal initialization error" msgstr "내부 초기화 오류" #: lib/error.c:96 msgid "error loading module" msgstr "모듈을 적재하는 도중 오류 발생" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "모듈에서 심볼을 처리하는 도중 오류 발생" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "라이브러리/모듈 버젼이 일치하지 않음" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "잠금 해제는 비밀번호 입력란이 비워집니다" #: lib/error.c:105 msgid "invalid attribute value" msgstr "올바르지 않은 속성 값" #: lib/error.c:107 msgid "invalid module combination" msgstr "올바르지 않은 모듈 결합" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "소유하지 않은 사용자의 홈 디렉토리" #: lib/error.c:115 msgid "unknown error" msgstr "알 수 없는 오류" #: lib/misc.c:240 msgid "invalid number" msgstr "잘못된 번호" #: lib/misc.c:254 msgid "invalid ID" msgstr "잘못된 ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "`%s'에 초기화 기능 %s(이)가 없습니다" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s'의 모듈 버젼이 일치하지 않습니다" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "모듈`%s'는 `%s'를 정의하지 않습니다" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "터미널 속성을 읽는 도중 오류 발생" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "터미널 속성을 설정하는 도중 오류 발생" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "터미널로 부터 읽는 도중 오류 발생" #: lib/user.c:218 msgid "name is not set" msgstr "이름이 설정되지 않았습니다" #: lib/user.c:223 msgid "name is too short" msgstr "이름이 너무 짧습니다" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "이름이 너무 깁니다 (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "이름은 비-아스키 (ASCII) 문자를 포함합니다" #: lib/user.c:242 msgid "name contains control characters" msgstr "이름은 제어 문자를 포함합니다" #: lib/user.c:249 msgid "name contains whitespace" msgstr "이름은 공백을 포함합니다" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "이름이 하이픈(연결 부호)로 시작합니다" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "이름은 유효하지 않은 문자 `%c'를 포함합니다" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "사용자 %s는 UID가 없습니다" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "사용자 %s를 찾을 수 없음" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "그룹 %s는 GID가 없습니다" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "그룹 %s를 찾을 수 없음" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "사용자 %jd는 이름이 없습니다" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "그룹 %jd는 이름이 없습니다" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "사용자는 이름과 UID가 없습니다" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "그룹은 이름과 GID가 없습니다" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "기본값으로 안전하지 않은 `%s' 홈 디렉토리 사용을 거부합니다" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s 란의 기본값이 잘못됨: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "파일을 잠그는 도중 오류 발생: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "기본 보안 문맥을 가져 올 수 없습니다: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s'의 보안 문맥을 가져 올 수 없습니다: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "기본 보안 문맥을 `%s'으로 설정할 수 없습니다: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "셀라벨 파일 문맥 처리를 가져 올 수 없습니다: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s'의 보안 문맥을 결정 할 수 없습니다: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s'(을)를 열 수 없음: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s'(을)를 표시(stat)할 수 없음: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s'(을)를 생성하는 도중 오류 발생: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' 소유자를 변경하는 도중 오류 발생: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' 모드 변경 도중 오류 발생: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s'(을)를 읽는 도중 오류 발생: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s'(을)를 기록하는 도중 오류 발생: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s'(을)를 읽을 수 없음: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "잠김 `%s'의 잘못된 내용" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "잠김 %s는 프로세서 %ju에 의해 유지됩니다" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "오래된 잠금 `%s' 제거 중 오류 발생: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s'를 위한 임시 파일 열기 중 오류: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "잠김 `%s'를 가져 올 수 없습니다: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "`%s'를 해결 중 오류: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "`%s'를 대체 중 오류: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "중복 대상은 %s 속성이 없습니다" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "기본 객체에 %s 속성이 없습니다" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "ID %lu는 이미 %s에 의해 사용 중입니다" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s 값 `%s': `\\n" "'은 허용되지 않음" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s 값 `%s': `:'은 허용되지 않음" #: modules/files.c:1136 msgid "entry already present in file" msgstr "파일 안에 목록(entry)이 이미 존재합니다" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'에 작성할 수 없음: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entity 개체에 %s 속성이 없습니다" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "이름이 충돌하는 항목이 이미 파일에 있습니다" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "`:'과 `\\n" "'은 암호화된 비밀번호에서 허용되지 않습니다" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "비밀번호 암호화 중 오류" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' 및 '%s' 모듈은 조합 할 수 없습니다" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "수퍼유저 권한으로 실행할 수 없습니다" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "현재 섀도우 파일이 없음 -- 불가능" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap 라이브러리를 초기화하는 도중 오류가 발생했습니다" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "%d 버전에 LDAP 프로토콜을 설정할 수 없습니다" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP 서버와 TLS 연결할 수 없습니다" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP 서버와 연결할 수 없습니다" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP 서버와 연결할 수 없습니다, `%s'로 첫번째 시도: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "사용자 개체에 %s 속성이 없습니다" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "`%s'(이)가 없는 사용자 개체가 생성되었습니다" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP 디렉토리 항목을 생성하는 도중 오류 발생: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP 디렉토리 목록(entry)을 편집하는 도중 오류 발생: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP 디렉토리 항목의 이름을 변경하는 도중 오류 발생: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "개체에 %s 속성이 없습니다" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP 디렉토리 항목을 삭제하는 도중 오류 발생: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "개체에 %s 속성이 없습니다" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "미지원 비밀번호 암호화 체계" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP 디렉토리 안에 그러한 개체가 없습니다" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s' 속성을 찾을 수 없습니다" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "LDAP 디렉토리의 비밀번호 설정 중 오류 %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP 서버 이름" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP 검색 기반 DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP 바인드 DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind 비밀번호" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL 사용자" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL 권한부여 사용자" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "사용자를 생성하는 중 Cyrus SASL 오류 발생: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "사용자를 삭제하는 중 Cyrus SASL 오류 발생: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL를 초기화하는 중 오류 발생: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "사용자의 홈 디렉토리를 생성하는 중 오류 발생" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "사용자의 홈 디렉토리를 삭제하는 중 오류 발생" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "사용자의 홈 디렉토리를 이동하는 중 오류 발생" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s(을)를 초기화하는 도중 오류 발생: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "잘못된 ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd라는 ID를 가진 그룹을 검색하고 있습니다.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s 그룹을 검색하고 있습니다.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID가 %jd인 사용자를 검색하고 있습니다.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s 사용자를 검색하고 있습니다.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "목록(Entry)을 찾을 수 없습니다.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "프롬프트 성공.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "프롬프트 실패.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "기본 사용자 객체 클래스:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "기본 사용자 속성 이름들:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "기본 사용자 속성을 읽음:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "사용자 구조를 복사함:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "백업 파일 `%s' 존재하지만 정규 파일이 아닙니다" #~ msgid "backup file size mismatch" #~ msgstr "백업 파일 용량이 일치하지 않음" po/ku.po000066400000000000000000000652221471266067600125010ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2011-10-04 10:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: ku\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/libuser.pot000066400000000000000000000652111471266067600137110ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the libuser package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: libuser 0.62\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/lo.po000066400000000000000000000652131471266067600124740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2011-10-04 10:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: lo\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/lv.po000066400000000000000000000713151471266067600125030ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Janis Ozolins , 2008 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/fedora/language/" "lv/)\n" "Language: lv\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 != 0 ? 1 : " "2);\n" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Iekšējā kļūda.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Iekšējā PAM kļūda `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nav lietotāja vārds norādīts.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Lietotājs %s neeksistē.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Konts ir bloķēts.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Konts nav bloķēts.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Bŗidinājums:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Paroles derīguma termiņš beigsies:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "Uzvārds" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Vārds" #: apps/lchfn.c:172 msgid "Office" msgstr "Birojs" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Biroja telefons" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Mājas telefons" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-pasta adrese" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nav grupas nosaukums norādīts.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Nederīgs grupas ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Grupas izveidošana neizdevās: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupa %s neeksistē.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupa %s nevar tik dzēsta: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nav grupas nosaukums norādīts, izmanto %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nav lietotāja vārds norādīts, izmanto %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Kļūda atverot `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Kļūda izveidojot mājas mapi priekš %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Kļūda izveidojot lietotāja kontu priekš %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "Jaunā parole" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Jaunā parole (apstiprināt)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Paroles nesakrīt, mēģiniet vēlreiz.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Paroles mainīšana atcelta.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Parole nomainīta.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupa %jd neeksistē\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Kļūda izveidojot grupu `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Neizdevās konta izveidošana: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Kļūda izveidojot %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "Kļūda izveidojot mājas mapi priekš %s: %s\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Brīdinājums: Grupa ar ID %jd neeksistē.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "Nevar atvērt konfigurācijas failu `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Konfigurācijas fails `%s' ir pārāk liels" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "Nevar nolasīt konfigurācijas failu `%s': %s" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "Piekļūšana aizliegta" #: lib/error.c:72 msgid "bad user/group name" msgstr "Slikts lietotāja/grupas nosaukums" #: lib/error.c:74 msgid "bad user/group id" msgstr "Slikts lietotāja/grupas ID" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "Kļūda atverot failu" #: lib/error.c:84 msgid "error locking file" msgstr "Kļūda bloķējot failu" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "Kļūda nolasot failu" #: lib/error.c:90 msgid "error writing to file" msgstr "Kļūda rakstot failā" #: lib/error.c:92 msgid "data not found in file" msgstr "Dati nav atrasti failā" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "klūda ielādējot moduli" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "nezināma kļūda" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modulis `%s' nenosaka `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "Lietotājam %s nav UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "Grupai %s nav GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "Kļūda bloķējot failu: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "kļūda izveidojot `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Kļūda mainot īpašnieku `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Kļūda nolasot `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Kļūda nolasot `%s': %s" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Kļūda atverot `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Kļūda nolasot `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Kļūda nolasot `%s': %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDPA servera nosaukums" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL Lietotājs" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "kļūda izveidojot mājas mapi lietotājam" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Nederīgs ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Meklē grupu ar ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Meklē grupu vārdā %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Meklē lietotāju ar ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Meklē lietotāju vārdā %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/mai.po000066400000000000000000001261641471266067600126330ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Sangeeta Kumari , 2009 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Maithili (http://www.transifex.com/projects/p/fedora/language/" "mai/)\n" "Language: mai\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "विशेषाधिकार हटाबै मे असफल.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "आंतरिक त्रुटि.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s क' पहचान केँ बदलब क' लेल %s प्राधिकृत नहि अछि\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "अज्ञात प्रयोक्ता संदर्भ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd क' लेल पूर्वनिर्धारित संदर्भ व्यवस्थित नहि कए सकैत\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM प्रारंभिकीकरण त्रुटि.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s क' लेल सत्यापन असफल.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "आंतरिक PAM त्रुटि`%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "अज्ञात प्रयोक्ता सत्यापित.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "प्रयोक्ता बेमेल.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[विकल्प...] प्रयोक्ता" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "तर्ककेँ विश्लेषण करब मे त्रुटि: %s।\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "कोनो प्रयोक्ता नाम निर्दिष्ट नहि कएल गेल.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr " %s क' प्रारंभिकीकरण मे त्रुटि: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s प्रयोक्ता जीवंत नहि अछि.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "लेखा तालकित अछि.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "लेखा तालकित नहि अछि.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "न्यूनतम:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr " अधिकतम:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "चेतावनी:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "निष्क्रिय:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "कहियो नहि" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "अंतिम बदलाव:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "गुड़किल्ली अंत:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "गुड़किल्ली निष्क्रिय:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "लेखा अंत:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s क' लेल पुरान जानकारी रूपांतरित करब मे असफल: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[विकल्प...] [प्रयोक्ता]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "कोनो प्रयोक्ता नाम निर्दिष्ट नहि कएल गेल,uid %d क' लेल नाम नहि अछि.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s क' लेल फिंगर जानकारी बदलल जाए रहल अछि.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "पूरा नाम" #: apps/lchfn.c:151 msgid "Surname" msgstr "उपनाम" #: apps/lchfn.c:162 msgid "Given Name" msgstr "देल नाम" #: apps/lchfn.c:172 msgid "Office" msgstr "कार्यालय" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "कार्यालय दूरभाष" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "घर दूरभाष" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ई-डाक पता" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "फिंगर जानकारी नहि बदलि गेल: निवेश त्रुटि.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "फिंगर जानकारी बदलि गेल.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "फिंगर जानकारी नहि बदलि गेल: %s।\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s क' लेल शैल बदलि जाए रहल अछि.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "नव शैल" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "शैल नहि बदलि गेल:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "शैल बदलि गेल.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[विकल्प...] समूह" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "कोनो समूह नाम निर्दिष्ट नहि कएल गेल.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "अमान्य समूह ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "समूह निर्माण असफल: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s समूह उपस्थित नहि अछि.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "समूह %s केँ विलोपित नहि कए सकल: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L आओर -U दुनू निर्दिष्ट अछि. \n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s समूह क' लेल गुड़किल्ली जमावट असफल: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s समूह केँ तालकित नहि कएल जाए सकैत: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s समूह केँ अतालकित नहि कएल जाए सकैत: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s समूह केँ परिवर्तित नहि कएल जाए सकल: %ss\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s देखब मे त्रुटि: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "%s क' प्रयोग सँ कोनो समूह नाम निर्दिष्ट नहि कएल गेल.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "कोनो समूह नाम निर्दिष्ट नहि कएल गेल, gid %d क' लेल कोनो नाम नहि अछि.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "%s क' प्रयोग सँ कोनो प्रयोक्ता नाम निर्दिष्ट नहि कएल गेल.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[विकल्प...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' खोलब मे त्रुटि: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' क' लेल लेखा बनाबै मे त्रुटि: लाइन सही तरीका सँ संरूपित नहि कएल गेल.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "अमान्य प्रयोक्ता ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 सँ लेखा बनाबै क' लेल इंकार कए रहल अछि\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' क' लेल GID %jd सँ समूह बनाबै मे त्रुटि: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s क' लेल घर निर्देशिका बनाबै मे त्रुटि: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s क' लेल प्रारंभिक गुड़किल्ली जमा करब मे त्रुटि: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s क' लेल प्रयोक्ता लेखा बनाबै मे त्रुटि: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s क' लेल गुड़किल्ली बदलि जाए रहल अछि.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "नव गुड़किल्ली" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "नव गुड़किल्ली (निश्चित करू )" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "गुड़किल्ली भेट नहि रहल,पुन:प्रयास करू .\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "गुड़किल्ली बदलाव रद कएल गेल.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s प्रयोक्ता क' लेल गुड़किल्ली जमावट त्रुटि: %s।\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s समूह क' लेल गुड़किल्ली जमावट त्रुटि: %s।\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "गुड़किल्ली बदलि गेल.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd समूह उपस्थित नहि अछि.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' समूह बनाबै मे त्रुटि: %s.\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "लेखा बनावट असफल: %s।\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s बनाबै मे त्रुटि: %s।\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "प्रयोक्ता %s केँ विलोपित नहि कए सकल: %s।\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s क' gid अंक नहि अछि.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd क' सँग कोनो जीवंत समूह मोजुद अछि. नहि हटाए रहल अछि.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd समूह क' कोनो समूह नाम नहि अछि.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "समूह %s केँ विलोपित नहि कए सकल: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "प्रयोक्ता क' लेल घर निर्देशिका हटाबै मे त्रुटि" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s प्रयोक्ता क' लेल गुड़किल्ली जमावट असफल: %s।\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s प्रयोक्ता केँ तालकित नहि कए सकल: %s।\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s प्रयोक्ता केँ अतालकित नहि कए सकल: %s।\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "चेतावनी: ID %jd क' सँग समूह मोजुद नहि अछि.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s प्रयोक्ता केँ परिवर्तित नहि कए सकल: %s।\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s समूह केँ परिवर्तित नहि कए सकल: %s।\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s क' कोनो पुरान घर निर्देशिका नहि अछि.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s क' कोनो नई घर निर्देशिका नहि अछि.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s सँ %s केँ चलाबै मे त्रुटि: %s।\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' विन्यास फाइल खोलि नहि सकल: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' विन्यास फाइल स्टेट नहि कए सकल: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "`%s' विन्यास फाइल काफी पैघ अछि" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "`%s' विन्यास फाइल पढ़ि नहि सकल: %s" #: lib/error.c:62 msgid "success" msgstr "सफल" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "विन्यास सँ माड्यूल असमर्थ कएल गेल" #: lib/error.c:66 msgid "generic error" msgstr "जेनेरिक त्रुटि" #: lib/error.c:68 msgid "not enough privileges" msgstr " अधिकार काफी नहि अछि" #: lib/error.c:70 msgid "access denied" msgstr "पहुँच निषेध" #: lib/error.c:72 msgid "bad user/group name" msgstr "बुरा प्रयोक्ता/समूह नाम" #: lib/error.c:74 msgid "bad user/group id" msgstr "बुरा प्रयोक्ता/समूह id" #: lib/error.c:76 msgid "user/group name in use" msgstr "प्रयोक्ता/समूह नाम प्रयोग मे अछि" #: lib/error.c:78 msgid "user/group id in use" msgstr "प्रयोक्ता/समूह id प्रयोग मे अछि" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "टर्मिनल गुण सँ छेड़छाड़ करब मे त्रुटि" #: lib/error.c:82 msgid "error opening file" msgstr "फाइल खुलने मे त्रुटि" #: lib/error.c:84 msgid "error locking file" msgstr "फाइल तालकित करब मे त्रुटि" #: lib/error.c:86 msgid "error statting file" msgstr "फाइल स्थाई करब मे त्रुटि" #: lib/error.c:88 msgid "error reading file" msgstr "फाइल पढ़बा मे त्रुटि" #: lib/error.c:90 msgid "error writing to file" msgstr "फाइल केँ लिखबा मे त्रुटि" #: lib/error.c:92 msgid "data not found in file" msgstr "फाइल मे आंकडा नहि भेटल" #: lib/error.c:94 msgid "internal initialization error" msgstr "आंतरिक प्रारंभिकीकरण त्रुटि" #: lib/error.c:96 msgid "error loading module" msgstr "माड्यूल भारित करब मे त्रुटि" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "माड्यूल मे प्रतीक वियोजन करब मे त्रुटि" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "लाइब्रेरी/माड्यूल संस्करण बेमेल" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "अतालाकित कएनाइ गुड़किल्ली क्षेत्र केँ खाली रखताह." #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "अज्ञात त्रुटि" #: lib/misc.c:240 msgid "invalid number" msgstr "अमान्य संख्या" #: lib/misc.c:254 msgid "invalid ID" msgstr "अमान्य ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%s फलन प्रारंभिकीकरण, '%s' मे नहि अछि" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' मे माड्यूल संस्करण मेल नहि खाता" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' मौड्यूल `%s' केँ परिभाषित नहि करैत अछि" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "टर्मिनल गुण पढने मे त्रुटि" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "टर्मिनल गुण जमावट मे त्रुटि" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "टर्मिनल सँ पढ़बा मे त्रुटि" #: lib/user.c:218 msgid "name is not set" msgstr "नाम नहि जमा अछि" #: lib/user.c:223 msgid "name is too short" msgstr "नाम बहुत छोट अछि" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "नाम काफी नमहर अछि (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "नाम मे गैर-ASCII अक्षर समाहित अछि" #: lib/user.c:242 msgid "name contains control characters" msgstr "नाम मे नियंत्रण संप्रतीक समाहित अछि" #: lib/user.c:249 msgid "name contains whitespace" msgstr "नाम मे रिक्तस्थान समाहित अछि" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "नाम हाइफन सँ शुरू हाएत अछि" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "नाम मे अनुचित अक्षर `%c' समाहित अछि" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "प्रयोक्ता क' पास %s कोनो UID नहि अछि." #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "समूह क' पास %s कोनो GID नहि अछि" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "प्रयोक्ता %jd क' पास कोनो नाम नहि अछि" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "समूह %jd क' कोनो नाम नहि अछि" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "प्रयोक्ता क' पास कोनो नाम अथवा UID नहि अछि" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "समूह क' पास नहि तँ नाम अछि नहि GID." #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s क्षेत्र क' अवैध पूर्वनिर्धारित मान: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "%s फाइल तालकित करब मे त्रुटि" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "पूर्वनिर्धारित सुरक्षा संदर्भ व्यवस्थित पाबि नहि सकल: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' क' सुरक्षा संदर्भ पाबि नहि सकल: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' मे पूर्वनिर्धारित सुरक्षा संदर्भ व्यवस्थित नहि कए सकल: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "पूर्वनिर्धारित सुरक्षा संदर्भ व्यवस्थित पाबि नहि सकल: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' क' सुरक्षा संदर्भ निर्धारित नहि कए सकल: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' खोलि नहि सकल: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' stat नहि कए सकल: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' बनाबै मे त्रुटि: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' क' स्वामित्व बदलाव मे त्रुटि: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' पढ़बा मे त्रुटि: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' लिखबा मे त्रुटि: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' सँ पढ़ि नहि सकल: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s सँ %s केँ चलाबै मे त्रुटि: %s।\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' खोलब मे त्रुटि: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' पढ़बा मे त्रुटि: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' पढ़बा मे त्रुटि: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "एंटिटी वस्तु क' %s गुण नहि अछि " #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "वस्तु मे %s गुण नहि अछि" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s मान `%s': `:' नहि अनुमति भेटल" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s मान `%s': `:' नहि अनुमति भेटल" #: modules/files.c:1136 msgid "entry already present in file" msgstr "फाइल मे प्रविष्टि पहिने सँ अछि" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' केँ लिखि नहि सकल: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "एंटिटी वस्तु क' %s गुण नहि अछि " #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' गोपित गुड़किल्ली मे नहि अनुमति भेटल" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "गुड़किल्ली गोपन मे त्रुटि " #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "सुपरयूजर विशेषाधिकार सँ निष्पादन नहि कए रहल अछि" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "कोनो शेडो फाइल नहि अछि -- असमर्थ कए रहल अछि" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap क्रमादेश प्रारंभिकीकरण त्रुटि" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "%d संस्करण केँ LDAP प्रोटोकाल सेट नहि कए सकल " #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP सर्वर सँ TLS संबंधित नहि कए सकल" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP सर्वर सँ जुड नहि सकल" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP सर्वर सँ जुड नहि सकल, पहिने `%s' रूपेँ प्रयास करू : %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "प्रयोक्ता वस्तु क' %s गुण नहि छल" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "प्रयोक्ता वस्तु केँ `%s' क' बिनु बनाएल गेल छल" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि बनाबै मे त्रुटि: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि रूपांतरित करब मे त्रुटि: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि क' पुनर्नामकरण मे त्रुटि: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "वस्तु मे %s गुण नहि छल" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP निर्देशिका प्रविष्टि केँ हटाबै मे त्रुटि: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "वस्तु मे %s गुण नहि अछि" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "असमर्थित गुड़किल्ली गोपनक योजना" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP निर्देशिका मे एहन किछु वस्तु नहि अछि" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "कोनो `%s' गुण नहि भेटल" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s क' लेल LDAP निर्देशिका मे गुड़किल्ली जमावट त्रुटि: %s " #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP सर्वर नाम " #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP खोज आधार DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP बंधन DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP बंधन गुड़किल्ली" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL प्रयोक्ता" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL प्राधिकरण प्रयोक्ता" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "%s प्रयोक्ता बनाबै मे सायरस SASL त्रुटि" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "%s प्रयोक्ता हटाबै मे सायरस SASL त्रुटि" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "%s सायरस SASL प्रारंभिकीकरण त्रुटि" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "प्रयोक्ता क' लेल घर निर्देशिका बनाबै मे त्रुटि" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "प्रयोक्ता क' लेल घर निर्देशिका हटाबै मे त्रुटि" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "प्रयोक्ता क' लेल घर निर्देशिका चलाबै मे त्रुटि" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s प्रारंभिकीकरण त्रुटि: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "अमान्य ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd सँ समूह क' खोज भए रहल अछि.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s नामित समूह क' लेल खोज भए रहल अछि.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd सँ प्रयोक्ता क' लेल खोज भए रहल अछि.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s नामित प्रयोक्ता क' लेल खोज भए रहल अछि.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "प्रविष्टि नहि भेटल.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "प्रांप्ट सफल भेल.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "प्रांप्ट बिफल भेल.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "पूर्वनिर्धारित प्रयोक्ता वस्तु वर्ग:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "पूर्वनिर्धारित प्रयोक्ता गुण नाम:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "पूर्वनिर्धारित प्रयोक्ता गुण ले रहल अछि:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "प्रयोक्ता संरचना प्रतिलिपि कए रहल अछि:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "`%s' बैकअप फाइल जीवंत अछि आओर एकटा नियमित फाइल नहि अछि" #~ msgid "backup file size mismatch" #~ msgstr "बैकअप फाइल आकार मेल नहि खएलक" po/mk.po000066400000000000000000001170411471266067600124660ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Arangel Angov , 2004 # Jovan Naumovski , 2007 # Miloslav Trmač , 2011 # Tomislav Markovski , 2004, 2005 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/fedora/" "language/mk/)\n" "Language: mk\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 % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Не успеав да ги симнам привилегиите.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Внатрешна грешка.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s не е авторизиран за промена на информациите на %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Непознат кориснички контекст" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Не можам да го поставам стандардниот контекст за /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Грешка при иницијализација на PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Автентикацијата е неуспешна за %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Внатрешна грешка во PAM „%s“.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Автентициран е непознат корисник.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Погрешен корисник.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ОПЦИЈА...] корисник" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Грешка при парсирање на аргументите: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Не е одредено корисничко име.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Грешка при иницијализирање на %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Корисникот %s не постои.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Сметката е заклучена.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Сметката не е заклучена.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Минимум:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Максимум:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Предупредување:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Неактивно:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Никогаш" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Последна промена:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Лозинката истекува:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Лозинката е неактивна:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Сметката истекува:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Не успеав да ги променам информциите за стареење за %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ОПЦИЈА...] [корисник]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Нема одредено корисничко име. Нема име за uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Ја менувам информацијата од finger за %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Целосно име" #: apps/lchfn.c:151 msgid "Surname" msgstr "Презиме" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Дадено име" #: apps/lchfn.c:172 msgid "Office" msgstr "Канцеларија" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Телефон на работа" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Телефон дома" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Адреса за е-пошта" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Информацијата од finger не е променета: влезна грешка.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Информацијата од finger е променета.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Информацијата за finger не е променета: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Ја менувам школката за %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Нова школка" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Школката не е сменета: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Школката е сменета.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ОПЦИЈА...] група" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Нема одредено име за групата.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Невалидно ID на група %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Креирањето на групата не успеа: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Групата %s не постои.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Групата %s не може да биде избришана: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "И -L и -U се одредени.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Не успеав да поставам лозинка за групата %s: %s.\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Групата %s не може да биде заклучена: %s.\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Групата %s не може да биде отклучена: %s.\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Групата %s не може да биде променета: %s.\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Грешка при заклучување на %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Нема одредено име за групата, користам %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Нема одредено име за групата. Нема име за gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Нема одредено корисничко име, користам %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ОПЦИЈА...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Грешка при отворање на „%s“: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Грешка при креирање на сметка за „%s“: линијата е форматирана погрешно.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Невалиден ID на корисник %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Одбивам да креирам сметка со UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Грешка при креирањето на група за „%s“ со GID %jd: %s.\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Грешка при креирање на домашен директориум за %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Грешка при поставување на лозинка за %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Грешка при креирање на корисничка сметка за %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Ја менувам лозинката за %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Нова лозинка" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Нов лозинка (потврда)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Лозинките не се совпаѓаат, пробајте повторно.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Промената на лозинката е откажана.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Грешка при поставување на лозинка за корисникот %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Грешка при поставување на лозинка за групата %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Лозинката е променета.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Групата %jd не постои.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Грешка при креирање на групата „%s“: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Креирањето на сметката не успеа: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Грешка при креирање на %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Корисникот %s не може да биде избришан: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s нема gid број.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Не постои група со GID %jd. Не отстранувам.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Групата со GID %jd немаше име на групата.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Групата %s не може да биде избришана: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "грешка при отстранување на домашниот директориум за корисникот" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Не успеав да поставам лозинка за корисникот %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Корисникот %s не може да биде заклучен: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Корисникот %s не може да биде отклучен: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Корисникот %s не може да биде променет: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Групата %s не може да биде променета: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Нема стар домашен директориум за %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Нема нов домашен директориум за %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Грешка при преместување на %s до %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "не можам да ја отворам датотеката со конфигурација „%s“: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "не можам да ја отворам конфигурациската датотека „%s“: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "Конфигурациската датотека „%s“ е преголема" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "не можам да ја отворам конфигурациската датотека„%s“: %s" #: lib/error.c:62 msgid "success" msgstr "успех" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "модулот е оневозможен од конфигурацијата" #: lib/error.c:66 msgid "generic error" msgstr "генеричка грешка" #: lib/error.c:68 msgid "not enough privileges" msgstr "нема доволно привилегии" #: lib/error.c:70 msgid "access denied" msgstr "пристапот е одбиен" #: lib/error.c:72 msgid "bad user/group name" msgstr "лош корисник/име на група" #: lib/error.c:74 msgid "bad user/group id" msgstr "лош корисник/id на група" #: lib/error.c:76 msgid "user/group name in use" msgstr "корисник/име на група која што се користи" #: lib/error.c:78 msgid "user/group id in use" msgstr "корисник/id на група кое што се користи" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "грешка при манипулирање со атрибутите во терминалот" #: lib/error.c:82 msgid "error opening file" msgstr "грешка при отворање на датотека" #: lib/error.c:84 msgid "error locking file" msgstr "грешка при заклучување на датотека" #: lib/error.c:86 msgid "error statting file" msgstr "грешка при изјавување на датотека" #: lib/error.c:88 msgid "error reading file" msgstr "грешка при вчитување на датотека" #: lib/error.c:90 msgid "error writing to file" msgstr "грешка при запишување во датотека" #: lib/error.c:92 msgid "data not found in file" msgstr "податоците не се најдени во датотеката" #: lib/error.c:94 msgid "internal initialization error" msgstr "внатрешна грешка при иницијализација" #: lib/error.c:96 msgid "error loading module" msgstr "грешка при вчитување на модул" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "грешка при пронаоѓање на симбол во модул" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "библиотека/погрешна верзија на модул" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "отклучувањето ќе го испразни полето со лозинка" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "непозната грешка" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "нема функција за иницијализација %s во „%s“" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "погрешна верзија на модул во „%s“" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "модулот „%s“ не дефинира „%s“" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "грешка при читање на атрибутите во терминалот" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "грешка при подесување на атрибути за терминалот" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "грешка при читање од терминалот" #: lib/user.c:218 msgid "name is not set" msgstr "името не е поставено" #: lib/user.c:223 msgid "name is too short" msgstr "името е премногу кратко" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "името е предолго (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "името содржи знаци кои што не се ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "името содржи контролни знаци" #: lib/user.c:249 msgid "name contains whitespace" msgstr "името содржи празни места" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "името започнува со тире" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "името содржи валиден знак „%c“" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "корисникот %s нема UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "групата %s нема GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "корисникот %jd нема име" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "групата %jd нема име" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "корисникот нема ни име ни UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "групата нема ни име ни GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Невалидна стандардна вредност за полето %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "грешка при заклучувањето на датотеката: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "не можам да го добијам безбедносниот контекст на „%s“: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "не можам да го поставам основниот безбедносен контекст на „%s“: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "не можам да го добијам безбедносниот контекст на „%s“: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "не можам да отворам „%s“: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "не можам да одредам „%s“: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "грешка при креирање на „%s“: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Грешка при менување на сопственикот на „%s“: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Грешка при читање на „%s“: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Грешка при запишување „%s“: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "не можам да прочитам од „%s“: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Грешка при преместување на %s до %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Грешка при отворање на „%s“: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Грешка при читање на „%s“: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Грешка при читање на „%s“: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "објектот нема %s атрибут" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "објектот нема %s атрибут" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "записот веќе постои во датотеката" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "не можам да запишам во „%s“: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "објектот нема %s атрибут" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "грешка при кодирање на лозинката" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "не извршувам со суперкориснички привилегии" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "нема присутна сенка датотека -- оневозможувам" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "грешка при иницијализирање на ldap библиотеката" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "не можам да го поставам LDAP протоколот на верзијата %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "не можам да договорам TLS со LDAP серверот" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "не можам да се врзам за LDAP серверот" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "не можам да се врзам за LDAP серверот, првиот обид беше како „%s“: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "корисничкиот објект нема %s атрибут" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "корисничкиот објект беше креиран без „%s“" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "грешка при креирање на запис за LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "грешка при менување на записот водиректориумот на LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "грешка при реименувањето на записот за LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "објектот нема %s атрибути" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "грешка при отстранување на записот за LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "објектот нема %s атрибут" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "нема таков објект во директориумот на LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "не пронајдов атрибут„%s“" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "грешка при поставување на лозинка во директориумот на LDAP за %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Име на LDAP сервер" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "База за пребарување на LDAP " #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind лозинка" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL корисник" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL авторизација за корисник" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL грешка при креирање на корисник: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL грешка при отстранување на корисник: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "грешка при иницијализација на Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "грешка при креирање на домашен директориум за корисникот" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "грешка при отстранување на домашниот директориум за корисникот" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "грешка при преместувањето на домашниот директориум за корисникот" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Грешка при иницијализирање %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Невалиден ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Барам група со ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Барам група под името %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Барам корисник со ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Барам корисник под името %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Записот не е пронајден.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Појавувањата беа успешни.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Појавувањата не успеаа.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Стандардни кориснички објектни класи:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Стандардни кориснички имиња на атрибути:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Ги земам стандардните кориснички атрибути:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Ја копирам корисничката структура:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "резервната датотека „%s“ постои и не е регуларна датотека" #~ msgid "backup file size mismatch" #~ msgstr "погрешна големина на резервната датотека" po/ml.po000066400000000000000000001424251471266067600124730ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Ani Peter , 2006, 2007 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Malayalam (http://www.transifex.com/projects/p/fedora/" "language/ml/)\n" "Language: ml\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "അനുമതികള്‍ വേണ്ടെന്ന് വയ്ക്കുന്നതില്‍ പരാജയം.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "ആന്തരീകമായ പിഴവ്.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%sന്റെ ഫിം‍ഗര്‍ ഇന്‍ഫോ മാറ്റുവാന്‍ %sന് അധികാരമില്ല \n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "അപരിചിതമായ ഉപയോക്തൃ സന്ദര്‍ഭം" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwdന് തനതായൊരു പശ്ചാത്തലം ഒരുക്കാന്‍ സാദ്ധ്യ‌‌മല്ല\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM തുടങ്ങുന്നതില്‍ പിഴവ്.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%sന്റെആധികാരികത പരാജയം.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "PAMലുള്ള ആന്തരീകമായ‍ പിഴവ് `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "അജ്ഞാതനായ ഉപയോക്താവ്.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ഉപയോക്താക്കള്‍ തമ്മില്‍ പൊരുത്തക്കേട്.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] ഉപയോക്താവ്" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "ആര്‍‍ഗ്യു‌മെന്റുകള്‍ വ്യാകരിക്കുന്നതില്‍ പിഴവ്: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "ഉപയോക്തൃനാമം വ്യ‌‌ക്തമാക്കിയിട്ടില്ല.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s ആരംഭിക്കുന്നതില്‍ പിശക്: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s എന്ന ഉപയോക്താവ് നിലവിലില്ല.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "അക്കൌണ്ട് പൂട്ടപ്പെട്ടിരിക്കുന്നു.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "അക്കൌണ്ട് പൂട്ടിയിട്ടില്ല.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "ഏറ്റവും കുറഞ്ഞ:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "പരമാവധി:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "മുന്നറിയിപ്പ്:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "സജീവമല്ലാത്ത:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "ഒരിക്കലും ഇല്ല" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "ഒടുവിലത്തെ മാറ്റം:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "രഹസ്യവാക്കിനുള്ള കാലാവധി തീരുന്നു:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "രഹസ്യവാക്ക് നിര്‍ജീവം:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "അക്കൌണ്ടിന്റെ കാലാവധി തീരുന്നു:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%sന്റെ കാലാവധി തീരുന്ന അറിയിപ്പ് പരിഷ്കരിക്കല്‍ പരാജയം%s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [ഉപയോക്താവ്]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "ഉപയോക്തൃ നാമം വ്യ‌‌ക്തമാക്കിയിട്ടില്ല, uid %dയ്ക്ക് പേരില്ല.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s നുള്ള finger വിവരത്തില്‍ മാറ്റം വരുത്തുന്നു.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "മുഴുവന്‍ പേര്" #: apps/lchfn.c:151 msgid "Surname" msgstr "ചെല്ലപ്പേര്" #: apps/lchfn.c:162 msgid "Given Name" msgstr "തന്നിരിക്കുന്ന പേര്" #: apps/lchfn.c:172 msgid "Office" msgstr "ഓഫീസ്" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "ഓഫീസിലെ ഫോണ്‍ നമ്പര്‍" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "വീട്ടിലെ ഫോണ്‍ നമ്പര്‍" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ഈ-മെയില്‍ അഡ്രസ്സ്" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "finger informationല്‍ മാറ്റം വന്നിട്ടില്ല: ഇന്‍പുട്ടില്‍ പിഴവ്.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "finger informationല്‍ മാറ്റം വരുത്തി.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "finger informationല്‍ മാറ്റം വരുത്തിയില്ല: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%sന്റെ ഷെല്‍ മാറ്റുന്നു.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "പുതിയ ഷെല്‍" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "ഷെല്‍ മാറ്റിയിട്ടില്ല:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "ഷെല്‍ മാറ്റിയിരിക്കുന്നു.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] സംഘം" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "സംഘനാമം വ്യ‌‌ക്തമാക്കിയിട്ടില്ല.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "അസാധുവായ സംഘ ID%s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "സംഘം സൃഷ്ടിക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s എന്ന സംഘം നിലവിലില്ല.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s എന്ന സംഘം നീക്കം ചെയ്യുവാന്‍ സാധിക്കുന്നില്ല: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-Lഉം -Uഉം വ്യ‌‌ക്തമാക്കിയിട്ടുണ്ട്.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s എന്ന സംഘത്തിന് രഹസ്യവാക്ക് ഉറപ്പിക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s എന്ന സംഘം പൂട്ടാന്‍ സാധിക്കുന്നില്ല: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s എന്ന സംഘം തുറന്നുവിടാന്‍‍ സാധിക്കുന്നില്ല: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s എന്ന സംഘത്തില്‍‍ മാറ്റം വരുത്തുവാന്‍ സാധിക്കുന്നില്ല: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s-ല്‍ തിരയുന്നതില്‍ പിഴവ്: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "സംഘനാമം വ്യ‌‌ക്തമാക്കാഞ്ഞതിനാല്‍, %s ഉപയോഗിക്കുന്നു.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "സംഘനാമം വ്യ‌‌ക്തമാക്കിയിട്ടില്ല, gid %dയ്ക്കും പേരില്ല.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ഉപയോക്തൃനാമം വ്യ‌‌ക്തമാക്കാഞ്ഞതിനാല്‍, %s ഉപയോഗിക്കുന്നു.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s നിലവിലില്ല.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' തുറക്കുന്നതില്‍ പിഴവ്: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "%sന് അക്കൌണ്ട് നിര്‍മ്മിക്കുന്നതില്‍ പിഴവ്: ലൈന്‍ തെറ്റായി രൂപപ്പെടുത്തിയിരിക്കുന്നു.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "അസാധുവായ ഉപയോക്തൃ ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 ആയി അക്കൌണ്ട് തുറക്കുവാന്‍ അനുവദിക്കുന്നില്ല.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' ന് GID %jd ആയി ഗ്രൂപ്പ് ഉണ്ടാക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "%s-നു് സ്വതവേയുള്ള അപകടകാരിയായ `%s' ഹോം ഡയറക്ടറി ഉപയോഗിക്കുന്നതു് നിഷേധിക്കുന്നു\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%sയ്ക്ക് ഹോം ഡയറക്ടറി സൃഷ്ടിക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%sന് ആരംഭത്തിലുള്ള രഹസ്യവാക്ക് ഉറപ്പിക്കുന്നതില്‍‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%sന് ഉപയോക്തൃ അക്കൌണ്ട് ഉണ്ടാക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു : %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s നുള്ള രഹസ്യവാക്ക് മാറ്റുന്നു.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "പുതിയ രഹസ്യവാക്ക്" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "പുതിയ രഹസ്യവാക്ക് (ഉറപ്പ് വരുത്തുക)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "രഹസ്യവാക്കുകള്‍ തമ്മില്‍ ചേരുന്നില്ല.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "രഹസ്യവാക്കില്‍ മാറ്റം വരുത്തിയത് റദ്ദാക്കിയിരിക്കുന്നു.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s എന്ന ഉപയോക്താവിനു് രഹസ്യവാക്ക് ഉറപ്പിക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s എന്ന സംഘത്തിന് രഹസ്യവാക്ക് ഉറപ്പിക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "രഹസ്യവാക്ക് മാറ്റിയിരിക്കുന്നു.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jdഎന്ന ഗ്രൂപ്പ് നിലവിലില്ല\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' എന്ന ഗ്രൂപ്പ് സൃഷ്ടിക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "അക്കൌണ്ട് സൃഷ്ടിക്കുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s സൃഷ്ടിക്കുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "User %s എന്ന ഉപയോക്താവിനെ നീക്കം ചെയ്യുവാന്‍ സാധിച്ചില്ല : %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%sന് gid നമ്പര്‍ ലഭ്യ‌‌മല്ല.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd ആയിട്ടുളള ഗ്രൂപ്പ് നിലവിലില്ല, അതിനാല്‍ നീക്കം ചെയ്യുന്നില്ല.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd ആയുളള സംഘത്തിന് സംഘനാമം ലഭ്യ‌‌മല്ല.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s എന്ന ഗ്രൂപ്പ നീക്കം ചെയ്യുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ഉപയോക്താവിന്റെ ഹോം ഡയറക്ടറി നീക്കം ചെയ്യുന്നതില്‍ പിഴവ്" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s എന്ന ഉപയോക്താവിന്ന് രഹസ്യവാക്ക് ഉറപ്പിക്കുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%sഎന്ന ഉപയോക്താവ് ലോക്ക് ചെയ്യുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%sഎന്ന ഉപയോക്താവ് അണ്‍ലോക്ക് ചെയ്യുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "മുന്നറിയിപ്പ്: %jd എന്ന ഐഡിയുള്ള ഗ്രൂപ്പ് നിലവിലില്ല.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s എന്ന ഉപയോക്താവിനെ പരിഷ്കരിക്കുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%sഎന്ന ഗ്രൂപ്പിനെ പരിഷ്കരിക്കുവാന്‍ സാധിച്ചില്ല: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%sന് പഴയ ഡയറക്ടറി ലഭ്യ‌‌മല്ല.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%sന് പുതിയ ഡയറക്ടറി ലഭ്യ‌‌മല്ല .\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%sലേക്ക് %sനെ നീക്കുന്നതില്‍ പിഴവ്: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' എന്ന ക്രമീകരണ‍ ഫയല്‍ തുറക്കുവാന്‍ സാധിച്ചില്ല: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' എന്ന ക്രമീകരണ ഫയല്‍ stat ചെയ്യുവാന്‍ സാധിച്ചില്ല : %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "`%s' ക്രമീകരണ ഫയല്‍ വളരെ വലുതാണ് " #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "`%s'എന്ന ക്രമീകരണ ഫയല്‍ വായിക്കുവാന്‍ സാധിച്ചില്ല: %s" #: lib/error.c:62 msgid "success" msgstr "വിജയിച്ചു" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "ക്രമീകരണം കൊണ്ട് മൊഡ്യൂള്‍ പ്രവര്‍‍ത്തനരഹിതമായിരിക്കുന്നു" #: lib/error.c:66 msgid "generic error" msgstr "ജനറിക്ക് പിഴവ്" #: lib/error.c:68 msgid "not enough privileges" msgstr "മതിയായ വിശേഷാവകാശങ്ങളില്ല" #: lib/error.c:70 msgid "access denied" msgstr "പ്രവേശനം നിഷേധിച്ചിരിക്കുന്നു" #: lib/error.c:72 msgid "bad user/group name" msgstr "അസാധുവായ ഉപയോക്തൃ/സംഘ നാമം" #: lib/error.c:74 msgid "bad user/group id" msgstr "അസാധുവായ ഉപയോക്തൃ/സംഘ id" #: lib/error.c:76 msgid "user/group name in use" msgstr "ഉപയോക്തൃ‍/ ഉപയോഗത്തിലുളള സംഘനാമം" #: lib/error.c:78 msgid "user/group id in use" msgstr "ഉപയോക്തൃ‍/ ഉപയോഗത്തിലുളള സംഘ id" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "അഗ്രിമത്തിന്റെ വൈശിഷ്ട്യങ്ങള്‍ കൈകാര്യം ചെയ്യുന്നതില്‍ പിഴവ്" #: lib/error.c:82 msgid "error opening file" msgstr "ഫയല്‍ തുറക്കുന്നതില്‍ പിഴവ്" #: lib/error.c:84 msgid "error locking file" msgstr "ഫയല്‍ ലോക്ക് ചെയ്യുന്നതില്‍ പിഴവ്" #: lib/error.c:86 msgid "error statting file" msgstr "ഫയല്‍ stat ചെയ്യുന്നതില്‍ പിഴവ്" #: lib/error.c:88 msgid "error reading file" msgstr "ഫയല്‍ വായിക്കുന്നതില്‍ പിഴവ്" #: lib/error.c:90 msgid "error writing to file" msgstr "ഫയല്‍‍ എഴുതുന്നതില്‍ പിഴവ്" #: lib/error.c:92 msgid "data not found in file" msgstr "ഡാറ്റാ ഫയലില്‍ ലഭ്യ‌‌മല്ല" #: lib/error.c:94 msgid "internal initialization error" msgstr "ആന്തരീകമായ പ്രാരംഭ പിഴവ്" #: lib/error.c:96 msgid "error loading module" msgstr "മൊഡ്യൂള്‍ ലോഡ് ചെയ്യുന്നതില്‍ പിഴവ് സംഭവിച്ചിരിക്കുന്നു" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "മൊഡ്യൂ‌‌ളില്‍ പ്രതീകം തീരുമാനിക്കുന്നതില്‍ പിഴവ്" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "ലൈബ്രറി/മൌഡ്യൂള്‍ പതിപ്പില്‍ പൊരുത്തക്കേട്" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "അണ്‍ലോക്കിംഗ് ചെയ്താല്‍ രഹസ്യവാക്കിനുള്ള ഫീല്‍‍ഡ് കാലിയാകും" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "അജ്ഞാത പിഴവ്" #: lib/misc.c:240 msgid "invalid number" msgstr "അസാധുവായ നമ്പര്‍" #: lib/misc.c:254 msgid "invalid ID" msgstr "അസാധുവായ ഐഡി" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "%sഎന്ന പ്രാരംഭ ധര്മ്മം `%s'ല്‍ ലഭ്യ‌‌മല്ല" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "%sല്‍ മൊഡ്യൂള്‍ പതിപ്പില്‍‍ പൊരുത്തക്കേട്" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "'%s' മൊഡ്യൂള്‍ വ്യാ‌‌ഖ്യാനിച്ചിട്ടില്ല `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ടെര്‍‍മിനലിന്റെ ഗുണഗണങ്ങള്‍ വായിക്കുന്നതില്‍ പിഴവ്" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ടെര്‍‍മിനലിന്റെ ഗുണഗണങ്ങള്‍ സജ്ജമാക്കുന്നതില്‍ പിഴവ്" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ടെര്‍‍മിനലില്‍ നിന്നും വായിക്കുന്നതില്‍ പിഴവ്" #: lib/user.c:218 msgid "name is not set" msgstr "പേര് ഉറപ്പാക്കിയിട്ടില്ല" #: lib/user.c:223 msgid "name is too short" msgstr "പേര് വളരെ ചെറുതാണ്" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "പേര് വളരെ വലുതാണ് (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "non-ASCII ചിഹ്നങ്ങള്‍ പേരില്‍ അടങ്ങുന്നു" #: lib/user.c:242 msgid "name contains control characters" msgstr "control ചിഹ്നങ്ങള്‍ പേരില്‍ അടങ്ങുന്നു" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ശുഭ്രസ്ഥലം പേരില്‍ അടങ്ങുന്നു" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "പേര് ഹൈഫന്‍ കൊണ്ട് തുടങ്ങുന്നു" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "പേരില്‍ '%c' എന്ന അസാധുവായ ചിഹ്നം" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s എന്ന ഉപയോക്താവിന് UID ലഭ്യ‌‌മല്ല" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "ഗ്രൂപ്പ് %s-ന് GID ലഭ്യ‌‌മല്ല" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" "%jd എന്ന ഉപയോക്താവിന്\n" "പേരില്ല" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "%jdഎന്ന ഗ്രൂപ്പിന് പേരില്ല" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ഉപയോഗിക്കുന്ന ആളിന് പേരോ UID-യോ ഇല്ല" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "ഗ്രൂപ്പിന് പേരോ GID-യോ ഇല്ല" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "സ്വതവേയുള്ള അപകടകാരിയായ `%s' ഹോം ഡയറക്ടറി ഉപയോഗിക്കുന്നതു് നിഷേധിക്കുന്നു" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ഫീല്‍‍ഡിന്റെ തനത് മൂല്യം: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ഫയല്‍‍ ലോക്ക് ചെയ്യുന്നതില്‍ പിഴവ്: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "സ്വതവേയുള്ള സെക്യൂരിറ്റി കോണ്‍ടെക്സ്റ്റ ലഭ്യ‌‌മാക്കുവാന്‍ സാദ്ധ്യ‌‌മായില്ല: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%sന്റെ സെക്യൂരിറ്റി കോണ്‍ടെക്സ്റ്റ ലഭ്യ‌‌മാക്കുവാന്‍ കഴിഞ്ഞില്ല: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr " `%sന്റെ തനത് സെക്യൂരിറ്റി കോണ്ടെക്സ്റ്റ് ഉറപ്പിക്കാന്‍ കഴിഞ്ഞില്ല:%s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "സ്വതവേയുള്ള സെക്യൂരിറ്റി കോണ്‍ടെക്സ്റ്റ ലഭ്യ‌‌മാക്കുവാന്‍ സാദ്ധ്യ‌‌മായില്ല: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s'- നുള്ള സെക്യൂരിറ്റി കോണ്‍ടെക്സ്റ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' തുറക്കുവാന്‍ സാധിച്ചില്ല: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' stat ചെയ്യുവാന്‍ സാധിച്ചില്ല: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' നിര്മ്മിക്കുന്നതില്‍‍ പിഴവ്: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' ഉടമസ്ഥനെ മാറ്റുന്നതില്‍ പിഴവ്: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' വായിക്കുന്നതില്‍ പിഴവ്: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s'എഴുതുന്നതില്‍ പിഴവ്: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' നിന്നും വായിക്കുവാന്‍ സാധിച്ചില്ല: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%sലേക്ക് %sനെ നീക്കുന്നതില്‍ പിഴവ്: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' തുറക്കുന്നതില്‍ പിഴവ്: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' വായിക്കുന്നതില്‍ പിഴവ്: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' വായിക്കുന്നതില്‍ പിഴവ്: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "entity object has no %s attribute" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ഒബ്ജക്റ്റിന് %s എന്ന അട്രിബ്യൂട്ടില്ല" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s മൂല്യം `%s': `:' അനുവദിക്കുന്നതല്ല" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s മൂല്യം `%s': `:' അനുവദിക്കുന്നതല്ല" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ഫയലില്‍ ചേര്ത്തത് നിലനില്‍ക്കുന്നു" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'ലേക്ക് എഴുതുവാന്‍ സാധിച്ചില്ല : %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entity object has no %s attribute" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ഫയലിലുള്ള പൊരുത്തപ്പെടാത്ത പേരിലുള്ള എന്‍ട്രി" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "എന്‍ക്രിപ്റ്റ് ചെയ്തിട്ടുള്ള രഹസ്യവാക്കുകളില്‍ `:' അനുവദിക്കുന്നതല്ല" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "രഹസ്യവാക്ക് എന്‍ക്രിപ്റ്റ് ചെയ്യുന്നതില്‍ പിഴവ്" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "സൂപ്പര്‍ ഉപയോക്താവായി നിര്‍‌വ്വഹിക്കുന്നില്ല" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "ഷാഡോ ഫയല്‍ ലഭ്യ‌‌മല്ല -- ദുര്‍ബ്ബലമാക്കുന്നു" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr " ldapലൈബ്രറി ആരംഭിക്കുന്നതില്‍ പിശക്" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP പ്രോട്ടോക്കോള്‍ വേര്‍‍ഷന്‍ %dലേക്ക് ഉറപ്പിക്കാന്‍ സാധിച്ചില്ല" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP സെര്‍വറുമായി വിലപേശാന്‍ TLSന് കഴിഞ്ഞില്ല" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP സര്‍‍വറുമായി ബന്ധിപ്പിക്കാന്‍ സാധിച്ചില്ല" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr " LDAP സര്‍‍വറുമായി ബന്ധിപ്പിക്കാന്‍ സാധിച്ചില്ല, ആദ്യ ശ്രമം `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ഉപയോക്തൃ ഒബ്ജക്റ്റിന് %s ആട്രിബ്യൂ‌‌ട്ടുകളില്ല" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "`%s' ഇല്ലാതെയാണ് ഉപയോക്തൃ ഒബ്ജക്റ്റ് സൃഷ്ടിക്കപ്പെട്ടത്" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "ഒരു LDAP ഡയറക്ടറി എന്‍ട്രി നിര്‍മ്മിക്കുന്നതില്‍ പിഴവ്: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "ഒരു LDAP ഡയറക്ടറി എന്‍ട്രിയില്‍ മാറ്റം വരുത്തുന്നതില്‍ പിഴവ്: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP ഡയറക്ടറി എന്‍ട്രിയുടെ പേര് മാറ്റുന്നതില്‍ പിഴവ്: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ഒബ്ജക്റ്റിന് %s എന്ന അട്രിബ്യൂട്ടില്ല" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP ഡയറക്ടറി എന്‍ട്രി നീക്കം ചെയ്യുന്നതില്‍ പിഴവ്: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ഒബ്ജക്റ്റിന് %s എന്ന അട്രിബ്യൂട്ടില്ല" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "പിന്തുണ ലഭ്യമല്ലാത്ത രഹസ്യവാക്ക് എന്‍ക്രിപ്ഷന്‍ സ്കീം" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ഡയറക്ടറിയില്‍ അങ്ങനെ ഒരു ഒബ്ജക്റ്റില്ല" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "%s എന്ന അട്രിബ്യൂട്ട് കണ്ടുകിട്ടിയില്ല" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "LDAP ഡയറക്ടറിയില്‍ %s നായുള്ള രഹസ്യവാക്ക് ഉറപ്പിക്കുന്നതില്‍ പിഴവ്: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP സര്‍വര്‍ നാമം" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP സര്‍ച്ച് ബെയ്‌‌‌സ് DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind രഹസ്യവാക്ക്" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ഉപയോക്താവ്" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL ചുമതലയുള്ള ഉപയോക്താവ്" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "%sഉപയോക്തൃ സൃഷ്ടിയിലെ Cyrus SASL പിശക്:" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ഉപയോക്താവിനെ നീക്കുന്നതില്‍ Cyrus SASL പിശക്: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr " Cyrus SASL ആരംഭിക്കുന്നതില്‍ പിശക്:%s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ഉപയോക്താവിന് ഹോം ഡയറക്ടറി ഉണ്ടാക്കുന്നതില്‍ പിഴവ്" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ഉപയോക്താവിന്റെ ഹോം ഡയറക്ടറി നീക്കം ചെയ്യുന്നതില്‍ പിഴവ്" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ഉപയോക്താവിന്റെ ഹോം ഡയറക്ടറി നീക്കമ് ചെയ്യുന്നതില്‍ പിഴവ്" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr " %s:ആരംഭിക്കുന്നതില്‍ പിശക്%s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "അസാധുവായ ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jdആയ ഗ്രൂപ്പിനെ തിരയുന്നു.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s എന്ന പേരുളള ഗ്രൂപ്പിനെ തെരയുന്നു.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jdആയ ഉപയോക്താവിനെ തെരയുന്നു.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s എന്ന പേരുളള ഉപയോക്താവിനെ തെരയുന്നു.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "എന്‍ട്രി കാണ്‍മാനില്ല.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Prompts വിജയിച്ചു.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Prompts പരാജയപ്പെട്ടു.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ഉപയോക്താവിന്റെ തനത് ഒബ്ജക്റ്റ് ക്ലാസുകള്‍:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ഉപയോക്താവിന്റെ തനത് ആട്രിബ്യൂട്ട് നാമങ്ങള്‍:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ഉപയോക്താവിന്റെ തനത് ആട്രിബ്യൂട്ടുകള്‍ ലഭ്യമാക്കുന്നു:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ഉപയോക്താവിന്റെ ഘടന പകര്‍‍ത്തുന്നു:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "%s എന്ന ബാക്കപ്പ് ഫയല്‍‍ നിലവിലുണ്ട്, അത് ഒരു സാധാരണ ഫയലല്ല" #~ msgid "backup file size mismatch" #~ msgstr "ബാക്കപ്പ് ഫയലിന്റെ വലിപ്പത്തില്‍ പൊരുത്തക്കേട്" po/mr.po000066400000000000000000001275101471266067600124770ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Rahul Bhalerao , 2006 # sandeep shedmake , 2007 # Sandeep Shedmake , 2008, 2009 # sandeeps , 2009 # sandeeps , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Marathi (http://www.transifex.com/projects/p/fedora/language/" "mr/)\n" "Language: mr\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "हक्क वगळण्यास अपयशी.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "आंतरीक त्रूटी.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ची finger माहिती बदलवण्यास %s ला अधिकार नाही\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "अपरिचित वापरकर्ता संदर्भ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd करता मूलभूत संदर्भ निश्चित करू शकत नाही\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM प्रारंभ करतेवेळी त्रुटी.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s करीता अधिप्रमाणन अयशस्वी.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "आंतरीक PAM त्रूटी `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "अपरिचित वापरकर्ता अधिप्रमाणित.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "वापरकर्ता जुळला नाही.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] वापरकर्ता" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "बाबी वाचतेवेळी त्रुटी: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "वापरकर्त्याचे नाव दर्शविले नाही.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s प्रारंभ करतेवेळी त्रुटी: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s वापरकर्ता अस्तित्वात नाही.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "खाती कुलूपबंद.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "खाती कुलूपबंद नाही.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "किमान:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "कमाल:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "सावधान:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "निषक्रिय:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "कधीच नाही" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "शेवटचा बदल:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "पासवर्ड कालबाह्य:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "पासवर्ड निषक्रिय:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "खाती कालबाह्य:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s करता एजींग माहिती संपादित करू शकला नाही: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [वापरकर्ता]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "वापरकर्त्याचे नाव दर्शविले नाही, uid %d करीता नाव नाही.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s करता finger माहिती बदलवा.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "पूर्ण नाव" #: apps/lchfn.c:151 msgid "Surname" msgstr "आडनाव" #: apps/lchfn.c:162 msgid "Given Name" msgstr "दिलेले नाव" #: apps/lchfn.c:172 msgid "Office" msgstr "ऑफिस" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "ऑफिस फोन" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "घरचा फोन" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "इमेल पत्ता" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "finger माहिती बदल्यागेली नाह: आदान त्रूटी.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger माहिती बदलवण्यात आली.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger माहिती बदलवली नाही: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s कर्ता शेल बदलवत आहे.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "नविन शेल" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "शेल बदलवले नाही: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "शेल बदलवले.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] समुह" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "समुह नाव व्याख्यित नाही.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "अवैध समुह ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "समुह निर्माण करण्यास अपयशी: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "समुह %s अस्तित्वात नाही.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "समुह %s काढू शकत नाही: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "दोन्ही -L व -U दर्शविले आहे.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s समुहकर्ता पासवर्ड निश्चित करण्यास अपयशी: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s समुह कुलूपबंद करू शकत नाही: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s समुह कुलूपबंद करू शकला नाही: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s समुह संपादित करू शकला नाही: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s शोधतेवेळी त्रुटी: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "%s वापरून, समुहाचे नाव व्याख्यित नाही.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "समुह नाव दर्शविले नाही, gid %d करीता नाव नाही.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "%s वापरुन, वापरकर्त्याचे नाव व्याख्यित नाही.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s अस्तित्वात नाही\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' उघडतेवेळी त्रुटी: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' करीता खाते बनवितेवेळी त्रुटी: ओळ अयोग्यरित्या संपादित केले.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "अवैध वापरकर्ता ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 सह खाती निर्माण करण्यास नकार.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' करीता GID %jd सह समुह बनवितेवेळी त्रुटी: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "पूर्वनिर्धारीतपणे हानीकारक होम डिरेक्ट्री `%s' चा वापर, %s करीता, नकारात आहे\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s करीता मुख्य संचयीका निर्माण करतेवेळी त्रुटी: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s करीता प्रारंभी पासवर्ड निश्चित करा: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s वापरकर्त्यास खाती बनवितेवेळी त्रुटी: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s करता पासवर्ड बदलवत आहे.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "नविन पासवर्ड" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "नविन पासवर्ड (निश्चित करा)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "पासवर्ड जुळत नाही, पुन्हा प्रयत्न करा.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "पासवर्ड बदल रद्द केले.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "फाइल डिस्क्रिप्टर %d पासून वाचतेवेळी त्रुटी.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s वापरकर्त्यास पासवर्ड निश्चित करतेवेळी त्रुटी: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s समुहकरीता पासवर्ड निश्चित करतेवेळी त्रुटी: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "पासवर्ड बदलविले.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "समुह %jd अस्तित्वात नाही\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "%s समुह निर्माण करतेवेळी त्रुटी: %s.\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "खाती निर्माण करण्यास अपयशी: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s निर्माण करतेवेळी त्रुटी: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "%s वापरकर्ता काढू शकला नाही: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ला gid क्रमांक नाही.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd रहीत समुह अस्तित्वात नाही, काढुन टाकत नाही.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd सह समुहला समुह नाव नाही.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s समुह काढू शकला नाही: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "वापरकर्त्यास मुख्य संचयीका काढुन टाकतेवेळी त्रुटी" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s वापरकर्त्यास पासवर्ड निश्चित करण्यास अपयशी: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s वापरकर्त्यास कुलूपबंद करू शकला नाही: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s वापरकर्त्यास कुलूपबंदीतून सुटका करू शकला नाही: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "सावधान: समुह ID %jd सह अस्तित्वात नाही.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s वापरकर्ता संपादित करू शकला नाही: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "समुह %s संपादित करू शकला नाही: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s करता जुनी मुख्य संचयीका नाही.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s करीता मुख्य संचयीका नाही.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s पासुन %s पर्यंत स्थानांतर करतेवेळी त्रुटी: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "संरचना फाइल `%s' उघडू शकला नाही: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "संरचना फाइल `%s' सुरू करू शकला नाही: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "संरचना फाइल `%s' खूपच मोठी आहे" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "`%s' संरचना फाइल वाचू शकला नाही: %s" #: lib/error.c:62 msgid "success" msgstr "यश" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "संरचनाने घटकास अकार्यान्वीत केले" #: lib/error.c:66 msgid "generic error" msgstr "प्रजातीय त्रूटी" #: lib/error.c:68 msgid "not enough privileges" msgstr "हवे थवडे हक्क नाही" #: lib/error.c:70 msgid "access denied" msgstr "प्रवेश निषेध" #: lib/error.c:72 msgid "bad user/group name" msgstr "वाईट वापरकर्ता/समुहाचे नाव" #: lib/error.c:74 msgid "bad user/group id" msgstr "वाईट वापरकर्ता/समुहाचे आयडी" #: lib/error.c:76 msgid "user/group name in use" msgstr "वापरणीत असलेले वापरकर्त्याचे/समुहाचे नाव" #: lib/error.c:78 msgid "user/group id in use" msgstr "वापरणीत असलेले वापरकर्त्याचे/समुहाचे आयडी" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "टर्मिनलचे गुणधर्म संपादित करतेवेळी त्रूटी" #: lib/error.c:82 msgid "error opening file" msgstr "फाइल उघडतेवेळी त्रूटी" #: lib/error.c:84 msgid "error locking file" msgstr "फाइल कुलूपबंद करतेवेळी त्रूटी" #: lib/error.c:86 msgid "error statting file" msgstr "त्रूटी दर्शविणारी फाइल" #: lib/error.c:88 msgid "error reading file" msgstr "फाइल वाचतेवेळी त्रूटी" #: lib/error.c:90 msgid "error writing to file" msgstr "फाइल मध्ये लिहीतेवेळी त्रूटी" #: lib/error.c:92 msgid "data not found in file" msgstr "फाइल मध्ये माहिती आढळली नाही" #: lib/error.c:94 msgid "internal initialization error" msgstr "आंतरीक प्रारंभीकरण त्रूटी" #: lib/error.c:96 msgid "error loading module" msgstr "घटक दाखल करतेवेळी त्रूटी" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "घटकातील चिन्ह सुस्थीत करतेवेळी त्रूटी" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "लायब्ररी/घटकाच्या आवृत्तीत जुळणी होत नाही" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "कुलूपबंद नाहीसे केल्यास पासवर्ड रिक्त होते" #: lib/error.c:105 msgid "invalid attribute value" msgstr "अवैध गुणधर्माचे मुल्य" #: lib/error.c:107 msgid "invalid module combination" msgstr "अवैध घटकाचे संयोग" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "अपरिचीत त्रूटी" #: lib/misc.c:240 msgid "invalid number" msgstr "अवैध क्रमांक" #: lib/misc.c:254 msgid "invalid ID" msgstr "अवैध ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "`%s' मध्ये %s प्रारंभीकरण कार्यक्रम नाही" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' मध्ये घटकाची आवृत्ती जुळत नाही" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' घटक `%s' ला ओळखत नाही" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "टर्मिनल गुणधर्म वाचतेवेळी त्रूटी" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "टर्मिनल गुणधर्म वाचतेवेळी त्रूटी" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "टर्मिनल पासून वाचतेवेळी त्रूटी" #: lib/user.c:218 msgid "name is not set" msgstr "नाव निश्चित केले नाही" #: lib/user.c:223 msgid "name is too short" msgstr "नाव खूपच छोटे आहे" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "नाव खूपच लांब आहे (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "नावात विना-ASCII अक्षर आहेत" #: lib/user.c:242 msgid "name contains control characters" msgstr "नावात कंट्रोल अक्षरं आहेत" #: lib/user.c:249 msgid "name contains whitespace" msgstr "नावात वाईटस्पेस आहेत" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "नाव हायफनने सुरू होते" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "नावात अवैध अक्षर `%c' आहेत" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "वापरकर्ता %s ला UID नाही" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "समुह %s ला GID नाही" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd वापरकर्त्यास नाव नाही" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "समुह %jd ला नाव नाही" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "वापरकर्त्यास नाव किंवा UID नाही" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "समुहास नाव किंवा GID नाही" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "पूर्वनिर्धारीतपणे होम डिरेक्ट्री `%s' चा वापर करण्यापासून नकारत आहे" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "field %s ची अवैध मुलभूत संख्या: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "फाइल कुलूपबंद करतेवेळी त्रूटी: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "मुलभूत सुरक्षा संदर्भ प्राप्त करता आले नाही: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' चा सुरक्षा संदर्भ आढळला नाही: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' करता मुलभूत सुरक्षा संदर्भ निश्चित केला नाही: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "मुलभूत सुरक्षा संदर्भ प्राप्त करता आले नाही: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "संरचना फाइल `%1$s' उघडू शकला नाही: %2$s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' उघडू शकला नाही: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' दर्शवू शकला नाही: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' निर्माण करतेवेळी त्रूटी: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' चा मालक बदलतेवेळी त्रूटी: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' वाचतेवेळी चूक: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' लिहीतेवेळी त्रुटी: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' पासुन वाचू शकले नाही: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s पासुन %s पर्यंत स्थानांतर करतेवेळी त्रुटी: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' उघडतेवेळी त्रुटी: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' वाचतेवेळी चूक: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' वाचतेवेळी चूक: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "वस्तू ला %s गुणधर्म नाही" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "वस्तुकडे %s गुणधर्म नाही" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s मुल्य `%s': `:' परवानगी नाही" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s मुल्य `%s': `:' परवानगी नाही" #: modules/files.c:1136 msgid "entry already present in file" msgstr "फाइल मध्ये नोंदणी आधिपासुनच अस्तित्वात आहे" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' करीता लिहु शकले नाही: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "वस्तू ला %s गुणधर्म नाही" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "फाइलमध्ये मतभेदीय नावाची नोंदणी आधिपासूनच अस्तित्वात आहे" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' एन्क्रीप्ट पासवर्ड अंतर्गत परवानगी नाही" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "पासवर्ड कुटलिपी करतेवेळी त्रुटी" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' व `%s' विभागांना एकत्र करणे अशक्य" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "अत्युतमवापरकर्ता हक्कासह कार्यान्वीत होत नाही" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "शॅडो फाइल उपलब्ध नाही -- अकार्यान्वीत करत आहे" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap लायब्ररी प्रारंभ करतेवेळी त्रुटी" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "%d आवृत्ती करीता LDAP शिष्टाचार निश्चित करू शकले नाही" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP सर्वरशी TLS मध्यस्थी करू शकला नाही" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP सर्वरशी एकत्रीत राहु शकले नाही" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP सर्वरशी एकत्रीत राहु शकले नाही, पहिला प्रयत्न `%s' स्वरूपी: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "वापरकर्ता वस्तुकडे %s गुणधर्म नाही" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "वापरकर्ता वस्तु `%s' विना निर्मित" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP संचयीका नोंदणी निर्माण करतेवेळी त्रुटी: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP संचयीका संपादन करतेवेळी त्रुटी: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP संचयीका नोंदणी पुनःनामांकित करतेवेळी त्रुटी: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "वस्तुकडे %s गुणधर्म नाही" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP संचयीका नोंदणी काढुन टाकतेवेळी त्रुटी: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "वस्तुकडे %s गुणधर्म नाही" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "असमर्थीत पासवर्ड एनक्रिप्शन योजना" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP डिरेक्ट्रीमध्ये वस्तु आढळले नाही" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s' गुणधर्म आढळले नाही" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "LDAP डिरेक्ट्रीमध्ये %s करीता पासवर्ड निश्चित करतेवेळी त्रुटी: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP सर्वर नाव" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP सर्च बेस DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP बाइंड DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP बाइंड पासवर्ड" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL वापरकर्ता" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL अधिप्रमाणन वापरकर्ता" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "वापरकर्ता निर्माण करतेवेळी Cyrus SASL त्रुटी: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "वापरकर्ता काढुन टाकतेवेळी Cyrus SASL त्रुटी: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL प्रारंभ करतेवेऴी त्रुटी: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "मुख्य संचयीका निर्माण करतेवेळी त्रुटी" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "वापरकर्त्यास मुख्य संचयीका काढुन टाकतेवेळी त्रुटी" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "वापरकर्त्यास मुख्य संचयीका स्थानांतर करतेवेळी त्रुटी" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s प्रारंभ करतेवेळी त्रुटी: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "अवैध ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd रहीत समुह शोधत आहे.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s नामांकीत समुह शोधत आहे.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd रहीत वापरकर्त्यास शोधत आहे.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s नामांकीत वापरकर्ता शोधत आहे.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "नोंदणी आढळली नाही.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "सुचना यशस्वी.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "सुचना अयशस्वी.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "मुलभूत वापरकर्ता वस्तु श्रेणी:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "मुलभूत वापरकर्ता गुणधर्म नाव:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "मुलभूत वापरकर्त्याचे गुणधर्म मिळवा:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "वापरकर्ता संरचनाची प्रत बनवित आहे:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "अगाऊ फाइल `%s' अस्तित्वात आहे व ती सर्वसाधारण फाइल नाही" #~ msgid "backup file size mismatch" #~ msgstr "प्रतिकृती फॉईल आकार जुळत नाही" po/ms.po000066400000000000000000001032501471266067600124730ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Sharuzzaman Ahmat Raslan , 2004, 2006 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-07-24 03:21+0000\n" "Last-Translator: Ahmed Noor Kader Mustajir Md Eusoff \n" "Language-Team: Malay \n" "Language: ms\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: Weblate 4.18.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Gagal untuk mengurangkan kepentingan.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Ralat dalaman.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s tidak dibenarkan untuk mengubah maklumat finger bagi %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Konteks pengguna tidak diketahui" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Tidak dapat menetapkan konteks default untuk /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Ralat memulakan PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Pengesahan gagal untuk %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Ralat dalaman PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Pengguna tidak diketahui disahkan.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Pengguna tidak sepadan.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "HARI" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[PILIHAN...] pengguna" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Ralat hujah penelitian: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Tiada nama pengguna dinyatakan.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Ralat memulakan %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Pengguna %s tidak wujud.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Akaun dikunci.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Akaun tidak dikunci.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum:\tTiada\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Amaran:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Tidak aktif:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Tidak sekali" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Perubahan Terakhir:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Katalaluan Luput:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Katalaluan Tidak Aktif:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Akaun Luput:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Gagal menukar maklumat usia untuk %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[PILIHAN...] [pengguna]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Tiada pengguna dinyatakan, tiada nama untuk uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Menukar maklumat finger untuk %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nama Penuh" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nama keluarga" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nama Diberi" #: apps/lchfn.c:172 msgid "Office" msgstr "Pejabat" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefon Pejabat" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon Rumah" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Alamat E-Mel" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Maklumat finger tidak bertukar: ralat masukan.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Maklumat finger berubah.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Maklumat finger tidak berubah: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Menukar shell untuk %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Shell Baru" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell tidak berubah: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell berubah.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] kumpulan" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Tiada nama kumpulan dinyatakan.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID kumpulan %s tidak sah\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Gagal mencipta kumpulan: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Kumpulan %s tidak wujud.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Kumpulan %s tidak dapat dipadam: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Kedua-dua L dan U dinyatakan.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Gagal untuk menetapkan katalaluan bagi kumpulan %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Kumpulan %s tidak dapat dikunci: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Kumpulan %s tidak dapat dinyahkunci: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Kumpulan %s tidak dapat diubahsuai: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Ralat melihat %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Tiada nama kumpulan dinyatakan, menggunakan %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Tiada nama kumpulan dinyatakan, tiada nama untuk gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Tiada nama pengguna dinyatakan, menggunakan %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[PILIHAN...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Ralat membuka `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Ralat mencipta akaun untuk `%s': baris tidak diformat dengan betul.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID pengguna tidak sah %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Enggan mencipta akaun dengan UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Ralat mencipta kumpulan untuk `%s' dengan GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Ralat mencipta direktori rumah untuk %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Ralat menetapkan katalaluan permulaan untuk %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Ralat mencipta akaun pengguna untuk %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Menukar katalaluan untuk %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Katalaluan baru" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Katalaluan baru (sahkan)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Katalaluan tidak sepadan, cuba lagi.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Pertukaran katalaluan dibatalkan.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Ralat menetapkan katalaluan untuk pengguna %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Ralat menetapkan katalaluan untuk kumpulan %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Katalaluan ditukar.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Kumpulan %jd tidak wujud\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Ralat mencipta kumpulan `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Gagal mencipta akaun: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Ralat mencipta %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Pengguna %s tidak dapat dipadam: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s tidak mempunyai nombor gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Tiada kumpulan dengan GID %jd wujud, tidak membuang.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Kumpulan dengan GID %jd tidak mempunyai nama kumpulan.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Kumpulan %s tidak dapat dipadam: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ralat membuang direktori rumah untuk pengguna" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Gagal untuk menetapkan katalaluan bagi pengguna %s: %s\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Pengguna %s tidak dapat dikunci: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Pengguna %s tidak dapat dinyahkunci: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Pengguna %s tidak dapat diubahsuai: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Kumpulan %s tidak dapat diubahsuai: %s\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Tiada direktori rumah lama untuk %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Tiada direktori rumah baru untuk %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Ralat memindahkan %s ke %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "tidak dapat membuka fail tetapan `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "tidak dapat stat fail tetapan `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "fail tetapan `%s' adalah terlalu besar" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "tidak dapat membaca fail tetapan `%s': %s" #: lib/error.c:62 msgid "success" msgstr "berjaya" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul dimatikan oleh tetapan" #: lib/error.c:66 msgid "generic error" msgstr "ralat umum" #: lib/error.c:68 msgid "not enough privileges" msgstr "tidak cukup kelebihan" #: lib/error.c:70 msgid "access denied" msgstr "tiada kebenaran" #: lib/error.c:72 msgid "bad user/group name" msgstr "nama pengguna/kumpulan buruk" #: lib/error.c:74 msgid "bad user/group id" msgstr "id pengguna/kumpulan buruk" #: lib/error.c:76 msgid "user/group name in use" msgstr "nama pengguna/kumpulan sedang digunakan" #: lib/error.c:78 msgid "user/group id in use" msgstr "id pengguna/kumpulan sedang digunakan" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ralat memanipulasi sifat terminal" #: lib/error.c:82 msgid "error opening file" msgstr "ralat membuka fail" #: lib/error.c:84 msgid "error locking file" msgstr "ralat mengunci fail" #: lib/error.c:86 msgid "error statting file" msgstr "ralat stat fail" #: lib/error.c:88 msgid "error reading file" msgstr "ralat membaca fail" #: lib/error.c:90 msgid "error writing to file" msgstr "ralat menulis ke fail" #: lib/error.c:92 msgid "data not found in file" msgstr "data tidak ditemui dalam fail" #: lib/error.c:94 msgid "internal initialization error" msgstr "ralat permulaan dalaman" #: lib/error.c:96 msgid "error loading module" msgstr "ralat memuatkan modul" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "ralat menyelesaikan simbol dalam modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "versi pustaka/modul tidak sepadan" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "menyahkunci akan membuatkan medan katalaluan kosong" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "ralat tidak diketahui" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "tiada fungsi permulaan %s dalam `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "versi modul tidak sepadan dalam `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul `%s' tidak mentakrif `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ralat membaca sifat terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ralat menetapkan sifat terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ralat membaca dari terminal" #: lib/user.c:218 msgid "name is not set" msgstr "nama tidak ditetapkan" #: lib/user.c:223 msgid "name is too short" msgstr "nama adalah terlalu pendek" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "nama adalah terlalu panjang (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "nama mengandungi aksara bukan-ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "nama mengandungi aksara kawalan" #: lib/user.c:249 msgid "name contains whitespace" msgstr "nama mengandungi ruangputih" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "nama bermula dengan tanda sempang" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "nama mengandungi aksara tidak sah `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "pengguna %s tidak mempunyai UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "kumpulan %s tidak mempunyai GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "pengguna %jd tidak mempunyai nama" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "kumpulan %jd tidak mempunyai nama" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "pengguna tidak mempunyai nama mahupun UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "kumpulan tidak mempunyai nama mahupun GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Nilai default bagi medan %s tidak sah: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ralat mengunci fail: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "tidak dapat menetapkan konteks keselamatan bagi `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "tidak dapat menetapkan konteks keselamatan default kepada `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "tidak dapat menetapkan konteks keselamatan bagi `%s': %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "tidak dapat membuka `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "tidak dapat stat `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "ralat mencipta `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Ralat menukar pemilik untuk `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Ralat membaca `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Ralat menulis `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "tidak dapat membaca dari `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Ralat memindahkan %s ke %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Ralat membuka `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Ralat membaca `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Ralat membaca `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "objek entiti tidak mempunyai ciri %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objek tidak mempunyai ciri %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "masukan telah ada dalam fail" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "tidak dapat menulis ke `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "objek entiti tidak mempunyai ciri %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "ralat mengenkrip katalaluan" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "tidak melaksanakan dengan kelebihan superuser" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "tiada fail bayang wujud -- mematikan" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ralat memulakan pustaka ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "tidak dapat menetapkan protokol LDAP ke versi %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "tidak dapat merunding TLS dengan pelayan LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "tidak dapat mengikat ke pelayan LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "tidak dapat mengikat ke pelayan LDAP, cubaan pertama sebagai `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "objek pengguna tidak mempunyai ciri %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "objek pengguna telah dicipta dengan tanpa `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "ralat mencipta masukan direktori LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "ralat mengubahsuai masukan direktori LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "ralat menamakan semula masukan direktori LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objek tidak mempunyai ciri %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "ralat membuang masukan direktori LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objek tidak mempunyai ciri %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "tiada objek sebegitu dalam direktori LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "tiada ciri `%s' dijumpai" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "ralat menetapkan katalaluan dalam direktori LDAP untuk %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nama Pelayan LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Asas Carian DN LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN Bind LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Katalaluan Bind LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Pengguna LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Pengguna Pengesahan LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL ralat mencipta pengguna: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL ralat membuang pengguna: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "ralat memulakan Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ralat mencipta direktori rumah untuk pengguna" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ralat membuang direktori rumah untuk pengguna" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ralat memindah direktori rumah untuk pengguna" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Ralat memulakan %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID tidak sah %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Mencari untuk kumpulan dengan ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Mencari untuk kumpulan bernama %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Mencari untuk pengguna dengan ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Mencari untuk pengguna bernama %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Masukan tidak dijumpai.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Prompt berjaya.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Prom gagal.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Kelas objek pengguna default:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nama atribut pengguna default:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Mendapatkan ciri-ciri pengguna default:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Menyalin struktur pengguna:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "fail salinan `%s' wujud dan bukan fail biasa" #~ msgid "backup file size mismatch" #~ msgstr "saiz fail salinan tidak sepadan" po/my.po000066400000000000000000000652131471266067600125070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2011-10-04 10:36+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: my\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/nb.po000066400000000000000000001113141471266067600124530ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Espen Stefansen , 2007 # Kjartan Maraas , 2012-2013 # Kjartan Maraas , 2001 # Kjartan Maraas , 2011 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-05-13 05:35-0400\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/fedora/" "language/nb/)\n" "Language: nb\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Feil under frislipp av privilegier.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Intern feil.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s er ikke autorisert for å endre finger-informasjon for %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Ukjent brukerkontekst" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Kan ikke sette forvalgt kontekst for /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Feil under initiering av PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autentisering feilet for %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Intern PAM-feil «%s».\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Ukjent bruker autentisert.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Feil med bruker\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "spør etter all informasjon" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "vis aldringsparametere for bruker" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minste antall dager mellom passordbytte" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DAGER" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maksimalt antall dager mellom passordbytte" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "dato for siste passordbytte i dager siden 1.1.1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "antall dager etter passordutløp før kontoen betraktes som inaktiv" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "passordutløpsdato i dager siden 1.1.1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "dager før utløp før varsling til bruker startes" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ALTERNATIV...] bruker" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Feil under lesing av argumenter: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Brukernavn ikke spesifisert.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Feil under initiering av %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Bruker %s eksisterer ikke.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Konto er låst.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Konto er ikke låst.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maksimum:»Ingen\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Advarsel:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inaktiv:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inaktiv:»Aldri\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Må bytte passord ved neste pålogging" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Aldri" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Siste Endring:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Passord Utløper:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Passord inaktivt:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Konto utgår:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Kunne ikke endre aldringsinformasjon for %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ALTERNATIV...] [bruker]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Brukernavn ikke spesifisert. Fant ikke navn for uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Endrer finger-informasjon for %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Fullt navn" #: apps/lchfn.c:151 msgid "Surname" msgstr "Etternavn" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Gitt navn" #: apps/lchfn.c:172 msgid "Office" msgstr "Kontor" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefon, arbeid" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon, hjemme" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-postadresse" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "finger-informasjon ikke endret: feil i inndata.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "finger-informasjon endret.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "finger-informasjon ikke endret: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Endrer skall for %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nytt skall" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Skallet ble ikke endret: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Skall endret.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "GID for ny gruppe" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "TALL" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "lag en systemgruppe" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ALTERNATIV...] gruppe" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Ingen gruppenavn spesifisert.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ugyldig gruppe-ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Oppretting av gruppe feilet: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Gruppe %s eksisterer ikke.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Kunne ikke slette gruppe %s: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "sett GID for gruppe" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "endre gruppe til gitt navn" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAVN" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "klartekstpassord for bruk med gruppen" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRENG" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "forhånds-hashet passord for bruk med gruppen" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "liste med administratorer som skal legges til" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "liste med administratorer som skal fjernes" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "liste med gruppemedlemmer som skal legges til" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "liste med gruppemedlemmer som skal fjernes" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "lås gruppe" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "lås opp gruppe" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Både -L og -U spesifisert.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Kunne ikke sette passord for gruppe %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Kunne ikke låse gruppe %s: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Kunne ikke låse opp gruppe %s: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Kunne ikke endre gruppe %s: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Feil under oppslag av %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "liste med medlemmer av en navngitt gruppe i stedet for gruppemedlemskap for " "navngitt bruker" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "vis kun informasjon om listemedlemskap med navn, og ikke UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Ingen gruppenavn spesifisert, bruker %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Ingen gruppenavn spesifisert. Fant ikke navn for gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Brukernavn ikke spesifisert, bruker %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s eksisterer ikke\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fil med brukerinformasjonsposter" #: apps/lnewusers.c:49 msgid "PATH" msgstr "STI" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "ikke lag hjemmekataloger" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "ikke lag e-postkøer" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ALTERNATIV...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Feil under åpning av «%s»: %s\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Feil under oppretting av konto for «%s»: linjen er ikke riktig formattert.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ugyldig bruker-ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Nekter oppretting av konto med UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Feil under oppretting av gruppe for «%s» med GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Nekter å bruke farlig hjemmekatalog «%s» for %s som forvalg\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Feil under oppretting av hjemmekatalog for %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Feil ved oppretting av e-postkø for %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Feil under setting av passord for %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Feil under oppretting av brukerkonto for %s: %s.\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "sett gruppepassord i stedet for brukerpassord" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nytt vanlig passord" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nytt kryptert passord" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "les klartekstpassord fra oppgitt deskriptor" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "les nytt kryptert passord fra oppgitt deskriptor" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Endrer passord for %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nytt passord" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nytt passord (bekreft)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Passordene er ikke like. Prøv igjen.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Endring av passord avbrutt.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Feil ved lesing fra fildeskriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Feil under setting av passord for bruker %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Feil under setting av passord for gruppe %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Passord endret.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "lag en systembruker" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS-informasjon for ny bruker" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "hjemmekatalog for ny bruker" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "katalog med filer for ny bruker" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "skall for ny bruker" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "UID for ny bruker" #: apps/luseradd.c:71 msgid "group for new user" msgstr "gruppe for ny bruker" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "ikke lag hjemmekatalog for bruker" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "ikke lag gruppe med samme navn som bruker" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "fullt navn for bruker" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "fornavn for bruker" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "etternavn for bruker" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "romnummer for ny bruker" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "telefonnummer for ny bruker" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "hjemmetelefon for ny bruker" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Gruppe %jd eksisterer ikke\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Feil under oppretting av gruppe «%s»: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Feil under oppretting av konto: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Feil under oppretting av %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Feil ved oppretting av e-postkø: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "ikke fjern brukers private gruppe hvis bruker har en" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "fjern brukers hjemmekatalog" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Bruker %s kunne ikke slettes: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s hadde ikke gid-nummer.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Det finnes ingen gruppe med GID %jd, fjernes ikke.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Gruppe med GID %jd hadde ikke et gruppenavn.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Gruppe %s kunne ikke slettes: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "feil under fjerning av hjemmekatalog for bruker" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Feil ved fjerning av e-postkø: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS-informasjon" #: apps/lusermod.c:61 msgid "home directory" msgstr "hjemmekatalog" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "flytt innhold i hjemmekatalog" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "sett skall for bruker" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "sett UID for bruker" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "sett primær GID for bruker" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "bytt brukernavn for bruker" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "klartekstpassord for bruker" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "forhånds-hashet passord for bruker" #: apps/lusermod.c:76 msgid "lock account" msgstr "lås konto" #: apps/lusermod.c:79 msgid "unlock account" msgstr "lås opp konto" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "sett fullt navn for bruker" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "sett fornavn for bruker" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "sett etternavn for bruker" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "sett romnummer for bruker" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "sett telefonnummer for bruker" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "sett hjemmetelefon for bruker" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Feil under setting av passord for bruker %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Bruker %s kunne ikke låses: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Bruker %s kunne ikke låses opp: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Advarsel: Gruppe med ID %jd eksisterer ikke\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Bruker %s kunne ikke endres: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Gruppe %s kunne ikke endres: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Ingen gammel hjemmekatalog for %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Ingen ny hjemmekatalog for %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Feil under flytting av %s til %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "kunne ikke åpne konfigurasjonsfil «%s»: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "kunne ikke kjøre stat på konfigurasjonsfil «%s»: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "konfigurasjonsfil «%s» er for stor" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "kunne ikke lese konfigurasjonsfil «%s»: %s" #: lib/error.c:62 msgid "success" msgstr "suksess" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul deaktivert av konfigurasjon" #: lib/error.c:66 msgid "generic error" msgstr "vanlig feil" #: lib/error.c:68 msgid "not enough privileges" msgstr "ikke tilstrekkelige privilegier" #: lib/error.c:70 msgid "access denied" msgstr "tilgang nektet" #: lib/error.c:72 msgid "bad user/group name" msgstr "ugyldig bruker-/gruppenavn" #: lib/error.c:74 msgid "bad user/group id" msgstr "ugyldig bruke-/gruppe-ID" #: lib/error.c:76 msgid "user/group name in use" msgstr "bruker-/gruppenavn i bruk" #: lib/error.c:78 msgid "user/group id in use" msgstr "bruker-/gruppe-ID i bruk" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "feil ved manipulering av terminalattributter" #: lib/error.c:82 msgid "error opening file" msgstr "feil under åpning av fil" #: lib/error.c:84 msgid "error locking file" msgstr "feil under låsing av fil" #: lib/error.c:86 msgid "error statting file" msgstr "feil under kjøring av stat() på fil" #: lib/error.c:88 msgid "error reading file" msgstr "feil under lesing av fil" #: lib/error.c:90 msgid "error writing to file" msgstr "feil under skriving til fil" #: lib/error.c:92 msgid "data not found in file" msgstr "data ikke funnet i fil" #: lib/error.c:94 msgid "internal initialization error" msgstr "intern feil under initiering" #: lib/error.c:96 msgid "error loading module" msgstr "feil under lasting av modul" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "feil under søk etter symbol i modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "feil med bibliotek-/modulversjon" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "hvis du låser opp vil passord-feltet stå tomt" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ugyldig verdi for attributt" #: lib/error.c:107 msgid "invalid module combination" msgstr "ugyldig kombinasjon av moduler" #: lib/error.c:109 #, fuzzy msgid "user's home directory not owned by them" msgstr "hjemmekatalog for ny bruker" #: lib/error.c:115 msgid "unknown error" msgstr "ukjent feil" #: lib/misc.c:240 msgid "invalid number" msgstr "ugyldig nummer" #: lib/misc.c:254 msgid "invalid ID" msgstr "ugylig ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ingen initieringsfunksjon %s i `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "feil modulversjon i `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul «%s» definerer ikke «%s»" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "feil under lesing av terminalattributter" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "feil under setting av terminalattributter" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "feil ved lesing fra terminal" #: lib/user.c:218 msgid "name is not set" msgstr "navnet er ikke satt" #: lib/user.c:223 msgid "name is too short" msgstr "navnet er for kort" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "navnet er for langt (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "navnet inneholder ikke-ASCII tegn" #: lib/user.c:242 msgid "name contains control characters" msgstr "navnet inneholder kontrolltegn" #: lib/user.c:249 msgid "name contains whitespace" msgstr "navnet inneholder tomrom" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "navnet starter med bindestrek" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "navnet inneholder ugyldig tegn «%c»" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "bruker %s har ingen UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "bruker %s ble ikke funnet" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "gruppe %s har ingen GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "gruppen %s ble ikke funnet" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "bruker %jd har ikke navn" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Gruppe %jd har ikke navn" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "bruker har hverken navn eller en UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "gruppen har hverken et navn eller en GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Nekter å bruke farlig hjemmekatalog «%s» som forvalg" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ugyldig standardverdi for felt %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "feil under låsing av fil: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "kunne ikke finne forvalgt sikkerhetskontekst: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "fant ikke sikkerhetskontekst for «%s»: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "kunne ikke sette forvalgt sikkerhetskontekst til «%s»: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "kunne ikke finne forvalgt sikkerhetskontekst: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "kan ikke bestemme sikkerhetskontekst for «%s»: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "kunne ikke åpne `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "kunne ikke kjøre stat på `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "feil under oppretting av `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Feil under endring av eierskap for «%s»: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Feil ved bytte av modus for «%s»: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Feil under lesing av `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Feil under skriving av `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "kunne ikke lese fra `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Feil under flytting av %s til %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Feil ved bytte av modus for «%s»: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Feil under lesing av `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Feil under lesing av `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "entitetsobjekt har ingen %s-attributt" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objektet har ikke attributt %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s verdi «%s»: «:» ikke tillatt" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s verdi «%s»: «:» ikke tillatt" #: modules/files.c:1136 msgid "entry already present in file" msgstr "oppføringen er allerede i filen" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "kunne ikke skrive til «%s»: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entitetsobjekt har ingen %s-attributt" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "oppføring med navnekonflikt finnes allerede i filen" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "«:» er ikke tillatt i krypterte passord" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "feil under kryptering av passord" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "modulene «%s» og «%s» kan ikke brukes sammen" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "kjører ikke med superbruker-privilegier" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "ingen skyggefil finnes -- deaktiverer" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "feil under initiering av ldap-bibliotek" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "kunne ikke sette LDAP-protokoll til versjon %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "kunne ikke forhandle TLS med LDAP-tjener" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "kunne ikke binde til LDAP-tjener" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "kunne ikke binde til LDAP-tjener, prøvde først som «%s»: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "bruker-objektet hadde ingen %s-attributt" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "brukerobjektet ble opprettet uten `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "feil under oppretting av LDAP-katalogoppføring: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "feil under endring av LDAP-katalogoppføring: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "feil under endring av navn på LDAP-katalogoppføring: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objektet hadde ingen %s-attributt" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "feil under fjerning av LDAP-katalogoppføring: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objektet har ikke attributt %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "ikke støttet schema for kryptering av passord" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "ingen slike objekter i LDAP-katalogen" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ingen `%s'-attributt funnet" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "Feil under setting av passord i LDAP-katalog for %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Navn på LDAP-tjener" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind-passord" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL-bruker" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-autorisasjonsbruker" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Feil i Cyrus SASL under oppretting av bruker: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Feil i Cyrus SASL ved fjerning av bruker: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "feil ved initiering av Cyrus SASL: %s." #: python/admin.c:505 msgid "error creating home directory for user" msgstr "feil under oppretting av hjemmekatalog for bruker" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "feil under fjerning av hjemmekatalog for bruker" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "feil under flytting av hjemmekatalog for bruker" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Feil under initiering av %s: %s.\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ugylig ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Søker etter gruppe med ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Søker etter gruppe med navn %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Søker etter bruker med ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Søker etter bruker ved navn %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Oppføring ikke funnet.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Spørring fullført.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Spørring feilet.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Standardklasser for brukerobjekter:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Standardnavn for brukerattributter:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Henter standard brukerattributter:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopierer brukerstruktur:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "sikkerhetskopien «%s» eksisterer og er ikke en vanlig fil" #~ msgid "backup file size mismatch" #~ msgstr "feil størrelse på sikkerhetskopi" po/nds.po000066400000000000000000000657311471266067600126530ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Low German (http://www.transifex.com/projects/p/fedora/" "language/nds/)\n" "Language: nds\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] Bruker" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nienich" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Heeler Naam" #: apps/lchfn.c:151 msgid "Surname" msgstr "Tonaam" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Vornaam" #: apps/lchfn.c:172 msgid "Office" msgstr "Kontor" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Kontor Telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon to Huus" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-Post Anskrivt" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Neje Shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nejes Passwoord" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nejes Passwoord (nohmal)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Passwoord ännert.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "Erfolg" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "unbekannter Fehler" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/nl.po000066400000000000000000001131121471266067600124630ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Geert Warrink , 2009,2011-2013 # Miloslav Trmač , 2011 # Peter van Egdom , 2004, 2005, 2006, 2007, 2008 # Tino Meinen , 2003 # Geert Warrink , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-04-08 08:34-0400\n" "Last-Translator: Geert Warrink \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/fedora/language/" "nl/)\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Laten vallen privileges mislukt.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interne fout.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" "%s is niet geautoriseerd om de finger informatie van %s te veranderen\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Onbekende gebruiker context" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Instellen van standaard context voor /etc/passwd mislukt\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Fout bij initialiseren PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Authenticatie mislukt voor %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interne PAM fout `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Authenticatie voor onbekende gebruiker.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Gebruikers komen niet overeen.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "vraag om alle informatie" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "toon veroudering parameters voor de gebruiker" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minimale aantal dagen tussen wachtwoordveranderingen" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DAGEN" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maximale aantal dagen tussen wachtwoordveranderingen" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "datum van de laatste wachtwoordverandering in dagen sinds 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "aantal dagen na wachtwoord vervaldatum als account als inactief beschouwd " "wordt" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "wachtwoord vervaldatum in dagen sinds 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "dagen voor vervaldatum te beginnen met het waarschuwen van de gebruiker" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTIE...] gebruiker" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Fout bij verwerken argumenten: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Geen gebruikersnaam opgegeven.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Fout bij initialiseren van %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Gebruiker %s bestaat niet.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Account is vergrendeld.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Account is niet vergrendeld.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum:»geen\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Waarschuwing:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactief:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inactief:»nooit\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Wachtwoord moet bij de volgende keer inloggen vernieuwd worden" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nooit" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Laatste verandering:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Wachtwoord verloopt:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Wachtwoord inactief:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Account verloopt:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Aanpassen verloop informatie voor %s mislukt: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTIE...] [gebruiker]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Geen gebruikersnaam opgegeven, geen naam voor uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Finger informatie veranderen voor %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Volledige naam" #: apps/lchfn.c:151 msgid "Surname" msgstr "Achternaam" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Voornaam" #: apps/lchfn.c:172 msgid "Office" msgstr "Werk" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefoon werk" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefoon thuis" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Email adres" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger informatie niet veranderd: input fout.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger informatie veranderd.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger informatie niet veranderd: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Shell veranderen voor %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nieuwe shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell niet veranderd: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell veranderd.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid voor nieuwe groep" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "maak een systeemgroep aan" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTIE...] groep" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Geen groepsnaam opgegeven.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ongeldige groep ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Aanmaken groep mislukt: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Groep %s bestaat niet.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Groep %s kon niet worden verwijderd: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "stel GID in voor groep" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "verander groep om de voornaam te gebruiken" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAAM" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "platte tekst wachtwoord voor gebruik met groep" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRING" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "pre-hashed wachtwoord voor gebruik met groep" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "lijst van toe te voegen beheerders" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "lijst van te verwijderen beheerders" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "lijst van toe te voegen groepsleden" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "lijst van te verwijderen groepsleden" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "sluit groep" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "open groep" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Zowel -L als -U opgegeven.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Instellen wachtwoord voor groep %s mislukt: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Groep %s kon niet worden vergrendeld: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Groep %s kon niet worden ontgrendeld: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Groep %s kon niet worden aangepast: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Fout bij opzoeken %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "toon leden van een opgegeven groep in plaats van de groepslidmaatschappen " "van de opgegeven gebruiker" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "toon alleen lidmaatschap informatie volgens naam en niet UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Geen groepsnaam opgegeven, gebruik %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Geen groepsnaam opgegeven, geen naam voor gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Geen gebruikersnaam opgegeven, gebruik %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s bestaat niet.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "bestand met gebruikersinformatie records" #: apps/lnewusers.c:49 msgid "PATH" msgstr "PAD" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "maak geen persoonlijke mappen aan" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "maak geen mail spools aan " #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTIE...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Fout bij openen `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Fout bij aanmaken account voor `%s': regel onjuist opgemaakt.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ongeldige gebruiker ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Aanmaken account met UID 0 geweigerd.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Fout bij aanmaken groep voor `%s' met GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Weigering om standaard de gevaarlijke persoonlijke map `%s' voor %s te " "gebruiken\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Fout bij aanmaken persoonlijke map voor %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Fout bij het aanmaken van mail spool voor %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Fout bij instellen initiële wachtwoord voor %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Fout bij aanmaken gebruiker account voor %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "stel groepswachtwoord in plaats van gebruikerswachtwoord" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nieuw platte tekst wachtwoord" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nieuw versleuteld wachtwoord" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "lees nieuw platte tekst wachtwoord van gegeven descriptor" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "lees nieuw versleuteld wachtwoord van gegeven descriptor" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Wachtwoord veranderen voor %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nieuw wachtwoord" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nieuw wachtwoord (bevestigen)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Wachtwoorden komen niet overeen, probeer opnieuw.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Wachtwoord veranderen geannuleerd.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Fout bij het lezen van bestand descriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Fout bij instellen wachtwoord voor gebruiker %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Fout bij instellen wachtwoord voor groep %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Wachtwoord veranderd.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "maak een systeemgebruiker aan" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS informatie voor nieuwe gebruiker" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "persoonlijke map voor nieuwe gebruiker" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "map met bestanden voor de nieuwe gebruiker" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell voor nieuwe gebruiker" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid voor nieuwe gebruiker" #: apps/luseradd.c:71 msgid "group for new user" msgstr "groep voor nieuwe gebruiker" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "maak geen persoonlijke map aan voor gebruiker" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "maak geen groep aan met dezelfde naam als de gebruiker" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "algemene naam voor nieuwe gebruiker" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "voornaam voor nieuwe gebruiker" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "achternaam voor niruwe gebruiker" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "kamernummer voor nieuwe gebruiker" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "telefoonnummer voor nieuwe gebruiker" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "thuistelefoonnummer voor nieuwe gebruiker" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Groep %jd bestaat niet\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Fout bij aanmaken groep `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Aanmaken account mislukt: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Fout bij aanmaken %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Fout bij het aanmaken van mail spool: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" "verwijder de privé groep van de gebruiker niet, als de gebruiker die heeft" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "verwijder de persoonlijke map van de gebruiker" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Gebruiker %s kon niet worden verwijderd: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s heeft geen gid nummer.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Er bestaat geen groep met GID %jd, kan niet verwijderen.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Groep met GID %jd heeft geen groepsnaam.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Groep %s kon niet worden verwijderd: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Fout bij het verwijderen van persoonlijke map: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Fout bij het verwijderen van mail spool: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS informatie" #: apps/lusermod.c:61 msgid "home directory" msgstr "persoonlijke map" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "verplaats inhoud van persoonlijke map" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "stel shell voor gebruiker in" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "stel UID voor gebruiker in" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "stel primaire GID voor gebruiker in" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "verander inlognaam voor gebruiker" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "platte tekst wachtwoord voor de gebruiker" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "pre-hashed wachtwoord voor de gebruiker" #: apps/lusermod.c:76 msgid "lock account" msgstr "sluit account af" #: apps/lusermod.c:79 msgid "unlock account" msgstr "open account" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "stel algemene naam voor gebruiker in" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "stel voornaam voor gebruiker in" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "stel achternaam van gebruiker in" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "stel kamernummer voor gebruiker in" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "stel telefoonnummer voor gebruiker in" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "stel huistelefoonnummer voor gebruiker in" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Instellen wachtwoord voor gebruiker %s mislukt: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Gebruiker %s kon niet worden vergrendeld: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Gebruiker %s kon niet worden ontgrendeld: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Waarschuwing: Groep met ID %jd bestaat niet.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Gebruiker %s kon niet worden aangepast: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Groep %s kon niet worden aangepast: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Geen oude persoonlijke map voor %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Geen nieuwe persoonlijke map voor %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Fout bij verplaatsen van %s naar %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "kon configuratiebestand `%s' niet openen: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "kon de status van configuratiebestand `%s' niet opvragen: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "configuratiebestand `%s' is te groot" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "kon configuratiebestand `%s' niet lezen: %s" #: lib/error.c:62 msgid "success" msgstr "succes" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "module uitgezet door configuratie" #: lib/error.c:66 msgid "generic error" msgstr "generieke fout" #: lib/error.c:68 msgid "not enough privileges" msgstr "te weinig rechten" #: lib/error.c:70 msgid "access denied" msgstr "toegang geweigerd" #: lib/error.c:72 msgid "bad user/group name" msgstr "verkeerde gebruiker/groep naam" #: lib/error.c:74 msgid "bad user/group id" msgstr "verkeerde gebruiker/groep id" #: lib/error.c:76 msgid "user/group name in use" msgstr "gebruiker/groep naam in gebruik" #: lib/error.c:78 msgid "user/group id in use" msgstr "gebruiker/groep id in gebruik" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "fout bij manipuleren terminal attributen" #: lib/error.c:82 msgid "error opening file" msgstr "fout bij openen bestand" #: lib/error.c:84 msgid "error locking file" msgstr "fout bij vergrendelen bestand" #: lib/error.c:86 msgid "error statting file" msgstr "fout bij opvragen status van bestand" #: lib/error.c:88 msgid "error reading file" msgstr "fout bij lezen bestand" #: lib/error.c:90 msgid "error writing to file" msgstr "fout bij schrijven naar bestand" #: lib/error.c:92 msgid "data not found in file" msgstr "data niet in bestand gevonden" #: lib/error.c:94 msgid "internal initialization error" msgstr "interne initialisatie fout" #: lib/error.c:96 msgid "error loading module" msgstr "fout bij laden module" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "fout bij oplossen van symbool in module" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "bibliotheek/module versies komen niet overeen" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ontgrendelen zou het wachtwoord veld leeg maken" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ongeldige attribuut waarde" #: lib/error.c:107 msgid "invalid module combination" msgstr "ongeldige module combinatie" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "gebruiker is niet de eigenaar van zijn persoonlijke map" #: lib/error.c:115 msgid "unknown error" msgstr "onbekende fout" #: lib/misc.c:240 msgid "invalid number" msgstr "ongeldig nummer" #: lib/misc.c:254 msgid "invalid ID" msgstr "ongeldig ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "geen initialisatie functie %s in `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "module versies komen niet overeen in `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "module `%s' definieert `%s' niet" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "fout bij lezen terminal attributen" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "fout bij instellen terminal attributen" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "fout bij lezen van terminal" #: lib/user.c:218 msgid "name is not set" msgstr "naam is niet ingesteld" #: lib/user.c:223 msgid "name is too short" msgstr "naam is te kort" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "naam is te lang (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "naam bevat niet-ASCII karakters" #: lib/user.c:242 msgid "name contains control characters" msgstr "naam bevat controle karakters" #: lib/user.c:249 msgid "name contains whitespace" msgstr "naam bevat spaties of tabs" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "naam begint met een koppelteken" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "naam bevat ongeldig karakter `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "gebruiker %s heeft geen UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "gebruiker %s werd niet gevonden" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "groep %s heeft geen GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "groep %s werd niet gevonden" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "gebruiker %jd heeft geen naam" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "groep %jd heeft geen naam" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "gebruiker heeft zowel geen naam als geen UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "groep heeft zowel geen naam als geen GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Weigeren om standaard de gevaarlijke persoonlijke map `%s' te gebruiken" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ongeldige standaard waarde van veld %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "fout bij vergrendelen bestand: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "kon standaard beveiliging context niet verkrijgen: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "kon beveiliging context van `%s' niet verkrijgen: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "kon standaard beveiliging context niet instellen naar `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "kon standaard beveiliging context niet verkrijgen: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "kon beveiliging context voor `%s' niet bepalen: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "kon `%s' niet openen: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "kon status van `%s' niet opvragen: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "fout bij aanmaken `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Fout bij veranderen eigenaar van `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Fout bij het veranderen van de mode van `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Fout bij lezen van `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Fout bij schrijven van `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "kon niet lezen van `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Fout bij verplaatsen van %s naar %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Fout bij het veranderen van de mode van `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Fout bij lezen van `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Fout bij lezen van `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "entiteit object heeft geen %s attribuut" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "object heeft geen %s attribuut" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s waarde `%s': `:' niet toegestaan" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s waarde `%s': `:' niet toegestaan" #: modules/files.c:1136 msgid "entry already present in file" msgstr "item reeds aanwezig in bestand" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "kon niet naar `%s' schrijven: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entiteit object heeft geen %s attribuut" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "item met conflict gevende naam is reeds aanwezig in bestand" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' niet toegestaan in versleuteld wachtwoord" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "fout bij versleutelen wachtwoord" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "de `%s' en `%s' modules kunnen niet gecombineerd worden" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "zal niet uitvoeren met superuser rechten" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "geen schaduwbestand aanwezig -- uitzetten" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "fout bij initialiseren ldap bibliotheek" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "kon LDAP protocol niet instellen op versie %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "kon de TLS niet onderhandelen met LDAP server" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "kon niet binden met de LDAP server" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "kon niet binden met de LDAP server, eerste poging als `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "gebruiker object had geen %s attribuut" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "gebruiker object is aangemaakt zonder `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "fout bij aanmaken LDAP map item: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "fout bij aanpassen LDAP map item: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "fout bij hernoemen LDAP map item: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "object had geen %s attribuut" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "fout bij verwijderen LDAP map ingang: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "object heeft geen %s attribuut" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "niet ondersteund wachtwoord encryptie schema" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "zo'n object niet gevonden in LDAP map" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "geen `%s' attribuut gevonden" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "fout bij instellen wachtwoord in LDAP map voor %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP server naam" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP zoek basis DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind wachtwoord" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL gebruiker" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL autorisatie gebruiker" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL fout bij aanmaken gebruiker: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL fout bij verwijderen gebruiker: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "fout bij initialiseren Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "fout bij aanmaken persoonlijke map voor gebruiker" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "fout bij verwijderen persoonlijke map voor gebruiker" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "fout bij verplaatsen persoonlijke map voor gebruiker" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Fout bij initialiseren %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ongeldig ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Zoeken naar groep met ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Zoeken naar groep met naam %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Zoeken naar gebruiker met ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Zoeken naar gebruiker met naam %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Ingang niet gevonden.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Opvragen geslaagd.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Opvragen mislukt.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Standaard gebruiker object klassen:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Standaard gebruiker attribuut namen:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Ophalen standaard gebruiker attributen:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Gebruiker structuur kopiëren:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "back-up bestand `%s' bestaat en is geen regulier bestand" #~ msgid "backup file size mismatch" #~ msgstr "grootte van het back-up bestand komt niet overeen" po/or.po000066400000000000000000001366521471266067600125100ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Manoj Kumar Giri , 2008 # Manoj Kumar Giri , 2008, 2009, 2011, 2012 # Miloslav Trmač , 2011 # Subhransu Behera , 2006, 2007 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Oriya (http://www.transifex.com/projects/p/fedora/language/" "or/)\n" "Language: or\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "ବିଶେଷ ଆକର୍ଷଣ କୁ ତ୍ଯାଗ କରିବା ସମୟରେ ତୃଟି\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "ଆଭ୍ଯନ୍ତରୀଣ ତୃଟି\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ଟି ବୈଧିକ୍ରୁତ ନୁହେଁ %s finger ସୂଚନା କୁ ପରିବର୍ତନ କରିବା ପାଇଁ\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "ଅଜଣା ଚାଳକ ପ୍ରସଙ୍ଗ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd ପ୍ରସଙ୍ଗ ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ପ୍ରସଙ୍ଗ କୁ ସେଟ କରି ପାରିବ ନାହିଁ \n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "ପି.ଏ.ଏମ୍. କୁ ପ୍ରାରମ୍ଭିକରଣ କରିବା ସମୟରେ ତୃଟି\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s ପାଇଁ ବୈଧିକରଣ ବିଫଳ ହୋଇଗଲା \n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "ଆଭ୍ଯନ୍ତରୀଣ ପି.ଏ.ଏମ୍. ତୃଟି `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "ଅଜଣା ଚାଳକ ଟି ବୈଧିକ୍ରୁତ ହୋଇ ଯାଇଛି\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ଚାଳକ ଟି ମିଶୁ ନାହିଁ\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ପସନ୍ଦ...] ଚାଳକ" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "ସ୍ବତନ୍ତ୍ରଚର ମାନଙ୍କୁ ବିଶ୍ଳେଷଣ କରିବା ସମୟରେ ତୃଟି: %s \n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "କୌଣସି ଚାଳକ ନାମ ଉଲ୍ଲେଖିତ ହୋଇ ନାହିଁ \n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s କୁ ପ୍ରାରମ୍ଭିକରଣ କରିବା ସମୟରେ ତୃଟି: %s \n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s ଚାଳକ ଟିି ଅବସ୍ଥିତ ନୁହେଁ \n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "ହିସାବ ଖାତା ଟି ଅପରିବର୍ତ୍ତନୀୟ ଅଛି \n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "ହିସାବ ଖାତା ଟି ଅପରିବର୍ତ୍ତନୀୟ ନାହିଁ \n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "ସର୍ବନିମ୍ନ:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "ସର୍ବାଧିକ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "ଚେତାବନୀ:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "ନିଷ୍କ୍ରିୟ:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "କେବେ ନୁହେଁ" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "ଶେଷ ପରିବର୍ତନ:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଟି ଅକ୍ରୁତ କାର୍ଯ୍ଯ ହୋଇ ଯାଏ:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଟି ନିଷ୍କ୍ରିୟ ଅଟେ:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "ହିସାବ ଖାତା ଟି ଅକ୍ରୁତ କାର୍ଯ୍ଯ ହୋଇ ଯାଏ:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s ପାଇଁ aging ସୂଚନା କୁ ରୂପାନ୍ତରଣ କରିବାକୁ ଅସଫଳ: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ପସନ୍ଦ...] [ଚାଳକ]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "କୌଣସି ଚାଳକ ନାମ ଉଲ୍ଲଖିତ ହୋଇ ନାହିଁ, %d ୟୁ.ଆଇ.ଡି. ପାଇଁ କୌଣସି ନାମ ନାହିଁ \n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s ପାଇଁ finger ସୂଚନା କୁ ପରିବର୍ତନ କରୁଅଛି \n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "ପୂରା ନାମ" #: apps/lchfn.c:151 msgid "Surname" msgstr "କୁଳ ନାମ" #: apps/lchfn.c:162 msgid "Given Name" msgstr "ଦିଆ ଯାଇଥିବା ନାମ" #: apps/lchfn.c:172 msgid "Office" msgstr "କାର୍ଯ୍ଯାଳୟ" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "କାର୍ଯ୍ଯାଳୟ ଫୋନ" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "ଘର ଫୋନ" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ଇ-ଡାକ ଠିକଣା ମାନ" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger ସୂଚନା ଟି ପରିବର୍ତିତ ହୋଇ ନାହିଁ: ନିବେଶ ତୃଟି \n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger ସୂଚନା ଟି ପରିବର୍ତିତ ହୋଇ ଗଲା \n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger ସୂଚନା ଟି ପରିବର୍ତିତ ହେଲା ନାହିଁ: %s \n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s ପାଇଁ ଆବରଣ କୁ ପରିବର୍ତନ କରୁଅଛି \n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "ନୂତନ ଆବରଣ" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "ଆବରଣ ଟି ପରିବର୍ତିତ ହେଲା ନାହିଁ: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "ଆବରଣ ପରିବର୍ତିତ ହୋଇ ଗଲା \n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ପସନ୍ଦ...] ସମୂହ" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "କୌଣସି ସମୂହ ନାମ ଉଲ୍ଲଖିତ ହୋଇ ନାହିଁ \n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ସମୂହ ର ଅବୈଧ ପରିଚୟ %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "ସମୂହ କୁ ସୃଷ୍ଟି କରିବା କାର୍ଯ୍ଯ ବିଫଳ ହୋଇ ଗଲା: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s ସମୂହ ଟି ଅବସ୍ଥିତ ନାହିଁ \n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s ସମୂହ କୁ ଅପସାରଣ କରି ହେଲା ନାହିଁ: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "ଉଭୟ -L ଏବଂ -U କୁ ଉଲ୍ଲଖିତ କରା ଯାଇଛି \n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s ସମୂହ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ ସେଟ କରିବା ରେ ଅସଫଳ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s ସମୂହ ଟି ଲକ କରି ହେଲା ନାହିଁ: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s ସମୂହ ଟି ଅନ-ଲକ କରି ହେଲା ନାହିଁ: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s ସମୂହ ଟି ରୂପାନ୍ତରିତ କରି ହେଲା ନାହିଁ: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s କୁ ଅବଲୋକନ କରିବା ସମୟରେ ତୃଟି: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "%s କୁ ବ୍ଯବହାର କରି, କୌଣସି ସମୂହ ନାମ ଉଲ୍ଲେଖିତ ହୋଇ ନାହିଁ \n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "କୌଣସି ସମୂହ ନାମ ଉଲ୍ଲଖିତ ହୋଇ ନାହିଁ, %d ୟୁ.ଆଇ.ଡି. ପାଇଁ କୌଣସି ନାମ ନାହିଁ \n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "%s କୁ ବ୍ଯବହାର କରି, କୌଣସି ଚାଳକ ନାମ ଉଲ୍ଲେଖିତ ହୋଇ ନାହିଁ \n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s ସ୍ଥିତବାନ ନୁହଁ\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ପସନ୍ଦ...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' କୁ ଖୋଲିବା ସମୟରେ ତୃଟି: %s\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' ପାଇଁ ହିସାବ ଖାତା ଖୋଲିବା ସମୟରେ ତୃଟି: ଲାଇନ ଟି ସଠିକ ଭାବ ରେ ସଜା ଯାଇ ନାହିଁ \n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ଚାଳକ ର ଅବୈଧ ପରିଚୟ %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "ୟୁ.ଆଇ.ଡି. ୦ ସହିତ ଗୋଟିଏ ହିସାବ ଖାତା ସୃଷ୍ଟି କରିବା ପାଇଁ ଅସ୍ବୀକାର କରୁଅଛି \n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' ପାଇଁ %jd ଜି.ଆଇ.ଡି. ସହିତ ଗୋଟିଏ ସମୂହ ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "ବିପଦ ଜନକ ହୋମ ଡିରେକ୍ଟୋରୀ `%s' କୁ %s ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ବ୍ୟବହାର କରିବା ପାଇଁ ମନା " "କରୁଅଛି\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s ପାଇଁ ଗୋଟିଏ ମୂଳ ସ୍ଥାନ ଡିରେକ୍ଟୋରି ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s ପାଇଁ ପ୍ରାରମ୍ଭିକ ପ୍ରବେଶ ସଙ୍କେତ ସେଟ୍ କରିବା ସମୟରେ ତୃଟି: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s ପାଇଁ ଗୋଟିଏ ଚାଳକ ହିସାବ ଖାତା ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ କୁ ପରିବର୍ତନ କରୁଅଛି \n" #: apps/lpasswd.c:113 msgid "New password" msgstr "ନୂତନ ପ୍ରବେଶ ସଙ୍କେତ" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "ନୂତନ ପ୍ରବେଶ ସଙ୍କେତ (ନିଶ୍ଚିତ କରନ୍ତୁ)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଟି ମିଶ୍ୁ ନାହିଁ, ପୁନର୍ବାର ପ୍ରଚେଷ୍ଟା କରନ୍ତୁ \n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "ପ୍ରବେଶ ସଙ୍କେତ ର ପରିବର୍ତନ ବାତିଲ ହୋଇ ଗଲା \n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ଫାଇଲ ବର୍ଣ୍ଣନାକାରୀ %d ରୁ ପଢିବାରେ ତ୍ରୁଟି।\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s ଚାଳକ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ ସେଟ କରିବା ସମୟରେ ତୃଟି: %s \n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s ସମୂହ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ ସେଟ କରିବା ସମୟରେ ତୃଟି: %s \n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଟି ପରବର୍ତିତ ହୋଇ ଗଲା \n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd ସମୂହ ଟି ଅବସ୍ଥିତ ନୁହେଁ \n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' ସମୂହ ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s \n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "ହିସାବ ଖାତା ର ସୃଷ୍ଟି କରିବା ବିଫଳ ହୋଇ ଗଲା: %s \n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s କୁ ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "%s ଚାଳକ କୁ ଅପସାରଣ କରି ହେଲା ନାହିଁ: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ର ଗୋଟିଏ ଜି.ଆଇ.ଡି. ନମ୍ବର ନାହିଁ \n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "%jd ଜି.ଆଇ.ଡି. ଥିବା କୌଣସି ସମୂହ ଅବସ୍ଥିତ ନାହିଁ, ଅପସ୍ରୁତ ହେଉ ନାହିଁ \n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "%jd ଜି.ଆଇ.ଡି. ଥିବା କୌଣସି ସମୂହ ମାନଙ୍କ ର କୌଣସି ସମୂହ ନାମ ନାହିଁ \n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s ସମୂହ କୁ ଅପସାରଣ କରି ହେଲା ନାହିଁ: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ଚାଳକ ପାଇଁ ମୂଳ ସ୍ଥାନ ଡିରେକ୍ଟୋରି କୁ ଅପସାରଣ କରିବା ସମୟରେ ତୃଟି" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s ଚାଳକ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ ସେଟ କରିବା ରେ ବିଫଳ: %s \n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "%s ଚାଳକ କୁ ଲକ୍ କରି ହେଲା ନାହିଁ: %s \n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "%s ଚାଳକ କୁ ଆନ-ଲକ୍ କରି ହେଲା ନାହିଁ: %s \n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "ଚେତାବନୀ: ID %jd ସହିତ ସମୂହ ଟି ଅବସ୍ଥିତ ନୁହେଁ \n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "%s ଚାଳକ ଟି ରୂପାନ୍ତରିତ ହୋଇ ପାରିଲା ନାହିଁ: %s \n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s ସମୂହ ଟି ରୂପାନ୍ତରିତ ହୋଇ ପାରିଲା ନାହିଁ: %s \n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s ପାଇଁ କୌଣସି ମୂଳସ୍ଥାନ ଡିରେକ୍ଟୋରି ନାହିଁ \n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s ପାଇଁ କୌଣସି ନୂତନ ମୂଳସ୍ଥାନ ଡିରେକ୍ଟୋରି ନାହିଁ \n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s ରୁ %s କୁ ସ୍ଥାନାସ୍ତରିତ କରିବା ସମୟରେ ତୃଟି: %s \n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' ବିନ୍ଯାସ ଫାଇଲ କୁ ଖୋଲି ପାରିଲା ନାହିଁ: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' ବିନ୍ଯାସ ଫାଇଲ କୁ ପ୍ରାରମ୍ଭ କରି ପାରିଲା ନାହିଁ: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "`%s' ବିନ୍ଯାସ ଫାଇଲ ଟି ଖୁବ ବଡ ଅଟେ" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "`%s' ବିନ୍ଯାସ ଫାଇଲ କୁ ପଢି ପାରିଲା ନାହିଁ: %s" #: lib/error.c:62 msgid "success" msgstr "ସଫଳ" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "ଏକକାଂଶ ଟି ବିନ୍ଯାସ ଦ୍ବାରା ନିଷ୍କ୍ରିୟ ହୋଇ ଗଲା" #: lib/error.c:66 msgid "generic error" msgstr "ବର୍ଗୀୟ ତୃଟି" #: lib/error.c:68 msgid "not enough privileges" msgstr "ଯଥେଷ୍ଟ ବିଶେଷ ଆକର୍ଷଣ ନାହିଁ" #: lib/error.c:70 msgid "access denied" msgstr "ପ୍ରବେଶାନୁମତି ଅସ୍ବୀକ୍ରୁତ ହୋଇ ଗଲା" #: lib/error.c:72 msgid "bad user/group name" msgstr "ଖରାପ ଚାଳକ/ସମୂହ ନାମ" #: lib/error.c:74 msgid "bad user/group id" msgstr "ଖରାପ ଚାଳକ/ସମୂହ ପରିଚୟ" #: lib/error.c:76 msgid "user/group name in use" msgstr "ଚାଳକ/ସମୂହ ନାମ ବ୍ଯବହ୍ରୁତ ହେଉଅଛି" #: lib/error.c:78 msgid "user/group id in use" msgstr "ଚାଳକ/ସମୂହ ପରିଚୟ ବ୍ଯବହ୍ରୁତ ହେଉଅଛି" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ଟର୍ମିନାଲ ର ଗୁଣ ମାନଙ୍କୁ ପ୍ରକଳିତ କରୁଅଛି" #: lib/error.c:82 msgid "error opening file" msgstr "ଫାଇଲ ଖୋଲିବା ସମୟରେ ତୃଟି" #: lib/error.c:84 msgid "error locking file" msgstr "ଫାଇଲ କୁ ଲକ କରିବା ସମୟରେ ତୃଟି" #: lib/error.c:86 msgid "error statting file" msgstr "ଫାଇଲ ଉପରେ ଷ୍ଟାର୍ଟ କରିବା ସମୟରେ ତୃଟି" #: lib/error.c:88 msgid "error reading file" msgstr "ଫାଇଲ ର ପଠନ ସମୟରେ ତୃଟି" #: lib/error.c:90 msgid "error writing to file" msgstr "ଫାଇଲ େର ଲିଖନ ସମୟରେ ତୃଟି" #: lib/error.c:92 msgid "data not found in file" msgstr "ଫାଇଲ ରେ ତଥ୍ଯ ମିଳିଲା ନାହିଁ" #: lib/error.c:94 msgid "internal initialization error" msgstr "ଆଭ୍ଯନ୍ତରୀଣ ପ୍ରାରମ୍ଭିକୀକରଣ ତୃଟି" #: lib/error.c:96 msgid "error loading module" msgstr "ଏକକାଂଶ କୁ ଧାରଣ କରିବା ସମୟରେ ତୃଟି" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "ଏକକାଂଶ ରେ ପ୍ରତୀକ ର ସମାଧାନ କରିବା ସମୟରେ ତୃଟି" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "ପାଠାଗାର/ଏକକାଂଶ ର ସଂସ୍କରଣ ମିଶୁ ନାହିଁ" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ଆଲ-ଲକ କଲେ ଏହା ପ୍ରବେଶ ସଙ୍କେତ ର କ୍ଷେତ୍ର କୁ ଖାଲି କରି ଦେବ" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ଅବୈଧ ବସ୍ତୁ ମୂଲ୍ୟ" #: lib/error.c:107 msgid "invalid module combination" msgstr "ଅବୈଧ ଏକକାଂଶ ଯୁଗଳ" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "ଅଜଣା ତୃଟି" #: lib/misc.c:240 msgid "invalid number" msgstr "ଅବୈଧ ସଂଖ୍ୟା" #: lib/misc.c:254 msgid "invalid ID" msgstr "ଅବୈଧ ପରିଚୟ" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "କୌଣସି ପ୍ରାରମ୍ଭିକୀକରଣ %s କାର୍ଯ୍ଯ `%s' ରେ ନାହିଁ" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' ରେ ଏକକାଂଶ ର ସଂସ୍କରଣ ମିଶୁ ନାହିଁ" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' ଏକକାଂଶ ଟି `%s' କୁ ବ୍ଯାଖ୍ଯା କରୁନାହିଁ" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ଟର୍ମିନାଲ ର ଗୁଣ ମାନଙ୍କୁ ପଢିବା ସମୟରେ ତୃଟି" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ଟର୍ମିନାଲ ର ଗୁଣ ମାନଙ୍କୁ ସେଟ ସମୟରେ ତୃଟି" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ଟର୍ମିନାଲ ରୁ ପଢିବା ସମୟରେ ତୃଟି" #: lib/user.c:218 msgid "name is not set" msgstr "ନାମ ଟି ସେଟ ହୋଇ ନାହିଁ" #: lib/user.c:223 msgid "name is too short" msgstr "ନାମ ଟି ଅତି କ୍ଷୁଦ୍ର ଅଟେ" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "ନାମ ଟି ଅତ୍ଯଧିକ ବ୍ରୁହତ ଅଟେ (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "ନାମ ଟି ନନ୍-ଆସ୍କି ଅକ୍ଷର ମାନଙ୍କୁ ଧାରଣ କରିଅଛି" #: lib/user.c:242 msgid "name contains control characters" msgstr "ନାମ ଟି ନିୟନ୍ତ୍ରଣ ଅକ୍ଷର ମାନଙ୍କୁ ଧାରଣ କରିଅଛି" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ନାମ ଟି ହ୍ବାଇଟ-ସ୍ପେଶ ଧାରଣ କରିଅଛି" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "ନାମ ଟି ଗୋଟିଏ ସଂଯୋଜକ ଚିହ୍ନ ଦ୍ବାରା ଆରମ୍ଭ ହୋଇଥାଏ" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "ନାମ ଟି ଗୋଟିଏ ଅବୈଧ ଅକ୍ଷର `%c' କୁ ଧାରଣ କରିଅଛି" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s ଚାଳକ ର କୌଣସି ୟୁ.ଆଇ.ଡି. ନାହିଁ" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "%s ସମୂହ ର କୌଣସି ୟୁ.ଆଇ.ଡି. ନାହିଁ" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd ଚାଳକ ର କୌଣସି ନାମ ନାହିଁ" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "%jd ନାମ ର କୌଣସି ନାମ ନାହିଁ" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ଚାଳକ ର କୌଣସି ନାମ କିମ୍ବା ୟୁ.ଆଇ.ଡି. ନାହିଁ" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "ସମୂହ ର କୌଣସି ନାମ କିମ୍ବା ୟୁ.ଆଇ.ଡି. ନାହିଁ" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ବିପଦ ଜନକ ହୋମ ଡିରେକ୍ଟୋରୀ `%s' କୁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ବ୍ୟବହାର କରିବା ପାଇଁ ମନା କରୁଅଛି" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ର ଅବୈଧ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ମୂଲ୍ଯ: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ଫାଇଲ କୁ ଲକ କରୁଥିବା ସମୟରେ ତୃଟି: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ ସୁରକ୍ଷା ପ୍ରସଙ୍ଗକୁ ପାଇପାରିଲା ନାହିଁ: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' ର ସୁରକ୍ଷା ପ୍ରସଙ୍ଗ କୁ ପାଇ ପାରିଲା ନାହିଁ: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ ସୁରକ୍ଷା ପ୍ରସଙ୍ଗ କୁ `%s' କୁ ସେଟ କରି ପାରିଲା ନାହିଁ: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ ସୁରକ୍ଷା ପ୍ରସଙ୍ଗକୁ ପାଇପାରିଲା ନାହିଁ: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' ର ସୁରକ୍ଷା ପ୍ରସଙ୍ଗ କୁ ସ୍ଥିର କରିପାରିଲା ନାହିଁ: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' କୁ ଖୋଲି ପାରିଲା ନାହିଁ: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' ଉପରେ ଷ୍ଟାର୍ଟ କୁ କାର୍ଯ୍ଯକାରି କରି ପାରିଲା ନାହିଁ: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' କୁ ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' ର ମାଲିକ କୁ ପରିବର୍ତନ କରିବା ରେ ତୃଟି: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' ର ଧାରା ପରିବର୍ତ୍ତନ କରିବା ସମୟରେ ତ୍ରୁଟି: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' କୁ ପଢିବା ସମୟରେ ତୃଟି: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' କୁ ଲେଖିବା ସମୟରେ ତୃଟି: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' ରୁ ପଢି ପାରିଲା ନାହିଁ: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s ରୁ %s କୁ ସ୍ଥାନାସ୍ତରିତ କରିବା ସମୟରେ ତୃଟି: %s \n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' ର ଧାରା ପରିବର୍ତ୍ତନ କରିବା ସମୟରେ ତ୍ରୁଟି: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' କୁ ପଢିବା ସମୟରେ ତୃଟି: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' କୁ ପଢିବା ସମୟରେ ତୃଟି: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "ବସ୍ତୁ ର %s ଭଳି କୌଣସି ଗୁଣ ନାହିଁ" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ବସ୍ତୁ ର କୌଣସି %s ଗୁଣ ନାହିଁ" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s ମୂଲ୍ୟ `%s': `:' ଅନୁମୋଦିତ ନୁହଁ" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s ମୂଲ୍ୟ `%s': `:' ଅନୁମୋଦିତ ନୁହଁ" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ଫାଇଲ ରେ ଭରଣ ପୂର୍ବ ରୁ ରହିଛି" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' ରେ ଲେଖି ପାରିଲା ନାହିଁ: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "ବସ୍ତୁ ର %s ଭଳି କୌଣସି ଗୁଣ ନାହିଁ" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ଫାଇଲରେ ଦ୍ୱନ୍ଦମୟ ନାମବିଶିଷ୍ଟ ଭରଣ ପୂର୍ବରୁ ରହିଅଛି" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' ସଂଗୁପ୍ତ ପ୍ରବେଶ ସଂକେତରେ ଅନୁମୋଦିତ ନୁହଁ" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "ପ୍ରବେଶ ସଙ୍କେତ କୁ ସଂଗୁପ୍ତ କରିବା ସମୟରେ ତୃଟି" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' ଏବଂ `%s' ଏକକାଂଶଗୁଡ଼ିକୁ ଯୋଡ଼ିପାରିବେ ନାହିଁ" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ପ୍ରମୂଖ ଚାଳକ ର ବିଶେଷ ଆକର୍ଷଣ ମାନଙ୍କ ସହିତ ନିଷ୍ପାଦିତ ହେଉ ନାହିଁ" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "କୌଣସି ଛାୟା ଫାଇଲ ଉପସ୍ଥିତ ନାହିଁ -- disabling" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ଏଲ.ଡି.ଏ.ପି. ପାଠାଗାର ର ପ୍ରାରମ୍ଭିକୀକରଣ ସମୟରେ ତୃଟି" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "ଏଲ.ଡି.ଏ.ପି. ପ୍ରୋଟୋକଲ କୁ %d ସଂସ୍କରଣ କୁ ସେଟ କରି ପାରିଲା ନାହିଁ" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "ଟି.ଏଲ.ଏସ୍. କୁ ଏଲ.ଡି.ଏ.ପି. ସେବକ ସହିତ ଆଦାନପ୍ରଦାନ କରି ପାରିଲା ନାହିଁ" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "ଏଲ.ଡି.ଏ.ପି. ସେବକ ସହିତ ବାନ୍ଧି ପାରିଲା ନାହିଁ" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "ଏଲ.ଡି.ଏ.ପି. ସେବକ ସହିତ ବାନ୍ଧି ପାରିଲା ନାହିଁ, `%s' ରୂପ ରେ ପ୍ରଥମ ପ୍ରଚେଷ୍ଟା: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ଚାଳକ ବସ୍ତୁ ର କୌଣସି %s ଗୁଣ ନାହିଁ" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ଚାଳକ ବସ୍ତୁ ଟି %s ବିନା ସୃଷ୍ଟି ହୋଇଥିଲା" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "ଏଲ.ଡି.ଏ.ପି. ଡିରେକ୍ଟୋରି ଭରଣ ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "ଏଲ.ଡି.ଏ.ପି. ଡିରେକ୍ଟୋରି ଭରଣ କୁ ରୂପାନ୍ତରଣ କରିବା ସମୟରେ ତୃଟି: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "ଏଲ.ଡି.ଏ.ପି. ଡିରେକ୍ଟୋରି ଭରଣ ର ନାମ ବଦଳାଇବା ସମୟରେ ତୃଟି: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ବସ୍ତୁ ର କୌଣସି %s ଗୁଣ ନାହିଁ" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "ଏଲ.ଡି.ଏ.ପି. ଡିରେକ୍ଟୋରି ଭରଣ କୁ ଅପସାରଣ ସମୟରେ ତୃଟି: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ବସ୍ତୁ ର କୌଣସି %s ଗୁଣ ନାହିଁ" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "ଅସମର୍ଥିତ ପ୍ରବେଶ ସଂକେତ ସଂଗୁପ୍ତ ଯୋଜନା" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "ଏଲ.ଡି.ଏ.ପି. ଡିରେକ୍ଟୋରି ଏଭଳି କୌଣସି ବସ୍ତୁ ନାହିଁ" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "କୌଣସି `%s' ଗୁଣ ମିଳିଲା ନାହିଁ" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "ଏଲ.ଡି.ଏ.ପି. ଡିରେକ୍ଟୋରି %s ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ ସେଟ କରିବା ସମୟରେ ତୃଟି: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "ଏଲ.ଡି.ଏ.ପି. ସେବକ ର ନାମ" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "ଡି.ଏନ୍. ଆଧାରିତ ଏଲ.ଡି.ଏ.ପି. ସନ୍ଧାନ" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "ଡି.ଏନ୍. ବନ୍ଧିତ ଏଲ.ଡି.ଏ.ପି." #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "ପ୍ରବେଶ ସଙ୍କେତ ବନ୍ଧିତ ଏଲ.ଡି.ଏ.ପି." #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "ଏଲ.ଡି.ଏ.ପି. ଏସ୍.ଏ.ଏସ୍.ଏଲ. ଚାଳକ" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "ଏଲ.ଡି.ଏ.ପି. ଏସ୍.ଏ.ଏସ୍.ଏଲ. ବୈଧିକରଣ ଚାଳକ" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ଚାଳକ କୁ ସୃଷ୍ଟି କରିବା ସମୟରେ ସାଇରସ୍ ଏସ୍.ଏ.ଏସ୍.ଏଲ. ତୃଟି: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ଚାଳକ କୁ ଅପସାରଣ କରିବା ସମୟରେ ସାଇରସ୍ ଏସ୍.ଏ.ଏସ୍.ଏଲ. ତୃଟି: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "ସାଇରସ୍ ଏସ୍.ଏ.ଏସ୍.ଏଲ. ର ପ୍ରାରମ୍ଭିକୀକରଣ ସମୟରେ ତୃଟି: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ଚାଳକ ପାଇଁ ମୂଳ ସ୍ଥାନ ଡିରେକ୍ଟୋରି ସୃଷ୍ଟି କରିବା ସମୟରେ ତୃଟି" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ଚାଳକ ପାଇଁ ମୂଳ ସ୍ଥାନ ଡିରେକ୍ଟୋରି କୁ ଅପସାରଣ କରିବା ସମୟରେ ତୃଟି" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ଚାଳକ ପାଇଁ ମୂଳ ସ୍ଥାନ ଡିରେକ୍ଟୋରି କୁ ସ୍ଥାନାନ୍ତରଣ କରିବା ସମୟରେ ତୃଟି" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s ର ପ୍ରାରମ୍ଭିକୀକରଣ ସମୟରେ ତୃଟି: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ଅବୈଧ %s ପରିଚୟ \n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd ପରିଚୟ ବିଶିଷ୍ଟ ସମୂହ କୁ ଖୋଜୁଅଛି \n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s ନାମ ବିଶିଷ୍ଟ ସମୂହ କୁ ଖୋଜୁଅଛି \n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd ପରିଚୟ ବିଶିଷ୍ଟ ଚାଳକ କୁ ଖୋଜୁଅଛି \n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s ନାମ ବିଶିଷ୍ଟ ଚାଳକ କୁ ଖୋଜୁଅଛି \n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "ଭରଣ ଟି ମିଳିଲା ନାହିଁ \n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "ପ୍ରୋତ୍ସାହନ ସଫଳ ହେଲା \n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "ପ୍ରୋତ୍ସାହନ ବିଫଳ ହେଲା \n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚାଳକ ର ବସ୍ତୁ ର ଶ୍ରେଣୀ:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚାଳକ ର ଗୁଣ ର ନାମ ମାନ:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚାଳକ ର ଗୁଣ ମାନଙ୍କୁ ପାଉଛି:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ଚାଳକ ର ସଂରଚନା କୁ ନକଲ କରୁଅଛି:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "`%s' ନକଲ ସଂରକ୍ଷଣ ଫାଇଲ ଅବସ୍ଥିତ ଅଛି ଏବଂ ଏହା ଏକ ନିୟମିତ ଫାଇଲ ନୁହେଁ" #~ msgid "backup file size mismatch" #~ msgstr "ନକଲ ସଂରକ୍ଷଣ ଫାଇଲ ର ଆକାର ମିଶୁ ନାହିଁ" po/pa.po000066400000000000000000001261011471266067600124540ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Amanpreet Singh Alam , 2004, 2006 # Amanpreet Singh Alam , 2005 # A P Singh , 2006 # A S Alam , 2007 # Harmeet Singh Phulewala , 2005 # Jaswinder Singh , 2008, 2009, 2012 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/fedora/" "language/pa/)\n" "Language: pa\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "ਅਧਿਕਾਰ ਛੱਡਣ ਵਿੱਚ ਅਸਫਲ।\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ।\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s %s ਦੀ finger ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਹੈ\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "ਅਣਜਾਣ ਉਪਭੋਗੀ ਪ੍ਰਸੰਗ" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd ਲਈ ਮੂਲ ਪ੍ਰਸੰਗ ਨਹੀਂ ਲੱਭਿਆ ਹੈ\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਗਲਤੀ।\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s ਲਈ ਪ੍ਰਮਾਣਕਿਤਾ ਅਸਫਲ।\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "ਅੰਦਰੂਨੀ PAM ਗਲਤੀ `%s'।\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "ਅਣਜਾਣ ਉਪਭੋਗੀ ਪ੍ਰਸੰਗ।\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "ਉਪਭੋਗੀ ਰਲਦਾ ਨਹੀਂ ਹੈ।\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ਚੋਣ...] ਉਪਭੋਗੀ" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "ਆਰਗੂਮਿੰਟ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "ਕੋਈ ਉਪਭੋਗੀ ਨਾਂ ਨਹੀਂ ਦਰਸਾਇਆ।\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "ਉਪਭੋਗੀ %s ਮੌਜੂਦ ਨਹੀਂ।\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "ਖਾਤਾ ਲਾਕ ਹੈ।\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "ਖਾਤਾ ਲਾਕ ਨਹੀਂ ਹੈ।\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "ਘੱਟੋ-ਘੱਟ:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "ਵੱਧ ਤੋਂ ਵੱਧ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "ਚੇਤਾਵਨੀ:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "ਨਾ ਸਰਗਰਮ:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "ਕਦੇ ਨਹੀਂ" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "ਆਖਰੀ ਬਦਲਾਅ:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "ਗੁਪਤ-ਕੋਡ ਮਿਆਦ ਖਤਮ ਹੋ ਗਈ ਹੈ:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "ਗੁਪਤ-ਕੋਡ ਨਾ-ਸਰਗਰਮ ਹੈ:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "ਖਾਤਾ ਮਿਆਦ ਪੁੱਗ ਗਈ:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s ਲਈ ਉਮਰ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ਚੋਣ...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "ਕੋਈ ਉਪਭੋਗੀ ਨਾਂ ਨਹੀਂ ਦਰਸਾਇਆ, uid %d ਲਈ ਕੋਈ ਨਾਂ ਨਹੀਂ।\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s ਲਈ ਮੁੱਖ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਕਰ ਰਿਹਾ ਹੈ।\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "ਪੂਰਾ ਨਾਂ" #: apps/lchfn.c:151 msgid "Surname" msgstr "ਉਪ ਨਾਂ" #: apps/lchfn.c:162 msgid "Given Name" msgstr "ਦਿੱਤਾ ਨਾਂ" #: apps/lchfn.c:172 msgid "Office" msgstr "ਦਫਤਰ" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "ਦਫਤਰ ਫੋਨ" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "ਘਰ ਫੋਨ" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ਈ-ਮੇਲ ਸਿਰਨਾਵਾਂ" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "ਮੁੱਖ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਨਹੀਂ ਹੋਈ: ਇੰਪੁੱਟ ਗਲਤੀ।\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "ਮੁੱਖ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਹੋ ਗਈ ਹੈ।\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "ਮੁੱਖ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਨਹੀਂ ਹੋਈ: %s\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s ਲਈ ਸ਼ੈਲ ਤਬਦੀਲ ਕਰ ਰਿਹਾ ਹੈ।\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "ਨਵੀਂ ਸ਼ੈਲ" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "ਸ਼ੈਲ ਤਬਦੀਲ ਨਹੀਂ: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "ਸ਼ੈਲ ਤਬਦੀਲ ਹੋ ਗਈ ਹੈ।\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ਚੋਣ...] ਗਰੁੱਪ" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "ਕੋਈ ਗਰੁੱਪ ਨਾਂ ਨਹੀਂ ਦਰਸਾਇਆ।\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ਗਲਤ ਗਰੁੱਪ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "ਗਰੁੱਪ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "ਗਰੁੱਪ %s ਮੌਜੂਦ ਨਹੀਂ।\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "ਗਰੁੱਪ %s ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s।\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "ਦੋਨੋ -L ਅਤੇ -U ਦਿੱਤੇ ਹਨ।\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s ਗਰੁੱਪ ਲਈ ਗੁਪਤ-ਕੋਡ ਦੇਣ ਲਈ ਅਸਫਲ: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s ਗਰੁੱਪ ਨੂੰ ਲਾਕ ਨਹੀਂ ਕਰ ਸਕਿਆ: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s ਗਰੁੱਪ ਨੂੰ ਅਣ-ਲਾਕ ਨਹੀਂ ਕਰ ਸਕਿਆ: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "ਗਰੁੱਪ %s ਨੂੰ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s ਦੀ ਖੋਜ ਵਿੱਚ ਗਲਤੀ: %s।\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "ਕੋਈ ਗਰੁੱਪ ਨਾਂ ਨਹੀਂ ਦਰਸਾਇਆ, %s ਵਰਤਣ ਵਾਲਾ।\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "ਕੋਈ ਗਰੁੱਪ ਨਾਂ ਨਹੀਂ ਦਰਸਾਇਆ, gid %d ਲਈ ਕੋਈ ਨਾਂ ਨਹੀਂ।\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "ਕੋਈ ਉਪਭੋਗੀ ਨਾਂ ਨਹੀਂ ਦਰਸਾਇਆ, %s ਦੀ ਵਰਤੋਂ ਕਰਕੇ।\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s ਮੌਜੂਦ ਨਹੀਂ ਹੈ।\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ਚੋਣ...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' ਨੂੰ ਖੋਲਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' ਲਈ ਖਾਤਾ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: ਸਤਰ ਦਾ ਫਾਰਮੈਟ ਠੀਕ ਨਹੀਂ ਹੈ।\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ਗਲਤ ਉਪਭੋਗੀ ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 ਨਾਲ ਖਾਤਾ ਬਣਾਉਣ ਲਈ ਇਨਕਾਰ ਕਰ ਰਿਹਾ ਹੈ।\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' ਲਈ GID %jd ਨਾਲ ਗਰੁੱਪ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "ਖਤਰਨਾਕ ਘਰੇਲੂ ਡਾਇਰੈਕਟਰੀ `%s' ਨੂੰ ਮੂਲ ਰੂਪ ਵਿੱਚ %s ਲਈ ਵਰਤਣਾ ਰੱਦ ਕਰ ਰਿਹਾ ਹੈ\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s ਲਈ ਘਰ ਡਾਇਰੈਕਟਰੀ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s ਲਈ ਸ਼ੁਰੂਆਤੀ ਗੁਪਤ-ਕੋਡ ਸੈੱਟ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s ਲਈ ਉਪਭੋਗੀ ਖਾਤਾ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਿਆ ਗਿਆ।\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "ਨਵਾਂ ਗੁਪਤ-ਕੋਡ" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "ਨਵਾਂ ਗੁਪਤ-ਕੋਡ (ਪੁਸ਼ਟੀ)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "ਗੁਪਤ-ਕੋਡ ਨੇ ਮੇਲ ਨਹੀਂ ਕੀਤਾ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "ਗੁਪਤ-ਕੋਡ ਤਬਦੀਲੀ ਰੱਦ ਹੋਈ।\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ਫਾਇਲ ਡਿਸਕਰਿਪਟਰ %d ਤੋਂ ਪੜ੍ਹਨ ਵੇਲੇ ਗਲਤੀ\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s ਉਪਭੋਗੀ ਲਈ ਗੁਪਤ-ਕੋਡ ਦੇਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s ਗਰੁੱਪ ਲਈ ਗੁਪਤ-ਕੋਡ ਦੇਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "ਗੁਪਤ-ਕੋਡ ਬਦਲਿਆ ਗਿਆ।\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "ਗਰੁੱਪ %jd ਮੌਜੂਦ ਨਹੀਂ।\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "'%s' ਗਰੁੱਪ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "ਖਾਤਾ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ: %s\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "ਉਪਭੋਗੀ %s ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: %s\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ਕੋਲ gid ਨੰਬਰ ਨਹੀਂ ਸੀ।\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd ਵਾਲਾ ਕੋਈ ਗਰੁੱਪ ਮੌਜੂਦ ਨਹੀਂ, ਹਟਾਇਆ ਨਹੀਂ।\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd ਵਾਲੇ ਗਰੁੱਪ ਦਾ ਗਰੁੱਪ ਨਾਂ ਨਹੀਂ ਹੈ।\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "ਗਰੁੱਪ %s ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s।\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ਉਪਭੋਗੀ ਲਈ ਘਰ ਡਾਇਰੈਕਟਰੀ ਹਟਾਉਣ ਸਮੇਂ ਗਲਤੀ" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "ਉਪਭੋਗੀ %s ਲਈ ਗੁਪਤ-ਕੋਡ ਦੇਣ ਵਿੱਚ ਗਲਤੀ: %s।\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "ਉਪਭੋਗੀ %s ਲਾਕ ਨਹੀਂ ਹੋ ਸਕਿਆ: %s।\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "ਉਪਭੋਗੀ %s ਅਣ-ਲਾਕ ਨਹੀਂ ਹੋ ਸਕਿਆ: %s।\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "ਚੇਤਾਵਨੀ: ID %jd ਵਾਲਾ ਗਰੁੱਪ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "ਉਪਭੋਗੀ %s ਨੂੰ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s।\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "ਗਰੁੱਪ %s ਨੂੰ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s।\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s ਲਈ ਕੋਈ ਪੁਰਾਣੀ ਘਰ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਹੈ।\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s ਲਈ ਕੋਈ ਨਵੀਂ ਘਰ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਹੈ।\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s ਤੋਂ %s ਵਿੱਚ ਭੇਜਣ ਦੌਰਾਨ ਗਲਤੀ: %s\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਨੂੰ ਖੋਲ ਨਹੀਂ ਸਕਿਆ: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਨੂੰ ਖੋਲ੍ਹ ਨਹੀਂ ਸਕਿਆ: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਬਹੁਤ ਵੱਡੀ ਹੈ" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਨੂੰ ਖੋਲ੍ਹ ਨਹੀਂ ਸਕਿਆ: %s" #: lib/error.c:62 msgid "success" msgstr "ਸਫ਼ਲ" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "ਸੰਰਚਨਾ ਰਾਹੀਂ ਅਯੋਗ ਕੀਤਾ ਮੋਡੀਊਲ" #: lib/error.c:66 msgid "generic error" msgstr "ਸਾਧਾਰਨ ਗਲਤੀ" #: lib/error.c:68 msgid "not enough privileges" msgstr "ਲੋੜੀਂਦੇ ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ" #: lib/error.c:70 msgid "access denied" msgstr "ਪਹੁੰਚ ਪਾਬੰਦੀ" #: lib/error.c:72 msgid "bad user/group name" msgstr "ਗਲਤ ਉਪਯੋਗੀ/ਗਰੁੱਪ ਨਾਂ" #: lib/error.c:74 msgid "bad user/group id" msgstr "ਗਲਤ ਉਪਯੋਗੀ/ਗਰੁੱਪ ਸ਼ੰਨ-ਨੰ" #: lib/error.c:76 msgid "user/group name in use" msgstr "ਵਰਤਿਆ ਜਾਂਦਾ ਉਪਯੋਗੀ/ਗਰੁੱਪ ਨਾਂ" #: lib/error.c:78 msgid "user/group id in use" msgstr "ਵਰਤਿਆ ਜਾਂਦਾ ਉਪਯੋਗੀ/ਗਰੁੱਪ id" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ਟਰਮੀਨਲ ਵਿਸ਼ੇਸ਼ਤਾ ਤਬਦੀਲ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:82 msgid "error opening file" msgstr "ਫਾਇਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:84 msgid "error locking file" msgstr "ਫਾਇਲ ਲਾਕ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:86 msgid "error statting file" msgstr "ਫਾਇਲ ਨੂੰ ਦਰਜਾ ਦੇਣ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:88 msgid "error reading file" msgstr "ਫਾਇਲ ਪੜਨ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:90 msgid "error writing to file" msgstr "ਫਾਇਲ ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:92 msgid "data not found in file" msgstr "ਫਾਇਲ ਵਿੱਚ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ" #: lib/error.c:94 msgid "internal initialization error" msgstr "ਅੰਦਰੂਨੀ ਸ਼ੁਰੂਆਤ ਗਲਤੀ" #: lib/error.c:96 msgid "error loading module" msgstr "ਮੋਡੀਊਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "ਮੋਡੀਊਲ ਵਿੱਚ ਚਿੰਨ੍ਹ ਨਿਸਚਿਤ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "ਲਾਇਬਰੇਰੀ/ਮੋਡੀਊਲ ਵਰਜਨ ਭਿੰਨਤਾ" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "ਤਾਲਾ ਖੋਲ੍ਹਣ ਨਾਲ ਗੁਪਤ-ਕੋਡ ਖੇਤਰ ਖਾਲੀ ਹੋ ਜਾਵੇਗਾ।" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ਗਲਤ ਐਟਰੀਬਿਊਟ ਮੁੱਲ" #: lib/error.c:107 msgid "invalid module combination" msgstr "ਗਲਤ ਮੋਡੀਊਲ ਜੋੜ" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "ਅਣਜਾਣ ਗਲਤੀ" #: lib/misc.c:240 msgid "invalid number" msgstr "ਗਲਤ ਨੰਬਰ" #: lib/misc.c:254 msgid "invalid ID" msgstr "ਗਲਤੀ ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "`%2$s' ਵਿੱਚ ਕੋਈ ਸ਼ੁਰੂਆਤੀ ਫੰਕਸ਼ਨ %1$s ਨਹੀਂ " #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' ਵਿੱਚ ਮੋਡੀਊਲ ਵਰਜਨ ਭਿੰਨਤਾ" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' ਮੈਡੀਊਲ `%s' ਨੂੰ ਪਰਭਾਸ਼ਿਤ ਨਹੀਂ ਕਰਦਾ ਹੈ" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ਟਰਮੀਨਲ ਵਿਸ਼ੇਸ਼ਤਾ ਪੜਨ ਵਿੱਚ ਗਲਤੀ" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ਟਰਮੀਨਲ ਵਿਸ਼ੇਸ਼ਤਾ ਦੇਣ ਵਿੱਚ ਗਲਤੀ" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ਟਰਮੀਨਲ ਵਿੱਚੋਂ ਪੜ੍ਹਨ ਵਿੱਚ ਗਲਤੀ" #: lib/user.c:218 msgid "name is not set" msgstr "ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ" #: lib/user.c:223 msgid "name is too short" msgstr "ਨਾਂ ਬਹੁਤ ਛੋਟਾ ਹੈ" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "ਨਾਂ ਵਿੱਚ ਨਾਨ-ASCII ਅੱਖਰ ਸ਼ਾਮਿਲ ਹਨ" #: lib/user.c:242 msgid "name contains control characters" msgstr "ਨਾਂ ਵਿੱਚ ਕੰਟਰੋਲ ਅੱਖਰ ਸ਼ਾਮਿਲ ਹਨ" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ਨਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਸ਼ਾਮਿਲ ਹੈ" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "ਨਾਂ ਹਾਈਫਨ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "ਨਾਂ ਵਿੱਚ ਅਯੋਗ ਅੱਖਰ `%c' ਸ਼ਾਮਿਲ ਹਨ" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "ਉਪਭੋਗੀ %s ਦਾ ਕੋਈ UID ਨਹੀਂ ਹੈ" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "ਗਰੁੱਪ %s ਦਾ ਕੋਈ GID ਨਹੀਂ ਹੈ" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "ਉਪਭੋਗੀ %jd ਦਾ ਕੋਈ ਨਾਂ ਨਹੀਂ ਹੈ" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "ਗਰੁੱਪ %jd ਦਾ ਕੋਈ ਨਾਂ ਨਹੀਂ ਹੈ" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "ਉਪਭੋਗੀ ਦਾ ਨਾ ਤਾਂ ਕੋਈ ਨਾਂ ਹੈ ਨਾ ਹੀ UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "ਗਰੁੱਪ ਦਾ ਨਾ ਤਾਂ ਕੋਈ ਨਾਂ ਹੈ ਨਾ ਹੀ GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ਖਤਰਨਾਕ ਘਰੇਲੂ ਡਾਇਰੈਕਟਰੀ `%s' ਨੂੰ ਮੂਲ ਰੂਪ ਵਰਤਣਾ ਰੱਦ ਕਰ ਰਿਹਾ ਹੈ" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s ਖੇਤਰ ਲਈ ਗਲਤ ਮੂਲ ਮੁੱਲ: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ਫਾਇਲ ਲਾਕ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ਮੂਲ ਸੁਰੱਖਿਆ ਦਰਜਾ ਨਹੀਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' ਵਿੱਚ ਲਿਖ ਨਹੀਂ ਸਕਿਆ: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' ਵਿੱਚ ਮੂਲ ਸੁਰੱਖਿਆ ਭਾਗ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ਮੂਲ ਸੁਰੱਖਿਆ ਦਰਜਾ ਨਹੀਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' ਲਈ ਸੁਰੱਖਿਆ ਦਰਜਾ ਪਤਾ ਨਹੀਂ ਲਗਾ ਸਕਿਆ: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' ਨੂੰ ਦਰਜਾ ਨਹੀਂ ਦੇ ਸਕਿਆ: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "'%s' ਦੀ ਮਲਕੀਅਤ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' ਦਾ ਮੋਡ ਤਬਦੀਲ ਕਰਨ ਵੇਲੇ ਗਲਤੀ: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' ਪੜ੍ਹਨ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' ਲਿਖਣ ਦੌਰਾਨ ਗਲਤੀ: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' ਵਿੱਚੋਂ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s ਤੋਂ %s ਵਿੱਚ ਭੇਜਣ ਦੌਰਾਨ ਗਲਤੀ: %s\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' ਦਾ ਮੋਡ ਤਬਦੀਲ ਕਰਨ ਵੇਲੇ ਗਲਤੀ: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' ਪੜ੍ਹਨ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' ਪੜ੍ਹਨ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "ਇੰਦਰਾਜ ਇਕਾਈ ਦੀ ਕੋਈ %s ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੈ" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ਇਕਾਈ ਦੀ ਕੋਈ %s ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੈ" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s ਮੁੱਲ `%s': `:' ਮਨਜੂਰ ਨਹੀਂ ਹੈ" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s ਮੁੱਲ `%s': `:' ਮਨਜੂਰ ਨਹੀਂ ਹੈ" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ਫਾਇਲ ਵਿੱਚ ਇੰਦਰਾਜ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s' ਵਿੱਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "ਇੰਦਰਾਜ ਇਕਾਈ ਦੀ ਕੋਈ %s ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੈ" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ਫਾਇਲ ਵਿੱਚ ਪ੍ਰਤੀਰੋਧੀ ਐਂਟਰੀ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' ਇਨਕ੍ਰਿਪਟਡ ਪਾਸਵਰਡ ਵਿੱਚ ਮਨਜੂਰ ਨਹੀਂ ਹੈ" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "ਗੁਪਤ-ਕੋਡ ਇਕਰਿਪਸ਼ਨ ਗਲਤੀ" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' ਅਤੇ `%s' ਮੋਡੀਊਲ ਜੋੜੇ ਨਹੀਂ ਜਾ ਸਕਦੇ" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ਮੁੱਖ-ਉਪਭੋਗੀ ਅਧਿਕਾਰਾਂ ਨਾਲ ਚੱਲ ਨਹੀਂ ਰਿਹਾ" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "ਕੋਈ ਪਰਛਾਵਾਂ ਫਾਇਲ ਮੌਜੂਦ ਨਹੀਂ -- ਅਯੋਗ ਕੀਤਾ" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap ਲਾਇਬ੍ਰੇਰੀ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "ਵਰਜਨ %d ਲਈ LDAP ਪ੍ਰੋਟੋਕੋਲ ਨਿਰਧਾਰਿਤ ਨਹੀਂ ਕਰ ਸਕਿਆ" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS ਨੂੰ LDAP ਸਰਵਰ ਨਾਲ ਗੱਲਬਾਤ ਨਹੀਂ ਕਰਾ ਸਕਿਆ" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP ਸਰਵਰ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਿਆ" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP ਸਰਵਰ ਨਾਲ ਪਹਿਲੀਂ ਕੋਸ਼ਿਸ ਵਿੱਚ `%s' ਵਾਂਗ ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "ਉਪਭੋਗੀ ਇਕਾਈ ਕੋਲ ਕੋਈ %s ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੈ" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "ਉਪਭੋਗੀ ਇਕਾਈ ਬਿਨਾਂ ਕਿਸੇ `%s' ਤੋਂ ਬਣਾਈ ਗਈ ਹੈ" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP ਡਾਇਰੈਕਟਰੀ ਇੰਦਰਾਜ ਨੂੰ ਮੁੜ ਨਾਂ ਦੇਣ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP ਡਾਇਰੈਕਟਰੀ ਇੰਦਰਾਜ ਤਬਦੀਲ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP ਡਾਇਰੈਕਟਰੀ ਇੰਦਰਾਜ ਨੂੰ ਮੁੜ ਨਾਂ ਦੇਣ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ਇਕਾਈ ਦੀ ਕੋਈ %s ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਸੀ" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP ਡਾਇਰੈਕਟਰੀ ਇੰਦਰਾਜ ਨੂੰ ਹਟਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ਇਕਾਈ ਦੀ ਕੋਈ %s ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੈ" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "ਨਾ-ਸਹਿਯੋਗੀ ਪਾਸਵਰਡ ਇਨਕ੍ਰਿਪਸ਼ਨ ਸਕੀਮ" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਅਜਿਹੀ ਕੋਈ ਇਕਾਈ ਨਹੀਂ ਹੈ" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ਕੋਈ `%s' ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਲੱਭੀ" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s ਲਈ LDAP ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਗੁਪਤ-ਕੋਡ ਨਿਰਧਾਰਿਤ ਕਰਨ ਵਿੱਚ ਗਲਤੀ : %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP ਸਰਵਰ ਨਾਂ" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP ਖੋਜ ਮੂਲ DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP ਬੰਧਨ DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP ਬੰਧਨ ਗੁਪਤ-ਕੋਡ" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL ਉਪਯੋਗੀ" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL ਪ੍ਰਬੰਧਕੀ ਉਪਯੋਗੀ" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ਉਪਭੋਗੀ ਬਣਾਉਣ ਸਮੇਂ ਸਾਇਰਸ SASL ਗਲਤੀ: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "ਉਪਭੋਗੀ ਹਟਾਉਣ ਸਮੇਂ ਸਾਇਰਸ SASL ਗਲਤੀ: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "ਸਾਇਰਸ SASL ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ਉਪਭੋਗੀ ਲਈ ਘਰ ਡਾਇਰੈਕਟਰੀ ਬਣਾਉਣ ਸਮੇਂ ਗਲਤੀ" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ਉਪਭੋਗੀ ਲਈ ਘਰ ਡਾਇਰੈਕਟਰੀ ਹਟਾਉਣ ਸਮੇਂ ਗਲਤੀ" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ਉਪਭੋਗੀ ਲਈ ਘਰ ਡਾਇਰੈਕਟਰੀ ਹਿਲਾਉਣ ਸਮੇਂ ਗਲਤੀ" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ਗਲਤੀ ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd ਵਾਲੇ ਗਰੁੱਪ ਲਈ ਖੋਜ ਕਰ ਰਿਹਾ ਹੈ।\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "ਨਾਂ %s ਵਾਲੇ ਗਰੁੱਪ ਲਈ ਖੋਜ ਕਰ ਰਿਹਾ ਹੈ।\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd ਵਾਲੇ ਉਪਭੋਗੀ ਲਈ ਖੋਜ ਕਰ ਰਿਹਾ ਹੈ।\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "ਨਾਂ %s ਵਾਲੇ ਉਪਭੋਗੀ ਲਈ ਖੋਜ ਕਰ ਰਿਹਾ ਹੈ।\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "ਇੰਦਰਾਜ ਨਹੀਂ ਲੱਭਾ।\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "ਸਫਲਤਾਪੂਰਕ ਮੁਕੰਮਲ।\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "ਅਸਫਲ ਹੈ।\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "ਮੂਲ ਉਪਭੋਗੀ ਆਬਜੈਕਟ ਕਲਾਸਾਂ:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "ਮੂਲ ਉਪਭੋਗੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਨਾਂ:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "ਮੂਲ ਉਪਭੋਗੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "ਉਪਭੋਗੀ ਢਾਂਚੇ ਦੀ ਨਕਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "ਬੈਕਅੱਪ ਫਾਇਲ `%s' ਮੌਜੂਦ ਹੈ ਅਤੇ ਇਹ ਨਿਯਮਤ ਫਾਇਲ ਨਹੀਂ ਹੈ" #~ msgid "backup file size mismatch" #~ msgstr "ਬੈਕਅੱਪ ਫਾਇਲ ਅਕਾਰ ਰਲਦਾ ਨਹੀਂ" po/pl.po000066400000000000000000001155221471266067600124740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Andrzej Olszewski , 2004 # Bartosz Sapijaszko , 2004 # Miloslav Trmač , 2011 # Piotr Drąg , 2011-2013 # Tom Berner , 2005 # Tom Berner , 2004 # Piotr Drąg , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-07-03 11:58+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \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" "X-Generator: Weblate 4.18.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Próba odebrania uprawnień się nie powiodła.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Błąd wewnętrzny.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s nie jest upoważniony do zmiany informacji fingera o %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Nieznany kontekst użytkownika" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Nie można ustawić domyślnego kontekstu dla /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Błąd podczas inicjowania PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Uwierzytelnienie się nie powiodło dla %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Wewnętrzny błąd PAM „%s”.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Nieznany uwierzytelniony użytkownik.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Użytkownik się nie zgadza.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "pyta o wszystkie informacje" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "wyświetla listę parametrów starzenia dla użytkownika" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minimalna liczba dni między zmianami hasła" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DNI" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maksymalna liczba dni między zmianami hasła" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "data ostatniej zmiany hasła od 1 stycznia 1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "liczba dni po dacie wygaśnięcia hasła, po których konto zostanie uznane za " "nieaktywne" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "data wygaśnięcia hasła w dniach od 1 stycznia 1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "liczba dni przed wygaśnięciem, podczas których ostrzegać użytkownika" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCJA…] użytkownik" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Błąd podczas przetwarzania parametrów: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nie podano nazwy użytkownika.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Błąd podczas inicjowania %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Użytkownik %s nie istnieje.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Konto jest zablokowane.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Konto nie jest zablokowane.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimalnie:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksymalnie:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maksymalnie:\tBrak\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Ostrzeżenie:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Nieaktywne:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Nieaktywne:\tNigdy\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Należy zmienić hasło podczas następnego logowania" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nigdy" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Ostatnia zmiana:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Hasło wygasa:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Hasło nieaktywne:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Konto ważne do:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Wystąpił błąd podczas próby modyfikacji okresu ważności dla %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCJA…] [użytkownik]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nie podano nazwy użytkownika dla UID %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Zmienianie informacji fingera dla %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Imię i nazwisko" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nazwisko" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Imię" #: apps/lchfn.c:172 msgid "Office" msgstr "Praca" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefon do pracy" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefon domowy" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adres e-mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Informacje fingera nie zostały zmienione: błąd wejścia.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Informacje fingera zostały zmienione.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Informacje fingera nie zostały zmienione: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Zmienianie powłoki dla %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nowa powłoka" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Powłoka nie została zmieniona: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Powłoka została zmieniona.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "GID nowej grupy" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "LICZBA" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "tworzy grupę systemową" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCJA…] grupa" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nie podano nazwy grupy.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Nieprawidłowy identyfikator grupy %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Utworzenie grupy się nie powiodło: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupa %s nie istnieje.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupa %s nie może zostać usunięta: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "ustawia GID dla grupy" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "zmienia nazwę grupy na podaną" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAZWA" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "hasło w zwykłym tekście do użycia z grupą" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "CIĄG" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "uprzednio wymieszane hasło do użycia z grupą" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "lista administratorów do dodania" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "lista administratorów do usunięcia" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "lista członków grupy do dodania" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "lista członków grupy do usunięcia" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "blokuje grupę" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "odblokowuje grupę" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Podano jednocześnie opcje -L i -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Ustawienie hasła dla grupy %s się nie powiodło: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grupa %s nie może zostać zablokowana: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grupa %s nie może zostać odblokowana: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grupa %s nie może zostać zmodyfikowana: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Błąd podczas wyszukiwania %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "wyświetla listę członków nazwanej grupy zamiast członkostwa w grupie dla " "nazwanego użytkownika" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" "wyświetla listę tylko informacji o członkostwie według nazwy, bez UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nie podano nazwy grupy, używanie %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nie podano nazwy grupy, brak nazwy dla GID %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nie podano nazwy użytkownika, używanie %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s nie istnieje\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "plik z wpisami informacji o użytkowniku" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ŚCIEŻKA" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "bez tworzenia katalogów domowych" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "bez tworzenia kolejek poczty" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCJA…]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Błąd podczas otwierania „%s”: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Błąd podczas tworzenia konta dla „%s”: wiersz jest niepoprawnie sformatowany." "\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Nieprawidłowy identyfikator użytkownika %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Nie można utworzyć konta o UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Błąd podczas tworzenia grupy dla „%s” z GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Odmawianie domyślnego użycia niebezpiecznego katalogu domowego „%s” dla %s\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Błąd podczas tworzenia katalogu domowego dla %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Błąd podczas tworzenia bufora poczty dla %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Błąd podczas ustawiania wstępnego hasła dla %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Błąd podczas tworzenia konta użytkownika dla %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "ustawia hasło grupy zamiast hasła użytkownika" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nowe zwykłe hasło" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nowe zaszyfrowane hasło" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "odczytuje nowe zwykłe hasło z podanego deskryptora" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "odczytuje nowe zaszyfrowane hasło z podanego deskryptora" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Zmienianie hasła dla %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nowe hasło" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nowe hasło (potwierdzenie)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Hasła nie pasują, proszę spróbować ponownie.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Zmiana hasła została anulowana.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Błąd podczas odczytywania z deskryptora pliku %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Błąd podczas ustawiania hasła użytkownika %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Błąd podczas ustawiania hasła grupie %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Hasło zostało zmienione.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "tworzy użytkownika systemowego" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "informacje GECOS dla nowego użytkownika" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "katalog domowy dla nowego użytkownika" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "katalog z plikami dla nowego użytkownika" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "powłoka dla nowego użytkownika" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "UID dla nowego użytkownika" #: apps/luseradd.c:71 msgid "group for new user" msgstr "grupa dla nowego użytkownika" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "bez tworzenia katalogu domowego dla nowego użytkownika" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "bez tworzenia grupy o tej samej nazwie co użytkownik" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "wspólna nazwa dla nowego użytkownika" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "imię dla nowego użytkownika" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "nazwisko dla nowego użytkownika" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "numer pokoju dla nowego użytkownika" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "numer telefonu dla nowego użytkownika" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "numer telefonu domowego dla nowego użytkownika" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupa %jd nie istnieje\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Błąd podczas tworzenia grupy „%s”: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Utworzenie konta się nie powiodło: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Błąd podczas tworzenia %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Błąd podczas tworzenia bufora poczty: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "bez usuwania prywatnej grupy użytkownika, jeśli użytkownik ją ma" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "usuwa katalog domowy użytkownika" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Użytkownik %s nie może zostać usunięty: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nie ma numeru GID.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Nie istnieje żadna grupa z GID %jd, nie zostanie usunięta.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupa z GID %jd nie ma nazwy.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Grupa %s nie może zostać usunięta: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Błąd podczas usuwania katalogu domowego: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Błąd podczas usuwania bufora poczty: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "informacje GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "katalog domowy" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "przenosi zawartość katalogu domowego" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "ustawia powłokę dla użytkownika" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "ustawia UID dla użytkownika" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "ustawia główny GID dla użytkownika" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "zmienia nazwę logowania dla użytkownika" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "hasło w zwykłym tekście dla użytkownika" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "uprzednio wymieszane hasło dla użytkownika" #: apps/lusermod.c:76 msgid "lock account" msgstr "blokuje konto" #: apps/lusermod.c:79 msgid "unlock account" msgstr "odblokowuje konto" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "ustawia wspólną nazwę dla użytkownika" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "ustawia imię dla użytkownika" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "ustawia nazwisko dla użytkownika" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "ustawia numer pokoju dla użytkownika" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "ustawia numer telefonu dla użytkownika" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "ustawia numer telefonu domowego dla użytkownika" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Ustawienie hasła użytkownika %s się nie powiodło: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Użytkownik %s nie może zostać zablokowany: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Użytkownik %s nie może zostać odblokowany: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Ostrzeżenie: grupa o identyfikatorze %jd nie istnieje.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Użytkownik %s nie może zostać zmodyfikowany: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Grupa %s nie może zostać zmodyfikowana: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Brak poprzedniego katalogu domowego dla %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Brak nowego katalogu domowego dla %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Błąd podczas przenoszenia %s do %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "nie można otworzyć pliku konfiguracyjnego „%s”: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "nie można wykonać „stat” na pliku konfiguracyjnym „%s”: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "plik konfiguracyjny „%s” jest za duży" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "nie można odczytać pliku konfiguracyjnego „%s”: %s" #: lib/error.c:62 msgid "success" msgstr "powodzenie" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "moduł wyłączony w konfiguracji" #: lib/error.c:66 msgid "generic error" msgstr "ogólny błąd" #: lib/error.c:68 msgid "not enough privileges" msgstr "brak wystarczających uprawnień" #: lib/error.c:70 msgid "access denied" msgstr "brak dostępu" #: lib/error.c:72 msgid "bad user/group name" msgstr "błędna nazwa użytkownika/grupy" #: lib/error.c:74 msgid "bad user/group id" msgstr "błędny identyfikator użytkownika/grupy" #: lib/error.c:76 msgid "user/group name in use" msgstr "nazwa użytkownika/grupy jest już używana" #: lib/error.c:78 msgid "user/group id in use" msgstr "identyfikator użytkownika/grupy jest już używany" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "błąd podczas zmieniania atrybutów terminala" #: lib/error.c:82 msgid "error opening file" msgstr "błąd podczas otwierania pliku" #: lib/error.c:84 msgid "error locking file" msgstr "błąd podczas blokowania pliku" #: lib/error.c:86 msgid "error statting file" msgstr "błąd podczas wykonywania „stat” na pliku" #: lib/error.c:88 msgid "error reading file" msgstr "błąd podczas odczytywania pliku" #: lib/error.c:90 msgid "error writing to file" msgstr "błąd podczas zapisywania do pliku" #: lib/error.c:92 msgid "data not found in file" msgstr "dane w pliku nie zostały odnalezione" #: lib/error.c:94 msgid "internal initialization error" msgstr "błąd wewnętrzny inicjowania" #: lib/error.c:96 msgid "error loading module" msgstr "błąd podczas wczytywania modułu" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "błąd podczas wyszukiwaniu symbolu w module" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "niezgodne wersje biblioteki/modułu" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "odblokowywanie spowoduje pozostawienie pustego pola hasła" #: lib/error.c:105 msgid "invalid attribute value" msgstr "nieprawidłowa wartość atrybutu" #: lib/error.c:107 msgid "invalid module combination" msgstr "nieprawidłowe połączenie modułów" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "użytkownik nie jest właścicielem swojego katalogu domowego" #: lib/error.c:115 msgid "unknown error" msgstr "nieznany błąd" #: lib/misc.c:240 msgid "invalid number" msgstr "nieprawidłowy numer" #: lib/misc.c:254 msgid "invalid ID" msgstr "nieprawidłowy identyfikator" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "brak funkcji inicjującej %s w „%s”" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "niezgodna wersja modułu w „%s”" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "moduł „%s” nie określa „%s”" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "błąd podczas odczytywania atrybutów terminala" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "błąd podczas ustawiania atrybutów terminala" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "błąd podczas odczytywania z terminalu" #: lib/user.c:218 msgid "name is not set" msgstr "nazwa nie jest ustawiona" #: lib/user.c:223 msgid "name is too short" msgstr "nazwa jest za krótka" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "nazwa jest za długa (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "nazwa zawiera znaki spoza ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "nazwa zawiera znaki kontrolne" #: lib/user.c:249 msgid "name contains whitespace" msgstr "nazwa zawiera biały znak" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "nazwa zaczyna się od myślnika" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "nazwa zawiera nieprawidłowy znak „%c”" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "użytkownik %s nie ma UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "nie odnaleziono użytkownika %s" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "grupa %s nie ma GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "nie odnaleziono grupy %s" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "użytkownik %jd nie ma nazwy" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "grupa %jd nie ma nazwy" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "użytkownik nie ma nazwy ani UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "grupa nie ma nazwy ani GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Odmawianie domyślnego użycia niebezpiecznego katalogu domowego „%s”" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Nieprawidłowa domyślna wartość pola %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "błąd podczas blokowania pliku %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "nie można uzyskać domyślnego kontekstu zabezpieczeń: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "nie można uzyskać domyślnego kontekstu zabezpieczeń „%s”: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "nie można ustawić domyślnego kontekstu zabezpieczeń na „%s”: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "nie można uzyskać uchwytu kontekstu pliku SELinuksa: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "nie można ustalić domyślnego kontekstu zabezpieczeń dla „%s”: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "nie można otworzyć „%s”: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "nie można wykonać „stat” na „%s”: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "błąd podczas tworzenia „%s”: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Błąd podczas zmieniania właściciela „%s”: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Błąd podczas zmieniania trybu „%s”: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Błąd podczas odczytywania „%s”: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Błąd podczas zapisywania „%s”: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "nie można odczytać z „%s”: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "Nieprawidłowa zawartość blokady „%s”" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "Blokada %s jest zajmowana przez proces %ju" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "Błąd podczas usuwania nieaktualnej blokady „%s”: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "błąd podczas otwierania pliku tymczasowego dla „%s”: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "Nie można uzyskać blokady „%s”: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "Błąd podczas rozwiązywania „%s”: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "Błąd podczas zastępowania „%s”: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "podwójny obiekt nie ma atrybutu %s" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "oryginalny obiekt nie ma atrybutu %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "identyfikator %lu jest już używany przez %s" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s wartość „%s”: „\\n" "” jest niedozwolone" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s wartość „%s”: „:” jest niedozwolone" #: modules/files.c:1136 msgid "entry already present in file" msgstr "wpis znajduje się już w pliku" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "nie można zapisać do „%s”: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "obiekt jednostki nie ma atrybutu %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "wpis o sprzecznej nazwie znajduje się już w pliku" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "„:” i „\\n" "” są niedozwolone w zaszyfrowanych hasłach" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "błąd podczas szyfrowania hasła" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "modułów „%s” i „%s” nie można łączyć" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "bez uruchamiania z uprawnieniami superużytkownika" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "plik shadow nieobecny — wyłączanie" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "błąd podczas inicjowania biblioteki LDAP" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "nie można ustawić protokołu LDAP do wersji %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "nie można uzgodnić TLS z serwerem LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "nie można powiązać z serwerem LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "nie można dołączyć się do serwera LDAP, pierwsza próba jako „%s”: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "obiekt użytkownika nie ma atrybutu %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "obiekt użytkownika został utworzony bez „%s”" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "błąd podczas tworzenia wpisu w katalogu LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "błąd podczas modyfikacji pozycji w katalogu LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "błąd podczas zmieniania nazwy wpisu w katalogu LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "obiekt nie miał atrybutu %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "błąd podczas usuwania wpisu w katalogu LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "obiekt nie ma atrybutu %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "nieobsługiwany schemat szyfrowania hasła" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "nie ma takiego obiektu w katalogu LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "nie odnaleziono atrybutu „%s”" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "błąd podczas ustawiania hasła w katalogu LDAP dla %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nazwa serwera LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Podstawowy DN dla LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN do powiązania z LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Hasło powiązania z LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Użytkownik SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Upoważnienie użytkownika SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Błąd w bibliotece Cyrus SASL podczas tworzenia użytkownika: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Błąd w bibliotece Cyrus SASL podczas usuwania użytkownika: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "błąd podczas inicjowania biblioteki Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "błąd podczas tworzenia katalogu domowego dla użytkownika" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "błąd podczas usuwania katalogu domowego użytkownika" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "błąd podczas przenoszenia katalogu domowego użytkownika" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Błąd podczas inicjowania %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Nieprawidłowy identyfikator %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Wyszukiwanie grupy o identyfikatorze %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Wyszukiwanie grupy o nazwie %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Wyszukiwanie użytkownika o identyfikatorze %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Wyszukiwanie użytkownika o nazwie %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Nie odnaleziono wpisu.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Znak zachęty się powiódł.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Znak zachęty się nie powiódł.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Klasy obiektów dla domyślnego użytkownika:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nazwy atrybutów dla domyślnego użytkownika:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Uzyskiwanie atrybutów domyślnego użytkownika:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopiowanie struktury użytkownika:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "plik zapasowy \"%s\" istnieje i nie jest zwykłym plikiem" #~ msgid "backup file size mismatch" #~ msgstr "niezgodność rozmiaru pliku zapasowego" po/pt.po000066400000000000000000001060541471266067600125040ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Rui Gouveia , 2010, 2011, 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/fedora/" "language/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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Não foi possível abandonar privilégios.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Erro interno.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s não está autorizado a modificar os dados de 'finger' de %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Contexto de utilizador desconhecido" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Não é possível configurar o contexto por omissão de /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Erro ao inicializar PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autenticação falhou para %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Erro interno no PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Utilizador desconhecido autenticado.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Utilizador trocado.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPÇÃO...] utilizador" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Erro ao processar argumentos: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nenhum nome de utilizador indicado.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Erro ao inicializar %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Utilizador %s não existe.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "A conta está bloqueada.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "A conta não está bloqueada.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Mínimo:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Máximo:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Aviso:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactivo:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nunca" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Última Alteração:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Senha Expira:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Senha Inactiva:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Conta Expira:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Não foi possível alterar a informação de envelhecimento de %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPÇÃO...] [utilizador]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nenhum nome de utilizador indicado, nenhum nome para o uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "A alterar os dados de 'finger' de %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nome Completo" #: apps/lchfn.c:151 msgid "Surname" msgstr "Último Nome" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Primeiro Nome" #: apps/lchfn.c:172 msgid "Office" msgstr "Escritório" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefone do Escritório" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefone de Casa" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Endereço de E-mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Dados do 'finger' não alterados: erro de inserção.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Dados do 'finger' alterados.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Dados do 'finger' não alterados: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "A alterar a 'shell' de %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nova 'Shell'" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "'Shell' não alterada: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "'Shell' alterada.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPÇÃO...] grupo" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nenhum nome de grupo indicado.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID de grupo inválido %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "A criação do grupo falhou: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "O grupo %s não existe.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "O grupo %s não pode ser apagado: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Foi indicado -L e -U ao mesmo tempo.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Não foi possível alterar a senha do grupo %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "O grupo %s não pode ser trancado: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "O grupo %s não pode ser destrancado: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "O grupo %s não pode ser modificado: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Erro ao procurar o %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nenhum nome de grupo indicado, a utilizar %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nenhum nome de grupo indicado, nenhum nome para o gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nenhum nome de utilizador indicado, a utilizar %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s não existe\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPÇÃO...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Erro ao abrir `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Erro ao criar conta para `%s': linha formatada incorrectamente.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID de utilizador inválido %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "A recusar a criação de uma conta com o UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Erro ao criar grupo para `%s' com o GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "A recusar utilizar directório pessoal perigoso `%s' para %s por omissão\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Erro ao criar a directoria pessoal de %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Erro ao definir a senha inicial de %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Erro ao criar a conta para o utilizador %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "A modificar a senha de %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nova senha" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nova senha (confirmação)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "As senhas não condizem, tente novamente.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Alteração de senha cancelada.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Erro ao ler do descritor do ficheiro %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Erro ao alterar a senha do utilizador %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Erro ao alterar a senha do grupo %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Senha alterada.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "O grupo %jd não existe.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Erro ao criar grupo `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "A criação da conta falhou: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Erro ao criar %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Utilizador %s não pode ser apagado: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s não tem um número gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Não existe grupo com o GID %jd, não será removido.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "O grupo com o GID %jd não tinha nome.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "O grupo %s não pode ser apagado: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "erro ao remover a directoria pessoal do utilizador" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Não foi possível mudar a senha do utilizador %s: %s\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "O utilizador %s não pode ser bloqueado: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "O utilizador %s não pode ser desbloqueado: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Atenção: O grupo com o ID %jd não existe.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "O utilizador %s não pode ser modificado: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "O grupo %s não pode ser modificado: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Não existe directoria pessoal antiga para %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Não existe nova directoria pessoal para %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Erro ao mover %s para %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "não foi possível abrir ficheiro de configuração `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "não foi possível obter dados do ficheiro de configuração `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "o ficheiro de configuração `%s' é demasiado grande" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "não foi possível ler o ficheiro de configuração `%s': %s" #: lib/error.c:62 msgid "success" msgstr "sucesso" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "módulo desactivado por configuração" #: lib/error.c:66 msgid "generic error" msgstr "erro genérico" #: lib/error.c:68 msgid "not enough privileges" msgstr "não tem privilégios suficientes" #: lib/error.c:70 msgid "access denied" msgstr "acesso negado" #: lib/error.c:72 msgid "bad user/group name" msgstr "nome do utilizador/grupo inválido" #: lib/error.c:74 msgid "bad user/group id" msgstr "id do utilizador/grupo inválido" #: lib/error.c:76 msgid "user/group name in use" msgstr "nome do utilizador/group em uso" #: lib/error.c:78 msgid "user/group id in use" msgstr "id do utilizador/group em uso" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "erro ao manipular atributos da consola" #: lib/error.c:82 msgid "error opening file" msgstr "erro ao abrir ficheiro" #: lib/error.c:84 msgid "error locking file" msgstr "erro ao bloquear ficheiro" #: lib/error.c:86 msgid "error statting file" msgstr "erro ao obter dados do ficheiro" #: lib/error.c:88 msgid "error reading file" msgstr "erro ao ler ficheiro" #: lib/error.c:90 msgid "error writing to file" msgstr "erro ao escrever para ficheiro" #: lib/error.c:92 msgid "data not found in file" msgstr "dados não encontrados no ficheiro" #: lib/error.c:94 msgid "internal initialization error" msgstr "erro interno de inicialização" #: lib/error.c:96 msgid "error loading module" msgstr "erro ao carregar módulo" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "erro ao resolver símbolo em módulo" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "versões não compatíveis de biblioteca/módulo" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "desbloquear tornaria o campo de senha vazio" #: lib/error.c:105 msgid "invalid attribute value" msgstr "valor de atributo inválido" #: lib/error.c:107 msgid "invalid module combination" msgstr "combinação de módulos inválida" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "erro desconhecido" #: lib/misc.c:240 msgid "invalid number" msgstr "número inválido" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID inválido" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "não existe função de inicialização %s em `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "versão não compatível de módulo em `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "o módulo `%s' não define o `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "erro ao ler atributos da consola" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "erro ao modificar atributos da consola" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "erro ao ler da consola" #: lib/user.c:218 msgid "name is not set" msgstr "nome não foi configurado" #: lib/user.c:223 msgid "name is too short" msgstr "o nome é demasiado curto" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "o nome é demasiado comprido (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "o nome contém caracteres não-ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "o nome contém caracteres de controlo" #: lib/user.c:249 msgid "name contains whitespace" msgstr "o nome contém espaços em branco" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "o nome começa com o hífen" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "o nome contém o caracter inválido `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "o utilizador %s não tem um UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "o grupo %s não tem um GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "o utilizador %jd não tem nome" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "O grupo %jd não tem nome" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "o utilizador não tem nome nem UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "o grupo não tem nome nem GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "A recusar utilizar directório pessoal perigoso `%s' por omissão" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Valor por omissão do campo inválido %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "erro ao bloquear o ficheiro: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "não foi possível obter o contexto de segurança por omissão: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "não foi possível obter o contexto de segurança de `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" "não foi possível configurar o contexto de segurança por omissão para `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "não foi possível obter o contexto de segurança por omissão: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "não foi possível determinar o contexto de segurança para `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "não foi possível abrir `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "não possível obter dados `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "erro ao criar `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Erro ao mudar o dono de `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Erro ao mudar o modo de `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Erro ao ler `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Erro ao escrever `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "não foi possível ler de `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Erro ao mover %s para %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Erro ao mudar o modo de `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Erro ao ler `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Erro ao ler `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "a entidade não tem o atributo %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "o objecto não tem o atributo %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s valor `%s': `:' não permitido" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s valor `%s': `:' não permitido" #: modules/files.c:1136 msgid "entry already present in file" msgstr "entrada já está presente no ficheiro" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "não foi possível escrever para `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "a entidade não tem o atributo %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "entrada com o mesmo nome já está presente no ficheiro" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' não permitido em senhas cifradas" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "erro ao cifrar a senha" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "os módulos `%s' e `%s' não podem ser combinados" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "não vou executar com privilégios de super-utilizador" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "o ficheiro shadow não está presente -- a desactivar" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "erro ao inicializar a biblioteca ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "não foi possível definir o protocolo LDAP para a versão %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "não foi possível negociar TLS com o servidor LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "não foi possível ligar ao servidor LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "não foi possível ligar ao servidor LDAP, primeira tentativa como `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "o objecto utilizador não tem o atributo %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "o objecto utilizador foi criado sem `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "erro ao criar uma entrada na directoria LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "erro ao modificar entrada na directoria LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "erro ao alterar o nome da entrada na directoria LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "o objecto não tinha o atributo %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "erro ao apagar entrada na directoria LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "o objecto não tem o atributo %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "Esquema de cifras de passwords não suportado" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "objecto não encontrada na directoria LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "o atributo `%s' não foi encontrado" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "erro ao definir a senha na directoria LDAP para %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nome do Servidor LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Base DN de Pesquisa LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN de Ligação LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Senha de Ligação LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Utilizador SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Utilizador Autorizado SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Erro ao criar utilizador Cyrus SASL: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Erro ao remover utilizador Cyrus SASL : %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "erro ao inicializar Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "erro ao criar a directoria pessoal do utilizador" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "erro ao remover a directoria pessoal do utilizador" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "erro ao mover a directoria pessoal do utilizador" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Erro ao inicializar %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID inválido %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "A procurar pelo grupo com o ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "A procurar pelo grupo com o nome %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "A procurar pelo utilizador com o ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "A procurar pelo utilizador com o nome %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Entrada não encontrada.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Perguntas sucederam.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Perguntas falharam.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Classes de objectos por omissão dos utilizadores:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nomes dos atributos por omissão dos utilizadores:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "A obter atributos por omissão dos utilizadores:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "A copiar estrutura do utilizador:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "" #~ "ficheiro de cópia de segurança `%s' existe e não é um ficheiro regular" #~ msgid "backup file size mismatch" #~ msgstr "tamanho do ficheiro de cópia de segurança difere" po/pt_BR.po000066400000000000000000001071351471266067600130700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # ataliba , 2012 # David Barzilay , 2003, 2004 # Glaucia Freitas , 2009 # Igor Pires Soares , 2006, 2007, 2008, 2009 # Miloslav Trmač , 2011 # Pedro Macedo , 2005 # Rodrigo Padula de Oliveira , 2005, 2006 # Taylon Silmer , 2011 # Tiago Pasqualotto , 2004 # ufa , 2012 # Jonatas Z. de Vasconcellos , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-03-23 12:14-0400\n" "Last-Translator: Jonatas Z. de Vasconcellos \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "fedora/language/pt_BR/)\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Falha ao abandonar privilégios.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Erro interno.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s não está autorizado a alterar as informações do finger de %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Contexto de usuário desconhecido" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Não foi possível determinar o contexto padrão para /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Erro ao inicializar o PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autenticação falhou para %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Erro interno no PAM \"%s\".\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Usuário desconhecido autenticado.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Usuário incompatível.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DIAS" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPÇÃO...] usuário" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Erro ao analisar argumentos: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nenhum nome de usuário especificado.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Erro ao inicializar %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "O usuário %s não existe.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "A conta está bloqueada.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "A conta não está bloqueada.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Mínimo:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Máximo:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Aviso:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inativo:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nunca" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Última alteração:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Senha expira:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Senha inativa:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Conta expira:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Falha ao modificar a informação de envelhecimento para %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPÇÃO...] [usuário]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nenhum nome de usuário especificado, sem nome para o uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Alterando informações do finger para %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nome completo" #: apps/lchfn.c:151 msgid "Surname" msgstr "Sobrenome" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Nome fornecido" #: apps/lchfn.c:172 msgid "Office" msgstr "Escritório" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefone comercial" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefone residencial" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Endereço de e-mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Informações do finger não alteradas: erro de entrada.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Informações do finger alteradas.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Informações do finger não alteradas: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Trocando shell para %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Novo shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell não alterado: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell alterado.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPÇÃO...] grupo" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nenhum nome de grupo especificado.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID %s de grupo inválido\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Falha na criação do grupo: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "O grupo %s não existe.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "O grupo %s não pôde ser apagado: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NOME" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "lista de membros do grupo para adicionar" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "lista de membros do grupo para remover" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "bloquear grupo" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "desbloquear grupo" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Ambos -L e -U especificados.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Não foi possível definir a senha do grupo %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "O grupo %s não pôde ser bloqueado: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "O grupo %s não pôde ser desbloqueado: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "O grupo %s não pôde ser modificado: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Erro ao procurar %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nenhum nome de grupo especificado, usando %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nenhum nome de grupo especificado, nenhum nome para o gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nenhum nome de usuário especificado, usando %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s não existe\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPÇÃO...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Erro ao abrir \"%s\": %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Erro ao criar conta para \"%s\": linha formatada inadequadamente.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID de usuário %s inválido\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Recusando criar conta com UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Erro ao criar grupo para \"%s\" com GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Recusando a usar o diretório home perigoso %s' para %s por padrão\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Erro ao criar diretório home para %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Erro ao definir senha inicial para %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Erro ao criar conta de usuário para %s: %s.\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Alterando senha para %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nova senha" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nova senha (confirmar)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Senhas não coincidem, tente novamente.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Alteração de senha cancelada.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Erro ao ler o descritor de arquivo %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Erro ao definir senha para o usuário %s: %s\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Erro ao definir senha para o grupo %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Senha alterada.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "O grupo %jd não existe\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Erro ao criar o grupo \"%s\": %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "A criação da conta falhou: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Erro ao criar %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "O usuário %s não pôde ser apagado: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s não tem um número gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Não existe um grupo com o GID %jd, não será removido.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "O grupo com o GID %jd não tinha um nome.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "O grupo %s não pôde ser apagado: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "erro ao remover diretório home para o usuário" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Falha ao definir a senha do usuário %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "O usuário %s não pôde ser bloqueado: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "O usuário %s não pôde ser desbloqueado: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Aviso: O grupo de ID %jd não existe\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "O usuário %s não pôde ser modificado: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "O grupo %s não pôde ser modificado: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Não há um diretório home antigo para %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Não há um novo diretório home para %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Erro ao mover %s para %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "não foi possível abrir o arquivo de configuração \"%s\": %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" "não foi possível obter as propriedades do arquivo de configuração \"%s\": %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "o arquivo de configuração \"%s\" é muito grande" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "não foi possível acessar o arquivo de configuração \"%s\": %s" #: lib/error.c:62 msgid "success" msgstr "sucesso" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "módulo desativado pela configuração" #: lib/error.c:66 msgid "generic error" msgstr "erro genérico" #: lib/error.c:68 msgid "not enough privileges" msgstr "não há privilégios suficientes" #: lib/error.c:70 msgid "access denied" msgstr "acesso negado" #: lib/error.c:72 msgid "bad user/group name" msgstr "nome do usuário/grupo inválido" #: lib/error.c:74 msgid "bad user/group id" msgstr "id do usuário/grupo inválido" #: lib/error.c:76 msgid "user/group name in use" msgstr "nome do usuário/grupo em uso" #: lib/error.c:78 msgid "user/group id in use" msgstr "id do usuário/grupo em uso" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "erro ao manipular atributos do terminal" #: lib/error.c:82 msgid "error opening file" msgstr "erro ao abrir arquivo" #: lib/error.c:84 msgid "error locking file" msgstr "erro ao bloquear arquivo" #: lib/error.c:86 msgid "error statting file" msgstr "erro ao criar estatísticas do arquivo" #: lib/error.c:88 msgid "error reading file" msgstr "erro ao ler arquivo" #: lib/error.c:90 msgid "error writing to file" msgstr "erro ao gravar no arquivo" #: lib/error.c:92 msgid "data not found in file" msgstr "dados não encontrados no arquivo" #: lib/error.c:94 msgid "internal initialization error" msgstr "erro interno de inicialização" #: lib/error.c:96 msgid "error loading module" msgstr "erro ao carregar módulo" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "erro ao resolver símbolo em módulo" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "versões de biblioteca/módulo não compatíveis" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "desbloquear deixará o campo da senha vazio" #: lib/error.c:105 msgid "invalid attribute value" msgstr "valor de atributo inválido" #: lib/error.c:107 msgid "invalid module combination" msgstr "combinação de módulo inválida" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "erro desconhecido" #: lib/misc.c:240 msgid "invalid number" msgstr "número inválido" #: lib/misc.c:254 msgid "invalid ID" msgstr "ID inválido" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "não existe uma função de inicialização %s em \"%s\"" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "versão não compatível de módulo em \"%s\"" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "o módulo \"%s\" não define \"%s\"" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "erro ao ler atributos do terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "erro ao definir atributos do terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "erro ao ler do terminal" #: lib/user.c:218 msgid "name is not set" msgstr "o nome não está definido" #: lib/user.c:223 msgid "name is too short" msgstr "o nome é muito curto" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "o nome é muito longo (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "o nome contém caracteres não ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "o nome contém caracteres de controle" #: lib/user.c:249 msgid "name contains whitespace" msgstr "o nome contém espaço" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "o nome inicia com um hífen" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "o nome contém o caractere inválido \"%c\"" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "o usuário %s não possui UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "o grupo %s não possui GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "o usuário %jd não possui um nome" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "o grupo %jd não possui um nome" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "o usuário não possui nome nem UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "o grupo não possui nome nem GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Recusando a usar o diretório home perigoso %s' por padrão" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Valor padrão inválido para o campo %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "erro ao bloquear arquivo: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "não foi possível obter o contexto padrão de segurança: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "não foi possível obter o contexto de segurança de \"%s\": %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" "não foi possível determinar o contexto padrão de segurança de \"%s\": %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "não foi possível obter o contexto padrão de segurança: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "não foi possível determinar o contexto de segurança para \"%s\": %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "não foi possível abrir \"%s\": %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "não foi possível criar estatísticas de \"%s\": %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "erro ao criar \"%s\": %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Erro ao mudar o proprietário de \"%s\": %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Erro modificando o modo de `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Erro ao ler \"%s\": %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Erro ao escrever \"%s\": %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "não foi possível ler de \"%s\": %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Erro ao mover %s para %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Erro modificando o modo de `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Erro ao ler \"%s\": %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Erro ao ler \"%s\": %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "o objeto da entidade não tem um atributo %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "o objeto não tem o atributo %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s de valor \"%s\": \":\" não permitido" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s de valor \"%s\": \":\" não permitido" #: modules/files.c:1136 msgid "entry already present in file" msgstr "entrada já presente no arquivo" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "não foi possível gravar em \"%s\": %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "o objeto da entidade não tem um atributo %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "entrada com o nome conflitante já presente no arquivo" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "\":\" não permitido em senhas criptografadas" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "erro ao criptografar a senha" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "os módulos `%s' e `%s' não podem ser combinados" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "executando sem os privilégios de superusuário" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "arquivo shadow não está presente -- desabilitando" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "erro ao inicializar a biblioteca ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "não foi possível definir o protocolo LDAP para a versão %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "não foi possível negociar TLS com o servidor LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "não foi possível conectar ao servidor LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "não foi possível conectar ao servidor LDAP, primeira tentativa como \"%s\": " "%s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "o objeto do usuário não tinha o atributo %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "o objeto do usuário foi criado sem \"%s\"" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "erro ao criar a entrada do diretório LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "erro ao modificar entrada de diretório LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "erro ao renomear a entrada do diretório LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "o objeto não tinha o atributo %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "erro ao apagar a entrada do diretório LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "o objeto não tem o atributo %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "esquema de criptografia de senha não suportado" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "objeto não encontrado no diretório LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "atributo \"%s\" não encontrado" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "erro ao definir senha no diretório LDAP para %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Nome do servidor LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "DN base para pesquisas LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN de conexão LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Senha de conexão LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Usuário SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Usuário de autorização SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Erro do Cyrus SASL ao criar usuário: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Erro do Cyrus SASL ao remover usuário: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "erro ao inicializar Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "erro ao criar diretório home para o usuário" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "erro ao remover diretório home para o usuário" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "erro ao mover diretório home para o usuário" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Erro ao inicializar %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "ID %s inválido\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Pesquisando por grupo com ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Pesquisando por grupo de nome %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Pesquisando por usuário com ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Pesquisando por usuário de nome %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Entrada não encontrada.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Prompts bem-sucedidos.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Prompts falharam.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Classes padrões de objetos dos usuários:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Nomes padrões dos atributos dos usuários:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Obtendo atributos padrões dos usuários:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Copiando estrutura do usuário:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "o arquivo de backup \"%s\" existe e não é um arquivo normal" #~ msgid "backup file size mismatch" #~ msgstr "Arquivo de backup difere no tamanho" po/ro.po000066400000000000000000001151211471266067600124740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Alexandru Szasz , 2007 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2024-03-13 18:35+0000\n" "Last-Translator: Remus-Gabriel Chelu \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: Weblate 5.4\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Eșec în eliminarea privilegiilor.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Eroare internă.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" "%s nu este autorizat să modifice informațiile despre datele personale ale %" "s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Context de utilizator necunoscut" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Nu se poate stabili contextul implicit pentru „/etc/passwd”\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Eroare la inițializarea PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autentificarea a eșuat pentru %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Eroare internă PAM „%s”.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Utilizator necunoscut autentificat.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Utilizatorul nu se potrivește.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "prompt pentru toate informațiile" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "listează parametrii de învechire (expirare) pentru utilizator" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "numărul minim de zile între schimbările de parolă" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "ZILE" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "numărul maxim de zile între schimbările de parolă" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "data ultimei schimbări de parolă în zile de la 1.1.1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "numărul de zile de la data de expirare a parolei când contul este considerat " "inactiv" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "data de expirare a parolei în zile de la 1.1.1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "numărul de zile înainte de expirare pentru a începe avertizarea " "utilizatorului" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPȚIUNE...] utilizator" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Eroare la analiza argumentelor: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nu s-a specificat niciun nume de utilizator.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Eroare la inițializarea %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Utilizatorul %s nu există.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Contul este blocat.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Contul nu este blocat.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minim:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maxim:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maxim:\tNiciunul\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Avertisment:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inactiv:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inactiv:\tNiciodată\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Trebuie să schimbați parola la următoarea autentificare" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Niciodată" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Ultima schimbare:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Parola expiră:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Parolă inactivă:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Contul expiră:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Modificarea informațiilor de timp pentru %s a eșuat: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPȚIUNE..] [utilizator]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" "Nu s-a specificat niciun nume de utilizator, nu există niciun nume pentru " "uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Se modifică informațiile privind datele personale pentru %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Nume complet" #: apps/lchfn.c:151 msgid "Surname" msgstr "Nume de familie" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Pseudonim" #: apps/lchfn.c:172 msgid "Office" msgstr "Birou" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefonul de la birou" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefonul de acasă" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adresă de poștă electronică" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" "Informațiile despre datele personale nu s-au modificat: eroare de intrare.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Informațiile despre datele personale s-au schimbat.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Informațiile despre datele personale nu s-au schimbat: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Se schimbă shell-ul pentru %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Shell nou" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell-ul nu s-a schimbat: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell-ul s-a schimbat.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid pentru noul grup" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUMĂR" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "creează un grup de sistem" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPȚIUNE...] grup" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nu s-a specificat niciun nume de grup.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "ID de grup nevalid %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Crearea grupului a eșuat: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupul %s nu există.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupul %s nu poate fi șters: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "stabilește GID-ul pentru grup" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "modifică numele grupului pentru a avea numele specificat" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NUME" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "parola în clar pentru utilizare cu grupul" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "ȘIR" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "parolă pre-cifrată pentru utilizare cu grupul" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "lista de administratori de adăugat" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "lista de administratori de eliminat" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "lista membrilor grupului de adăugat" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "lista membrilor grupului de eliminat" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "blocare grup" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "deblocare grup" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "S-a specificat atât L cât și U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Stabilirea parolei pentru grupul %s a eșuat: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grupul %s nu poate fi blocat: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grupul %s nu poate fi deblocat: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grupul %s nu poate fi modificat: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Eroare la căutarea %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "listează membrii unui grup numit în loc de membrii grupului pentru " "utilizatorul numit" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "listează informațiile despre membri numai după nume, nu și după UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nu s-a specificat niciun nume de grup, se va folosi %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nu s-a specificat niciun nume de grup, niciun nume pentru gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nu s-a specificat niciun nume de utilizator, se folosește %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s nu există\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fișier cu înregistrări de informații despre utilizator" #: apps/lnewusers.c:49 msgid "PATH" msgstr "RUTĂ" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "nu creează directoare personale" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "nu creează directoarele de poștă electronică" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPȚIUNE...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Eroare la deschiderea „%s”: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Eroare la crearea contului „%s”: linie incorect formatată.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "ID de utilizator nevalid %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Se refuză crearea unui cont cu UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Eroare la crearea grupului pentru „%s” cu GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Se refuză utilizarea directorului personal periculos „%s” pentru %s în mod " "implicit\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Eroare la crearea directorului personal pentru %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Eroare la crearea directorului de poștă electronică pentru %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Eroare la definirea parolei inițiale pentru %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Eroare la crearea contului de utilizator pentru %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "stabilește parola de grup în loc de parola de utilizator" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "parolă nouă în clar" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "parolă nouă criptată" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "citește noua parolă în clar din descriptorul dat" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "citește noua parolă criptată din descriptorul dat" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Schimbare parolă pentru %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Parolă nouă" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Parolă nouă (confirmare)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Parolele nu se potrivesc, încercați din nou.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Schimbarea parolei a fost anulată.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Eroare la citirea din descriptorul de fișier %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Eroare la stabilirea parolei pentru utilizatorul %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Eroare la stabilrea parolei pentru grupul %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Parola a fost schimbată.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "creează un utilizator de sistem" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "informații GECOS pentru noul utilizator" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "directorul personal pentru noul utilizator" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "directorul cu fișiere pentru noul utilizator" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "shell pentru noul utilizator" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid pentru noul utilizator" #: apps/luseradd.c:71 msgid "group for new user" msgstr "grupul pentru noul utilizator" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "nu creează directorul personal pentru utilizator" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "nu creează un grup cu același nume ca și utilizatorul" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "nume comun pentru noul utilizator" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "prenumele noului utilizator" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "numele de familie al noului utilizator" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "numărul camerei noului utilizator" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "numărul de telefon al noului utilizator" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "numărul de telefon de la domiciliu al noului utilizator" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupul %jd nu există\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Eroare la crearea grupului „%s”: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Crearea contului a eșuat: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Eroare la crearea %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Eroare la crearea directorului de poștă electronică: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "nu elimină grupul privat al utilizatorului, dacă utilizatorul are unul" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "elimină directorul personal al utilizatorului" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Utilizatorul %s nu a putut fi șters: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nu avea un număr gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Nu există niciun grup cu GID %jd, nu se elimină.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupul cu GID %jd nu avea un nume de grup.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Grupul %s nu a putut fi șters: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Eroare la eliminarea directorului personal: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Eroare la eliminarea directorului de poștă electronică: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "informații GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "director personal" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "mută conținutul directorului personal" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "stabilește shell-ul pentru utilizator" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "stabilește UID-ul pentru utilizator" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "stabilește GID-ul primar pentru utilizator" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "schimbă numele de identificare pentru utilizator" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "parola în clar a utilizatorului" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "parolă pre-cifrată pentru utilizator" #: apps/lusermod.c:76 msgid "lock account" msgstr "blocare cont" #: apps/lusermod.c:79 msgid "unlock account" msgstr "deblocare cont" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "stabilește numele comun pentru utilizator" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "stabilește prenumele utilizatorului" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "stabilește numele de familie al utilizatorului" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "stabilește numărul camerei utilizatorului" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "stabilește numărul de telefon al utilizatorului" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "stabilește numărul de telefon de la domiciliu al utilizatorului" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Stabilirea parolei pentru %s a eșuat: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Utilizatorul %s nu a putut fi blocat: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Utilizatorul %s nu a putut fi deblocat: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Avertisment: Grupul cu ID-ul %jd nu există.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Utilizatorul %s nu a putut fi modificat: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Grupul %s nu a putut fi modificat: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Nu există un director personal vechi pentru %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Nu există un nou director personal pentru %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Eroare la mutarea lui %s în %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "nu s-a putut deschide fișierul de configurare „%s”: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "nu s-a putut obține starea fișierului de configurare „%s”: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "fișierul de configurare „%s” este prea mare" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "nu s-a putut citi fișierul de configurare „%s”: %s" #: lib/error.c:62 msgid "success" msgstr "succes" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul dezactivat prin configurare" #: lib/error.c:66 msgid "generic error" msgstr "eroare generică" #: lib/error.c:68 msgid "not enough privileges" msgstr "privilegii insuficiente" #: lib/error.c:70 msgid "access denied" msgstr "acces refuzat" #: lib/error.c:72 msgid "bad user/group name" msgstr "nume greșit de utilizator/grup" #: lib/error.c:74 msgid "bad user/group id" msgstr "identificator de utilizator/grup greșit" #: lib/error.c:76 msgid "user/group name in use" msgstr "nume de utilizator/grup în uz" #: lib/error.c:78 msgid "user/group id in use" msgstr "identificator de utilizator/grup în uz" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "eroare la modificarea atributelor terminalului" #: lib/error.c:82 msgid "error opening file" msgstr "eroare la deschiderea fișierului" #: lib/error.c:84 msgid "error locking file" msgstr "eroare la blocarea fișierului" #: lib/error.c:86 msgid "error statting file" msgstr "eroare la efectuarea apelului stat() asupra fișierului" #: lib/error.c:88 msgid "error reading file" msgstr "eroare la citirea fișierului" #: lib/error.c:90 msgid "error writing to file" msgstr "eroare la scrierea în fișier" #: lib/error.c:92 msgid "data not found in file" msgstr "datele nu au fost găsite în fișier" #: lib/error.c:94 msgid "internal initialization error" msgstr "eroare internă de inițializare" #: lib/error.c:96 msgid "error loading module" msgstr "eroare la încărcarea modulului" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "eroare la rezolvarea simbolului din modul" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "versiune de bibliotecă/modul necorespunzătoare" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "deblocarea ar face ca câmpul de parolă să fie gol" #: lib/error.c:105 msgid "invalid attribute value" msgstr "valoare nevalidă a atributului" #: lib/error.c:107 msgid "invalid module combination" msgstr "combinație de module nevalidă" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "directorul personal al utilizatorului nu este deținut de acesta" #: lib/error.c:115 msgid "unknown error" msgstr "eroare necunoscută" #: lib/misc.c:240 msgid "invalid number" msgstr "număr nevalid" #: lib/misc.c:254 msgid "invalid ID" msgstr "identificator nevalid" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "nicio funcție de inițializare %s în „%s”" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "neconcordanță de versiune de modul în „%s”" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modulul „%s” nu definește „%s”" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "eroare la citirea atributelor terminalului" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "eroare la configurarea atributelor terminalului" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "eroare la citirea de la terminal" #: lib/user.c:218 msgid "name is not set" msgstr "numele nu este definit" #: lib/user.c:223 msgid "name is too short" msgstr "numele este prea scurt" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "numele este prea lung (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "numele conține caractere non-ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "numele conține caractere de control" #: lib/user.c:249 msgid "name contains whitespace" msgstr "numele conține spații albe" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "numele începe cu o cratimă" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "numele conține caracterul nevalid „%c”" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "utilizatorul %s nu are UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "utilizatorul %s nu a fost găsit" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "grupul %s nu are GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "grupul %s nu a fost găsit" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "utilizatorul %jd nu are nume" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "grupul %jd nu are nume" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "utilizatorul nu are nici un nume, nici un UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "grupul nu are nici un nume, nici un GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Se refuză utilizarea directorului personal periculos „%s” în mod implicit" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Valoare implicită nevalidă a câmpului %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "eroare la blocarea fișierului: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "nu s-a putut obține contextul de securitate implicit: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "nu s-a putut obține contextul de securitate pentru „%s”: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "nu s-a putut stabili contextul de securitate implicit la „%s”: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" "nu s-a putut obține identificatorul de context al fișierului " "etichetă-selinux: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "nu s-a putut determina contextul de securitate pentru „%s”: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "nu s-a putut deschide „%s”: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "nu s-a putut obține starea „%s”: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "eroare la crearea „%s”: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Eroare la schimbarea proprietarului lui „%s”: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Eroare la schimbarea modului lui „%s”: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Eroare la citirea „%s”: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Eroare la scrierea „%s”: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "nu s-a putut citi din „%s”: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "Conținut nevalid al blocării „%s”" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "Blocarea %s este deținută de procesul %ju" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "Eroare la eliminarea blocării învechite „%s”: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "eroare la deschiderea fișierului temporar pentru „%s”: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "Nu se poate obține blocarea „%s”: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "Eroare la rezolvarea „%s”: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "Eroare la înlocuirea „%s”: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "obiectul duplicat nu are atributul %s" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "obiectul original nu are atributul %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "ID-ul %lu este deja utilizat de %s" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s valoare „%s”: „\\n" "” nu este permis" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s valoare „%s”: „:” nu este permis" #: modules/files.c:1136 msgid "entry already present in file" msgstr "intrare deja prezentă în fișier" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "nu s-a putut scrie în „%s”: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "obiectul entitate nu are niciun atribut %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "intrare cu nume conflictual deja prezentă în fișier" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "„:” și „\\n" "” nu sunt permise în parola criptată" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "eroare la criptarea parolei" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "modulele „%s” și „%s” nu pot fi combinate" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "nu se execută cu privilegii de superutilizator" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "nici un fișier „shadow” prezent -- se dezactivează" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "eroare la inițializarea bibliotecii ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "nu s-a putut configura protocolul LDAP pentru versiunea %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "nu s-a putut negocia TLS cu serverul LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "nu s-a putut face legătura cu serverul LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "nu s-a putut face legătura cu serverul LDAP, prima încercare ca „%s”: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "obiectul utilizator nu avea niciun atribut %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "obiectul utilizator a fost creat fără „%s”" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "eroare la crearea unei intrări în directorul LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "eroare la modificarea intrării în directorul LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "eroare la redenumirea intrării în directorul LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "obiectul nu avea niciun atribut %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "eroare la eliminarea intrării în directorul LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "obiectul nu are atributul %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "schemă de criptare a parolei neacceptată" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "nu există un astfel de obiect în directorul LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "nu a fost găsit niciun atribut „%s”" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "eroare la stabilirea parolei pentru %s în directorul LDAP: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Numele serverului LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "DN de bază pentru căutări LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN asociat LDAP" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Parola asociată LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Utilizator SASL LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Utilizator de autorizare SASL LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Eroare Cyrus SASL la crearea utilizatorului: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Eroare Cyrus SASL la eliminarea utilizatorului: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "eroare la inițializarea Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "eroare la crearea directorului personal al utilizatorului" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "eroare la eliminarea directorului personal al utilizatorului" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "eroare la mutarea directorului personal al utilizatorului" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Eroare la inițializarea %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Identificator nevalid: %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Se caută grupul cu ID-ul %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Se caută grupul cu numele %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Se caută utilizatorul cu ID-ul %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Se caută utilizatorul cu numele %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Intrarea nu a fost găsită.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Solicitarea a fost finalizată cu succes.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Solicitarea a eșuat.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Clase de obiecte utilizator implicite:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Numele atributelor de utilizator implicite:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Se obțin atributele de utilizator implicite:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Se copiază structura utilizatorului:\n" po/ru.po000066400000000000000000001334311471266067600125060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Andrew Martynov , 2004, 2005, 2006, 2007 # triplepointfive , 2012 # Leonid Kanter , 2003 # Misha Shnurapet , 2011 # Miloslav Trmač , 2011 # Nikolay Sivov , 2007 # Stanislav Darchinov , 2011 # Yulia , 2008, 2009 # Yulia , 2012 # Игорь Горбунов , 2013 # Леонид Кузин , 2012 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Russian (http://www.transifex.com/projects/p/fedora/language/" "ru/)\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Ошибка сброса привилегий.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Внутренняя ошибка.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s не авторизован для изменения finger информации о %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Неизвестный пользовательский контекст" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Не могу установить контекст по умолчанию для /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Ошибка инициализации PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Ошибка аутентификации для %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Внутренняя ошибка PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Аутентификация неизвестного пользователя.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Пользователь не совпадает.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "запрашивать по всем данным" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "список параметров, которые устаревают, для пользователя" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "минимум дней между сменой пароля" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "ДНИ" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "максимум дней между сменой пароля" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "дата последнего изменения пароля в днях с 1.01.1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "количество дней с даты окончания срока действия пароля, которые должны " "пройти для того, чтобы учетная запись считалась неактивной" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "дата окончания срока действия пароля в днях с 1.01.1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "количество дней между завершением срока действия и показом предупреждения " "пользователю" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ПАРАМЕТР...] пользователь" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Ошибка разбора аргументов: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Имя пользователя не указано.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Ошибка инициализации %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Пользователь %s не существует.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Учетная запись заблокирована.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Учетная запись не заблокирована.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Минимум:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Максимум:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Максимум:\tнет\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Предупреждение:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Неактивных:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Неактивных:\tНикогда\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Должен сменить пароль при следующем входе" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Никогда" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Последнее изменение:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Действие пароля завершается:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Пароль не активен:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Учетная запись действительна до:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Ошибка изменения информации о сроках для %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ПАРАМЕТР...] [пользователь]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Имя пользователя не указано, нет имени для uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Изменение информации finger для %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Полное имя" #: apps/lchfn.c:151 msgid "Surname" msgstr "Фамилия" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Имя" #: apps/lchfn.c:172 msgid "Office" msgstr "Офис" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Служебный телефон" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Домашний телефон" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Адрес E-Mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Информация finger не изменена: ошибка ввода.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Информация finger изменена.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Информация finger не изменена: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Изменение оболочки для %s\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Новая оболочка" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Оболочка не изменена: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Оболочка изменена.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid для новой группы" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "ЧИСЛО" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "создать системную группу" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ПАРАМЕТР...] группа" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Не указано имя группы.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Неверен ID группы %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Ошибка создания группы: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Группа %s не существует.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Группа %s не может быть удалена: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "установить GID для группы" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "изменить группу, задав название" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "ИМЯ" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "не зашифрованный пароль для использования в группе" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "СТРОКА" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "предварительно зашифрованный пароль для использования в группе" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "список администраторов для добавления" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "список администраторов для удаления" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "список членов группы для добавления" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "список членов группы для удаления" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "заблокировать группу" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "разблокировать группу" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L и -U указаны одновременно.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Ошибка установки пароля для группы %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Группа %s не может быть заблокирована: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Группа %s не может быть разблокирована: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Группа %s не может быть изменена: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Ошибка поиска %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "список членов по имени группы, а не членство в группе по имени пользователя" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" "список членов только по имени, без личного или группового идентификаторов" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Не указано имя группы, используется %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Не указано имя группы, нет имени для gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Имя пользователя не указано, используется %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s не существует.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "файл с записанной информацией о пользователе" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ПУТЬ" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "не создавать домашний каталог" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "не отправлять почту в каталог /var/spool" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ПАРАМЕТР...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Ошибка открытия `%s': %s\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Ошибка создания учётной записи для «%s»: неверный формат строки.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Неверен ID пользователя %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Отказ в создании учетной записи с UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Ошибка создания группы для «%s» с GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Отказ использования небезопасного домашнего каталога «%s» для %s по " "умолчанию\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Ошибка создания домашнего каталога для %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Ошибка создания почтовой очереди для %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Ошибка установки начального пароля для %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Ошибка создания учетной записи пользователя %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "задать пароль для группы вместо пароля для пользователя" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "новый простой пароль" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "новый зашифрованный пароль" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "ввести новый пароль " #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "прочесть новый шифрованный пароль, полученный от дешифровщика" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Изменение пароля пользователя %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Новый пароль" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Новый пароль (подтвердите)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Пароли не совпадают, попробуйте еще раз.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Изменение пароля отменено.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Ошибка чтения дескриптора файла %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Ошибка установки пароля для пользователя %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Ошибка установки пароля для группы %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Пароль изменен.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "создать системного пользователя" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" "вспомогательная информация для нового пользователя (номер телефона, адрес, " "полное имя и т.д.)" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "домашний каталог для нового пользователя" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "каталог файлов для нового пользователя" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "командная оболочка для нового пользователя" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "идентификатор нового пользователя" #: apps/luseradd.c:71 msgid "group for new user" msgstr "группа для нового пользователя" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "не создавать домашний каталог для пользователя" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "не создавать группу с именем пользователя" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "обычное имя пользователя" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "имя, задающееся для нового пользователя" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "фамилия пользователя" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "номер кабинета для нового пользователя" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "номер телефона пользователя" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "домашний номер телефона пользователя" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Группа %jd не существует\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Ошибка создания группы `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Ошибка создания учетной записи: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Ошибка создания %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Ошибка создания почтовой очереди: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "не удалять собственные группы пользователей, если они имеются" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "удалить домашний каталог пользователя" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Пользователь %s не может быть удален: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s не имеет уровня gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Не существует группы с GID %jd, не удаляется.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Группа c GID %jd не имела имени.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Группа %s не может быть удалена: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "ошибка удаления домашнего каталога для пользователя" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Ошибка при удалении почтовой очереди: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "дополнительная информация GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "домашний каталог" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "переместить содержимое домашнего каталога" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "назначить командную оболочку для пользователя" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "назначить идентификатор пользователя" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "назначить пользователю основную группу " #: apps/lusermod.c:71 msgid "change login name for user" msgstr "изменить имя пользователя" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "открытый пароль для пользователя" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "предварительно зашифрованный пароль для пользователя" #: apps/lusermod.c:76 msgid "lock account" msgstr "заблокировать учётную запись" #: apps/lusermod.c:79 msgid "unlock account" msgstr "разблокировать учётную запись" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "установить общее имя пользователя" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "установить полученное имя пользователя" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "установить фамилию пользователя" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "установить номер кабинета пользователя" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "установить номер телефона пользователя" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "установить номер домашнего телефона пользователя" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Ошибка установки пароля для пользователя %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Пользователь %s не может быть заблокирован: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Пользователь %s не может быть разблокирован: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Предупреждение: Группа с номером %jd не существует.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Пользователь %s не может быть изменен: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Группа %s не может быть изменена: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Нет старого домашнего каталога для %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Нет нового домашнего каталога для %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Ошибка перемещения %s в %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "невозможно открыть файл конфигурации `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "невозможно получить информацию о файле конфигурации `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "файл конфигурации `%s' слишком велик" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "невозможно прочитать файл конфигурации `%s': %s" #: lib/error.c:62 msgid "success" msgstr "выполнено" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "модуль запрещен в настройках" #: lib/error.c:66 msgid "generic error" msgstr "общая ошибка" #: lib/error.c:68 msgid "not enough privileges" msgstr "недостаточно привилегий" #: lib/error.c:70 msgid "access denied" msgstr "доступ запрещен" #: lib/error.c:72 msgid "bad user/group name" msgstr "неверное имя пользователя/группы" #: lib/error.c:74 msgid "bad user/group id" msgstr "неверный ID пользователя/группы" #: lib/error.c:76 msgid "user/group name in use" msgstr "имя пользователя/группы используется" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID пользователя/группы используется" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "ошибка изменения атрибутов терминала" #: lib/error.c:82 msgid "error opening file" msgstr "ошибка открытия файла" #: lib/error.c:84 msgid "error locking file" msgstr "ошибка блокировки файла" #: lib/error.c:86 msgid "error statting file" msgstr "ошибка получения параметров файла" #: lib/error.c:88 msgid "error reading file" msgstr "ошибка чтения файла" #: lib/error.c:90 msgid "error writing to file" msgstr "ошибка записи в файл" #: lib/error.c:92 msgid "data not found in file" msgstr "данные не найдены в файле" #: lib/error.c:94 msgid "internal initialization error" msgstr "внутренняя ошибка инициализации" #: lib/error.c:96 msgid "error loading module" msgstr "ошибка загрузки модуля" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "ошибка определения символа в модуле" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "несоответствие версии модуля и библиотеки" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "при разблокировании поле пароля будет очищено" #: lib/error.c:105 msgid "invalid attribute value" msgstr "неверное значение аттрибута" #: lib/error.c:107 msgid "invalid module combination" msgstr "неверный состав модуля" #: lib/error.c:109 #, fuzzy msgid "user's home directory not owned by them" msgstr "домашний каталог для нового пользователя" #: lib/error.c:115 msgid "unknown error" msgstr "неизвестная ошибка" #: lib/misc.c:240 msgid "invalid number" msgstr "неверный номер" #: lib/misc.c:254 msgid "invalid ID" msgstr "неверный идентификатор" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "нет функции инициализации %s в `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "несоответствие версии модуля в `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "в модуле `%s' не определено значение `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "ошибка чтения атрибутов терминала" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "ошибка установки атрибутов терминала" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "ошибка чтения с терминала" #: lib/user.c:218 msgid "name is not set" msgstr "имя не установлено" #: lib/user.c:223 msgid "name is too short" msgstr "имя слишком коротко" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "имя слишком длинное (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "имя содержит не-ASCII символы" #: lib/user.c:242 msgid "name contains control characters" msgstr "имя содержит управляющие символы" #: lib/user.c:249 msgid "name contains whitespace" msgstr "имя содержит пробелы" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "имя начинается с дефиса" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "имя содержит неверный символ «%c»" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "пользователь %s не имеет UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "пользователь %s не найден" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "группа %s не имеет GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "группа %s не найдена" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "пользователь %jd не имеет имени" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "группа %jd не имеет имени" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "пользователь не имеет имени и кода UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "группа не имеет имени и кода UID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Отказ использования небезопасного домашнего каталога «%s» по умолчанию" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Неверное значение по умолчанию для поля %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "ошибка блокировки файла: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "невозможно получить контекст безопасности по умолчанию: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "невозможно получить контекст безопасности для `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" "невозможно задать значение контекста безопасности по умолчанию `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "невозможно получить контекст безопасности по умолчанию: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "невозможно определить контекст безопасности для `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "невозможно открыть `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "невозможно получить сведения о `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "ошибка создания `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Ошибка при смене владельца «%s»: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Ошибка при изменении режима «%s»: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Ошибка чтения `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Ошибка при записи «%s»: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "невозможно прочитать из `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Ошибка перемещения %s в %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Ошибка при изменении режима «%s»: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Ошибка чтения `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Ошибка чтения `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "объект не имеет атрибута %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "объект не имеет атрибута %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "Значение %s недопустимо `%s' `:'" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "Значение %s недопустимо `%s' `:'" #: modules/files.c:1136 msgid "entry already present in file" msgstr "запись уже существует в файле" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "невозможно записать в `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "объект не имеет атрибута %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "запись с конфликтующим именем уже есть в файле" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "Не допускается использование `:' в паролях" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "ошибка при шифровании пароля" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "модули `%s' и `%s' не могут быть объединены" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "выполняется без привилегий суперпользователя" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "нет файла shadow -- запрещено" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ошибка инициализации библиотеки ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "невозможно установить протокол LDAP для версии %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "невозможно согласовать TLS с сервером LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "невозможно подключиться к серверу LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "невозможно подключиться к серверу LDAP, первая попытка - `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "объект пользователя не имеет атрибута %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "объект пользователя был создан без `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "ошибка создания записи каталога LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "ошибка изменения записи каталога LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "ошибка переименования записи каталога LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "объект не имел атрибута %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "ошибка удаления записи каталога LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "объект не имеет атрибута %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "схема шифрования паролей не поддерживается" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "нет такого объекта в каталоге LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "не найден атрибут `%s'" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "ошибка установки пароля в каталоге LDAP для %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Имя сервера LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind Password" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Пользователь LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Авторизованный пользователь LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "ошибка Cyrus SASL при создании пользователя: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Ошибка SASL при удалении пользователя: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "ошибка инициализации Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "ошибка создания домашнего каталога для пользователя" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "ошибка удаления домашнего каталога для пользователя" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "ошибка перемещения домашнего каталога для пользователя" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Ошибка при инициализации %s: %s.\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Неверен идентификатор %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Поиск группы с номером %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Поиск группы с именем %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Поиск пользователя с номером %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Поиск пользователя с именем %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Запись не найдена\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Запрос выполнен удачно.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Запрос выполнен неудачно.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Стандартные классы объекта пользователя:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Имена стандартных атрибутов пользователя:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Получение стандартных атрибутов пользователя:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Копирование структуры пользователя:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "резервный файл `%s' существует и не является обычным файлом" #~ msgid "backup file size mismatch" #~ msgstr "несоответствие размера файла резервной копии" po/si.po000066400000000000000000000653111471266067600124740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 08:37+0000\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Sinhala (http://www.transifex.com/projects/p/fedora/language/" "si/)\n" "Language: si\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/sk.po000066400000000000000000001060661471266067600125010ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Dušan Kazik , 2011 # Marcel Telka , 2003-2005 # mmahut , 2008 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-10-12 05:52-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/fedora/language/" "sk/)\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) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Zlyhalo zahodenie práv.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Interná chyba.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s nemá oprávnenie meniť finger informácie pre %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Neznámy kontext používateľa" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Nepodarilo sa nastaviť predvolený kontext pre /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Chyba inicializácie PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Overenie totožnosti zlyhalo pre %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Interná chyba PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Overená totožnosť neznámeho používateľa.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Používateľ sa nezhoduje.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[VOĽBA...] používateľ" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Chyba pri analýze parametrov: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nebolo zadané meno používateľa.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Chyba pri inicializácii %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Používateľ %s neexistuje.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Konto je zamknuté.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Konto nie je zamknuté.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Upozornenie:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Neaktívne:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nikdy" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Posledná zmena:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Platnosť hesla vyprší:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Heslo neaktívne:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Platnosť konta vyprší:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Zlyhala úprava informácií o veku pre %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[VOĽBA...] [používateľ]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nebolo zadané meno používateľa, nie je meno pre uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Mením finger informácie pre %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Celé meno" #: apps/lchfn.c:151 msgid "Surname" msgstr "Priezvisko" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Krstné meno" #: apps/lchfn.c:172 msgid "Office" msgstr "Úrad" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Telefón do úradu" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Telefón domov" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-mail adresa" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger informácie neboli zmenené: chyba vstupu.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger informácie boli zmenené.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger informácie neboli zmenené: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Mením shell pre %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nový shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell nezmenený: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell zmenený.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[VOĽBA...] skupina" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nebolo zadané meno skupiny.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Neplatné ID skupiny %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Vytvorenie skupiny zlyhalo: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Skupina %s neexistuje.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Skupina %s nemohla byť vymazaná: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Boli zadané obidve -L a -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Zlyhalo nastavenie hesla pre skupinu %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Skupina %s nemohla byť uzamknutá: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Skupina %s nemohla byť odomknutá: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Skupina %s nemohla byť zmenená: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Chyba pri uzamykaní %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nebolo zadané meno skupiny, použijem %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nebolo zadané meno skupiny, gid %d bez mena.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nebolo zadané meno používateľa, použijem %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s neexistuje\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[VOĽBA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Chyba pri otváraní `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Chyba pri vytváraní konta pre `%s': riadok je nesprávne naformátovaný.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Neplatné ID používateľa %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Zamietam vytvorenie konta s UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Chyba pri vytváraní skupiny pre `%s' s GID %jd: %s\n" #: apps/lnewusers.c:249 #, fuzzy, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Zamieta sa použitie nebezpečného domovského adresára `%s' ako štandardného\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Chyba pri vytváraní domovského adresára pre %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Chyba pri nastavovaní počiatočného hesla pre %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Chyba pri vytváraní používateľského konta pre %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Mením heslo pre %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nové heslo" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nové helso (potvrdiť)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Heslá sa nezhodujú, skúste znova.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Zmena hesla zrušená.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Chyba počas načítavania z popisovača súboru %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Chyba pri nastavovaní hesla pre používateľa %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Chyby pri nastavovaní hesla pre skupinu %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Heslo zmenené.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Skupina %jd neexistuje\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Chyba pri vytváraní skupiny `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Vytváranie konta zlyhalo: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Chyba pri vytváraní %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Používateľ %s nemohol byť vymazaný: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nemala číslo gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Neexistuje skupina s GID %jd, neodstraňujem.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Skupina s GID %jd nemala meno skupiny.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Skupina %s nemohla byť vymazaná: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "chyba pri odstraňovaní domovského adresára pre používateľa" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Zlyhalo nastavenie hesla pre používateľa %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Používateľ %s nemohol byť zamknutý: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Používateľ %s nemohol byť odomknutý: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Upozornenie: Skupina %jd neexistuje.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Používateľ %s nemohol byť zmenený: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Skupina %s nemohla byť zmenená: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Nie je starý domovský adresár pre %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Nie je nový domovský adresár pre %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Chyba pri presune %s do %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "nepodarilo sa otvoriť konfiguračný súbor `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "nepodarilo sa zistiť stav konfiguračného súboru `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "konfiguračný súbor `%s' je príliš veľký" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "nepodarilo sa prečítať konfiguračný súbor `%s': %s" #: lib/error.c:62 msgid "success" msgstr "úspech" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul je nakonfigurovaný ako neaktívny" #: lib/error.c:66 msgid "generic error" msgstr "základná chyba" #: lib/error.c:68 msgid "not enough privileges" msgstr "nie sú dostatočné práva" #: lib/error.c:70 msgid "access denied" msgstr "prístup odmietnutý" #: lib/error.c:72 msgid "bad user/group name" msgstr "zlé meno používateľa/skupiny" #: lib/error.c:74 msgid "bad user/group id" msgstr "zlé id používateľa/skupiny" #: lib/error.c:76 msgid "user/group name in use" msgstr "meno používateľa/skupiny sa používa" #: lib/error.c:78 msgid "user/group id in use" msgstr "id používateľa/skupiny sa používa" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "chyba pri zaobchádzaní s terminálovými príznakmi" #: lib/error.c:82 msgid "error opening file" msgstr "chyba pri otváraní súboru" #: lib/error.c:84 msgid "error locking file" msgstr "chyba pri uzamykaní súboru" #: lib/error.c:86 msgid "error statting file" msgstr "chyba pri zisťovaní stavu súboru" #: lib/error.c:88 msgid "error reading file" msgstr "chyba pri čítaní súboru" #: lib/error.c:90 msgid "error writing to file" msgstr "chyba pri zápise do súboru" #: lib/error.c:92 msgid "data not found in file" msgstr "údaje neboli v súbore nájdené" #: lib/error.c:94 msgid "internal initialization error" msgstr "interná chyba inicializácie" #: lib/error.c:96 msgid "error loading module" msgstr "chyba pri nahrávaní modulu" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "chyba pri riešení závislostí symbolov v module" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "verzia knižnice/modulu nezodpovedá" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "odomknutie by vyprázdnilo pole pre heslo" #: lib/error.c:105 msgid "invalid attribute value" msgstr "neplatná hodnota atribútu" #: lib/error.c:107 msgid "invalid module combination" msgstr "neplatná kombinácia modulov" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "neznáma chyba" #: lib/misc.c:240 msgid "invalid number" msgstr "neplatné ID číslo používateľa" #: lib/misc.c:254 msgid "invalid ID" msgstr "neplatné ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "bez inicializačnej funkcie %s v `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "verzia modulu nezodpovedá v `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul `%s' nedefinuje `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "chyba pri čítaní príznakov terminálu" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "chyba pri nastavovaní príznakov terminálu" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "chyba pri čítaní z terminálu" #: lib/user.c:218 msgid "name is not set" msgstr "meno nie je nastavené" #: lib/user.c:223 msgid "name is too short" msgstr "meno je príliš krátke" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "meno je príliš dlhé (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "meno obsahuje znaky, ktoré nie sú ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "meno obsahuje riadiace znaky" #: lib/user.c:249 msgid "name contains whitespace" msgstr "meno obsahuje medzery" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "meno začína s pomlčkou" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "meno obsahuje neplatný znak `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "používateľ %s nemá žiadne UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "skupina %s nemá žiadne GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "používateľ %jd nemá meno" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Skupina %jd nemá meno" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "používateľ nemá ani meno ani UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "skupina nemá ani meno ani GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Zamieta sa použitie nebezpečného domovského adresára `%s' ako štandardného" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Nesprávna štandardná hodnota položky %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "chyba pri zamykaní súboru: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "nepodarilo sa nastaviť predvolený bezpečnostný kontext: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "nepodarilo sa získať bezpečnostný kontext `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "nepodarilo sa nastaviť predvolený bezpečnostný kontext na `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "nepodarilo sa nastaviť predvolený bezpečnostný kontext: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "nepodarilo sa získať bezpečnostný kontext pre `%s': %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "nepodarilo sa otvoriť `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "nepodarilo sa zistiť stav `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "chyba pri vytváraní `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Chyba pri zmene vlastníka `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Chyba pri čítaní `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Chyba pri zápise `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "nepodarilo sa čítať z `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Chyba pri presune %s do %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Chyba pri otváraní `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Chyba pri čítaní `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Chyba pri čítaní `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "objekt entity nemá príznak %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objekt nemá príznak %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s hodnota `%s': `:' nepovolená" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s hodnota `%s': `:' nepovolená" #: modules/files.c:1136 msgid "entry already present in file" msgstr "položka už existuje v súbore" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "nepodarilo sa zapísať do `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "objekt entity nemá príznak %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "záznam s konfliktným názvom sa už nachádza v súbore" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' nepovolené v zakódovanom hesle" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "chyba pri šifrovaní hesla" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "moduly `%s' a `%s' nemôžu byť skombinované" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "nespúšťam s právami superpoužívateľa" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "tieňový súbor nie je prítomný -- deaktivujem" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "chyba pri inicializácii knižnice ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "nepodarilo sa nastaviť LDAP protokol na verziu %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "nepodarilo sa dohodnúť TLS s LDAP serverom" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "nepodarilo sa pripojiť k LDAP serveru" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "nepodarilo sa pripojiť k LDAP serveru, prvý pokus ako `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "objekt používateľa nemal príznak %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "objekt používateľa bol vytvorený bez `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "chyba pri vytváraní položky LDAP adresára: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "chyba pri úprave položky LDAP adresára: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "chyba pri premonovávaní položky LDAP adresára: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objekt nemal príznak %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "chyba pri odstraňovaní položky LDAP adresára: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objekt nemá príznak %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "nepodporovaná schéma kódovania hesla" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "nie je taký objekt v LDAP adresári" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "nebol nájdený príznak `%s'" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "chyba pri nastavovaní hesla v LDAP adresára pre %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Meno servera LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP DN vyhľadávacej základne" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP DN pripájania" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP heslo pripájania" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL používateľ" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL udelenie oprávnenia používateľa" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL chyba pri vytváraní používateľa: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL chyba pri odstraňovaní používateľa: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "chyba pri inicializácii Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "chyba pri vytváraní domovského adresára pre používateľa" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "chyba pri odstraňovaní domovského adresára pre používateľa" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "chyba pri presúvaní domovského adresára pre používateľa" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Chyba pri inicializácii %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Neplatné ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Vyhľadávanie skupiny s ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Vyhľadávanie skupiny s menom %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Vyhľadávanie používateľa s ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Vyhľadávanie používateľa s menom %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Položka nenájdená.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Výzvy úspešné.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Výzvy zlyhali.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Štandardné objektové triedy používateľa:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Štandardné názvy príznakov používateľa:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Získavam štandardné príznaky používateľa:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopírujem štruktúrup používateľa:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "zálohový súbor `%s' existuje a nie je to bežný súbor" #~ msgid "backup file size mismatch" #~ msgstr "veľkosť záložného súboru nezodpovedá" po/sl.po000066400000000000000000001037261471266067600125020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Rok Papez , 2006, 2007 # Roman Maurer , 2001 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/fedora/" "language/sl/)\n" "Language: sl\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%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3);\n" "X-Generator: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Pravic ni bilo moč odstraniti.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Notranja napaka.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s ni avtoriziran, da bi spremenil podatke finger o %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Neznan kontekst uporabnika" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Ne morem nastaviti privzetega konteksta za /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Napaka pri inicializaciji PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Avtentikacija za %s ni uspela.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Notranja napaka PAM ,%s`.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Neznanemu uporabniku je bila preverjena istovetnost.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Napačen uporabnik.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[IZBIRA...] uporabnik" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Napaka pri razčlenjevanju argumentov: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Uporabniško ime ni bilo določeno.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Napaka pri inicializaciji %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Uporabnik %s ne obstaja.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Račun je zaklenjen.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Račun ni zaklenjen.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Najmanj:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Največ:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Opozorilo:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Nedejaven:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nikoli" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Zadnja sprememba:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Geslo poteče:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Geslo nedejavno:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Račun poteče:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Podatkov o staranju za %s ni bilo moč spremeniti: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[IZBIRA...] [uporabnik]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Uporabniško ime ni bilo določeno, ni imena za uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Podatki za finger %s se spreminjajo.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Polno ime" #: apps/lchfn.c:151 msgid "Surname" msgstr "Priimek" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Dano ime" #: apps/lchfn.c:172 msgid "Office" msgstr "Pisarna" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Pisarniški telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Domači telefon" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-poštni naslov" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Podatki za finger se niso spremenili: napaka pri vnosu.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Podatki za finger so se spremenili.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Podatki za finger se niso spremenili: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Ukazna lupina za %s se spreminja.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nova lupina" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Lupina ni bila spremenjena: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Lupina spremenjena.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[IZBIRA...] skupina" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Ime skupine ni bilo določeno.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Neveljaven ID skupine %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Izdelava skupine ni uspela: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Skupina %s ne obstaja.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Skupine %s ni moč izbrisati: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Določeni sta bili -L in -U hkrati.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Gesla za skupino %s ni bilo moč nastaviti: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Skupine %s ne morem zakleniti: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Skupine %s ne morem odkleniti: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Skupine %s ni moč spremeniti: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Napaka pri zaklepanju %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Ime skupine ni bilo določeno, uporabljam %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Ime skupine ni bilo določeno, ni imena za gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Uporabniško ime ni bilo določeno, uporabljam %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[IZBIRA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Napaka pri odpiranju '%s`: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Napaka pri ustvarjanju računa za '%s': nepravilno formatirana vrstica.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Neveljaven ID uporabnika %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Ni moč narediti računa z UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Napaka pri ustvarjanju skupine `%s` z GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Napaka pri ustvarjanju domačega imenika za %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Napaka pri nastavljanju začetnega gesla za %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Napaka pri ustvarjanju uporabniškega računa za %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Napaka pri spreminjanju gesla za %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Novo geslo" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Novo geslo (potrditev)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Gesli se ne ujemata, poskusite znova.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Sprememba gesla je preklicana.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Napaka pri nastavljanju gesla za uporabnika %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Napaka pri nastavljanju gesla za skupino %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Geslo je spremenjeno.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Skupina %jd ne obstaja\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Napaka pri ustvarjanju skupine `%s': %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Izdelava računa ni uspela: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Napaka pri ustvarjanju %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Uporabnika %s ni moč izbrisati: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s ni imel števila gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Ni skupine z GID %jd, zato je ne morem odstraniti.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Skupina z GID %jd ni imela imena skupine.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Skupine %s ni moč izbrisati: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "napaka pri odstranjevanju domačega imenika za uporabnika" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Neuspešno nastavljanje gesla za uporabnika %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Uporabnika %s ni moč zakleniti: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Uporabnika %s ni moč odkleniti: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Uporabnika %s ni moč spremeniti: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Skupine %s ni moč spremeniti: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Ni starega domačega imenika za %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Ni novega domačega imenika za %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Napaka pri premikanju %s v %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "ni moč odpreti nastavitvene datoteke ,%s`: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "ni moč preveriti nastavitvene datoteke `%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "nastavitvena datoteka `%s' je prevelika" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "ne morem brati nastavitvene datoteke `%s': %s" #: lib/error.c:62 msgid "success" msgstr "uspeh" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "konfiguracija onemogočila modul" #: lib/error.c:66 msgid "generic error" msgstr "splošna napaka" #: lib/error.c:68 msgid "not enough privileges" msgstr "ni dovolj pravic" #: lib/error.c:70 msgid "access denied" msgstr "dostop zavrnjen" #: lib/error.c:72 msgid "bad user/group name" msgstr "slabo ime uporabnika/skupine" #: lib/error.c:74 msgid "bad user/group id" msgstr "slaba ID uporabnika/skupine" #: lib/error.c:76 msgid "user/group name in use" msgstr "ime uporabnika/skupine že v rabi" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID uporabnika/skupine že v rabi" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "napaka pri rokovanju z atributi terminala" #: lib/error.c:82 msgid "error opening file" msgstr "napaka pri odpiranju datoteke" #: lib/error.c:84 msgid "error locking file" msgstr "napaka pri zaklepanju datoteke" #: lib/error.c:86 msgid "error statting file" msgstr "napaka pri opisovanju datoteke" #: lib/error.c:88 msgid "error reading file" msgstr "napaka pri branju datoteke" #: lib/error.c:90 msgid "error writing to file" msgstr "napaka pri pisanju v datoteko" #: lib/error.c:92 msgid "data not found in file" msgstr "v datoteki ni podatkov" #: lib/error.c:94 msgid "internal initialization error" msgstr "notranja napaka pri inicializaciji" #: lib/error.c:96 msgid "error loading module" msgstr "napaka pri nalaganju modula" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "napaka pri razreševanju simbola v modulu" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "neujemanje različice modula/knjižnice" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "odklepanje bi pustilo polje z geslom prazno" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "neznana napaka" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ni inicializacijske funkcije %s v ,%s`" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "neujemanje različice modula v ,%s`" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modučl `%s' ne določa `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "napaka pri branju atributov terminala" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "napaka pri nastavljanju atributov terminala" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "napaka pri branju s terminala" #: lib/user.c:218 msgid "name is not set" msgstr "ime ni nastavljeno" #: lib/user.c:223 msgid "name is too short" msgstr "ime je prekratko" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "ime je predolgo (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "ime vsebuje ne-ASCII znake" #: lib/user.c:242 msgid "name contains control characters" msgstr "ime vsebuje krmilne znake" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ime vsebuje prazne znake" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "ime se začne z pomišljajem" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "ime vsebuje neveljavni znak '%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "uporabnik %s nima UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "skupina %s nima GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "uporabnik %jd nima imena" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "skupina %jd nima imena" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "uporabnik nima niti imena niti UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "skupina nima niti imena niti GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Neveljavna privzeta vrednost polja %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "napaka pri zaklepanju datoteke: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "ne morem ugotoviti varnostnega konteksta `%s': %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ne morem nastaviti privzetega varnostnega konteksta `%s': %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get security context of `%s': %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ne morem ugotoviti varnostnega konteksta `%s': %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "ni moč odpreti ,%s`: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "ni moč ugotoviti stanja ,%s`: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "napaka pri ustvarjanju ,%s`: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Napaka pri spreminjanju lastnika `%s': %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Napaka pri branju ,%s`: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Napaka pri pisanju `%s': %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "ni moč brati iz ,%s`: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Napaka pri premikanju %s v %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Napaka pri odpiranju '%s`: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Napaka pri branju ,%s`: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Napaka pri branju ,%s`: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "entitetni objekt nima atributa %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "predmet nima atributa %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "vnos je že v datoteki" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "ni moč pisati v ,%s`: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entitetni objekt nima atributa %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "napaka pri šifriranju gesla" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ne izvaja se z dovolilnicami skrbnika" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "ni datoteke z zastrtimi gesli -- onemogočam" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "napaka pri inicializaciji knjižnice ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "protokola LDAP ni bilo moč nastaviti na različico %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "ni se bilo moč pogoditi za TLS s strežnikom LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "ni se bilo moč povezati s strežnikom LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "ni se bilo moč povezati s strežnikom LDAP, prvi poskus kot `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "uporabniški predmet nima atributa %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "uporabniški predmet je bil ustvarjen brez ,%s`" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "napaka pri ustvarjanju imeniškem vnosu LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "napaka pri spreminjanju imeniškega vnosa LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "napaka pri preimenovanju imeniškega vnosa LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "predmet nima atributa %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "napaka pri odstranjevanju imeniškega vnosa LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "predmet nima atributa %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "takega predmeta ni v imeniku LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "ni moč najti atributa ,%s`" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "napaka pri nastavljanju gesla v imeniku LDAP za %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Ime strežnika LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Iskalna osnova DN za LDAP" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Povezava DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Geslo za povezavo z LDAP" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Uporabnik SASL v LDAP" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Uporabnik z odobritvijo SASL v LDAP" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Napaka Cyrus SASL pri ustvarjanju uporabnika: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Napaka Cyrus SASL pri odstranjevanju uporabnika: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "napaka pri inicializaciji Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "napaka pri ustvarjanju domačega imenika za uporabnika" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "napaka pri odstranjevanju domačega imenika za uporabnika" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "napaka pri premikanju domačega imenika za uporabnika" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Napaka pri inicializaciji %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Neveljaven ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Iščem skupino z ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Iščem skupino, imenovano %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Iščem uporabnika z ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Iščem uporabnika, imenovanega %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Vnos ni bil najden.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Pozivniki uspeli.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Pozivniki niso uspeli.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Privzeti predmetni razredi uporabnika:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Privzeta imena atributov uporabnika:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Dobivamo privzete atribute uporabnika:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Prepisovanje uporabniške strukture:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "rezervna datoteka ,%s` obstaja in ni običajna datoteka" #~ msgid "backup file size mismatch" #~ msgstr "varnostna kopija datoteke ima neujemajočo velikost" po/sq.po000066400000000000000000000653121471266067600125050ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 08:37+0000\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/fedora/language/" "sq/)\n" "Language: sq\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/sr.po000066400000000000000000001307471471266067600125130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Nikola Pajtic , 2008 # Momcilo Medic , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-05-06 10:50-0400\n" "Last-Translator: Momcilo Medic \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/fedora/language/" "sr/)\n" "Language: sr\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Неуспело одбацивање повластица.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Унутрашња грешка.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s није овлашћен да мења finger податке за %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Непознат кориснички контекст" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Не могу да поставим подразумевани контекст за /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Грешка при иницијализацији PAM-а.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Неуспела аутентификација за %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Унутрашња PAM грешка „%s“.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Аутентификован непознат корисник.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Неслагање корисника.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "упит за све информације" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "списак параметара старења за корисника" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "минимални број дана између промена лозинки" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "ДАНА" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "максимални број дана између промена лозинки" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "датум последње промене лозинке у данима од 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "број дана након датума истицања лозинка када ће се налог сматрати неактивним" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "датум истицања лозинке у данима након 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "број дана пре истицања када се почиње упозоравати корисник" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ОПЦИЈА...] корисник" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Грешка при тумачењу аргумената: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Није наведено корисничко име.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Грешка при иницијализацији %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Корисник %s не постоји.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Налог је закључан.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Налог није закључан.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Најмањи:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Највећи:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Максимално:\tНиједан\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Упозорење:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Неактивно:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Неактивно:\tНикад\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Мора променити лозинку при следећој пријави" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Никада" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Последња промена:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Лозинка истиче:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Лозинка неактивна:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Налог истиче:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Неуспела измена застарелих података за %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ОПЦИЈА...] [корисник]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Није наведено корисничко име, нема имена за uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Мењам finger податке за %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Пуно име" #: apps/lchfn.c:151 msgid "Surname" msgstr "Презиме" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Крштено име" #: apps/lchfn.c:172 msgid "Office" msgstr "Канцеларија" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Канцеларијски телефон" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Кућни телефон" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Адреса е-поште" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger подаци нису промењени: грешка у уносу.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger подаци су промењени.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger подаци нису промењени: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Мењам љуску за %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Нова љуска" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Љуска није промењена: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Љуска је промењена.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid нове групе" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "БРОЈ" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "направи системску групу" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ОПЦИЈА...] група" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Није наведено име групе.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Неисправан ID групе %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Неуспело прављење групе: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Група %s не постоји.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Група %s не може бити избрисана: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "постави GID за групу" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "промени групу да има задато име" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "ИМЕ" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "обична лозинка у употреби за групу" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "ТЕКСТ" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "унапред израчуната лозинка у употреби за групу" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "списак администратора за додавање" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "списак администратора за уклањање" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "списак чланова групе за додавање" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "списак чланова групе за уклањање" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "закључај групу" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "откључај групу" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "И -L и -U су наведени.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Неуспело постављање лозинке за групу %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Група %s не може бити закључана: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Група %s не може бити откључана: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Група %s не може бити измењена: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Грешка при потрази за %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "списак чланова именоване групе уместо групног чланства именованог корисника" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "прикажи само списак информација о чланству по имену, а не по UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Није наведено име групе, користим %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Није наведено име групе, нема имена за gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Није наведено корисничко име, користим %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s не постоји\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "датотека са записима информација" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ПУТАЊА" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "немој правити личне директоријуме" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "немој правити ред за слање поште" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ОПЦИЈА...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Грешка при отварању „%s“: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Грешка при прављењу налога за „%s“: неправилно обликована линија.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Неисправан кориснички ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Одбијам да направим налог са UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Грешка при прављењу групе „%s“ са GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Одбијам да подразумевано употребим опасан директоријум „%s“ за %s\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Грешка при прављењу личног директоријума за %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Грешка при прављењу реда за слање поште за %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Грешка при постављању лозинке за %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Грешка при прављењу корисничког налога за %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "постави групну лозинку уместо корисничке лозинке" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "нова обична лозинка" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "нова шифрована лозинка" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "учитај нову обичну лозинку из датог описника" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "учитај нову шифровану лозинку из датог описника" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Мењам лозинку за %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Нова лозинка" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Нова лозинка (потврда)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Лозинке се не слажу, покушајте поново.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Промена лозинке је отказана.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Грешка при читању из датотеке описника %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Грешка при постављању лозинке за корисника %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Грешка при постављању лозинке за групу %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Лозинка је промењена.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "направи системског корисника" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS информација за новог корисника" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "лични директоријум за новог корисника" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "директоријум са датотекама за новог корисника" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "љуска за новог корисника" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid за новог корисника" #: apps/luseradd.c:71 msgid "group for new user" msgstr "група за новог корисника" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "немој правити лични директоријум за корисника" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "немој правити групу са истим именом као и корисник" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "заједничко име за новог корисника" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "дато име за новог корисника" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "презиме за новог корисника" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "број собе за новог корисника" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "број телефона за новог корисника" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "број кућног телефона за новог корисника" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Група %jd не постоји\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Грешка при прављењу групе „%s“: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Неуспело прављење налога: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Грешка при прављењу %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Грешка при прављењу реда за слање поште : %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "немој уклањати корисникову приватну групу, ако је корисник има" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "уклони корисников лични директоријум" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Корисник %s не може да буде обрисан: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s није имала gid број.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Не постоји група са GID %jd, не уклањам.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Група са GID %jd није имала име групе.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Група %s не може да буде обрисана: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Грешка при уклањању личног директоријума за корисника: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Грешка при уклањању реда за слање поште : %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS информација" #: apps/lusermod.c:61 msgid "home directory" msgstr "лични директоријум" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "премести садржај личног директоријума" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "постави љуску за корисника" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "постави UID за корисника" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "постави примарни GID за корисника" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "промени пријавно име корисника" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "обична лозинка за корисника" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "унапред израчуната лозинка за корисника" #: apps/lusermod.c:76 msgid "lock account" msgstr "закључај налог" #: apps/lusermod.c:79 msgid "unlock account" msgstr "откључај налог" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "постави уобичајено име за корисника" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "постави дато име за корисника" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "постави презиме за корисника" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "постави број собе за корисника" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "постави број телефона за корисника" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "постави број кућног телефона за корисника" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Неуспело постављање лозинке за корисника %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Корисник %s не може да буде закључан: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Корисник %s не може да буде откључан: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Упозорење: Група са ID-ом %jd не постоји\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Корисник %s не може да буде измењен: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Група %s не може да буде измењена: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Нема старог личног директоријума за %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Нема новог личног директоријума за %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Грешка при премештању %s у %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "не могу да отворим датотеку подешавања „%s“: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "не могу да извршим stat над датотеком подешавања „%s“: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "датотека подешавања „%s“ је превелика" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "не могу да прочитам датотеку подешавања „%s“: %s" #: lib/error.c:62 msgid "success" msgstr "успех" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "модул искључен у подешавањима" #: lib/error.c:66 msgid "generic error" msgstr "уопштена грешка" #: lib/error.c:68 msgid "not enough privileges" msgstr "нема довољно повластица" #: lib/error.c:70 msgid "access denied" msgstr "приступ одбијен" #: lib/error.c:72 msgid "bad user/group name" msgstr "лоше име корисника/групе" #: lib/error.c:74 msgid "bad user/group id" msgstr "лош id корисника/групе" #: lib/error.c:76 msgid "user/group name in use" msgstr "име корисника/групе је у употреби" #: lib/error.c:78 msgid "user/group id in use" msgstr "id корисника/групе је у употреби" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "грешка при удешавању својстава терминала" #: lib/error.c:82 msgid "error opening file" msgstr "грешка при отварању датотеке" #: lib/error.c:84 msgid "error locking file" msgstr "грешка при закључавању датотеке" #: lib/error.c:86 msgid "error statting file" msgstr "грешка при извршавању stat над датотеком" #: lib/error.c:88 msgid "error reading file" msgstr "грешка при читању датотеке" #: lib/error.c:90 msgid "error writing to file" msgstr "грешка при упису у датотеку" #: lib/error.c:92 msgid "data not found in file" msgstr "подаци нису нађени у датотеци" #: lib/error.c:94 msgid "internal initialization error" msgstr "унутрашња грешка иницијализације" #: lib/error.c:96 msgid "error loading module" msgstr "грешка при учитавању модула" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "грешка при разрешавању симбола у модулу" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "неслагање верзије библиотеке/модула" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "откључавање би учинило поље лозинке празним" #: lib/error.c:105 msgid "invalid attribute value" msgstr "неисправна вредност атрибута" #: lib/error.c:107 msgid "invalid module combination" msgstr "неисправна комбинација модула" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "корисников лични директоријум није у његовом власништву" #: lib/error.c:115 msgid "unknown error" msgstr "непозната грешка" #: lib/misc.c:240 msgid "invalid number" msgstr "неисправан број" #: lib/misc.c:254 msgid "invalid ID" msgstr "неисправан ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "нема функције иницијализације %s у „%s“" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "неслагање верзије модула у „%s“" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "модул „%s“ не дефинише „%s“" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "грешка при читању својстава терминала" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "грешка при постављању својстава терминала" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "грешка при читању са терминала" #: lib/user.c:218 msgid "name is not set" msgstr "име није постављено" #: lib/user.c:223 msgid "name is too short" msgstr "име је прекратко" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "име је предугачко (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "име садржи не-ASCII знакове" #: lib/user.c:242 msgid "name contains control characters" msgstr "име садржи контролне знакове" #: lib/user.c:249 msgid "name contains whitespace" msgstr "име садржи размак" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "име почиње цртицом" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "име садржи неисправан знак „%c“" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "корисник %s нема UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "корисник %s није пронађен" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "група %s нема GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "група %s није пронађена" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "корисник %jd нема име" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "група %jd нема име" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "корисник нема ни име нити UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "група нема ни име нити GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Одбијам да подразумевано употребим опасан директоријум „%s“" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Неисправна подразумевана вредност за поље %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "грешка при закључавању датотеке: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "не могу да добавим подразумевани безбедносни контекст: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "не могу да добавим безбедносни контекст за „%s“: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "не могу да поставим подразумевани безбедносни контекст на „%s“: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "не могу да добавим подразумевани безбедносни контекст: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "не могу да утврдим безбедносни контекст за „%s“: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "не могу да отворим „%s“: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "не могу да извршим stat над „%s“: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "грешка при прављењу „%s“: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Грешка при промени власника „%s“: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Грешка при промени режима за `%s': %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Грешка при читању „%s“: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Грешка при писању „%s“: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "не могу да читам из „%s“: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Грешка при премештању %s у %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Грешка при промени режима за `%s': %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Грешка при читању „%s“: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Грешка при читању „%s“: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "објекат ентитета нема %s својство" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "објекат нема %s својство" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s вредност „%s“: „:“ није дозвољена" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s вредност „%s“: „:“ није дозвољена" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ставка је већ присутна у датотеци" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "не могу да упишем у „%s“: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "објекат ентитета нема %s својство" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ставка са сукобљеним именом је већ присутна у датотеци" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "„:“ није дозвољена у шифрованој лозинци" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "грешка при шифровању лозинке" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' и `%s' модули не могу бити комбиновани" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "не извршавам са администраторским повластицама" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "нема присутне shadow датотеке -- искључујем" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "грешка при иницијализацији ldap библиотеке" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "не могу да поставим LDAP протокол на верзију %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "нисам могао да преговарам TLS са LDAP сервером" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "не могу да се вежем за LDAP сервер" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "не могу да се вежем за LDAP сервер, прво покушајте као „%s“: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "кориснички објекат нема %s својство" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "кориснички објекат је направљен без „%s“" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "грешка при прављењу ставке LDAP каталога: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "грешка при измени ставке LDAP каталога: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "грешка при преименовању ставке LDAP каталога: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "објекат није имао %s својство" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "грешка при уклањању ставке LDAP каталога: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "објекат нема %s својство" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "неподржана шема шифровања лозинке" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "нема таквог објекта у LDAP каталогу" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "није пронађено „%s“ својство" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "грешка при постављању лозинке у LDAP каталогу за %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Име LDAP сервера" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Основни DN LDAP претраге" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN LDAP увезивања" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Лозинка LDAP увезивања" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL корисник" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL овлашћујући корисник" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL грешка при прављењу корисника: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL грешка при уклањању корисника: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "грешка при иницијализацији Cyrus SASL-а: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "грешка при прављењу личног директоријума за корисника" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "грешка при уклањању личног директоријума за корисника" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "грешка при премештању личног директоријума за корисника" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Грешка при иницијализацији %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Неисправан ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Претражујем за групом са ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Претражујем за групом са именом %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Претражујем за корисником са ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Претражујем за корисником са именом %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Ставка није пронађена.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Одзиви су успели.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Одзиви нису успели.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Подразумеване класе корисничких објеката:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Подразумевана имена корисничких својстава:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Добављам подразумевана корисничка својства:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Умножавам корисничку структуру:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "резервна датотека „%s“ постоји и није редовна датотека" #~ msgid "backup file size mismatch" #~ msgstr "неслагање величине резервне датотеке" po/sr@latin.po000066400000000000000000001053231471266067600136330ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # Nikola Pajtic , 2008 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/fedora/" "language/sr@latin/)\n" "Language: sr@latin\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Neuspelo odbacivanje povlastica.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Unutrašnja greška.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s nije ovlašćen da menja finger podatke za %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Nepoznat korisnički kontekst" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Ne mogu da postavim podrazumevani kontekst za /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Greška pri inicijalizaciji PAM-a.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Neuspela autentifikacija za %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Unutrašnja PAM greška „%s“.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Autentifikovan nepoznat korisnik.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Neslaganje korisnika.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPCIJA...] korisnik" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Greška pri tumačenju argumenata: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Nije navedeno korisničko ime.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Greška pri inicijalizaciji %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Korisnik %s ne postoji.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Nalog je zaključan.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Nalog nije zaključan.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Najmanji:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Najveći:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Upozorenje:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Neaktivno:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Nikada" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Poslednja promena:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Lozinka ističe:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Lozinka neaktivna:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Nalog ističe:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Neuspela izmena zastarelih podataka za %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPCIJA...] [korisnik]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Nije navedeno korisničko ime, nema imena za uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Menjam finger podatke za %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Puno ime" #: apps/lchfn.c:151 msgid "Surname" msgstr "Prezime" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Kršteno ime" #: apps/lchfn.c:172 msgid "Office" msgstr "Kancelarija" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Kancelarijski telefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Kućni telefon" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Adresa e-pošte" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger podaci nisu promenjeni: greška u unosu.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger podaci su promenjeni.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger podaci nisu promenjeni: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Menjam ljusku za %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nova ljuska" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Ljuska nije promenjena: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Ljuska je promenjena.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPCIJA...] grupa" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Nije navedeno ime grupe.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Neispravan ID grupe %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Neuspelo pravljenje grupe: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupa %s ne postoji.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupa %s ne može biti izbrisana: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "I -L i -U su navedeni.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Neuspelo postavljanje lozinke za grupu %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grupa %s ne može biti zaključana: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grupa %s ne može biti otključana: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grupa %s ne može biti izmenjena: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Greška pri potrazi za %s: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Nije navedeno ime grupe, koristim %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Nije navedeno ime grupe, nema imena za gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Nije navedeno korisničko ime, koristim %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s ne postoji\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPCIJA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Greška pri otvaranju „%s“: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Greška pri pravljenju naloga za „%s“: nepravilno oblikovana linija.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Neispravan korisnički ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Odbijam da napravim nalog sa UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Greška pri pravljenju grupe „%s“ sa GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Odbijam da podrazumevano upotrebim opasan direktorijum „%s“ za %s\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Greška pri pravljenju ličnog direktorijuma za %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Greška pri postavljanju lozinke za %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Greška pri pravljenju korisničkog naloga za %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Menjam lozinku za %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nova lozinka" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nova lozinka (potvrda)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Lozinke se ne slažu, pokušajte ponovo.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Promena lozinke je otkazana.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Greška pri postavljanju lozinke za korisnika %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Greška pri postavljanju lozinke za grupu %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Lozinka je promenjena.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupa %jd ne postoji\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Greška pri pravljenju grupe „%s“: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Neuspelo pravljenje naloga: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Greška pri pravljenju %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Korisnik %s ne može da bude obrisan: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s nije imala gid broj.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Ne postoji grupa sa GID %jd, ne uklanjam.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupa sa GID %jd nije imala ime grupe.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Grupa %s ne može da bude obrisana: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "greška pri uklanjanju ličnog direktorijuma za korisnika" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Neuspelo postavljanje lozinke za korisnika %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Korisnik %s ne može da bude zaključan: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Korisnik %s ne može da bude otključan: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Upozorenje: Grupa sa ID-om %jd ne postoji\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Korisnik %s ne može da bude izmenjen: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Grupa %s ne može da bude izmenjena: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Nema starog ličnog direktorijuma za %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Nema novog ličnog direktorijuma za %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Greška pri premeštanju %s u %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "ne mogu da otvorim datoteku podešavanja „%s“: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "ne mogu da izvršim stat nad datotekom podešavanja „%s“: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "datoteka podešavanja „%s“ je prevelika" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "ne mogu da pročitam datoteku podešavanja „%s“: %s" #: lib/error.c:62 msgid "success" msgstr "uspeh" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modul isključen u podešavanjima" #: lib/error.c:66 msgid "generic error" msgstr "uopštena greška" #: lib/error.c:68 msgid "not enough privileges" msgstr "nema dovoljno povlastica" #: lib/error.c:70 msgid "access denied" msgstr "pristup odbijen" #: lib/error.c:72 msgid "bad user/group name" msgstr "loše ime korisnika/grupe" #: lib/error.c:74 msgid "bad user/group id" msgstr "loš id korisnika/grupe" #: lib/error.c:76 msgid "user/group name in use" msgstr "ime korisnika/grupe je u upotrebi" #: lib/error.c:78 msgid "user/group id in use" msgstr "id korisnika/grupe je u upotrebi" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "greška pri udešavanju svojstava terminala" #: lib/error.c:82 msgid "error opening file" msgstr "greška pri otvaranju datoteke" #: lib/error.c:84 msgid "error locking file" msgstr "greška pri zaključavanju datoteke" #: lib/error.c:86 msgid "error statting file" msgstr "greška pri izvršavanju stat nad datotekom" #: lib/error.c:88 msgid "error reading file" msgstr "greška pri čitanju datoteke" #: lib/error.c:90 msgid "error writing to file" msgstr "greška pri upisu u datoteku" #: lib/error.c:92 msgid "data not found in file" msgstr "podaci nisu nađeni u datoteci" #: lib/error.c:94 msgid "internal initialization error" msgstr "unutrašnja greška inicijalizacije" #: lib/error.c:96 msgid "error loading module" msgstr "greška pri učitavanju modula" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "greška pri razrešavanju simbola u modulu" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "neslaganje verzije biblioteke/modula" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "otključavanje bi učinilo polje lozinke praznim" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "nepoznata greška" #: lib/misc.c:240 msgid "invalid number" msgstr "neispravan broj" #: lib/misc.c:254 msgid "invalid ID" msgstr "neispravan ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "nema funkcije inicijalizacije %s u „%s“" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "neslaganje verzije modula u „%s“" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul „%s“ ne definiše „%s“" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "greška pri čitanju svojstava terminala" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "greška pri postavljanju svojstava terminala" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "greška pri čitanju sa terminala" #: lib/user.c:218 msgid "name is not set" msgstr "ime nije postavljeno" #: lib/user.c:223 msgid "name is too short" msgstr "ime je prekratko" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "ime je predugačko (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "ime sadrži ne-ASCII znakove" #: lib/user.c:242 msgid "name contains control characters" msgstr "ime sadrži kontrolne znakove" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ime sadrži razmak" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "ime počinje crticom" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "ime sadrži neispravan znak „%c“" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "korisnik %s nema UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "grupa %s nema GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "korisnik %jd nema ime" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "grupa %jd nema ime" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "korisnik nema ni ime niti UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "grupa nema ni ime niti GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Odbijam da podrazumevano upotrebim opasan direktorijum „%s“" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Neispravna podrazumevana vrednost za polje %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "greška pri zaključavanju datoteke: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "ne mogu da dobavim podrazumevani bezbednosni kontekst: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "ne mogu da dobavim bezbednosni kontekst za „%s“: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "ne mogu da postavim podrazumevani bezbednosni kontekst na „%s“: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "ne mogu da dobavim podrazumevani bezbednosni kontekst: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "ne mogu da utvrdim bezbednosni kontekst za „%s“: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "ne mogu da otvorim „%s“: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "ne mogu da izvršim stat nad „%s“: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "greška pri pravljenju „%s“: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Greška pri promeni vlasnika „%s“: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Greška pri čitanju „%s“: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Greška pri pisanju „%s“: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "ne mogu da čitam iz „%s“: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Greška pri premeštanju %s u %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Greška pri otvaranju „%s“: %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Greška pri čitanju „%s“: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Greška pri čitanju „%s“: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "objekat entiteta nema %s svojstvo" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "objekat nema %s svojstvo" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s vrednost „%s“: „:“ nije dozvoljena" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s vrednost „%s“: „:“ nije dozvoljena" #: modules/files.c:1136 msgid "entry already present in file" msgstr "stavka je već prisutna u datoteci" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "ne mogu da upišem u „%s“: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "objekat entiteta nema %s svojstvo" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "stavka sa sukobljenim imenom je već prisutna u datoteci" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "„:“ nije dozvoljena u šifrovanoj lozinci" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "greška pri šifrovanju lozinke" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "ne izvršavam sa administratorskim povlasticama" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "nema prisutne shadow datoteke -- isključujem" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "greška pri inicijalizaciji ldap biblioteke" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "ne mogu da postavim LDAP protokol na verziju %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "nisam mogao da pregovaram TLS sa LDAP serverom" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "ne mogu da se vežem za LDAP server" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "ne mogu da se vežem za LDAP server, prvo pokušajte kao „%s“: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "korisnički objekat nema %s svojstvo" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "korisnički objekat je napravljen bez „%s“" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "greška pri pravljenju stavke LDAP kataloga: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "greška pri izmeni stavke LDAP kataloga: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "greška pri preimenovanju stavke LDAP kataloga: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objekat nije imao %s svojstvo" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "greška pri uklanjanju stavke LDAP kataloga: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objekat nema %s svojstvo" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "nepodržana šema šifrovanja lozinke" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "nema takvog objekta u LDAP katalogu" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "nije pronađeno „%s“ svojstvo" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "greška pri postavljanju lozinke u LDAP katalogu za %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Ime LDAP servera" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "Osnovni DN LDAP pretrage" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "DN LDAP uvezivanja" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "Lozinka LDAP uvezivanja" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL korisnik" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL ovlašćujući korisnik" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL greška pri pravljenju korisnika: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL greška pri uklanjanju korisnika: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "greška pri inicijalizaciji Cyrus SASL-a: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "greška pri pravljenju ličnog direktorijuma za korisnika" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "greška pri uklanjanju ličnog direktorijuma za korisnika" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "greška pri premeštanju ličnog direktorijuma za korisnika" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Greška pri inicijalizaciji %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Neispravan ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Pretražujem za grupom sa ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Pretražujem za grupom sa imenom %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Pretražujem za korisnikom sa ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Pretražujem za korisnikom sa imenom %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Stavka nije pronađena.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Odzivi su uspeli.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Odzivi nisu uspeli.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Podrazumevane klase korisničkih objekata:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Podrazumevana imena korisničkih svojstava:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Dobavljam podrazumevana korisnička svojstva:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Umnožavam korisničku strukturu:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "rezervna datoteka „%s“ postoji i nije redovna datoteka" #~ msgid "backup file size mismatch" #~ msgstr "neslaganje veličine rezervne datoteke" po/sv.po000066400000000000000000001136551471266067600125160ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2004 # Christian Rose , 2006 # Daniel Guerrero , 2003 # Domingo Becker , 2008 # Fernando Gonzalez Blanco , 2009 # Fernando Ruiz-Tapiador Gutiérrez , 2001 # Gladys Guerrero , 2009, 2010 # Göran Uddeborg , 2011-2013 # Héctor Daniel Cabrera , 2009 # Luis Mayoral , 2003 # Magnus Larsson , 2007, 2008 # Manuel Ospina , 2005, 2006 # Miloslav Trmač , 2011 # Tullio Dovera , 2000 # Ulrika Uddeborg , 2012 # Yelitza Louze , 2003, 2004 # Göran Uddeborg , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2024-02-03 20:36+0000\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \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: Weblate 5.3.1\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Misslyckades att släppa privilegier.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Internt fel.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s är inte auktoriserad att ändra fingerinformationen för %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Okänd användarkontext" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Det går inte att sätta standardkontext för /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Fel vid initialisering av PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Autentisering misslyckades för %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Internt PAM-fel \"%s\".\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Okänd användare autentiserad.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Användare stämmer inte.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "fråga efter all information" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "lista åldringsparametrar för användaren" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "minsta antal dagar mellan lösenordsändringar" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DAGAR" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "maximalt antal dagar mellan lösenordsändringar" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "datum för senaste lösenordsändringen i dagar sedan 1/1/70" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "antal dagar efter lösenordet gått ut som kontot anses inaktivt" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "utgångsdatum för lösenord i dagar sedan 1/1/70" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "dagar innan upphörande som användaren skall börja varnas" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[FLAGGA...] användare" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Fel vid tolkning av argument: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Inget användarnamn angivet.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Fel vid initiering av %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Användare %s finns inte.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Kontot är låst.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Kontot är inte låst.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Maximum:»Inget\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Varning:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inaktiv:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Inaktiv:»Aldrig\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Måste ändra lösenord vid nästa inloggning" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Aldrig" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Senaste ändring:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Lösenordet går ut:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Lösenordet inaktivt:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Kontot går ut:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Det gick inte att ändra åldringsinformationen för %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[FLAGGA...] [användare]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Inget användarnamn angivet, inget namn för uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Ändrar fingerinformation för %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Fullständigt namn" #: apps/lchfn.c:151 msgid "Surname" msgstr "Efternamn" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Förnamn" #: apps/lchfn.c:172 msgid "Office" msgstr "Kontor" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Arbetstelefon" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Hemtelefon" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Epostadress" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Fingerinformationen ändrades inte: inmatningsfel.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Fingerinformationen ändrades.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Fingerinformationen ändrades inte: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Ändrar skal för %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Nytt skal" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Skal inte ändrat: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Skal ändrat.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid för ny grupp" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "skapa en systemgrupp" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[FLAGGA...] grupp" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Inget gruppnamn angivet.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Ogiltig grupp-id %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Det gick inte att skapa grupp: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grupp %s finns inte.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Grupp %s gick inte att ta bort: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "sätt GID för grupp" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "ändra gruppen till att ha det angivna namnet" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAMN" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "lösenord i klartext att användas med gruppen" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRÄNG" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "för-hashat lösenord att användas med gruppen" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "lista med administratörer att lägga till" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "lista med administratörer att ta bort" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "lista med gruppmedlemmar att lägga till" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "lista med gruppmedlemmar att ta bort" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "lås grupp" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "lås upp grupp" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Både -L och -U angivna.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Det gick inte att sätta lösenord för grupp %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Grupp %s gick inte att låsa: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Grupp %s gick inte att låsa upp: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Grupp %s gick inte att ändra: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Fel när %s slogs upp: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "lista medelmmar av en namngiven grupp istället för gruppmedlemskapen för den " "namngivna användaren" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "lista bara medelmskapsinformation med namn, och inte UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Inget gruppnamn angivet, använder %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Inget gruppnamn angivet, inget namn för gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Inget användarnamn angivet, använder %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s finns inte\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "fil med poster med användarinformation" #: apps/lnewusers.c:49 msgid "PATH" msgstr "SÖKVÄG" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "skapa inte hemkataloger" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "skapa inte brevlådor" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[FLAGGA...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Fel när \"%s\" öppnades: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Fel när konto för \"%s\" skapades: felaktigt formaterad rad.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Ogiltigt användar-id %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Vägrar att skapa konto med UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Fel när grupp för \"%s\" skapades med GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "Vägrar att använda farlig hemkatalog \"%s\" för %s som standard\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Fel när hemkatalog för %s skapades: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Fel när brevlåda för %s skapades: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Fel när initialt lösenord för %s sattes: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Fel när användarkonto för %s skapades: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "ange grupplösenord istället fr användarlösenord" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "nytt lösenord i klartext" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "nytt krypterat lösenord" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "läs ett nytt lösenord i klartext från den angivna deskriptorn" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "läs ett nytt krypterat lösenord från den angivna deskriptorn" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Ändrar lösenord för %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Nytt lösenord" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Nytt lösenord (bekräfta)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Lösenorden stämmer inte överens, försök igen.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Lösenordsändringen avbruten.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Fel vid läsning från filbeskrivare %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Fel när lösenord för användare %s sattes: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Fel när lösenord för grupp %s sattes: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Lösenordet ändrat.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "skapa systemanvändare" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "GECOS-information för ny användare" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "hemkatalog för ny användare" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "katalog med filer för den nya användaren" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "skal för ny användare" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid för ny användare" #: apps/luseradd.c:71 msgid "group for new user" msgstr "grupp för ny användare" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "skapa inte hemkatalog för användare" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "skapa inte grupp med amma namn som användare" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "vanliga namnet för den nya användaren" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "tilltalsnamn för ny användare" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "efternamn för ny användare" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "rumsnummer för ny användare" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "telefonnummer för ny användare" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "hemtelefonnummer för ny användare" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grupp %jd finns inte\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Fel när grupp \"%s\" skapades: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Kontoskapandet misslyckades: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Fel när %s skapades: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Fel när brevlåda skapades: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "ta inte bort användarens prvata grupp, om användaren har en" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "ta bort användarens hemkatalog" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Användare %s gick inte att ta bort: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s hade inte något gid-nummer.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Det finns ingen grupp med GID %jd, tar inte bort.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Grupp med GID %jd hade inget gruppnamn.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Grupp %s gick inte att ta bort: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Fel när hemkatalogen togs bort: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Fel när brevlåda togs bort: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS-information" #: apps/lusermod.c:61 msgid "home directory" msgstr "hemkatalog" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "flytta innehåll i hemkatalog" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "ange skal för användare" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "ange UID för användare" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "ange primärt GID för användare" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "ändra inloggningsnamn för användare" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "lösenord i klartext för användaren" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "för-hashat lösenord för användaren" #: apps/lusermod.c:76 msgid "lock account" msgstr "lås konto" #: apps/lusermod.c:79 msgid "unlock account" msgstr "lås upp konto" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "sätt det vanliga namnet för användaren" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "ange tilltalsnamn för användare" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "ange efternamn för användare" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "ange rumsnummer för användare" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "ange telefonnummer för användare" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "ange hemtelefonnummer för användare" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Det gick inte att sätta lösenord för anvädare %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Det gick inte att låsa användare %s: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Det gick inte att låsa upp användare %s: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Varning: Grupp med ID %jd finns inte.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Det gick inte att modifiera användare %s: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Det gick inte att modifiera grupp %s: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Ingen gammal hemkatalog för %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Ingen ny hemkatalog för %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Fel när %s flyttades till %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "det gick inte att öppna konfigurationsfil \"%s\": %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "det gick inte att ta status på konfigurationsfil \"%s\": %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "konfigurationsfil \"%s\" är för stor" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "det gick inte att läsa konfigurationsfil \"%s\": %s" #: lib/error.c:62 msgid "success" msgstr "gick bra" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modulen avaktiverad av konfigurationen" #: lib/error.c:66 msgid "generic error" msgstr "allmänt fel" #: lib/error.c:68 msgid "not enough privileges" msgstr "inte tillräckliga rättigheter" #: lib/error.c:70 msgid "access denied" msgstr "åtkomst nekas" #: lib/error.c:72 msgid "bad user/group name" msgstr "felaktigt användar-/gruppnamn" #: lib/error.c:74 msgid "bad user/group id" msgstr "felaktigt användar-/grupp-id" #: lib/error.c:76 msgid "user/group name in use" msgstr "användar-/gruppnamn som används" #: lib/error.c:78 msgid "user/group id in use" msgstr "användar-/grupp-id som används" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "fel vid hantering av terminalattribut" #: lib/error.c:82 msgid "error opening file" msgstr "fel när filen öppnades" #: lib/error.c:84 msgid "error locking file" msgstr "fel när filen låstes" #: lib/error.c:86 msgid "error statting file" msgstr "fel när status togs på filen" #: lib/error.c:88 msgid "error reading file" msgstr "fel när filen lästes" #: lib/error.c:90 msgid "error writing to file" msgstr "fel när filen skrevs" #: lib/error.c:92 msgid "data not found in file" msgstr "data finns inte i filen" #: lib/error.c:94 msgid "internal initialization error" msgstr "internt initieringsfel" #: lib/error.c:96 msgid "error loading module" msgstr "fel när modulen lästes in" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "fel när symbolen slogs upp i modulen" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "biblioteks-/modulversion som inte stämmer överens" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "att låsa upp skulle göra lösenordsfältet tomt" #: lib/error.c:105 msgid "invalid attribute value" msgstr "ogiltigt attributvärde" #: lib/error.c:107 msgid "invalid module combination" msgstr "ogiltig modulkombination" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "användarens hemkatalog ägs inte av denne" #: lib/error.c:115 msgid "unknown error" msgstr "okänt fel" #: lib/misc.c:240 msgid "invalid number" msgstr "ogiltigt tal" #: lib/misc.c:254 msgid "invalid ID" msgstr "ogiltigt id" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "ingen initieringsfunktion %s i \"%s\"" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "modulversion stämmer inte i \"%s\"" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "modul \"%s\" definierar inte \"%s\"" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "fel när terminalattribut lästes" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "fel när terminalattribut sattes" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "fel vid läsning från terminalen" #: lib/user.c:218 msgid "name is not set" msgstr "inget namn satt" #: lib/user.c:223 msgid "name is too short" msgstr "namnet är för kort" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "namnet är för långt (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "namnet innehåller tecken som inte är ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "namnet innehåller kontrolltecken" #: lib/user.c:249 msgid "name contains whitespace" msgstr "namnet innehåller blanktecken" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "namnet startar med ett bindestreck" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "namnet innehåller ogiltigt tecken \"%c\"" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "användare %s har ingen UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "användaren %s finns inte" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "grupp %s har ingen GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "gruppen %s finns inte" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "användare %jd har inget namn" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "grupp %jd har inget namn" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "användaren har varken ett namn eller en UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "gruppen har varken ett namn eller en GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "Vägrar att använda farlig hemkatalog \"%s\" som standard" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Ogiltigt standardvärd för fält %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "fel när filen låstes: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "det gick inte att få standardsäkerhetskontext: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "det gick inte att få säkerhetskontext för \"%s\": %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "det gick inte att sätta standardsäkerhetskontext till \"%s\": %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "det gick inte att få fram selabel-filens kontexthandtag: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "det gick inte att avgöra säkerhetskontext för \"%s\": %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "det gick inte att öppna \"%s\": %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "det gick inte att ta status på \"%s\": %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "fel när \"%s\" skapades: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Fel när ägaren till \"%s\" ändrades: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Fel vid ändring av rättigheter på ”%s”: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Fel när \"%s\" lästes: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Fel när \"%s\" skrevs: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "det gick inte att läsa från \"%s\": %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "Felaktigt inehåll i låset ”%s”" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "Låset %s hålls av processen %ju" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "Fel när det förlegade låset ”%s”: %s." #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "Fel vid ändring av rättigheter på ”%s”: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "Kan inte få låset ”%s”: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "Fel när %s\" slogs upp: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "Fel när \"%s\" ersattes: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "dubblerat objekt har inget %s-attribut" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "originalobjektet har inget %s-attribut" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "ID %lu används redan av %s" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s värde \"%s\": \"\\n" "\" är inte tillåtet" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s värde \"%s\": \":\" är inte tillåtet" #: modules/files.c:1136 msgid "entry already present in file" msgstr "posten finns redan i filen" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "det gick inte att skriva till \"%s\": %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "entitetsobjektet har inget %s-attribut" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "en post med motstridigt namn finns redan i filen" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "\":\" och ”\\n" "” är inte tillåtna i krypterade lösenord" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "fel när lösenordet krypterades" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "modulerna ”%s” och ”%s” kan inte kombineras" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "kör inte med superanvändarrättigheter" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "det finns ingen skuggfil -- avaktiverar" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "fel när ldap-bibliotek initierades" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "det gick inte att sätta LDAP-protokoll till version %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "det gick inte att förhandla fram TLS med LDAP-servern" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "det gick inte att binda till en LDAP-server" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" "det gick inte att binda till en LDAP-server, första försöket som \"%s\": %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "användarobjektet hade inget %s-attribut" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "användarobjektet var skapat utan \"%s\"" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "fel när en LDAP-katalogpost skapades: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "fel när en LDAP-katalogpost ändrades: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "fel när namnet byttes på en LDAP-katalogpost: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "objektet hade inget %s-attribut" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "fel när LDAP-katalogpost togs bort: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "objektet har inget %s-attribut" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "ej stödd krypteringsmetod för lösenord" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "inget sådant objekt i LDAP-katalogen" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "det finns inget \"%s\"-attribut" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "fel när lösenordet sattes i LDAP-katalogen för %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP-servernamn" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP sökningsbas-DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP bindnings-DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP bindningslösenord" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL-användare" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL-auktoriseringsanvändare" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL-fel när användare skapades: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL-fel när anvädare togs bort: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "fel när Cyrus SASL initierades: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "fel när hemkatalogen skapades för användaren" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "fel när hemkatalogen togs bort för användaren" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "fel när hemkatalogen flyttades för användaren" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Fel när %s initierades: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Ogiltigt ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Söker efter grupp med ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Söker efter grupp med namnet %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Söker efter användare med ID %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Söker efter användare med namnet %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Ingen post funnen.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Frågor lyckades.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Frågor misslyckades.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Standardvärde för användares objektklasser:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Standardvärde för användares attributnamn:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Hämtar standardvärden för användarattribut:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kopierar användarstruktur:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "säkerhetskopieringsfil \"%s\" finns och är inte en normal fil" #~ msgid "backup file size mismatch" #~ msgstr "storleken på säkerhetskopieringsfilen stämmer inte" po/ta.po000066400000000000000000001326461471266067600124730ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Arun Prakash , 2012 # Felix , 2006 # Felix I , 2011, 2012 # I felix , 2007 # Jayaradha N , 2004 # Jayaradha N , 2004, 2005, 2006 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Tamil (http://www.transifex.com/projects/p/fedora/language/" "ta/)\n" "Language: ta\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "சலுகைகள் வழங்கபடாதது கைவிடப்படுகிறது.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "உள்ளார்ந்த பிழை.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s க்கு %s இன் தகவலை மாற்ற அனுமதி இல்லை\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "தெரியாத பயனர் தொடர்பு" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd முன்னிருப்பு சூழலை அமைக்க முடியவில்லை\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM துவக்குவதில் பிழை.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s உறுதிப்படுத்தல் தவறானது.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "உள்ளார்ந்த PAM பிழை `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "தெரியாத பயனர் அங்கீரித்தல்.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "பயனர் பொறுத்தம் இல்லை.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] பயனர்" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "அளவுருக்கள் பகுப்பதில் பிழை: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "பயனர் பெயர் எதுவும் குறிப்பிடப்படவில்லை.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%sஐ துவங்குவதில் பிழை: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "பயனர்%s இல்லை.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "கணக்கு பூட்டப்பட்டது.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "கணக்கு பூட்டப்படவில்லை.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "குறைந்தபட்சம்:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "அதிகபட்சம்:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "எச்சரிக்கை:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "செயலிழக்கப்பட்டது:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "எப்போதும் இல்லை" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "கடைசி மாற்றம்:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "கடவுச்சொல் முடிவுற்றது:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "செயலிழக்கப்பட்ட கடவுச்சொல் :\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "கணக்கு முடிவுற்றது:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "பழைய செய்தியை %sக்கு மாற்ற முடியவில்லை: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [user]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "பயனர் பெயர் எதுவும் குறிப்பிடவில்லை, பயனர் குறியீடு %dக்கு பெயர் இல்லை.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%sக்கு தகவல் மாற்றப்படுகிறது.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "முழுப்பெயர்" #: apps/lchfn.c:151 msgid "Surname" msgstr "துணைப்பெயர்" #: apps/lchfn.c:162 msgid "Given Name" msgstr "கொடுத்த பெயர்" #: apps/lchfn.c:172 msgid "Office" msgstr "அலுவலகம்" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "அலுவலக தொலைபேசி " #: apps/lchfn.c:190 msgid "Home Phone" msgstr "வீட்டு தொலைபேசி " #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "மின்அஞ்சல் முகவரி" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "தகவல் மாற்றவில்லை: உள்ளீடு பிழை.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "தகவல் மாற்றப்பட்டது.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "தகவல் மாற்ற முடியவில்லை.%s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%sக்கு ஷெல் மாற்றப்படுகிறது.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "புதிய ஷெல் " #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "ஷெல் மாற்றப்படவில்லை: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "ஷெல் மாற்றப்பட்டது.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] குழு" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "குழுப் பெயர் எதுவும் குறிப்பிடவில்லை\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "தவறான குழு ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "குழு உருவாக்க முடியவில்லை: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "குழு %s இல்லை.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "குழு %sஐ அழிக்க முடியவில்லை: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "இரண்டும் -L மற்றும் -U குறிப்பிடப்பட்டது.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "குழு %sக்கான கடவுச்சொல்லை அமைக்க முடியவில்லை: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "குழு%s ஐ பூட்ட முடியவில்லை: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "குழு %s ஐ பூட்டு நீக்க முடியவில்லை: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "குழு %s ஐ மாற்ற முடியவில்லை: %s.\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%sஇல் பிழை தேடுதல்: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "%s ஐ பயன்படுத்தி, குழுப் பெயர் குறிப்பிடவில்லை .\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "குழுப் பெயர் குறிப்பிடப்படவில்லை, குழு குறியீடுக்கு பெயர் இல்லை%d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "%s பயன்படுத்தி, பயனர் பெயர் எதுவும் குறிப்பிடப்படவில்லை.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s இல்லை.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' ஐ திறப்பதில் பிழை: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "'%s'க்கு கணக்கு உருவாக்குவதில் பிழை. வரி ஒழுங்கின்றி வடிவமைக்கப்பட்டுள்ளது.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "தவறான பயனர் குறியீடு %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 உடன் கணக்கு உருவாக்க மறுக்கப்படுகிறது.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s'க்கு GID %jd: உடன் குழு உருவாக்கவதில் பிழை %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "அபாயகரமான இல்ல அடைவு `%s' க்கு %sஐ முன்னிப்பாக பயன்படுத்த மறுக்கிறது\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%sக்கு இல்ல அடைவை உருவாக்குவதில் பிழை: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%sக்கு ஆரம்ப கடவுச்சொல் அமைப்பதில் பிழை: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%sக்கு பயனர் கணக்கு உருவாக்குவதில் பிழை: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%sக்கு கடவுச்சொல்லை மாற்றுகிறது.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "புதிய கடவுச்சொல்" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "புதிய கடவுச்சொல் (உறுதிப்படுத்துதல்)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "கடவுச்சொல் பொருந்தவில்லை. மீண்டும் முயற்சி செய்யவும்.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "மாற்றிய கடவுச்சொல் ரத்து செய்யப்பட்டது.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Error reading from file descriptor %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "பயனர் %sக்கு கடவுச்சொல் அமைப்பதில் பிழை: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "குழு %sக்கு கடவுச்சொல் அமைப்பதில் பிழை: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "கடவுச்சொல் மாற்றப்பட்டது.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "குழு %jd இல்லை \n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "குழு `%s' அமைப்பதில் பிழை: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "கணக்கு உருவாக்க முடியவில்லை: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%sஐ உருவாக்குவதில் பிழை: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "பயனர் %sஐ அழிக்க முடியாது: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%sக்கு ஒரு gid எண் இல்லை.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "%jd GID எனக்கொண்ட குழு இல்லை, நீக்கப்படவில்லை.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd உடன் உள்ள குழுவுக்கு குழுப்பெயர் இல்லை.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "குழு %sஐ அழிக்க முடியவில்லை: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "பயனருக்காக இல்ல அடைவை நீக்குவதில் பிழை" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "பயனர் %sக்கு கடவுச்சொல் அமைக்க முடியவில்லை: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "பயனர்%s ஐ பூட்ட இயலவில்லை: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "பயனர்%s இன் பூட்டை நீக்க முடியவில்லை: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "எச்சரிக்கை: குழு குறியீடு %jd இல்லை.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "பயனர்%s ஐ மாற்ற முடியவில்லை: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "குழுவை %s ஐ மாற்ற முடியவில்லை: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "பழைய இல்ல அடைவு எதுவும் இல்லை %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%sக்கு புதிய இல்ல அடைவு இல்லை.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr " %s இலிருந்து %sக்கு நகர்த்துவதில் பிழை: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "கட்டமைப்பு கோப்பு `%s'ஐ திறக்க முடியவில்லை: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "கட்டமைப்பு கோப்பு `%s'ஐ ஆரம்பிக்க முடியவில்லை: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "கட்டமைப்பு கோப்பு `%s' மிகப் பெரியது" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "கட்டமைக்கப்பட்ட கோப்பு `%s'ஐ வாசிக்க முடியவில்லை: %s" #: lib/error.c:62 msgid "success" msgstr "வெற்றி" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "கட்டமைப்பால் தொகுதி செயல்நீக்கப்பட்டது" #: lib/error.c:66 msgid "generic error" msgstr "உற்பத்தி பிழை" #: lib/error.c:68 msgid "not enough privileges" msgstr "போதிய சலுகைகள் இல்லை" #: lib/error.c:70 msgid "access denied" msgstr "அனுமதி மறுக்கப்பட்டது" #: lib/error.c:72 msgid "bad user/group name" msgstr "தவறான பயனர்/குழுப் பெயர்" #: lib/error.c:74 msgid "bad user/group id" msgstr "தவறான பயனர்/குழு குறியீடு" #: lib/error.c:76 msgid "user/group name in use" msgstr "பயனர்/குழு பெயர் பயனில் உள்ளது" #: lib/error.c:78 msgid "user/group id in use" msgstr "பயனர்/குழு குறியீடு பயனில் உள்ளது" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "முனையம் கூறுகளை கணக்கிடும் போது பிழை" #: lib/error.c:82 msgid "error opening file" msgstr "கோப்பினை திறக்கும் போது பிழை" #: lib/error.c:84 msgid "error locking file" msgstr "கோப்பினை பூட்டும் போது பிழை" #: lib/error.c:86 msgid "error statting file" msgstr "கோப்பின் நிலையில் பிழை" #: lib/error.c:88 msgid "error reading file" msgstr "கோப்பினை வாசிப்பதில் பிழை" #: lib/error.c:90 msgid "error writing to file" msgstr "கோப்பில் எழுதுவதில் பிழை" #: lib/error.c:92 msgid "data not found in file" msgstr "கோப்பில் தகவல் இல்லை" #: lib/error.c:94 msgid "internal initialization error" msgstr "உள்ளார்ந்த துவக்க பிழை" #: lib/error.c:96 msgid "error loading module" msgstr "தொகுதி ஏற்றும் போது பிழை" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "தொகுதியில் சின்னத்தை சரி செய்யும் போது பிழை" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "நூலகம்/தொகுதி பதிப்பு பொறுத்தம் இல்லை" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "பூட்டு நீக்குதல் கடவுச்சொல் புலத்தை வெறுமையாக்கும்" #: lib/error.c:105 msgid "invalid attribute value" msgstr "தவறான அளவுரு மதிப்புதவறான அற" #: lib/error.c:107 msgid "invalid module combination" msgstr "தவறான தொகுதி கலவைதவறான " #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "தெரியாத பிழை" #: lib/misc.c:240 msgid "invalid number" msgstr "தவறான எண்" #: lib/misc.c:254 msgid "invalid ID" msgstr "தவறான குறியீடு" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "`%s'இல் துவக்க செயல்பாடு %s இல்லை" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s'இல் தொகுதி பதிப்பு பொருந்தவில்லை" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "தொகுதி `%s' யானது `%s'ஐ குறிப்பிடவில்லை" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "முனையம் கூறுகளை வாசிப்பதில் பிழை" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "முனையம் கூறுகளை அமைப்பதில் பிழை" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "முனையத்திலிருந்து வாசிப்பதில் பிழை" #: lib/user.c:218 msgid "name is not set" msgstr "பெயர் அமைக்கவில்லை" #: lib/user.c:223 msgid "name is too short" msgstr "பெயர் மிகச் சிறியதாக உள்ளது" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "பெயர் மிக நீளமாக உள்ளது (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "பெயர் ASCII அல்லாத எழுத்தை கொண்டுள்ளது" #: lib/user.c:242 msgid "name contains control characters" msgstr "பெயர் கட்டுப்பாட்டு எழுத்துகளை கொண்டுள்ளது" #: lib/user.c:249 msgid "name contains whitespace" msgstr "பெயர் வெற்றிடத்தை கொண்டுள்ளது" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "பெயர் இடைக்கோட்டினால் ஆரம்பமாகிறது" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "பெயர் தவறான எழுத்து `%c' ஐ கொண்டுள்ளது" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "பயனர் %sம் UID இல்லை" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "குழு %sம் GID இல்லை" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "பயனர் %jd க்கு பெயர் இல்லை" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "குழு %jd க்கு பெயர் இல்லை" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "பயனரிடம் பெயர் அல்லது UID இல்லை" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "குழுவில் ஒரு பெயர் அல்லது ஒரு GID இல்லை" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "அபாயகரமான இல்ல அடைவு `%s'ஐ முன்னிப்பாக பயன்படுத்த மறுக்கிறது" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "புலத்தின் தவறான முன்னிருப்பு மதிப்பு %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "கோப்பினை பூட்டுவதில் பிழை : %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "முன்னிருப்பு பாதுகாப்பு சூழலை பெற முடியவில்லை:%s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s'இன் பாதுகாப்பு சூழலை பெற முடியவில்லை: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' க்கு முன்னிருப்பு பாதுகாப்பு சூழலை அமைக்க முடியவில்லை: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "முன்னிருப்பு பாதுகாப்பு சூழலை பெற முடியவில்லை:%s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s'இன் பாதுகாப்பு சூழலை குறிப்பிட முடியவில்லை: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' ஐ திறக்க முடியவில்லை: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "'%s' வரையறுக்க முடியவில்லை: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s'ஐ உருவாக்குவதில் பிழை : %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' இன் உரிமையாளரை மாற்றுவதில் பிழை: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "'%s' பிழை மாற்றும் விதம்: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "வாசிப்பதில் பிழை `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "'%s' எழுதுவதில் பிழை :%s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s'இலிருந்து வாசிக்க முடியவில்லை: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr " %s இலிருந்து %sக்கு நகர்த்துவதில் பிழை: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "'%s' பிழை மாற்றும் விதம்: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "வாசிப்பதில் பிழை `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "வாசிப்பதில் பிழை `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "உருப்படியில் %s கூறுகள் இல்லை" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "பொருளுக்கு %s கூறு இல்லை" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s மதிப்பு `%s': `:' அனுமதிக்கப்படுவதில்லை" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s மதிப்பு `%s': `:' அனுமதிக்கப்படுவதில்லை" #: modules/files.c:1136 msgid "entry already present in file" msgstr "உள்ளீடு ஏற்கனவே கோப்பில் உள்ளது" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'க்கு எழுத முடியவில்லை: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "உருப்படியில் %s கூறுகள் இல்லை" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "முரண்படும் பெயருடன் உள்ள உள்ளீடு ஏற்கனவே கோப்பில் உள்ளது" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "`:' மறைகுறியாக்கப்பட்ட கடவுச்சொல்லில் அனுமதிக்கப்படுவதில்லை" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "கடவுச்சொல்லை குறிமுறையாக்குவதில் பிழை" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' மற்றும் `%s' தொகுதிகளை கலக்க முடியாது" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "சிறப்பு பயனர் சலுகைகளை செயல்படுத்தவில்லை" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "நிழல் கோப்பு இல்லை - செயல்நீக்கப்படுகிறது" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap நூலகத்தை துவக்குவதில் பிழை" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP நெறிமுறையைப் பதிப்பு %dக்காக அமைக்க முடியவில்லை" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "TLS யுடன் LDAP சேவையகத்தை கேட்க முடியாது" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP சேவையகத்துடன் பிணைக்க முடியவில்லை" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP சேவையகத்துடன் பிணைக்க முடியவில்லை, முதல் முயற்சி `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "பயனர் பொருளில் %s கூறு இல்லை" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "பயனர் பொருள் `%s' இல்லாமல் உருவாக்கப்பட்டது" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP அடைவு உள்ளீட்டை உருவாக்கும் போது பிழை: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP அடைவு உள்ளீட்டை மாற்றும் போது பிழை: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP அடைவு உள்ளீடுகளை பெயர் மாற்றுவதில் பிழை: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "பொருளில் %s கூறுகள் இல்லை" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP அடைவு உள்ளீட்டை நீக்கும் போது பிழை: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "பொருளுக்கு %s கூறு இல்லை" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "துணைபுரியாத கடவுச்சொல் மறைக்குறியாக்க திட்டம்" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP அடைவில் பொருள் எதுவும் இல்லை" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s' கூறு இல்லை" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "LDAP அடைவில் %s க்கு கடவுச்சொல் அமைப்பதில் பிழை: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP சேவையக பெயர்" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP தேடல் தளம் DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP பிணைத்தல் DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP பிணைத்தல் கடவுச்சொல்" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL பயனர்" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL அனுமதிக்கப்பட்ட பயனர்" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Cyrus SASL பயனர் உருவாக்குவதில் பிழை: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Cyrus SASL பயனரை நீக்குவதில் பிழை: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL துவக்குவதில் பிழை: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "பயனருக்காக இல்ல அடைவை உருவாக்குவதில் பிழை" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "பயனருக்காக இல்ல அடைவை நீக்குவதில் பிழை" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "பயனருக்காக இல்ல அடைவை நகர்த்துவதில் பிழை" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "துவக்குவதில் பிழை %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "தவறான குறியீடு %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "குறியீடு %jd ஐ கொண்ட குழுவை தேடுகிறது.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "குழுப்பெயர் %sஐ தேடுகிறது.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd பயனர் குறியீட்டை தேடுகிறது .\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" "பயனர் பெயர் %sஐ தேடுகிறது.\n" "\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "உள்ளீடு இல்லை.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "வெற்றிகரமாக கண்டுபிடித்தது.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "கண்டுபிடிக்க முடியவில்லை.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "முன்னிருப்பு பயனர் பொருள் வகுப்புகள்:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "முன்னிருப்பு பயனர் கூறுகளின் பெயர்கள்:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "முன்னிருப்பு பயனர் கூறுகளை பெறுகிறது :\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "பயனர் வடிவத்தை நகலெடுக்கிறது:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "பின்சேமிப்பு கோப்பு %s' உள்ளது, ஆனால் அது இயல்பான கோப்பில்லை" #~ msgid "backup file size mismatch" #~ msgstr "பின்சேமிப்பு கோப்பின் அளவு தவறானது" po/te.po000066400000000000000000001305501471266067600124670ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Krishnababu Krothapalli , 2007, 2008, 2009 # Krishnababu Krothapalli , 2011, 2012 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/fedora/language/" "te/)\n" "Language: te\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "అనుమతినిరాకరణ లో విఫలమైంది.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "లోపలి దోషం.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s యొక్క ఫింగర్ సమాచారాన్ని మార్చుటకు %s అధికారంలేదు\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "తెలియని వినియోగదారుని సందర్భం" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd కు సిద్ద సందర్భాన్ని అమర్చలేము \n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM సంస్థాపనలో దోషం.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s కు దృవీకరణ విఫలమైనది.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "లోపలి PAM దోషం `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "తెలియని వినియోగదారుడు దృవీకరించబడ్డాడు.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "వినియోగదారుని అసమానత.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] వినియోగదారుడు" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "మూలకాల పార్సింగ్ లో దోషం: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "వినియోగదారుని పేరు తెలుపబడలేదు.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s సంస్థాపించుటలో దోషం: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "%s వినియోగదారుడు లేడు.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "ఖాతా స్థంభించినది.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "ఖాతా స్థంభించబడలేదు. \n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "కనిష్ఠము:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "గరిష్ఠము:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "హెచ్చరిక:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "అచేతనం:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "ఎప్పటికి కాదు" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "చివరి మార్పు:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "అనుమతుపదం గతించినది:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "అనుమతిపదం అచేతనం:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "ఖాతా గతించినది:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s యొక్క వయోసమాచారాన్ని మార్చుటలో విఫలం: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [వినియోగదారి]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "వినియోగదారి పేరు తెలుపలేదు,uid %d కు పేరు లేదు.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s కొరకు ఫింగర్ సమాచారం మార్చబడుతోంది.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "పుర్తి పేరు" #: apps/lchfn.c:151 msgid "Surname" msgstr "ఉపనామము" #: apps/lchfn.c:162 msgid "Given Name" msgstr "ఇచ్చిన పేరు" #: apps/lchfn.c:172 msgid "Office" msgstr "కార్యాలయము" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "కార్యాలయ దూర్వాణి" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "నివాస దూర్వాణి" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "ఇ-టపా చిరునామా" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "ఫింగర్ సమాచారం మార్చబడలేదు: ప్రవేశ దోషం.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "ఫింగర్ సమాచారం మార్చబడినది.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "ఫింగర్ సమాచారం మార్చబడలేదు:%s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s కొరకు షెల్ ను మారుస్తోంది.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "క్రొత్త షెల్" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "షెల్ మార్చబడలేదు:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "షెల్ మార్చబడినది.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] సమూహం" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "సముహం పేరు తెలుపబడలేదు.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "సరిగాని సమూహ ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "సమూహ సృష్టీకరణ విఫలం:%s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "సమూహం%s లేదు.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s సముహం తొలగింపలేము: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L మరియు -U తెలుపబడినవి.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "సమూహం %s కు అనుమతిపదం అమర్చుటలో విఫలం: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "సమూహం %s లాక్ చేయలేము:%s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "సమూహం %s లాక్ తీయలేము:%s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "సమూహం %s మార్పుచేయలేము:%s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s లో దోషాన్ని చూస్తోంది:%s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "సమూహం పేరు తెలుపబడలేదు, %s ఉపయోగించి.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "సమూహం పేరు తెలుపబడలేదు,gid%d కి పేరు లేదు.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "వినియోగదారుని పేరు తెలుపబడలేదు,%s ఉపయోగించి.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s లేదు\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' తెరువుటలో దోషం:%s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' కు ఖాతా సృష్టించుటలో దోషం:పంక్తి సరిగా కూర్చబడలేదు.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "వినియోగదారుని ID %s సరిగా లేదు\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "UID 0 తో ఖాతా సృష్టించుటకు తిరస్కరిస్తోంది.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' కు GID %jd తో సమూహం సృష్టించుటలో దోషం: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "ప్రమాదకరమైన డైరెక్టరీ `%s'ను %s కొరకు అప్రమేయంగా వుపయోగించుట తిరస్కరించుతోంది\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s కు నివాస సంచయం సృష్టించుటలో దోషం: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "%s కు తోలి అనుమతిపదం అమర్చుటలో దోషం: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s కు వినియోగదారుని ఖాతా సృష్టించుటలో దోషం: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "%s అనుమతిపదం మారుస్తుంది.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "క్రొత్త అనుమతిపదం" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "క్రొత్త అనుమతిపదం (నిశ్చయం)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "అనుమతిపదం సరితూగలేదు,మరలా ప్రయత్నించండి.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "అనుమతిపదం మార్పు రద్దుచేయబడింది.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "ఫైల్ డిస్క్రిప్టార్ %d నుండి చదువుటలో దోషం.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s కు అనుమతిపదం అమరికలో దోషం: %s\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "%s సమూహం కు అనుమతిపదం అమరికలో దోషం: %s\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "అనుమతిపదం మార్చబడినది.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "సమూహం %jd లేదు\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "సమూహం %s సృష్టించుటలో దోషం: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "ఖాతా సృష్టీకరణ విఫలం: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s సృష్టించుటలో దోషం: %s\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "%s వినియోగదారుడు తొలగింపబడడు: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s gid సంఖ్యను కలిగిలేదు.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd తో ఏ సమూహం లేదు,తొలగించవద్దు.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd తో ఉన్న సమూహం పేరుకలిగిలేదు.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s సమూహం తొలగింపబడడు: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "వినియోగదారుని కొరకు నివాస సంచయం తొలగించుటలో దోషం" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s వినియోగదారునికి అనుమతిపదం అమర్చుటలో విఫలం: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "వినియోగదారుడు %s లాక్ చేయబడలేడు: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "వినియోగదారుడు %s లాక్ చేయబడలేడు: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "హెచ్చరిక: ID %jd తొ సమూహం లేదు.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "వినియోగదారుడు %s మార్పు చేయబడలేడు: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "సమూహం %s మార్పు చేయబడలేదు: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s కు పురాతన నివాస సంచయము లేదు.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s కు క్రొత్త నివాస సంచయము లేదు.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s నుండి %s కు కదులుటలో దోషం: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' ఆకృతీకరణ దస్త్రం ను తెరువలేదు: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' ఆకృతీకరణ దస్త్రం ను ప్రారంభింపలేదు: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "ఆకృతీకరణ దస్త్రం `%s' చాలా పెద్దది" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "ఆకృతీకరణ ఫైలు `%s' ను చదవలేదు: %s" #: lib/error.c:62 msgid "success" msgstr "సమర్ధంవంతంగా" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "ఆకృతీకరణ చేత గుణకం అచేతనంచేయబడింది" #: lib/error.c:66 msgid "generic error" msgstr "సాధారణ దోషం" #: lib/error.c:68 msgid "not enough privileges" msgstr "సరిపోయిన అధికారాలు లేవు" #: lib/error.c:70 msgid "access denied" msgstr "అనుమతి నిరాకరించబడింది" #: lib/error.c:72 msgid "bad user/group name" msgstr "చెడ్డ వినియోగదారుని/సమూహం పేరు" #: lib/error.c:74 msgid "bad user/group id" msgstr "చెడ్డ వినియోగదారుని/సమూహం ఇడి" #: lib/error.c:76 msgid "user/group name in use" msgstr "వినియోగదారుని/సమూహం పేరు ఉపయోగంలోఉంది" #: lib/error.c:78 msgid "user/group id in use" msgstr "వినియోగదారుని/సమూహం ఐడి ఉపయోగంలోఉంది" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "టెర్మినల్ యాట్రిబ్యూట్సు నిర్దేశంలో దోషం" #: lib/error.c:82 msgid "error opening file" msgstr "దస్త్రం తెరుచుటలో దోషం" #: lib/error.c:84 msgid "error locking file" msgstr "దస్త్రం లాకింగ్ లో దోషం" #: lib/error.c:86 msgid "error statting file" msgstr "దస్త్రం ప్రారంభించుటలో దోషం" #: lib/error.c:88 msgid "error reading file" msgstr "దస్త్రం చదువుటలో దోషం" #: lib/error.c:90 msgid "error writing to file" msgstr "దస్త్రం వ్రాయుటలో దోషం" #: lib/error.c:92 msgid "data not found in file" msgstr "దస్త్రంలో సమాచారం కనబడుటలేదు" #: lib/error.c:94 msgid "internal initialization error" msgstr "అంతర్గత సిద్దీకరణ దోషం" #: lib/error.c:96 msgid "error loading module" msgstr "గుణకం లోడింగ్ లో దోషం" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "గుణకం లో గర్తును పరిష్కరించుటలో దోషం" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "లైబ్రరి/గుణకం విడుదలలో అసమానత" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "అన్ లాకింగ్ అనుమతిపదం స్థలాన్ని ఖాళీచేస్తుంది" #: lib/error.c:105 msgid "invalid attribute value" msgstr "చెల్లని యాట్రిబ్యూట్ విలువ" #: lib/error.c:107 msgid "invalid module combination" msgstr "చెల్లని మాడ్యూల్ యుగళం" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "తెలియని దోషం" #: lib/misc.c:240 msgid "invalid number" msgstr "సరికాని సంఖ్య" #: lib/misc.c:254 msgid "invalid ID" msgstr "సరికాని ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "`%s' లో క్రియాశీల %s సిద్దీకరణ లేదు" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' లో గుణక విడుదల అసమానత" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' గుణకం `%s'న్ని నిర్ధారించదు" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "టెర్మినల్ యాట్రిబ్యూట్సు చదువుటలో దోషం" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "టెర్మినల్ యట్రిబ్యూట్సు అమరికలో దోషం" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "టెర్మినల్ నుండి చదువుటలో దోషం" #: lib/user.c:218 msgid "name is not set" msgstr "పేరు పెట్టబడలేదు" #: lib/user.c:223 msgid "name is too short" msgstr "పేరు చిన్నదిగా ఉంది" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "పేరు పెద్దదిగా ఉంది(%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "పేరు ASCII అక్షరాలు కానివాటిని కలిగి ఉంది" #: lib/user.c:242 msgid "name contains control characters" msgstr "పేరు కంట్రోల్ అక్షరాలను కలిగి ఉంది" #: lib/user.c:249 msgid "name contains whitespace" msgstr "పేరు తెల్ల ఖాళీలను కలిగి ఉంది" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "పేరు హైఫన్ తో ప్రారంభింపబడుతుంది" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "పేరు సరిగాని అక్షరం `%c' కలిగి ఉంది" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "వినియోగదారుడు %s UID ని కలిగి లేడు" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "సమూహం %s GID ని కలిగి లేదు" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "వినియోగదారుడు %jd పేరు కలిగి లేడు" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "సమూహం %jd పేరు ని కలిగి లేదు" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "వినియోగదారుడు పేరుకాని UID ని కలిగి లేడు" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "సమూహం పేరును కాని GID ని కాని కలిగి లేదు" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "ప్రమాదకరమైన నివాస సంచయం `%s' అప్రమేయంగా వుపయోగించుటకు తిరస్కరించుతోంది" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s కు సరికాని సిద్దవిలువ : %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "దస్త్రం లాకింగ్ లో దోషం: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "సిద్ద రక్షణ సందర్బంను వ్యవస్థింపలేము: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' యొక్క రక్షణ సందర్బంను పొందలేము: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "`%s' కు సిద్ద రక్షణ వ్యవస్థను అమర్చలేము: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "సిద్ద రక్షణ సందర్బంను వ్యవస్థింపలేము: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' యొక్క రక్షణ సందర్బంను పొందలేము: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' ను తెరువలేము: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' ను ప్రారంభింపలేము: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' ను సృష్టించలేము: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' యొక్క యజమానిని మార్చుటలో దోషం: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' యొక్క దోష మార్పు రీతి: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' చదువుటలో దోషం: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' వ్రాయుటలో దోషం: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s' నుండి చదవలేము : %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "%s నుండి %s కు కదులుటలో దోషం: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' యొక్క దోష మార్పు రీతి: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "`%s' చదువుటలో దోషం: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "`%s' చదువుటలో దోషం: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "ప్రవేశపెట్టిన ఆబ్జక్టు యాట్రిబ్యూట్ %s ని కలిగి లేదు" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "ఆబ్జక్టు %s యాట్రిబ్యూట్ కలిగిలేదు" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s విలువ `%s': `:' అనుమతించబడలేదు" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s విలువ `%s': `:' అనుమతించబడలేదు" #: modules/files.c:1136 msgid "entry already present in file" msgstr "ప్రవేశం దస్త్రంలో ఉంచబడింది" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr " `%s' కు వ్రాయలేము : %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "ప్రవేశపెట్టిన ఆబ్జక్టు యాట్రిబ్యూట్ %s ని కలిగి లేదు" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "విభేదిస్తున్న పేరుతో ప్రవేశం యిప్పటికే ఫైలునందు వుంది" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "ఎన్క్రిప్టెడ్ సంకేతపదమునందు `:' అనుమతించబడలేదు" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "అనుమతిపదం ను ఎన్క్రిప్టు చేయడం లో దోషం" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' మరియు `%s' మాడ్యూళ్ళను సమ్మేళనం చేయలేము" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "సూపర్ యూజర్ అదికారాలతో నిష్పాదనము జరుగుటలేదు" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "షాడో ఫైల్ లేదు -- అచేతనం చేయబడింది" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ఎల్ డాప్ లైబ్రరి సంస్థాపనలో దోషం" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "విడుదల %d కు LDAP నియమంను వ్యవస్థాపించలేము" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP సేవిక తో TLS ను నెగొషియేట్ చేయలేము" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP సేవికకు కట్టుబడి ఉండలేము" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP సేవిక కు కట్టుబడి ఉండలేము,మొదటి ప్రయత్నంగా `%s': %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "వినియోగదారుని ఆబ్జక్టు %sని కలిగి లేదు" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "వినియోగదారుని ఆబ్జక్టు `%s' లేకనే సృష్టించబడింది" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP పదకోశ ప్రవేశం సృష్టీకరణలో దోషం: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP పదకోశ ప్రవేశం మార్చుటలో దోషం: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP పదకోశ ప్రవేశం తిరిగి నామకరణం చేయుటలో దోషం: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "ఆబ్జక్టు %s యాట్రిబ్యూట్ కలిగిలేదు" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP పదకోశ ప్రవేశం తొలగించుటలో దోషం: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "ఆబ్జక్టు %s యాట్రిబ్యూట్ కలిగిలేదు" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "మద్దతీయని సంకేతపదపు ఎన్క్రిప్షన్ పథకము" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP లో అటువంటి ఆబ్జక్టు లేదు" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s' యాట్రిబ్యూట్ కనబడలేదు" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "%s కోరకు LDAP పదకోశం లో అనుమతిపదం వ్యవస్థాపించుటలో దోషం: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP సేవిక పేరు" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP సెర్చు ఆధారం DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP బైండ్ DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP బైండ్ అనుమతిపదం" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL వినియోగదారి" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL దృవీకరించు వినియోగదారి" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "వినియోగదారుని సృష్టించుటలో సైరస్ SASL దోషం: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "వినియోగదారుని తోలగించుటలో సైరస్ SASL దోషం: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "సైరస్ SASL సిద్దీకరించుటలో దోషం: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "వినియోగదారుని కొరకు నివాస సంచయం సృష్టించుటలో దోషం" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "వినియోగదారుని కొరకు నివాస సంచయం తొలగించుటలో దోషం" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "వినియోగదారుని కొరకు నివాస సంచయం కదుల్చుటలో దోషం" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s ను సిద్దీకరించుటలో దోషం: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "సరిగాని ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "ID %jd తో సమూహం కొరకు వెతుకులాట.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s పేరుగల సమూహం కొరకు వెతుకులాట.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "ID %jd తో వినియోగదారుని కోరకు వెతుకులాట.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s పేరుగల వినియోగదారుని కొరకు వెతుకులాట.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "ప్రవేశం కనిపించలేదు.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "ప్రాంమ్ట్సు సఫలం.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "ప్రాంమ్ట్సు విఫలం.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "సిద్ద వినియోగదారుని ఆబ్జక్టు క్లాసులు:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "సిద్ద వినియోగదారుని యాట్రిబ్యూట్సు పేరులు:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "సిద్ద వినియోగదారుని యాట్రిబ్యూట్సు పొందుట:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "వినియోగదారుని ఆకృతిని నకలుతీయుట:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "`%s' బ్యాకప్ దస్త్రం ఉంది అది నిత్యదస్త్రంకాదు" #~ msgid "backup file size mismatch" #~ msgstr "బ్యాకప్ దస్త్ర పరిమాణ అసమానత" po/tr.po000066400000000000000000001134371471266067600125110ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Bahadir Yagan , 2004 # Hasan Alp İNAN , 2011, 2012 # Miloslav Trmač , 2011 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-08-04 17:21+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \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=2; plural=(n>1);\n" "X-Generator: Weblate 4.18.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "İzinler bırakılamadı.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "İç hata.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" "%s kapsamı %s kullanıcısının bilgilerini değiştirmek için yetkili değil\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Bilinmeyen kullanıcı kapsamı" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "/etc/passwd için öntanımlı kapsam belirlenemedi\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "PAM başlatılırken hata.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s için kimlik sınaması başarısız.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "İç PAM hatası `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Bilinmeyen kullanıcı doğrulandı.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Kullanıcı aynı değil.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "tüm bilgiler için sor" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "kullanıcı için dönemsellik parametrelerini listele" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "parola değişiklikleri arasındaki en az gün sayısı" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "GÜN" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "parola değişiklikleri arasındaki en çok gün sayısı" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "1/1/1970'den bu yana geçen gün cinsinden son parola değişikliği tarihi" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "hesabın etkin olmadığının kabul edileceği parola zaman aşımı tarihinden " "sonraki gün sayısı" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "1/1/1970 tarihinden itibaren gün cinsinden parola zaman aşımı tarihi" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "kullanıcının uyarılmaya başlanacağı zaman aşımından önceki gün sayısı" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[SEÇENEK...] kullanıcı" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "argümanlar okunurken hata: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Kullanıcı ismi belirtilmedi.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "%s başlatılırken hata: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Kullanıcı %s yok.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Hesap kilitli.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Hesap kilitli değil.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "En az:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "En çok:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "En çok:\tYok\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Uyarı:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Etkin olmayan:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Etkin değil:\tAsla\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Bir sonraki oturum açmada parola değiştirilmeli" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Asla" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Son Değişiklik:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Parola zaman aşımı:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Parola etkisiz:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Hesap Zaman aşımı:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "%s için dönemsellik bilgisi değişikliği başarısız: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[SEÇENEK...] [kullanıcı]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Kullanıcı ismi belirtilmemiş, %d kimliği için isim yok.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "%s için kullanıcı bilgileri değiştiriliyor.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Adı ve Soyadı" #: apps/lchfn.c:151 msgid "Surname" msgstr "Soyadı" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Verilen Ad" #: apps/lchfn.c:172 msgid "Office" msgstr "İş" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "İş Telefonu" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Ev Telefonu" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "E-posta Adresi" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Kullanıcı bilgileri değişmedi: giriş hatası.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Kullanıcı bilgileri değişti.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Kullanıcı bilgileri değişmedi: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "%s için kabuk değiştiriliyor.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Yeni Kabuk" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Kabuk değişmedi: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Kabuk değişti.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "yeni grubun grup kimliği" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "SAYI" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "sistem grubu oluştur" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[SEÇENEK...] grup" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Grup ismi belirtilmedi.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Geçersiz grup kimliği %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Grup oluşturulamadı: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Grup %s yok.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "%s grubu silinemedi: %s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "grup için grup kimliğini ayarla" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "grubu verilen ada sahip olacak şekilde değiştir" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "AD" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "grup ile kullanılacak düz metin biçiminde parola" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "DİZGE" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "grup ile kullanılacak önceden şifrelenen parola" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "eklenecek yöneticilerin listesi" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "kaldırılacak yöneticilerin listesi" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "eklenecek grup üyelerinin listesi" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "kaldırılacak grup üyelerinin listesi" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "grubu kilitle" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "grubun kilidini kaldır" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L ve -U birlikte kullanılamaz.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "%s grubu için parola belirlenemedi: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "%s grubu kilitlenemedi: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s grubunun kilidi kaldırılamadı: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s grubu değiştirilemedi: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "%s aranırken hata: %s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "belirtilen kullanıcı için grup üyelikleri yerine belirtilen bir grubun " "üyelerini listele" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" "üyelik bilgilerini kullanıcı/grup kimliğine göre değil, yalnızca ada göre " "listele" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Grup ismi belirtilmemiş, %s kullanılıyor.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Grup ismi belirtilmemiş, %d grubu için isim yok.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Kullanıcı ismi belirtilmemiş, %s kullanılıyor.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "Kullanıcı %s yok\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "kullanıcı bilgileri kayıtlarını içeren dosya" #: apps/lnewusers.c:49 msgid "PATH" msgstr "YOL" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "ev dizinleri oluşturulmasın" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "e-posta kuyrukları oluşturulmasın" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[SEÇENEK...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "`%s' açılırken hata: %s\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "`%s' için hesap oluşturulurken hata: satır yanlış biçimlendirilmiş.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Geçersiz kullanıcı kimliği %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "0 kullanıcı kimlikli hesap oluşturulması reddediliyor.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "`%s' için %jd kimlik numarası ile grup oluşturulurken hata: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "`%s' dizini tehlikeli olduğu için %s kullanıcısının öntanımlı ev dizini " "olarak kullanılamıyor\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "%s için ev dizini oluşturulurken hata: %s.\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "%s için e-posta kuyruğu oluşturulurken hata: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "`%s' için parola belirlenirken hata: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "%s için kullanıcı hesabı oluşturulurken hata: %s.\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "kullanıcı parolası yerine grup parolası ayarla" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "yeni düz metin biçiminde parola" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "yeni şifreli parola" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "verilen tanımlayıcıdan yeni düz metin biçimindeki parolayı oku" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "verilen tanımlayıcıdan yeni şifreli parolayı oku" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "`%s' için parola değiştiriliyor.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Yeni parola" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Yeni parola (tekrar)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Parolalar aynı değil, tekrar deneyin.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Parola değişimi iptal edildi.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "%d dosya tanımlayıcısı okuma hatası.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "%s kullanıcısı için parola belirlenirken hata: %s\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "`%s' grubu için parola belirlenirken hata: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Parola değişti.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "sistem kullanıcısı oluştur" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "yeni kullanıcının GECOS bilgileri" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "yeni kullanıcının ev dizini" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "yeni kullanıcı için dosyaları içeren dizin" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "yeni kullanıcının kabuğu" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "yeni kullanıcının kullanıcı kimliği" #: apps/luseradd.c:71 msgid "group for new user" msgstr "yeni kullanıcının grubu" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "kullanıcı için ev dizini oluşturulmasın" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "kullanıcı ile aynı ada sahip grup oluşturulmasın" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "yeni kullanıcının yaygın adı" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "yeni kullanıcının adı" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "yeni kullanıcının soyadı" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "yeni kullanıcının oda numarası" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "yeni kullanıcının telefon numarası" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "yeni kullanıcının ev telefonu numarası" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Grup %jd yok\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "`%s' için grup oluşturulurken hata: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Hesap oluşturulamadı: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "%s oluşturulurken hata: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "E-posta kuyruğu oluşturulurken hata: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" "kullanıcının bir özel grubu varsa, kullanıcının özel grubu kaldırılmasın" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "kullanıcının ev dizinini kaldır" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "%s kullanıcısı silinemedi: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s için bir grup kimliği yok.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "%jd kimlikli bir grup yok, silinemiyor.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "%jd kimlikli gruba bir grup ismi verilmedi.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "%s grubu silinemedi: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Ev dizini kaldırılırken hata oluştu: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "E-posta kuyruğu kaldırılırken hata: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS bilgileri" #: apps/lusermod.c:61 msgid "home directory" msgstr "ev dizini" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "ev dizini içeriğini taşı" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "kullanıcının kabuğunu ayarla" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "kullanıcının kimliğini ayarla" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "kullanıcının birincil grup kimliğini ayarla" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "kullanıcının oturum açma adını değiştir" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "kullanıcının düz metin biçiminde parolası" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "kullanıcının önceden şifrelenen parolası" #: apps/lusermod.c:76 msgid "lock account" msgstr "hesabı kilitle" #: apps/lusermod.c:79 msgid "unlock account" msgstr "hesabın kilidini kaldır" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "kullanıcının yaygın adını ayarla" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "kullanıcının adını ayarla" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "kullanıcının soyadını ayarla" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "kullanıcının oda numarasını ayarla" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "kullanıcının telefon numarasını ayarla" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "kullanıcının ev telefonu numarasını ayarla" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "%s kullanıcısı için parola belirlenemedi: %s\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Kullanıcı %s kilitlenemedi: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Kullanıcı %s için kilit kaldırılamadı: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Uyarı: %jd kimlikli grup yok.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Kullanıcı %s değiştirilemedi: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "%s grubu değiştirilemedi: %s\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s için eski ev dizini yok.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s için yeni ev dizini yok.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "%s %s'e taşınırken hata: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "`%s' yapılandırma dosyası açılamadı: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "`%s' yapılandırma dosyası durumlanamadı: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "`%s' yapılandırma dosyası çok büyük" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "`%s' yapılandırma dosyası okunamadı: %s" #: lib/error.c:62 msgid "success" msgstr "başarılı" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "modül yapılandırmada iptal edildi" #: lib/error.c:66 msgid "generic error" msgstr "genel hata" #: lib/error.c:68 msgid "not enough privileges" msgstr "izinler yetersiz" #: lib/error.c:70 msgid "access denied" msgstr "erişim engellendi" #: lib/error.c:72 msgid "bad user/group name" msgstr "kullanıcı/grup ismi hatalı" #: lib/error.c:74 msgid "bad user/group id" msgstr "kullanıcı/grup kimlikleri hatalı" #: lib/error.c:76 msgid "user/group name in use" msgstr "kullanıcı/grup ismi kullanımda" #: lib/error.c:78 msgid "user/group id in use" msgstr "kullanıcı/grup kimlikleri kullanımda" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "uçbirim özellikleri değiştirilirken hata" #: lib/error.c:82 msgid "error opening file" msgstr "dosya açılırken hata" #: lib/error.c:84 msgid "error locking file" msgstr "dosya kilitlenirken hata" #: lib/error.c:86 msgid "error statting file" msgstr "dosya durumlanırken hata" #: lib/error.c:88 msgid "error reading file" msgstr "dosya okunurken hata" #: lib/error.c:90 msgid "error writing to file" msgstr "dosyaya yazılırken hata" #: lib/error.c:92 msgid "data not found in file" msgstr "dosyada veri yok" #: lib/error.c:94 msgid "internal initialization error" msgstr "kerberos kitaplığı başlatılırken hata" #: lib/error.c:96 msgid "error loading module" msgstr "modül yüklenirken hata" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "modül içindeki sembol çözümlenirken hata" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "modül/kitaplık sürümü uyumsuzluğu" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "kilidi kaldırmak parola alanının boş olması anlamına gelir" #: lib/error.c:105 msgid "invalid attribute value" msgstr "geçersiz öznitelik değeri" #: lib/error.c:107 msgid "invalid module combination" msgstr "geçersiz modül kombinasyonu" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "kullanıcının ev dizininin sahibi kendisi değil" #: lib/error.c:115 msgid "unknown error" msgstr "bilinmeyen" #: lib/misc.c:240 msgid "invalid number" msgstr "geçersiz sayı" #: lib/misc.c:254 msgid "invalid ID" msgstr "geçersiz kimlik" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "İlklendirme işlevi %s `%s' içinde yok" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "`%s' de modül sürümü uyumsuzluğu" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "`%s' modülü `%s' tanımlamıyor" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "uçbirim özellikleri okunurken hata" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "uçbirim özellikleri ayarlanırken hata" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "uçbirimden okumada hata" #: lib/user.c:218 msgid "name is not set" msgstr "isim yok" #: lib/user.c:223 msgid "name is too short" msgstr "isim çok kısa" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "isim çok uzun (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "isim ASCII olmayan karakterler içeriyor" #: lib/user.c:242 msgid "name contains control characters" msgstr "isim denetim karakterleri içeriyor" #: lib/user.c:249 msgid "name contains whitespace" msgstr "isimde boşluk karakterleri var" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "isim tire ile başlıyor" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "isimde `%c' karakteri kullanılamaz" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "%s kullanıcısının kimliği yok" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "%s kullanıcısı bulunamadı" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "%s grubunun kimliği yok" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "%s grubu bulunamadı" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "%jd kullanıcısının bir ismi yok" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "grup %jd bir isme sahip değil" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "kullanıcı bir isim ya da kimliğe sahip değil" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "grup bir isim ya da kimliğe sahip değil" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "`%s' tehlikeli ev dizininin öntanımlı olarak kullanılması reddedildi" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "%s alanı geçersiz bir öntanımlı değere sahip: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "dosya kilitlenirken hata: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "öntanımlı güvenlik kapsamı alınamadı: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "`%s' dosyasının güvenlik kapsamı alınamadı: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "öntanımlı güvenlik kapsamı `%s' olarak ayarlanamadı: %s" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "selabel dosya bağlam tanıtıcısı alınamadı: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "`%s' dosyasının güvenlik kapsamı belirlenemedi: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "`%s' açılamadı: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "`%s' durum bilgisi alınamadı: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "`%s' oluşturulurken hata: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "`%s' dosya/dizininin sahipliği değiştirilirken hata: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "`%s' için mod değiştirilirken hata: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "`%s' okunurken hata: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "`%s' yazılırken hata: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "`%s'den okunamadı: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "`%s' kilidinin içeriği geçersiz" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "%s kilidi %ju işlemi tarafından tutuluyor" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "`%s' durum kilidi kaldırılırken hata: %s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "`%s' için geçici dosya açılırken hata: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "`%s' kilidi alınamıyor: %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "`%s' çözümlenirken hata: %s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "`%s' değiştirilirken hata: %s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "yinelenen nesne %s özelliğini içermiyor" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "asıl nesne %s özelliğini içermiyor" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "%lu kimliği %s tarafından zaten kullanılıyor" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s değeri `%s': `\\n" "' karakterine izin verilmiyor" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s değeri `%s': `:' karakterine izin verilmiyor" #: modules/files.c:1136 msgid "entry already present in file" msgstr "girdi zaten dosyada var" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "`%s'e yazılamadı: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "öğe nesnesi %s özelliğini içermiyor" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "ismi çakışan girdi zaten dosyada var" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "`:' ve `\\n" "' karakterlerine şifrelenen parolada izin verilmiyor" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "parolanın şifrelenmesinde hata" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "`%s' ve `%s' modülleri birleştirilemez" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "root yetkileriyle çalıştırılmıyor" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "shadow dosyası yok -- iptal ediliyor" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "ldap kitaplığı başlatılırken hata" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "LDAP protokolü %d sürümüne ayarlanamadı" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "LDAP sunucusu ile TLS uzlaşması yapılamadı" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "LDAP sunucusuna bağlanılamadı" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "LDAP sunucusuna bağlanılamadı, ilk deneme `%s' olarak yapıldı: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "kullanıcı nesnesi %s özelliğini içermiyor" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "kullanıcı nesnesi `%s' olmaksızın oluşturuldu" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "LDAP dizin girdisi oluşturulurken hata: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "LDAP dizin girdisi değiştirilirken hata: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "LDAP dizin girdisi isimlendirilirken hata: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "nesne %s özelliğini içermiyor" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "LDAP dizin girdisi silinirken hata: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "nesne %s özelliğini içermiyor" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "desteklenmeyen parola şifreleme yöntemi" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "LDAP dizininde böyle bir nesne yok" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "`%s' özelliği bulunmuyor" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "LDAP dizininde %s için parola belirlenirken hata: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP Sunucu İsmi" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Arama Tabanı DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bağlantı DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bağlantı Parolası" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL Kullanıcısı" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL Yetkilendirme Kullanıcısı" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "kullanıcı oluşturulurken Cyrus SASL hatası: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "kullanıcı silinirken Cyrus SASL hatası: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "Cyrus SASL ilklendirilirken hata: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "bu kullanıcı için ev dizini oluşturulurken hata oluştu" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "bu kullanıcı için ev dizini silinirken hata oluştu" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "bu kullanıcı için eski ev dizini taşınırken hata oluştu" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "%s başlatılırken hata: %s.\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Geçersiz Kimlik %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "%jd kimlikli grup için arama yapılıyor.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "%s isimli grup için arama yapılıyor.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "%jd kimlikli kullanıcı için arama yapılıyor.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "%s isimli kullanıcı için arama yapılıyor.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Girdi yok.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Bilgi alımları başarılı.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Bilgi alımları başarısız.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Öntanımlı kullanıcı nesnesi sınıfları:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Öntanımlı kullanıcı öznitelik isimleri:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Öntanımlı kullanıcı öznitelikleri alınıyor:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Kullanıcı yapısı kopyalanıyor:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "yedek dosyası `%s' var ama normal bir dosya değil" #~ msgid "backup file size mismatch" #~ msgstr "yedek dosya boyutu tutmuyor" po/uk.po000066400000000000000000001332121471266067600124740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Maxim Dziumanenko , 2003 # Miloslav Trmač , 2011 # Yuri Chornoivan , 2011-2013 # Yuri Chornoivan , 2013 # Yuri Chornoivan , 2015. #zanata msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2015-03-20 11:08-0400\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/fedora/" "language/uk/)\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=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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Не вдалося позбутися привілеїв.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Внутрішня помилка.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s не авторизований для зміни інформації finger про %s\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "Невідомий контекст користувача" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "Не вдається встановити типовий контекст /etc/passwd\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Помилка ініціалізації PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Помилка аутентифікації для %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Внутрішня помилка PAM «%s».\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "Автентифікація невідомого користувача.\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Користувач не збігається.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "надсилати запит щодо всіх даних" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "список параметрів, які застарівають, для користувача" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "мінімальна кількість днів між змінами паролів" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "ДНІ" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "максимальна кількість днів між змінами паролів" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "дата останньої зміни пароля у днях з 1.01.1970" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" "кількість днів з дати завершення строку дії пароля, які мають пройти для " "того, щоб обліковий запис вважався неактивним" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "дата завершення строку дії пароля у днях з 1.01.1970" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" "кількість днів між завершенням строку дії і показом першого попередження " "щодо нього" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[ПАРАМЕТР...] користувач" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Помилка аналізу аргументів: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Не вказано ім'я користувача.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Помилка ініціалізації %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Користувач %s не існує.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Обліковий запис заблоковано.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Обліковий запис не заблоковано.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "Мінімум:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "Максимум:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "Максимум:\tнемає\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "Попередження:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "Неактивний:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "Неактивний:\tніколи\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "Під час наступного входу до системи слід змінити пароль" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Ніколи" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Остання зміна:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Термін дії паролю закінчується:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Пароль неактивний:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Обліковий запис дійсний до:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "Помилка зміни інформації про термін для %s: %s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[ПАРАМЕТР...] [користувач]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Не вказано ім'я користувача, немає імені для uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Зміна інформації finger про %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Повне ім'я" #: apps/lchfn.c:151 msgid "Surname" msgstr "По-батькові" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Ім'я" #: apps/lchfn.c:172 msgid "Office" msgstr "Офіс" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Службовий телефон" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Домашній телефон" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Адреса ел. пошти" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Інформацію finger не змінено: помилка вводу.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Інформацію finger змінено.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Інформацію finger не змінено: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Зміна оболонки для %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Нова оболонка" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Оболонку змінено: %s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Оболонку змінено.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "gid нової групи" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "ЧИСЛО" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "створити загальносистемну групу" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[ПАРАМЕТР...] група" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Не вказано назву групи.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "Неправильний ID групи %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "Помилка створення групи: %s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Група %s не існує.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "Групу %s не можна вилучати: %s.\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "встановити GID для групи" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "змінити групу так, щоб вона мала вказану назву" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "НАЗВА" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "пароль для групи у форматі звичайного тексту" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "РЯДОК" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "попередньо хешований пароль для групи" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "список адміністраторів, яких слід додати" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "список адміністраторів, яких слід вилучити" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "список учасників групи, яких слід додати" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "список учасників групи, яких слід вилучити" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "заблокувати групу" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "розблокувати групу" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L та -U вказані одночасно.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "Помилка встановлення пароля для групи %s: %s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "Групу %s не вдається заблокувати: %s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "Групу %s не вдається розблокувати: %s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "Групу %s не вдається змінити: %s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "Помилка блокування %s: %s.\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" "показати список учасників вказаної групи замість списку участі вказаного " "користувача" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "показувати у списку участі лише дані щодо назв, без UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Не вказана назва групи, використовується %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Не вказана назва групи, немає назви для gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Не вказано ім'я користувача, використовується %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s не існує.\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "файл з записами щодо даних користувачів" #: apps/lnewusers.c:49 msgid "PATH" msgstr "ШЛЯХ" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "не створювати домашніх каталогів" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "не створювати буферів зберігання пошти" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[ПАРАМЕТР...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Помилка відкривання «%s»: %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" "Помилка створення облікового запису для «%s»: неправильний формат рядка.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "Неправильний ідентифікатор користувача %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Відмова у створенні облікового запису з UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "Помилка створення групи для «%s» з GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" "Відмова від використання небезпечного типового домашнього каталогу «%s» для " "%s\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Помилка створення домашнього каталогу для %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "Помилка під час спроби створення буфера пошти для %s: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Помилка встановлення початкового паролю для %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Помилка створення облікового запису для %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "встановити пароль групи замість пароля користувача" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "новий пароль у форматі звичайного тексту" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "новий зашифрований пароль" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" "прочитати новий пароль у форматі звичайного тексту з вказаного дескриптора" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "прочитати новий зашифрований пароль з вказаного дескриптора" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Зміна паролю користувача %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Новий пароль" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Новий пароль (підтвердження)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Паролі не збігаються, спробуйте ще раз.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Зміну паролю скасовано.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "Помилка читання з дескриптора файла %d.\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Помилка встановлення паролю користувача %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Помилка встановлення паролю для групи %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Пароль змінено.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "створити загальносистемного користувача" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "дані GECOS для нового користувача" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "домашній каталог нового користувача" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "каталог з файлами для нового користувача" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "командна оболонка для нового користувача" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "uid нового користувача" #: apps/luseradd.c:71 msgid "group for new user" msgstr "група нового користувача" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "не створювати домашнього каталогу користувача" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "не створювати групи з назвою, що збігається з іменем користувача" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "загальне ім’я нового користувача" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "паспортне ім’я нового користувача" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "прізвище нового користувача" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "номер кімнати нового користувача" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "номер робочого телефону нового користувача" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "номер домашнього телефону нового користувача" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "Група %jd не існує.\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "Помилка створення групи «%s»: %s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Помилка створення облікового запису: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Помилка створення %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "Помилка під час спроби створення буфера пошти: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "не вилучати окремої групи користувача, якщо таку було створено" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "вилучити домашній каталог користувача" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Не вдалося вилучити запис користувача %s: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s не має числа gid.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "Група з GID %jd не існує, її не буде вилучено.\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "Група з GID %jd не мала назви.\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Групу %s вилучити не вдається: %s.\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "Помилка під час спроби вилучення домашнього каталогу: %s.\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "Помилка під час спроби вилучення буфера пошти: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "дані GECOS" #: apps/lusermod.c:61 msgid "home directory" msgstr "домашній каталог" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "пересунути дані домашнього каталогу" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "встановити командну оболонку користувача" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "встановити UID користувача" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "встановити основний GID користувача" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "змінити назву облікового запису користувача" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "пароль користувача у форматі звичайного тексту" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "попередньо хешований пароль користувача" #: apps/lusermod.c:76 msgid "lock account" msgstr "заблокувати обліковий запис" #: apps/lusermod.c:79 msgid "unlock account" msgstr "розблокувати обліковий запис" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "встановити загальне ім’я користувача" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "встановити паспортне ім’я користувача" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "встановити прізвище користувача" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "встановити номер кімнати користувача" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "встановити номер робочого телефону користувача" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "встановити номер домашнього телефону користувача" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Помилка встановлення пароля користувача %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Користувача %s не вдається заблокувати: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Користувача %s не вдається розблокувати: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "Попередження: Група з номером %jd не існує.\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Користувача %s не вдається змінити: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Групу %s не вдається змінити: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "Немає попереднього домашнього каталогу для %s.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "Немає нового домашнього каталогу для %s.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Помилка переміщення %s у %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "не вдається відкрити файл налаштувань «%s»: %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "не вдається отримати інформацію про файл налаштувань «%s»: %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "файл налаштувань «%s» надто довгий" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "не вдається прочитати файл налаштувань «%s»: %s" #: lib/error.c:62 msgid "success" msgstr "виконано" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "модуль вимкнено у налаштуваннях" #: lib/error.c:66 msgid "generic error" msgstr "загальна помилка" #: lib/error.c:68 msgid "not enough privileges" msgstr "недостатньо привілей" #: lib/error.c:70 msgid "access denied" msgstr "доступ заборонений" #: lib/error.c:72 msgid "bad user/group name" msgstr "неправильне ім'я користувача/групи" #: lib/error.c:74 msgid "bad user/group id" msgstr "неправильний ID користувача/групи" #: lib/error.c:76 msgid "user/group name in use" msgstr "ім'я користувача/група вже використовується" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID користувача/група вже використовується" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "помилка зміни атрибутів" #: lib/error.c:82 msgid "error opening file" msgstr "помилка відкривання файлу" #: lib/error.c:84 msgid "error locking file" msgstr "помилка блокування файлу" #: lib/error.c:86 msgid "error statting file" msgstr "помилка отримання параметрів файлу" #: lib/error.c:88 msgid "error reading file" msgstr "помилка читання файлу" #: lib/error.c:90 msgid "error writing to file" msgstr "помилка запису у файл" #: lib/error.c:92 msgid "data not found in file" msgstr "дані не знайдено у файлі" #: lib/error.c:94 msgid "internal initialization error" msgstr "внутрішня помилка ініціалізації" #: lib/error.c:96 msgid "error loading module" msgstr "помилка завантаження модуля" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "помилка визначення символу у модулі" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "невідповідність версії модуля та бібліотеки" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "при розблокуванні поле пароля буде очищене" #: lib/error.c:105 msgid "invalid attribute value" msgstr "некоректне значення атрибута" #: lib/error.c:107 msgid "invalid module combination" msgstr "некоректне поєднання модулів" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "домашній каталог користувача не належить йому" #: lib/error.c:115 msgid "unknown error" msgstr "невідома помилка" #: lib/misc.c:240 msgid "invalid number" msgstr "неправильний номер" #: lib/misc.c:254 msgid "invalid ID" msgstr "неправильний ідентифікатор" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "немає функції ініціалізації %s у «%s»" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "невідповідність версії модуля «%s»" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "в модулі «%s» не визначено «%s»" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "помилка зчитування атрибутів термінала" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "помилка встановлення атрибутів термінала" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "помилка читання з термінала" #: lib/user.c:218 msgid "name is not set" msgstr "ім'я не встановлено" #: lib/user.c:223 msgid "name is too short" msgstr "ім'я надто коротке" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "ім'я надто довге (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "ім'я містить не-ASCII символи" #: lib/user.c:242 msgid "name contains control characters" msgstr "ім'я містить керівні послідовності" #: lib/user.c:249 msgid "name contains whitespace" msgstr "ім'я містить пропуски" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "ім'я починається з риски" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "ім'я містить неправильний символ `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "користувач %s не має UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "користувача %s не знайдено" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "група %s не має GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "групи %s не знайдено" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "користувач %jd не має імені" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "Група %jd не має назви" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "користувач не має ані назви, ані UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "групи не має ані назви, ані GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" "Відмова від використання небезпечного типового домашнього каталогу «%s»" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "Неправильне типове значення для поля %s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "помилка блокування файлу: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "не вдається отримати типовий контекст безпеки: %s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "не вдається отримати контекст безпеки для «%s»: %s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "не вдається задати значення типового контексту безпеки «%s»: %s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "не вдається отримати типовий контекст безпеки: %s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "не вдається визначити контекст безпеки для «%s»: %s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "не вдається відкрити «%s»: %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "не вдається отримати відомості про «%s»: %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "помилка створення «%s»: %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "Помилка зміни власника «%s»: %s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "Помилка під час спроби зміни режиму для «%s»: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Помилка зчитування «%s»: %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "Помилка запису «%s»: %s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "не вдається прочитати з «%s»: %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Помилка переміщення %s у %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Помилка під час спроби зміни режиму для «%s»: %s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Помилка зчитування «%s»: %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Помилка зчитування «%s»: %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "об'єкт не має атрибута %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "об'єкт не має атрибута %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "Значення %s неприпустиме «%s», використано «:»" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "Значення %s неприпустиме «%s», використано «:»" #: modules/files.c:1136 msgid "entry already present in file" msgstr "запис вже існує у файлі" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "не вдається записати «%s»: %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "об'єкт не має атрибута %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "вже є запис з назвою, що конфліктує" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "Не допускається використання `:' у паролях" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "помилка шифрування пароля" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "не можна поєднувати модуль «%s» з модулем «%s»" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "виконується без привілей адміністратора" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "немає файлу shadow — вимикаємо" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "помилка ініціалізації бібліотеки ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "не вдається встановити LDAP протокол для версії %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "не вдається узгодити TLS с сервером LDAP" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "не вдається під'єднатись до сервера LDAP" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "не вдається під'єднатись до сервера LDAP, перша спроба - «%s»: %s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "об'єкт користувача не має атрибута %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "об'єкт користувача створений без «%s»" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "помилка створення запису каталогу LDAP: %s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "помилка зміни запису каталогу LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "помилка перейменування запису каталогу LDAP: %s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "об'єкт не мав атрибут %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "помилка вилучення запису каталогу LDAP: %s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "об'єкт не має атрибута %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "схема шифрування паролів не підтримується" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "немає такого об'єкта у каталозі LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "не знайдено атрибут `%s" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "помилка встановлення паролю в каталозі LDAP для %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Назва сервера LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind пароль" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Користувач LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "Авторизований користувач LDAP SASL" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "помилка Cyrus SASL при створенні користувача: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "помилка Cyrus SASL під час вилучення користувача: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "помилка ініціалізації Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "помилка створення домашнього каталогу користувача" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "помилка вилучення домашнього каталогу користувача" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "помилка переміщення домашнього каталогу користувача" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Помилка ініціалізації %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "Неправильний ідентифікатор ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "Пошук групи з номером ID %jd.\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Пошук групи з назвою %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "Пошук користувача з номером %jd.\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Пошук користувача з іменем %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Запис не знайдено.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "Запит успішно виконаний.\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "Запит виконаний невдало.\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Стандартні класи об'єкта користувача:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Імена стандартних атрибутів користувача:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Отримання стандартних атрибутів користувача:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Копіювання структури користувача:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "резервний файл «%s» існує та не є звичайним файлом" #~ msgid "backup file size mismatch" #~ msgstr "невідповідність розміру файлу резервної копії" po/ur.po000066400000000000000000000653061471266067600125130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: libuser\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 08:37+0000\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Urdu (http://www.transifex.com/projects/p/fedora/language/" "ur/)\n" "Language: ur\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" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "" #: apps/lchfn.c:141 msgid "Full Name" msgstr "" #: apps/lchfn.c:151 msgid "Surname" msgstr "" #: apps/lchfn.c:162 msgid "Given Name" msgstr "" #: apps/lchfn.c:172 msgid "Office" msgstr "" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "" #: apps/lchsh.c:118 msgid "New Shell" msgstr "" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "" #: apps/lpasswd.c:113 msgid "New password" msgstr "" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "" #: lib/error.c:66 msgid "generic error" msgstr "" #: lib/error.c:68 msgid "not enough privileges" msgstr "" #: lib/error.c:70 msgid "access denied" msgstr "" #: lib/error.c:72 msgid "bad user/group name" msgstr "" #: lib/error.c:74 msgid "bad user/group id" msgstr "" #: lib/error.c:76 msgid "user/group name in use" msgstr "" #: lib/error.c:78 msgid "user/group id in use" msgstr "" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "" #: lib/error.c:82 msgid "error opening file" msgstr "" #: lib/error.c:84 msgid "error locking file" msgstr "" #: lib/error.c:86 msgid "error statting file" msgstr "" #: lib/error.c:88 msgid "error reading file" msgstr "" #: lib/error.c:90 msgid "error writing to file" msgstr "" #: lib/error.c:92 msgid "data not found in file" msgstr "" #: lib/error.c:94 msgid "internal initialization error" msgstr "" #: lib/error.c:96 msgid "error loading module" msgstr "" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "" #: lib/user.c:218 msgid "name is not set" msgstr "" #: lib/user.c:223 msgid "name is too short" msgstr "" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "" #: lib/user.c:242 msgid "name contains control characters" msgstr "" #: lib/user.c:249 msgid "name contains whitespace" msgstr "" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "" po/vi.po000066400000000000000000001004311471266067600124700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miloslav Trmač , 2011 # pclouds , 2003 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/fedora/" "language/vi/)\n" "Language: vi\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "Lỗi bỏ quyền.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "Lỗi nội tại.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "Lỗi khởi động PAM.\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "Lỗi xác thực cho %s.\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "Lỗi nội tại của PAM `%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "Không khớp người dùng.\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[TÙY CHỌN...] người_dùng" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "Lỗi phân tích đối số: %s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "Chưa xác định tên người dùng.\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "Lỗi khởi động %s: %s.\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "Người dùng %s không tồn tại.\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "Tài khoản bị khóa.\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "Tài khoản không bị khóa.\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "Không bao giờ" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "Lần thay đổi cuối cùng:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "Mật khẩu hết hiệu lực:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "Mật khẩu không hoạt động:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "Tài khoản hết hiệu lực:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[TÙY_CHỌN...] [người_dùng]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "Chưa xác định tên người dùng, không có tên cho uid %d.\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "Đổi thông tin finger cho %s.\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "Họ và tên" #: apps/lchfn.c:151 msgid "Surname" msgstr "Họ" #: apps/lchfn.c:162 msgid "Given Name" msgstr "Tên" #: apps/lchfn.c:172 msgid "Office" msgstr "Văn phòng" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "Điện thoại Văn phòng" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "Điện thoại Nhà" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "Địa chỉ E-Mail" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Thông tin finger không đổi: lỗi input.\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Đã thay đổi thông tin finger.\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Thông tin finger không đổi: %s.\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "Đổi Shell của %s.\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "Shell mới" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Đã đổi Shell.\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[TÙY_CHỌN...] nhóm" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "Chưa xác định tên nhóm.\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "Nhóm %s không tồn tại.\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "Chưa xác định cả -L và -U.\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "Chưa xác định tên nhóm, dùng %s.\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "Chưa xác định tên nhóm, không có tên cho gid %d.\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "Chưa xác định tên người dùng, dùng %s.\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "" #: apps/lnewusers.c:49 msgid "PATH" msgstr "" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[TÙY_CHỌN...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "Lỗi mở `%s': %s.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "Lỗi tạo tài khoản cho `%s':định dạng dòng không đúng.\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "Từ chối tạo tài khoản cho UID 0.\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "Lỗi tạo thư mục home cho %s: %s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "Lỗi đặt mật khẩu ban đầu cho %s: %s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "Lỗi tạo tài khoản người dùng cho %s: %s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "Thay đổi mật khẩu của %s.\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "Mật khẩu mới" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "Xác nhận mật khẩu mới" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "Mật khẩu không khớp, vui lòng thử lại.\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "Hủy bỏ thay đổi mật khẩu.\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "Lỗi thiết lập mật khẩu cho người dùng %s: %s.\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "Lỗi thiết lập mật khẩu cho nhóm %s: %s.\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "Đã thay đổi mật khẩu.\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "" #: apps/luseradd.c:71 msgid "group for new user" msgstr "" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "Thất bại tạo tài khoản: %s.\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "Lỗi tạo %s: %s.\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "Người dùng %s không thể bị xóa: %s.\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s không phải là số GID.\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "Nhóm %s không thể bị xóa: %s.\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "lỗi loại bỏ thư mục home cho người dùng" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "" #: apps/lusermod.c:61 msgid "home directory" msgstr "" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "" #: apps/lusermod.c:76 msgid "lock account" msgstr "" #: apps/lusermod.c:79 msgid "unlock account" msgstr "" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "Lỗi đặt mật khẩu cho người dùng %s: %s.\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "Người dùng %s không thể bị khóa: %s.\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "Người dùng %s không thể bị mở khóa: %s.\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "Người dùng %s không thể bị thay đổi: %s.\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "Nhóm %s không thể bị thay đổi: %s.\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s không có thư mục home cũ.\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s không có thư mục home mới.\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "Lỗi chuyển %s thành %s: %s.\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "không thể mở tập tin cấu hình `%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "" #: lib/error.c:62 msgid "success" msgstr "thành công" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "module bị tắt bởi cấu hình" #: lib/error.c:66 msgid "generic error" msgstr "lỗi thường" #: lib/error.c:68 msgid "not enough privileges" msgstr "không đủ quyền truy cập" #: lib/error.c:70 msgid "access denied" msgstr "truy cập bi từ chối" #: lib/error.c:72 msgid "bad user/group name" msgstr "tên người dùng/nhóm sai" #: lib/error.c:74 msgid "bad user/group id" msgstr "ID người dùng/nhóm sai" #: lib/error.c:76 msgid "user/group name in use" msgstr "tên người dùng/nhóm đang được dùng" #: lib/error.c:78 msgid "user/group id in use" msgstr "ID người dùng/nhóm đang được dùng" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "lỗi thao tác thuộc tính terminal" #: lib/error.c:82 msgid "error opening file" msgstr "lỗi mở tập tin" #: lib/error.c:84 msgid "error locking file" msgstr "lỗi khóa tập tin" #: lib/error.c:86 msgid "error statting file" msgstr "lỗi stat() tập tin" #: lib/error.c:88 msgid "error reading file" msgstr "lỗi đọc tập tin" #: lib/error.c:90 msgid "error writing to file" msgstr "lỗi ghi tập tin" #: lib/error.c:92 msgid "data not found in file" msgstr "không tìm thấy dữ liệu trong tập tin" #: lib/error.c:94 msgid "internal initialization error" msgstr "lỗi khởi tạo nội tại" #: lib/error.c:96 msgid "error loading module" msgstr "lỗi nạp module" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "lỗi phân giải ký hiệu trong module" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "không khớp phiên bản thư viện/module" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "" #: lib/error.c:105 msgid "invalid attribute value" msgstr "" #: lib/error.c:107 msgid "invalid module combination" msgstr "" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "" #: lib/error.c:115 msgid "unknown error" msgstr "lỗi lạ" #: lib/misc.c:240 msgid "invalid number" msgstr "" #: lib/misc.c:254 msgid "invalid ID" msgstr "" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "không có hàm khởi tạo %s trong `%s'" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "không khớp phiên bản module trong `%s'" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "lỗi đọc thuộc tính terminal" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "lỗi đặt thuộc tính terminal" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "lỗi đọc từ terminal" #: lib/user.c:218 msgid "name is not set" msgstr "chưa đặt tên" #: lib/user.c:223 msgid "name is too short" msgstr "tên quá ngắn" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "tên chứa ký tự phi ASCII" #: lib/user.c:242 msgid "name contains control characters" msgstr "tên chứa ký tự điều khiển" #: lib/user.c:249 msgid "name contains whitespace" msgstr "tên chứa khoảng trắng" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "tên chứa ký tự không hợp lệ `%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "lỗi khóa tập tin: %s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "không thể mở `%s': %s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "không thể stat() `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "không thể tạo `%s': %s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "Lỗi đọc `%s': %s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "không thể đọc từ `%s': %s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "Lỗi chuyển %s thành %s: %s.\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "Lỗi mở `%s': %s.\n" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "Lỗi đọc `%s': %s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "Lỗi đọc `%s': %s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "đối tượnc thực thể không có thuộc tính %s" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "đối tượng không có thuộc tính %s" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "" #: modules/files.c:1136 msgid "entry already present in file" msgstr "mục nhập đã có trong tập tin" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "không thể ghi vào `%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "đối tượnc thực thể không có thuộc tính %s" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "không thực thi với quyền siêu người dùng" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "không có tập tin shadow -- tắt" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "lỗi khởi tạo thư viện ldap" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "không thể đặt giao thức LDAP cho phiên bản %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "không thể thỏa thuận TLS với LDAP server" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "không thể gắn vào LDAP server" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "đối tượng người dùng không có thuộc tính %s" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "đối tượng người dùng được tạo mà không có `%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "lỗi hiệu chỉnh mục nhập thư mục LDAP: %s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "đối tượng không có thuộc tính %s" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "đối tượng không có thuộc tính %s" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "không có đối tượng đó trong thư mục LDAP" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "không tìm thấy thuộc tính `%s'" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "lỗi đặt mật khẩu trong thư mục LDAP cho %s: %s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "Tên Server LDAP" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind Password" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "Người dùng LDAP SASL" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL Authorization User" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "Lỗi Cyrus SASL tạo người dùng: %s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "Lỗi Cyrus SASL loại bỏ người dùng: %s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "lỗi khởi tạo Cyrus SASL: %s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "lỗi tạo thư mục home cho người dùng" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "lỗi loại bỏ thư mục home cho người dùng" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "lỗi di chuyển thư mục home cho người dùng" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "Lỗi khởi tạo %s: %s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "Đang tìm nhóm tên %s.\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "Đang tìm người dùng tên %s.\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "Không tìm thấy mục nhập.\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "Lớp đối tượng người dùng mặc định:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "Tên thuộc tính người dùng mặc định:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "Lấy thuộc tính người dùng mặc định:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "Sao chép cấu trúc người dùng:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "" #~ "tập tin sao lưu `%s' tồn tại nhưng không phải là tập tin bình thường" po/zh_CN.po000066400000000000000000001066421471266067600130650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Christopher Meng , 2013 # Leah Liu , 2008, 2009 # Leah Liu , 2005 # Tommy He , 2012 # Mike Manilone , 2011 # Miloslav Trmač , 2011 # Sarah Wang , 2003, 2004 # Tommy He , 2012 # Tony Fu , 2004 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2023-04-13 07:20+0000\n" "Last-Translator: Ludek Janda \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\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: Weblate 4.15.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "放弃特权失败.\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "内部错误.\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "%s 没有被授权改变 %s 的 finger 信息\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "未知的用户上下文" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "不能为 /etc/passwd 设定默认的上下文\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "初始化 PAM 出错。\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s 验证失败。\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "内部 PAM 错误`%s'.\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "未知用户验证。\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "用户错配。\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "提示全部信息" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "列出用户过期的参数" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "密码变更的最短天数" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "天" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "密码变更的最长天数" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "以天数为单位从 1970 年 1 月 1 日起最后一次密码变更的日期" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "密码过期多少天后将帐户设为不活跃" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "以天数为单位从 1970 年 1 月 1 日起密码过期的日期" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "密码过期多少天前提醒用户" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[OPTION...] 用户" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "解析参数时出错:%s.\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "没有指定的用户名。\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "初始化 %s 出错:%s。\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "用户 %s 不存在。\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "帐号被锁。\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "帐号没被锁。\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "至少:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "至多:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "至多:\t无\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "警告:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "不活跃:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "不活跃:\t从不\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "强制在下次登录时修改密码" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "从不" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "最后一次改变:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "密码过期:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "密码不活跃:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "帐号过期:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "为 %s: %s 修改老化信息失败。\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[OPTION...] [用户]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "没有指定用户名,uid %d 没有姓名。\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "改变 %s 的 finger 信息。\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "全称" #: apps/lchfn.c:151 msgid "Surname" msgstr "姓" #: apps/lchfn.c:162 msgid "Given Name" msgstr "名" #: apps/lchfn.c:172 msgid "Office" msgstr "办公室" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "办公电话" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "家庭电话" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "电子邮件地址" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "Finger 信息没有被改变:输入错误。\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "Finger 信息被改变。\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "Finger 信息没有被改变:%s。\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "改变 %s 的 shell。\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "新建 Shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "Shell 没有改变:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "Shell 被改变。\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "新用户组 GID" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "数字" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "创建一个系统组" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[OPTION...] 组群" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "没有指定的组群名。\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "无效的组群 ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "创建组群失败:%s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "组群 %s 不存在。\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "组群 %s 无法被删除:%s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "设定组 GID" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "改变用户组名称" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "名称" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "供组使用的纯文本密码" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "字符串" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "供组使用的预哈希密码" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "准备添加的管理员列表" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "准备移除的管理员列表" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "准备添加的组成员列表" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "准备移除的组成员列表" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "锁定组" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "解锁组" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L 和 -U 两者皆被指定。\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "为组群 %s: %s 设置密码失败。\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "组群 %s 无法被锁:%s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "组群 %s 无法被开锁:%s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "组群 %s 无法被修改:%s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "查找 %s 时出错:%s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "列出指明用户组的成员而非指明用户的组成员" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "仅在成员信息中显示名称,而不是 UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "没有指定组群名,使用 %s。\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "没有指定组群名,gid %d 没有名称。\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "没有指定用户名,使用 %s。\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s 不存在\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "包含用户信息记录的文件" #: apps/lnewusers.c:49 msgid "PATH" msgstr "路径" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "不创建主文件夹" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "不创建邮件池" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[OPTION...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "打开 `%s': %s时出错.\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "为`%s'创建账号时出错:行格式不正确。\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "无效的用户 ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "拒绝使用 UID 0 来创建账号。\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "创建组群`%s'时出错,使用 GID %jd: %s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "默认拒绝为 %s 使用危险的主目录 `%s'\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "为 %s 创建主目录时出错:%s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "为 %s 创建邮件池时出错: %s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "为`%s'设置初始密码时出错:%s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "为 %s 创建用户账号失败:%s\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "设定组密码而非用户密码" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "新的纯文本密码" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "新的加密密码" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "从指定描述器读取纯文本密码" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "从指定描述器读取加密密码" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "为`%s'改变密码。\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "新密码" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "新密码(确认)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "密码不匹配,请重试。\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "密码改变被取消。\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "从文件描述符 %d 读取错误。\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "为用户 %s 设置密码失败:%s。\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "为组群`%s'设置密码时出错:%s\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "密码被改变。\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "创建系统用户" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "新用户的 GECOS 信息" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "新用户的主文件夹" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "新用户的目录和文件" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "新用户的 Shell" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "新用户的 UID" #: apps/luseradd.c:71 msgid "group for new user" msgstr "新用户所属组" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "不为用户创建主文件夹" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "不创建和用户同名的用户组" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "新用户常用名" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "新用户的名" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "新用户的姓" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "新用户的房间号" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "新用户的电话号码" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "新用户的家庭电话号码" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "组群 %jd 不存在\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "创建组群'%s': %s出错。\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "创建帐号失败:%s。\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "创建 %s 失败:%s。\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "创建邮件池时出错: %s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "不移除用户私有组,如果存在的话" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "移除用户主文件夹" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "用户 %s 无法被删除:%s。\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s 没有 gid 号码。\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID 号码为 %jd 的组群不存在,无法删除。\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID 号码为 %jd 的组群没有组群名。\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "组群 %s 无法被删除:%s。\n" #: apps/luserdel.c:158 #, c-format msgid "Error removing home directory: %s.\n" msgstr "删除主目录时出错:%s。\n" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "删除邮件池时出错: %s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS 信息" #: apps/lusermod.c:61 msgid "home directory" msgstr "主文件夹" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "移动主文件夹内容" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "设定用户 Shell" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "设定用户 UID" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "设定用户的主要 GID" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "改变用户的登录名" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "给用户的纯文本密码" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "给用户的预哈希密码" #: apps/lusermod.c:76 msgid "lock account" msgstr "锁定帐户" #: apps/lusermod.c:79 msgid "unlock account" msgstr "解锁帐户" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "设定用户的常用名" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "设定用户的名" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "设定用户的姓" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "设定用户的房间号" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "设定用户的电话号码" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "设定用户的家庭电话号码" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "为用户 %s 设置密码失败:%s。\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "用户 %s 无法被锁:%s。\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "用户 %s 无法被开锁:%s。\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "警告:ID 为 %jd 的组群不存在。\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "用户 %s 无法被修改:%s。\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "组群 %s 无法被修改:%s。\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s 没有旧的主目录。\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s 没有新的主目录。\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "将 %s 移至 %s 时出错:%s。\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "无法打开配置文件`%s': %s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "无法打开配置文件`%s': %s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "配置文件`%s'太大" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "无法读取配置文件`%s': %s" #: lib/error.c:62 msgid "success" msgstr "成功" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "配置禁用了模块" #: lib/error.c:66 msgid "generic error" msgstr "通用错误" #: lib/error.c:68 msgid "not enough privileges" msgstr "没有足够的特权" #: lib/error.c:70 msgid "access denied" msgstr "访问被拒绝" #: lib/error.c:72 msgid "bad user/group name" msgstr "用户/组群名不对" #: lib/error.c:74 msgid "bad user/group id" msgstr "用户/组群 ID 不对" #: lib/error.c:76 msgid "user/group name in use" msgstr "用户/组群名被使用" #: lib/error.c:78 msgid "user/group id in use" msgstr "用户/组群 ID 被使用" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "操作终端属性时出错" #: lib/error.c:82 msgid "error opening file" msgstr "打开文件时出错" #: lib/error.c:84 msgid "error locking file" msgstr "锁文件时出错" #: lib/error.c:86 msgid "error statting file" msgstr "开始文件时出错" #: lib/error.c:88 msgid "error reading file" msgstr "读取文件时出错" #: lib/error.c:90 msgid "error writing to file" msgstr "写入文件时出错" #: lib/error.c:92 msgid "data not found in file" msgstr "文件中没有发现数据" #: lib/error.c:94 msgid "internal initialization error" msgstr "内部初始错误" #: lib/error.c:96 msgid "error loading module" msgstr "载入模块时出错" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "在模块中解析符号时出错" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "库或模块版本错配" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "解锁将使密码域为空" #: lib/error.c:105 msgid "invalid attribute value" msgstr "无效属性值" #: lib/error.c:107 msgid "invalid module combination" msgstr "无效模块组合" #: lib/error.c:109 msgid "user's home directory not owned by them" msgstr "他们不拥有用户主目录" #: lib/error.c:115 msgid "unknown error" msgstr "未知错误" #: lib/misc.c:240 msgid "invalid number" msgstr "无效数字" #: lib/misc.c:254 msgid "invalid ID" msgstr "无效的 ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "没有初始功能 %s 在`%s'中" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "在`%s'中模块版本错配" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "模块 `%s' 没有定义 `%s'" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "读取终端属性时出错" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "设置终端属性时出错" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "从终端上读取时出错" #: lib/user.c:218 msgid "name is not set" msgstr "没有设置名称" #: lib/user.c:223 msgid "name is too short" msgstr "名称太短" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "名字太长(%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "名称中包含非 ASCII 字符" #: lib/user.c:242 msgid "name contains control characters" msgstr "名称中包含控制字符" #: lib/user.c:249 msgid "name contains whitespace" msgstr "名称中包含空格" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "名字以连字符开头" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "名称中包含无效字符`%c'" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "用户 %s 没有 UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "未找到用户 %s" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "组 %s 没有GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "未找到组 %s" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "用户 %jd 没有名字" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "组群 %jd 没有名字" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "用户既没有名字也没有 UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "组既没有名字也没有 UID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "默认拒绝使用危险主目录 `%s'" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "无效默认值%s: %s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "锁文件时出错:%s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "无法获取默认的安全上下文:%s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "无法得到 `%s': %s的安全上下文" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "无法为`%s': %s 设置默认的上下文" #: lib/util.c:862 #, c-format msgid "couldn't obtain selabel file context handle: %s" msgstr "无法获得 selabel 文件上下文句柄:%s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "无法为 `%s': %s 决定安全上下文" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "无法打开“%s”:%s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "无法 stat `%s': %s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "创建“%s”时出错:%s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "创建组群`%s': %s出错" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "变更 `%s' 模式出错: %s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "读取`%s': %s时出错" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "写入`%s': %s时出错" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "无法从`%s': %s中读取" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "锁 '%s' 的无效内容" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "锁 %s 由进程 %ju 持有" #: modules/files.c:269 #, c-format msgid "Error removing stale lock `%s': %s" msgstr "删除过时锁 '%s' 时出错:%s" #: modules/files.c:297 #, c-format msgid "error opening temporary file for `%s': %s" msgstr "为 '%s' 打开临时文件时出错:%s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "无法获得锁 '%s': %s" #: modules/files.c:434 #, c-format msgid "Error resolving `%s': %s" msgstr "解析 '%s' 时出错:%s" #: modules/files.c:442 #, c-format msgid "Error replacing `%s': %s" msgstr "替换 '%s' 时出错:%s" #: modules/files.c:920 #, c-format msgid "duplicate object has no %s attribute" msgstr "重复的对象没有 %s 属性" #: modules/files.c:930 #, c-format msgid "original object has no %s attribute" msgstr "原始对象没有 %s 属性" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "ID %lu 已被 %s 使用" #: modules/files.c:1025 #, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "" "%s 值 '%s': '\\n" "' 不允许" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s 值 `%s': `:' 不允许" #: modules/files.c:1136 msgid "entry already present in file" msgstr "项目已在文件中出现" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "无法写入`%s': %s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "实体对象没有任何 %s 属性" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "文件中出现带冲突名称的条目" #: modules/files.c:1953 msgid "`:' and `\\n' not allowed in encrypted password" msgstr "" "加密密码中不允许使用 `:' 和 `\\n" "'" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "错误的加密密码" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "“%s”和“%s”模块不能被组合" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "没有使用超级用户的特权在执行" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "没有屏蔽文件 -- 将禁用" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "初始化 ldap 库时出错" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "无法将 LDAP 协议设为版本 %d" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "无法与 LDAP 服务器商讨 TLS" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "无法关联到 LDAP 服务器" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "无法关联到 LDAP 服务器,第一此作为 `%s': %s 尝试" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "用户对象没有任何 %s 属性" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "用户对象创建时没有包括`%s'" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "建立 LDAP 目录项目时出错:%s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "修改 LDAP 目录项目时出错:%s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "将 LDAP 目录项目更名时出错:%s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "对象没有任何 %s 属性" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "删除 LDAP 目录项目时出错:%s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "对象没有任何 %s 属性" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "不支持的密码加密方案" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "在 LDAP 目录中没有此类对象" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "没有发现任何`%s' 属性" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "在 LDAP 目录中为 %s 设置密码时出错:%s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP 服务器名" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP 搜索基点 DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP 关联 DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP 关联密码" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL 用户" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL 授权用户" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "创建用户时出现 Cyrus SASL 错误:%s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "删除用户时出现 Cyrus SASL错误:%s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "初始化 Cyrus SASL 时出错:%s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "为用户创建主目录时出错" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "删除用户的主目录时出错" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "移动用户的主目录时出错" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "初始化 %s 时出错:%s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "无效的 ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "正在搜索 ID %jd 组群。\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "正在搜索名称为 %s 的组群。\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "正在搜索 ID %jd 用户。\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "正在搜索名称为 %s 的用户。\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "没有发现项目。\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "提示成功。\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "提示失败。\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "默认的用户对象类别:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "默认的用户属性名称:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "正在获取默认的用户属性:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "正在复制用户结构:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "备份文件`%s' 已存在,且不是常规文件" #~ msgid "backup file size mismatch" #~ msgstr "备份文件大小与原文件不符" po/zh_TW.po000066400000000000000000001103461471266067600131130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Red Hat, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Ben Wu , 2002 # Cheng-Chia Tseng , 2011-2012 # Chester Cheng , 2004-2006 # Miloslav Trmač , 2011 # Terry Chuang , 2008-2009 # Waika Liu , 2005 msgid "" msgstr "" "Project-Id-Version: libuser 0.60\n" "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/bugzilla/\n" "POT-Creation-Date: 2023-03-14 15:37+0100\n" "PO-Revision-Date: 2013-04-29 04:37-0400\n" "Last-Translator: Miloslav Trmač \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/fedora/" "language/zh_TW/)\n" "Language: zh_TW\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: Zanata 3.6.2\n" #: apps/apputil.c:195 apps/apputil.c:199 #, c-format msgid "Failed to drop privileges.\n" msgstr "無法卸下特權。\n" #: apps/apputil.c:208 #, c-format msgid "Internal error.\n" msgstr "內部錯誤。\n" #: apps/apputil.c:234 #, c-format msgid "%s is not authorized to change the finger info of %s\n" msgstr "並未授權 %s 修改 %s 的 finger 資訊\n" #: apps/apputil.c:236 msgid "Unknown user context" msgstr "不明的使用者情境" #: apps/apputil.c:245 #, c-format msgid "Can't set default context for /etc/passwd\n" msgstr "無法為 /etc/passwd 設定預設的情境\n" #: apps/apputil.c:254 #, c-format msgid "Error initializing PAM.\n" msgstr "初始化 PAM 時發生錯誤。\n" #: apps/apputil.c:264 apps/apputil.c:291 #, c-format msgid "Authentication failed for %s.\n" msgstr "%s 認證時失敗。\n" #: apps/apputil.c:272 #, c-format msgid "Internal PAM error `%s'.\n" msgstr "內部 PAM 錯誤「%s」。\n" #: apps/apputil.c:277 #, c-format msgid "Unknown user authenticated.\n" msgstr "不明的使用者通過身份認證。\n" #: apps/apputil.c:281 #, c-format msgid "User mismatch.\n" msgstr "使用者不符。\n" #: apps/lchage.c:86 apps/lchfn.c:54 apps/lchsh.c:46 apps/lgroupadd.c:48 #: apps/lgroupdel.c:44 apps/lgroupmod.c:56 apps/lid.c:116 apps/lnewusers.c:47 #: apps/lpasswd.c:48 apps/luseradd.c:57 apps/luserdel.c:47 apps/lusermod.c:57 msgid "prompt for all information" msgstr "提示請求所有資訊" #: apps/lchage.c:88 msgid "list aging parameters for the user" msgstr "列出使用者的過時參數" #: apps/lchage.c:90 msgid "minimum days between password changes" msgstr "密碼更動之間的最小天數" #: apps/lchage.c:90 apps/lchage.c:92 apps/lchage.c:95 apps/lchage.c:98 #: apps/lchage.c:101 apps/lchage.c:104 msgid "DAYS" msgstr "DAYS" #: apps/lchage.c:92 msgid "maximum days between password changes" msgstr "密碼更動之間的最大天數" #: apps/lchage.c:94 msgid "date of last password change in days since 1/1/70" msgstr "上次密碼更動的日期,日子是從 1/1/70 算起" #: apps/lchage.c:97 msgid "" "number of days after password expiration date when account is considered " "inactive" msgstr "當帳號在密碼過期日後多少天才被視為失效" #: apps/lchage.c:100 msgid "password expiration date in days since 1/1/70" msgstr "密碼過期日,日子是從 1/1/70 算起" #: apps/lchage.c:103 msgid "days before expiration to begin warning user" msgstr "在過期之前開始警告使用者的天數" #: apps/lchage.c:116 apps/lid.c:131 apps/lpasswd.c:69 apps/luseradd.c:102 #: apps/luserdel.c:61 apps/lusermod.c:102 msgid "[OPTION...] user" msgstr "[選項...] 使用者" #: apps/lchage.c:119 apps/lchfn.c:72 apps/lchsh.c:60 apps/lgroupadd.c:66 #: apps/lgroupdel.c:58 apps/lgroupmod.c:87 apps/lid.c:134 apps/lnewusers.c:68 #: apps/lpasswd.c:72 apps/luseradd.c:105 apps/luserdel.c:64 apps/lusermod.c:105 #, c-format msgid "Error parsing arguments: %s.\n" msgstr "解析引數時發生錯誤:%s。\n" #: apps/lchage.c:129 apps/lpasswd.c:87 apps/luseradd.c:121 apps/luserdel.c:73 #: apps/lusermod.c:117 #, c-format msgid "No user name specified.\n" msgstr "沒有指定使用者名稱。\n" #: apps/lchage.c:140 apps/lchfn.c:106 apps/lchsh.c:93 apps/lgroupadd.c:104 #: apps/lgroupdel.c:79 apps/lgroupmod.c:122 apps/lid.c:181 apps/lnewusers.c:80 #: apps/lpasswd.c:98 apps/luseradd.c:146 apps/luserdel.c:83 apps/lusermod.c:160 #: samples/enum.c:56 samples/testuser.c:71 #, c-format msgid "Error initializing %s: %s.\n" msgstr "初始化 %s 時發生錯誤:%s。\n" #: apps/lchage.c:150 apps/lchfn.c:118 apps/lchsh.c:105 apps/lpasswd.c:151 #: apps/luserdel.c:92 apps/lusermod.c:176 #, c-format msgid "User %s does not exist.\n" msgstr "使用者 %s 不存在。\n" #: apps/lchage.c:164 #, c-format msgid "Account is locked.\n" msgstr "帳號已鎖住。\n" #: apps/lchage.c:166 #, c-format msgid "Account is not locked.\n" msgstr "帳號未鎖住。\n" #: apps/lchage.c:170 #, c-format msgid "Minimum:\t%ld\n" msgstr "最小值:\t%ld\n" #: apps/lchage.c:174 #, c-format msgid "Maximum:\t%ld\n" msgstr "最大值:\t%ld\n" #: apps/lchage.c:176 #, c-format msgid "Maximum:\tNone\n" msgstr "最大值:\t無\n" #: apps/lchage.c:179 #, c-format msgid "Warning:\t%ld\n" msgstr "警告:\t%ld\n" #: apps/lchage.c:184 #, c-format msgid "Inactive:\t%ld\n" msgstr "失效:\t%ld\n" #: apps/lchage.c:186 #, c-format msgid "Inactive:\tNever\n" msgstr "失效:\t永不\n" #: apps/lchage.c:190 apps/lchage.c:198 apps/lchage.c:208 msgid "Must change password on next login" msgstr "下次登入時必須更改密碼" #: apps/lchage.c:192 apps/lchage.c:200 apps/lchage.c:210 apps/lchage.c:219 msgid "Never" msgstr "永不" #: apps/lchage.c:195 #, c-format msgid "Last Change:\t%s\n" msgstr "上次更改:\t%s\n" #: apps/lchage.c:205 #, c-format msgid "Password Expires:\t%s\n" msgstr "密碼過期:\t%s\n" #: apps/lchage.c:217 #, c-format msgid "Password Inactive:\t%s\n" msgstr "密碼失效:\t%s\n" #: apps/lchage.c:223 #, c-format msgid "Account Expires:\t%s\n" msgstr "帳號過期:\t%s\n" #: apps/lchage.c:244 #, c-format msgid "Failed to modify aging information for %s: %s\n" msgstr "修改 %s 的過時資訊時失敗:%s\n" #: apps/lchfn.c:69 apps/lchsh.c:57 msgid "[OPTION...] [user]" msgstr "[選項...] [使用者]" #: apps/lchfn.c:89 apps/lchsh.c:77 apps/lid.c:167 #, c-format msgid "No user name specified, no name for uid %d.\n" msgstr "沒有指定使用者名稱,uid %d 沒有名稱。\n" #: apps/lchfn.c:99 #, c-format msgid "Changing finger information for %s.\n" msgstr "修改 %s 的 finger 資訊。\n" #: apps/lchfn.c:141 msgid "Full Name" msgstr "全名" #: apps/lchfn.c:151 msgid "Surname" msgstr "姓氏" #: apps/lchfn.c:162 msgid "Given Name" msgstr "名字" #: apps/lchfn.c:172 msgid "Office" msgstr "辦公室" #: apps/lchfn.c:181 msgid "Office Phone" msgstr "辦公電話" #: apps/lchfn.c:190 msgid "Home Phone" msgstr "住家電話" #: apps/lchfn.c:200 msgid "E-Mail Address" msgstr "電子郵件位址" #: apps/lchfn.c:213 #, c-format msgid "Finger information not changed: input error.\n" msgstr "finger 的資訊未變更:輸入發生錯誤。\n" #: apps/lchfn.c:276 msgid "Finger information changed.\n" msgstr "finger 的資訊已變更。\n" #: apps/lchfn.c:279 #, c-format msgid "Finger information not changed: %s.\n" msgstr "finger 的資訊未變更:%s。\n" #: apps/lchsh.c:86 #, c-format msgid "Changing shell for %s.\n" msgstr "變更 %s 的 shell。\n" #: apps/lchsh.c:118 msgid "New Shell" msgstr "新的 shell" #: apps/lchsh.c:125 apps/lchsh.c:145 #, c-format msgid "Shell not changed: %s\n" msgstr "shell 未變更:%s\n" #: apps/lchsh.c:140 msgid "Shell changed.\n" msgstr "shell 已變更。\n" #: apps/lgroupadd.c:50 msgid "gid for new group" msgstr "新群組的 GID" #: apps/lgroupadd.c:50 apps/lgroupmod.c:58 apps/lpasswd.c:57 apps/lpasswd.c:60 #: apps/luseradd.c:69 apps/lusermod.c:67 apps/lusermod.c:69 msgid "NUM" msgstr "NUM" #: apps/lgroupadd.c:52 msgid "create a system group" msgstr "建立系統群組" #: apps/lgroupadd.c:63 apps/lgroupdel.c:55 apps/lgroupmod.c:84 msgid "[OPTION...] group" msgstr "[選項...] 群組" #: apps/lgroupadd.c:76 apps/lgroupdel.c:68 apps/lgroupmod.c:96 #, c-format msgid "No group name specified.\n" msgstr "沒有指定群組名稱。\n" #: apps/lgroupadd.c:90 apps/lgroupmod.c:109 apps/lnewusers.c:175 #: apps/luseradd.c:168 apps/lusermod.c:130 #, c-format msgid "Invalid group ID %s\n" msgstr "無效的群組 ID %s\n" #: apps/lgroupadd.c:122 #, c-format msgid "Group creation failed: %s\n" msgstr "群組建立失敗:%s\n" #: apps/lgroupdel.c:88 apps/lgroupmod.c:137 apps/lpasswd.c:157 #, c-format msgid "Group %s does not exist.\n" msgstr "%s 群組不存在。\n" #: apps/lgroupdel.c:95 #, c-format msgid "Group %s could not be deleted: %s\n" msgstr "無法刪除 %s 群組:%s\n" #: apps/lgroupmod.c:58 msgid "set GID for group" msgstr "設定群組的 GID" #: apps/lgroupmod.c:60 msgid "change group to have given name" msgstr "變更群組以擁有名字" #: apps/lgroupmod.c:60 msgid "NAME" msgstr "NAME" #: apps/lgroupmod.c:62 apps/luseradd.c:77 msgid "plaintext password for use with group" msgstr "群組要使用的明文密碼" #: apps/lgroupmod.c:62 apps/lgroupmod.c:64 apps/lgroupmod.c:66 #: apps/lgroupmod.c:68 apps/lgroupmod.c:70 apps/lgroupmod.c:72 #: apps/lpasswd.c:52 apps/lpasswd.c:54 apps/luseradd.c:61 apps/luseradd.c:63 #: apps/luseradd.c:65 apps/luseradd.c:67 apps/luseradd.c:71 apps/luseradd.c:77 #: apps/luseradd.c:79 apps/luseradd.c:81 apps/luseradd.c:83 apps/luseradd.c:85 #: apps/luseradd.c:87 apps/luseradd.c:89 apps/luseradd.c:91 apps/lusermod.c:59 #: apps/lusermod.c:61 apps/lusermod.c:65 apps/lusermod.c:71 apps/lusermod.c:73 #: apps/lusermod.c:75 apps/lusermod.c:81 apps/lusermod.c:83 apps/lusermod.c:85 #: apps/lusermod.c:87 apps/lusermod.c:89 apps/lusermod.c:91 msgid "STRING" msgstr "STRING" #: apps/lgroupmod.c:64 apps/luseradd.c:79 msgid "pre-hashed password for use with group" msgstr "群組要使用的預先雜湊密碼" #: apps/lgroupmod.c:66 msgid "list of administrators to add" msgstr "要加入的管理員清單" #: apps/lgroupmod.c:68 msgid "list of administrators to remove" msgstr "要移除的管理員清單" #: apps/lgroupmod.c:70 msgid "list of group members to add" msgstr "要加入的群組成員清單" #: apps/lgroupmod.c:72 msgid "list of group members to remove" msgstr "要移除的群組成員清單" #: apps/lgroupmod.c:73 msgid "lock group" msgstr "鎖住群組" #: apps/lgroupmod.c:74 msgid "unlock group" msgstr "解除群組鎖" #: apps/lgroupmod.c:129 apps/lusermod.c:168 #, c-format msgid "Both -L and -U specified.\n" msgstr "-L 與 -U 兩者皆指定。\n" #: apps/lgroupmod.c:145 apps/lgroupmod.c:161 #, c-format msgid "Failed to set password for group %s: %s\n" msgstr "設定 %s 群組的密碼失敗:%s\n" #: apps/lgroupmod.c:177 #, c-format msgid "Group %s could not be locked: %s\n" msgstr "無法鎖定 %s 群組:%s\n" #: apps/lgroupmod.c:193 #, c-format msgid "Group %s could not be unlocked: %s\n" msgstr "%s 群組無法被解除鎖定:%s\n" #: apps/lgroupmod.c:276 apps/lgroupmod.c:298 #, c-format msgid "Group %s could not be modified: %s\n" msgstr "%s 群組無法修改:%s\n" #: apps/lid.c:42 apps/lid.c:74 apps/lid.c:191 #, c-format msgid "Error looking up %s: %s\n" msgstr "查詢 %s 時發生錯誤:%s\n" #: apps/lid.c:118 msgid "" "list members of a named group instead of the group memberships for the named " "user" msgstr "列出已命名群組的成員,而不是已命名使用者的群組成員關係" #: apps/lid.c:121 msgid "only list membership information by name, and not UID/GID" msgstr "僅依名稱列出成員資訊,而不是 UID/GID" #: apps/lid.c:148 #, c-format msgid "No group name specified, using %s.\n" msgstr "沒有指定群組名稱,所以使用 %s。\n" #: apps/lid.c:152 #, c-format msgid "No group name specified, no name for gid %d.\n" msgstr "沒有指定群組名稱,GID %d 沒有指定名稱。\n" #: apps/lid.c:163 #, c-format msgid "No user name specified, using %s.\n" msgstr "沒有指定使用者名稱,所以使用 %s。\n" #: apps/lid.c:195 #, c-format msgid "%s does not exist\n" msgstr "%s 不存在\n" #: apps/lnewusers.c:49 msgid "file with user information records" msgstr "含有使用者資訊記錄的檔案" #: apps/lnewusers.c:49 msgid "PATH" msgstr "PATH" #: apps/lnewusers.c:51 msgid "don't create home directories" msgstr "不要建立家目錄" #: apps/lnewusers.c:53 msgid "don't create mail spools" msgstr "不要建立郵件池" #: apps/lnewusers.c:65 msgid "[OPTION...]" msgstr "[選項...]" #: apps/lnewusers.c:90 #, c-format msgid "Error opening `%s': %s.\n" msgstr "開啟「%s」時發生錯誤:%s。\n" #: apps/lnewusers.c:121 #, c-format msgid "Error creating account for `%s': line improperly formatted.\n" msgstr "建立「%s」的帳號時發生錯誤:含有不當格式的列。\n" #: apps/lnewusers.c:132 apps/luseradd.c:132 apps/lusermod.c:146 #, c-format msgid "Invalid user ID %s\n" msgstr "無效的使用者 ID %s\n" #: apps/lnewusers.c:139 msgid "Refusing to create account with UID 0.\n" msgstr "拒絕建立 UID 為 0 的帳號。\n" #: apps/lnewusers.c:209 #, c-format msgid "Error creating group for `%s' with GID %jd: %s\n" msgstr "為「%s」建立群組時 (使用 GID %jd) 發生錯誤:%s\n" #: apps/lnewusers.c:249 #, c-format msgid "Refusing to use dangerous home directory `%s' for %s by default\n" msgstr "預設狀況下拒絕為 %2$s 使用危險的「%1$s」家目錄\n" #: apps/lnewusers.c:260 #, c-format msgid "Error creating home directory for %s: %s\n" msgstr "建立 %s 的家目錄時發生錯誤:%s\n" #: apps/lnewusers.c:273 #, c-format msgid "Error creating mail spool for %s: %s\n" msgstr "為 %s 建立郵件池時發生錯誤:%s\n" #: apps/lnewusers.c:288 #, c-format msgid "Error setting initial password for %s: %s\n" msgstr "為 %s 設定初始密碼時發生錯誤:%s\n" #: apps/lnewusers.c:298 #, c-format msgid "Error creating user account for %s: %s\n" msgstr "建立 %s 的使用者帳號時發生錯誤:%s。\n" #: apps/lpasswd.c:50 msgid "set group password instead of user password" msgstr "設定群組密碼而不是使用者密碼" #: apps/lpasswd.c:52 msgid "new plain password" msgstr "新的明文密碼" #: apps/lpasswd.c:54 msgid "new crypted password" msgstr "新的加密密碼" #: apps/lpasswd.c:56 msgid "read new plain password from given descriptor" msgstr "從給定的描述元讀取新的明文密碼" #: apps/lpasswd.c:59 msgid "read new crypted password from given descriptor" msgstr "從給定的描述元讀取新的加密密碼" #: apps/lpasswd.c:85 #, c-format msgid "Changing password for %s.\n" msgstr "更改 %s 的密碼。\n" #: apps/lpasswd.c:113 msgid "New password" msgstr "新密碼" #: apps/lpasswd.c:116 msgid "New password (confirm)" msgstr "新密碼 (確認)" #: apps/lpasswd.c:130 #, c-format msgid "Passwords do not match, try again.\n" msgstr "密碼不符,請再試一次。\n" #: apps/lpasswd.c:135 #, c-format msgid "Password change canceled.\n" msgstr "取消密碼變更。\n" #: apps/lpasswd.c:170 apps/lpasswd.c:188 #, c-format msgid "Error reading from file descriptor %d.\n" msgstr "從檔案描述元 %d 讀取時發生錯誤。\n" #: apps/lpasswd.c:210 apps/luseradd.c:323 apps/luseradd.c:333 #, c-format msgid "Error setting password for user %s: %s.\n" msgstr "為使用者 %s 設定密碼發生錯誤:%s。\n" #: apps/lpasswd.c:220 #, c-format msgid "Error setting password for group %s: %s.\n" msgstr "為群組 %s 設定密碼時發生錯誤:%s。\n" #: apps/lpasswd.c:229 #, c-format msgid "Password changed.\n" msgstr "密碼已變更。\n" #: apps/luseradd.c:59 msgid "create a system user" msgstr "建立系統使用者" #: apps/luseradd.c:61 msgid "GECOS information for new user" msgstr "新使用者的 GECOS 資訊" #: apps/luseradd.c:63 msgid "home directory for new user" msgstr "新使用者的家目錄" #: apps/luseradd.c:65 msgid "directory with files for the new user" msgstr "新使用者的含檔案家目錄" #: apps/luseradd.c:67 msgid "shell for new user" msgstr "新使用者的 shell" #: apps/luseradd.c:69 msgid "uid for new user" msgstr "新使用者的 UID" #: apps/luseradd.c:71 msgid "group for new user" msgstr "新使用者的群組" #: apps/luseradd.c:73 msgid "don't create home directory for user" msgstr "不要為使用者建立家目錄" #: apps/luseradd.c:75 msgid "don't create group with same name as user" msgstr "不要用與使用者相同的名稱建立群組" #: apps/luseradd.c:81 msgid "common name for new user" msgstr "新使用者的通用名稱" #: apps/luseradd.c:83 msgid "given name for new user" msgstr "新使用者的名字" #: apps/luseradd.c:85 msgid "surname for new user" msgstr "新使用者的姓氏" #: apps/luseradd.c:87 msgid "room number for new user" msgstr "新使用者的房間號碼" #: apps/luseradd.c:89 msgid "telephone number for new user" msgstr "新使用者的電話號碼" #: apps/luseradd.c:91 msgid "home telephone number for new user" msgstr "新使用者的家用電話號碼" #: apps/luseradd.c:194 #, c-format msgid "Group %jd does not exist\n" msgstr "%jd 群組不存在\n" #: apps/luseradd.c:213 apps/luseradd.c:230 #, c-format msgid "Error creating group `%s': %s\n" msgstr "建立「%s」群組發生錯誤:%s\n" #: apps/luseradd.c:270 #, c-format msgid "Account creation failed: %s.\n" msgstr "帳號建立失敗:%s。\n" #: apps/luseradd.c:298 #, c-format msgid "Error creating %s: %s.\n" msgstr "建立 %s 發生錯誤:%s。\n" #: apps/luseradd.c:310 #, c-format msgid "Error creating mail spool: %s\n" msgstr "建立郵件池時發生錯誤:%s\n" #: apps/luserdel.c:49 msgid "don't remove the user's private group, if the user has one" msgstr "不要移除使用者的私人群組,如果使用者擁有的話" #: apps/luserdel.c:52 msgid "remove the user's home directory" msgstr "移除使用者的家目錄" #: apps/luserdel.c:98 #, c-format msgid "User %s could not be deleted: %s.\n" msgstr "無法刪除 %s 使用者:%s。\n" #: apps/luserdel.c:117 #, c-format msgid "%s did not have a gid number.\n" msgstr "%s 沒有群組 ID (gid) 號碼。\n" #: apps/luserdel.c:124 #, c-format msgid "No group with GID %jd exists, not removing.\n" msgstr "GID %jd 的群組不存在,所以無法移除。\n" #: apps/luserdel.c:131 #, c-format msgid "Group with GID %jd did not have a group name.\n" msgstr "GID %jd 的群組沒有群組名稱。\n" #: apps/luserdel.c:138 #, c-format msgid "Group %s could not be deleted: %s.\n" msgstr "無法刪除 %s 群組:%s。\n" #: apps/luserdel.c:158 #, fuzzy, c-format msgid "Error removing home directory: %s.\n" msgstr "為使用者移除家目錄時發生錯誤" #: apps/luserdel.c:171 #, c-format msgid "Error removing mail spool: %s" msgstr "移除郵件池時發生錯誤:%s" #: apps/lusermod.c:59 msgid "GECOS information" msgstr "GECOS 資訊" #: apps/lusermod.c:61 msgid "home directory" msgstr "家目錄" #: apps/lusermod.c:63 msgid "move home directory contents" msgstr "移動家目錄內容" #: apps/lusermod.c:65 msgid "set shell for user" msgstr "設定使用者的 shell" #: apps/lusermod.c:67 msgid "set UID for user" msgstr "設定使用者的 UID" #: apps/lusermod.c:69 msgid "set primary GID for user" msgstr "設定使用者的主要 GID" #: apps/lusermod.c:71 msgid "change login name for user" msgstr "改變使用者的登入名稱" #: apps/lusermod.c:73 msgid "plaintext password for the user" msgstr "使用者的明文密碼" #: apps/lusermod.c:75 msgid "pre-hashed password for the user" msgstr "使用者的預先雜湊密碼" #: apps/lusermod.c:76 msgid "lock account" msgstr "鎖住帳號" #: apps/lusermod.c:79 msgid "unlock account" msgstr "解除帳號鎖" #: apps/lusermod.c:81 msgid "set common name for user" msgstr "設定使用者的通用名稱" #: apps/lusermod.c:83 msgid "set given name for user" msgstr "設定使用者的名字" #: apps/lusermod.c:85 msgid "set surname for user" msgstr "設定使用者的姓氏" #: apps/lusermod.c:87 msgid "set room number for user" msgstr "設定使用者的房間號碼" #: apps/lusermod.c:89 msgid "set telephone number for user" msgstr "設定使用者的電話號碼" #: apps/lusermod.c:91 msgid "set home telephone number for user" msgstr "設定使用者的家用電話號碼" #: apps/lusermod.c:186 apps/lusermod.c:205 #, c-format msgid "Failed to set password for user %s: %s.\n" msgstr "為 %s 使用者設定密碼失敗:%s。\n" #: apps/lusermod.c:221 #, c-format msgid "User %s could not be locked: %s.\n" msgstr "無法鎖定 %s 使用者:%s。\n" #: apps/lusermod.c:235 #, c-format msgid "User %s could not be unlocked: %s.\n" msgstr "無法被解除 %s 使用者的鎖定:%s。\n" #: apps/lusermod.c:262 #, c-format msgid "Warning: Group with ID %jd does not exist.\n" msgstr "警告:ID 為 %jd 的群組不存在。\n" #: apps/lusermod.c:305 #, c-format msgid "User %s could not be modified: %s.\n" msgstr "無法修改 %s 使用者:%s。\n" #: apps/lusermod.c:362 #, c-format msgid "Group %s could not be modified: %s.\n" msgstr "無法修改 %s 群組:%s。\n" #: apps/lusermod.c:385 #, c-format msgid "No old home directory for %s.\n" msgstr "%s 沒有舊的家目錄。\n" #: apps/lusermod.c:391 #, c-format msgid "No new home directory for %s.\n" msgstr "%s 沒有新的家目錄。\n" #: apps/lusermod.c:398 #, c-format msgid "Error moving %s to %s: %s.\n" msgstr "將 %s 移動至 %s 時發生錯誤:%s。\n" #: lib/config.c:128 #, c-format msgid "could not open configuration file `%s': %s" msgstr "無法開啟組態檔「%s」:%s" #: lib/config.c:134 #, c-format msgid "could not stat configuration file `%s': %s" msgstr "無法取得組態檔「%s」的狀態:%s" #: lib/config.c:143 #, c-format msgid "configuration file `%s' is too large" msgstr "組態檔「%s」過大" #: lib/config.c:159 #, c-format msgid "could not read configuration file `%s': %s" msgstr "無法讀取組態檔「%s」:%s" #: lib/error.c:62 msgid "success" msgstr "成功" #: lib/error.c:64 msgid "module disabled by configuration" msgstr "模組已由組態停用" #: lib/error.c:66 msgid "generic error" msgstr "一般錯誤" #: lib/error.c:68 msgid "not enough privileges" msgstr "權力不足" #: lib/error.c:70 msgid "access denied" msgstr "拒絕存取" #: lib/error.c:72 msgid "bad user/group name" msgstr "不當的使用者/群組名稱" #: lib/error.c:74 msgid "bad user/group id" msgstr "不當的使用者/群組 ID" #: lib/error.c:76 msgid "user/group name in use" msgstr "使用者/群組名稱已被使用" #: lib/error.c:78 msgid "user/group id in use" msgstr "使用者/群組 ID 已被使用" #: lib/error.c:80 msgid "error manipulating terminal attributes" msgstr "處理終端機特性時發生錯誤" #: lib/error.c:82 msgid "error opening file" msgstr "開啟檔案時發生錯誤" #: lib/error.c:84 msgid "error locking file" msgstr "鎖定檔案時發生錯誤" #: lib/error.c:86 msgid "error statting file" msgstr "取得檔案狀態時發生錯誤" #: lib/error.c:88 msgid "error reading file" msgstr "讀取檔案時發生錯誤" #: lib/error.c:90 msgid "error writing to file" msgstr "寫入檔案時發生錯誤" #: lib/error.c:92 msgid "data not found in file" msgstr "檔案裡找不到資料" #: lib/error.c:94 msgid "internal initialization error" msgstr "內部初始化錯誤" #: lib/error.c:96 msgid "error loading module" msgstr "載入模組時發生錯誤" #: lib/error.c:98 msgid "error resolving symbol in module" msgstr "解析模組裡的符號時發生錯誤" #: lib/error.c:100 msgid "library/module version mismatch" msgstr "函式庫/模組版本不符" #: lib/error.c:102 msgid "unlocking would make the password field empty" msgstr "解鎖會讓密碼欄成為空白" #: lib/error.c:105 msgid "invalid attribute value" msgstr "無效的特性值" #: lib/error.c:107 msgid "invalid module combination" msgstr "無效的模組組合" #: lib/error.c:109 #, fuzzy msgid "user's home directory not owned by them" msgstr "新使用者的家目錄" #: lib/error.c:115 msgid "unknown error" msgstr "不明錯誤" #: lib/misc.c:240 msgid "invalid number" msgstr "無效的號碼" #: lib/misc.c:254 msgid "invalid ID" msgstr "無效的 ID" #: lib/modules.c:61 #, c-format msgid "no initialization function %s in `%s'" msgstr "「%2$s」內無初始函式 %1$s 於" #: lib/modules.c:79 #, c-format msgid "module version mismatch in `%s'" msgstr "「%s」中模組版本不符" #: lib/modules.c:92 #, c-format msgid "module `%s' does not define `%s'" msgstr "模組「%s」未定義「%s」" #: lib/prompt.c:88 msgid "error reading terminal attributes" msgstr "讀取終端機特性時發生錯誤" #: lib/prompt.c:95 lib/prompt.c:107 msgid "error setting terminal attributes" msgstr "設定終端機特性時發生錯誤" #: lib/prompt.c:101 msgid "error reading from terminal" msgstr "從終端機讀取時發生錯誤" #: lib/user.c:218 msgid "name is not set" msgstr "名稱尚未設定" #: lib/user.c:223 msgid "name is too short" msgstr "名稱過短" #: lib/user.c:228 #, c-format msgid "name is too long (%zu > %d)" msgstr "名稱過長 (%zu > %d)" #: lib/user.c:235 msgid "name contains non-ASCII characters" msgstr "名稱包含非 ASCII 的字元" #: lib/user.c:242 msgid "name contains control characters" msgstr "名稱包含控制字元" #: lib/user.c:249 msgid "name contains whitespace" msgstr "名稱包含空白" #: lib/user.c:261 msgid "name starts with a hyphen" msgstr "名稱以連字號開頭" #: lib/user.c:272 #, c-format msgid "name contains invalid char `%c'" msgstr "名稱包含無效字元「%c」" #: lib/user.c:308 lib/user.c:360 #, c-format msgid "user %s has no UID" msgstr "使用者 %s 沒有 UID" #: lib/user.c:310 #, c-format msgid "user %s not found" msgstr "找不到使用者 %s" #: lib/user.c:333 lib/user.c:361 #, c-format msgid "group %s has no GID" msgstr "群組 %s 沒有 GID" #: lib/user.c:335 #, c-format msgid "group %s not found" msgstr "找不到 %s 群組" #: lib/user.c:355 #, c-format msgid "user %jd has no name" msgstr "使用者 %jd 沒有名稱" #: lib/user.c:356 #, c-format msgid "group %jd has no name" msgstr "群組 %jd 沒有名稱" #: lib/user.c:364 msgid "user has neither a name nor an UID" msgstr "使用者沒有名稱也沒有 UID" #: lib/user.c:365 msgid "group has neither a name nor a GID" msgstr "群組沒有名稱也沒有 GID" #: lib/user.c:1326 #, c-format msgid "Refusing to use dangerous home directory `%s' by default" msgstr "預設情況下拒絕使用危險的「%s」家目錄" #: lib/user.c:2326 #, c-format msgid "Invalid default value of field %s: %s" msgstr "欄位 %s 的預設值無效:%s" #: lib/util.c:350 modules/files.c:374 #, c-format msgid "error locking file: %s" msgstr "鎖定檔案時發生錯誤:%s" #: lib/util.c:754 #, c-format msgid "couldn't get default security context: %s" msgstr "無法取得預設的安全情境:%s" #: lib/util.c:781 lib/util.c:807 lib/util.c:833 #, c-format msgid "couldn't get security context of `%s': %s" msgstr "無法取得「%s」的安全情境:%s" #: lib/util.c:787 lib/util.c:813 lib/util.c:839 lib/util.c:882 #, c-format msgid "couldn't set default security context to `%s': %s" msgstr "無將預設安全情境設為「%s」:%s" #: lib/util.c:862 #, fuzzy, c-format #| msgid "couldn't get default security context: %s" msgid "couldn't obtain selabel file context handle: %s" msgstr "無法取得預設的安全情境:%s" #: lib/util.c:872 #, c-format msgid "couldn't determine security context for `%s': %s" msgstr "無法判定「%s」的安全情境:%s" #: modules/files.c:129 modules/files.c:692 modules/files.c:1735 #: modules/files.c:2070 modules/files.c:2080 modules/files.c:2162 #: modules/files.c:2173 modules/files.c:2239 modules/files.c:2251 #: modules/files.c:2341 modules/files.c:2350 modules/files.c:2405 #: modules/files.c:2414 modules/files.c:2509 modules/files.c:2518 #, c-format msgid "couldn't open `%s': %s" msgstr "無法開啟「%s」:%s" #: modules/files.c:137 modules/files.c:1116 modules/files.c:1323 #: modules/files.c:1479 #, c-format msgid "couldn't stat `%s': %s" msgstr "無法取得「%s」的狀態:%s" #: modules/files.c:161 #, c-format msgid "error creating `%s': %s" msgstr "建立「%s」時發生錯誤:%s" #: modules/files.c:169 #, c-format msgid "Error changing owner of `%s': %s" msgstr "改變「%s」的擁有者時發生錯誤:%s" #: modules/files.c:175 #, c-format msgid "Error changing mode of `%s': %s" msgstr "變更「%s」的模式時發生錯誤:%s" #: modules/files.c:191 #, c-format msgid "Error reading `%s': %s" msgstr "讀取「%s」時發生錯誤:%s" #: modules/files.c:206 modules/files.c:217 modules/files.c:305 #: modules/files.c:467 #, c-format msgid "Error writing `%s': %s" msgstr "寫入「%s」時發生錯誤:%s" #: modules/files.c:247 modules/files.c:1127 modules/files.c:1331 #: modules/files.c:1488 #, c-format msgid "couldn't read from `%s': %s" msgstr "無法從「%s」讀取:%s" #: modules/files.c:256 #, c-format msgid "Invalid contents of lock `%s'" msgstr "" #: modules/files.c:261 #, c-format msgid "The lock %s is held by process %ju" msgstr "" #: modules/files.c:269 #, fuzzy, c-format msgid "Error removing stale lock `%s': %s" msgstr "將 %s 移動至 %s 時發生錯誤:%s。\n" #: modules/files.c:297 #, fuzzy, c-format msgid "error opening temporary file for `%s': %s" msgstr "變更「%s」的模式時發生錯誤:%s" #: modules/files.c:321 #, c-format msgid "Cannot obtain lock `%s': %s" msgstr "" #: modules/files.c:434 #, fuzzy, c-format msgid "Error resolving `%s': %s" msgstr "讀取「%s」時發生錯誤:%s" #: modules/files.c:442 #, fuzzy, c-format msgid "Error replacing `%s': %s" msgstr "讀取「%s」時發生錯誤:%s" #: modules/files.c:920 #, fuzzy, c-format #| msgid "entity object has no %s attribute" msgid "duplicate object has no %s attribute" msgstr "實體物件沒有 %s 特性" #: modules/files.c:930 #, fuzzy, c-format #| msgid "object has no %s attribute" msgid "original object has no %s attribute" msgstr "物件沒有 %s 特性" #: modules/files.c:942 #, c-format msgid "ID %lu already in use by %s" msgstr "" #: modules/files.c:1025 #, fuzzy, c-format msgid "%s value `%s': `\\n' not allowed" msgstr "%s 值「%s」:不允許有「:」" #: modules/files.c:1032 #, c-format msgid "%s value `%s': `:' not allowed" msgstr "%s 值「%s」:不允許有「:」" #: modules/files.c:1136 msgid "entry already present in file" msgstr "條目已存在檔案中" #: modules/files.c:1143 modules/files.c:1153 modules/files.c:1163 #: modules/files.c:1543 modules/files.c:1551 modules/files.c:1559 #, c-format msgid "couldn't write to `%s': %s" msgstr "無法寫入「%s」:%s" #: modules/files.c:1309 #, c-format msgid "entity object has no %s attribute" msgstr "實體物件沒有 %s 特性" #: modules/files.c:1351 msgid "entry with conflicting name already present in file" msgstr "名稱產生衝突的條目已存在檔案中" #: modules/files.c:1953 #, fuzzy msgid "`:' and `\\n' not allowed in encrypted password" msgstr "加密的密碼中不允許使用「:」" #: modules/files.c:1965 modules/ldap.c:1543 modules/ldap.c:1812 msgid "error encrypting password" msgstr "加密密碼時發生錯誤" #: modules/files.c:2667 modules/ldap.c:2410 #, c-format msgid "the `%s' and `%s' modules can not be combined" msgstr "無法組合「%s」與「%s」模組" #: modules/files.c:2751 modules/files.c:2829 msgid "not executing with superuser privileges" msgstr "非以超級使用者的特權執行中" #: modules/files.c:2842 msgid "no shadow file present -- disabling" msgstr "shadow 檔案不存在 -- 停用中" #: modules/ldap.c:199 msgid "error initializing ldap library" msgstr "初始化 ldap 函式庫時發生錯誤" #: modules/ldap.c:210 #, c-format msgid "could not set LDAP protocol to version %d" msgstr "無法將 LDAP 通訊協定設定為 %d 版" #: modules/ldap.c:229 msgid "could not negotiate TLS with LDAP server" msgstr "無法以 TLS 與 LDAP 伺服器協商" #: modules/ldap.c:424 msgid "could not bind to LDAP server" msgstr "無法綁定至 LDAP 伺服器" #: modules/ldap.c:427 #, c-format msgid "could not bind to LDAP server, first attempt as `%s': %s" msgstr "第一次以「%s」嘗試時,無法連接綁定至 LDAP 伺服器:%s" #: modules/ldap.c:1315 #, c-format msgid "user object had no %s attribute" msgstr "使用者物件沒有 %s 特性" #: modules/ldap.c:1324 #, c-format msgid "user object was created with no `%s'" msgstr "使用者物件在無「%s」情況下建立" #: modules/ldap.c:1344 #, c-format msgid "error creating a LDAP directory entry: %s" msgstr "建立 LDAP 目錄條目時發生錯誤:%s" #: modules/ldap.c:1370 modules/ldap.c:1604 #, c-format msgid "error modifying LDAP directory entry: %s" msgstr "修改 LDAP 目錄條目時發生錯誤:%s" #: modules/ldap.c:1395 #, c-format msgid "error renaming LDAP directory entry: %s" msgstr "為 LDAP 目錄條目重新命名時發生錯誤:%s" #: modules/ldap.c:1440 #, c-format msgid "object had no %s attribute" msgstr "物件沒有 %s 特性" #: modules/ldap.c:1456 #, c-format msgid "error removing LDAP directory entry: %s" msgstr "移除 LDAP 目錄條目時發生錯誤:%s" #: modules/ldap.c:1506 modules/ldap.c:1521 modules/ldap.c:1635 #: modules/ldap.c:1730 #, c-format msgid "object has no %s attribute" msgstr "物件沒有 %s 特性" #: modules/ldap.c:1533 msgid "unsupported password encryption scheme" msgstr "不支援的密碼加密方案" #: modules/ldap.c:1658 msgid "no such object in LDAP directory" msgstr "在 LDAP 目錄中沒有這項物件" #: modules/ldap.c:1670 #, c-format msgid "no `%s' attribute found" msgstr "找不到「%s」特性" #: modules/ldap.c:1843 #, c-format msgid "error setting password in LDAP directory for %s: %s" msgstr "在 LDAP 目錄設定 %s 的密碼時發生錯誤:%s" #: modules/ldap.c:2446 msgid "LDAP Server Name" msgstr "LDAP 伺服器名稱" #: modules/ldap.c:2452 msgid "LDAP Search Base DN" msgstr "LDAP Search Base DN" #: modules/ldap.c:2458 msgid "LDAP Bind DN" msgstr "LDAP Bind DN" #: modules/ldap.c:2465 msgid "LDAP Bind Password" msgstr "LDAP Bind 密碼" #: modules/ldap.c:2471 msgid "LDAP SASL User" msgstr "LDAP SASL 使用者" #: modules/ldap.c:2478 msgid "LDAP SASL Authorization User" msgstr "LDAP SASL 認證使用者" #: modules/sasldb.c:132 #, c-format msgid "Cyrus SASL error creating user: %s" msgstr "建立使用者時發生 Cyrus SASL 錯誤:%s" #: modules/sasldb.c:136 #, c-format msgid "Cyrus SASL error removing user: %s" msgstr "移除使用者時發生 Cyrus SASL 錯誤:%s" #: modules/sasldb.c:503 modules/sasldb.c:511 #, c-format msgid "error initializing Cyrus SASL: %s" msgstr "初始化 Cyrus SASL 時發生錯誤:%s" #: python/admin.c:505 msgid "error creating home directory for user" msgstr "為使用者建立家目錄時發生錯誤" #: python/admin.c:544 python/admin.c:583 msgid "error removing home directory for user" msgstr "為使用者移除家目錄時發生錯誤" #: python/admin.c:654 msgid "error moving home directory for user" msgstr "為使用者移動家目錄時發生錯誤" #: samples/lookup.c:63 #, c-format msgid "Error initializing %s: %s\n" msgstr "初始化 %s 時發生錯誤:%s\n" #: samples/lookup.c:76 #, c-format msgid "Invalid ID %s\n" msgstr "無效 ID %s\n" #: samples/lookup.c:88 #, c-format msgid "Searching for group with ID %jd.\n" msgstr "搜尋 ID 為 %jd 的群組。\n" #: samples/lookup.c:92 #, c-format msgid "Searching for group named %s.\n" msgstr "搜尋名稱為 %s 的群組。\n" #: samples/lookup.c:99 #, c-format msgid "Searching for user with ID %jd.\n" msgstr "搜尋 ID 為 %jd 的使用者。\n" #: samples/lookup.c:103 #, c-format msgid "Searching for user named %s.\n" msgstr "搜尋名稱為 %s 的使用者。\n" #: samples/lookup.c:117 msgid "Entry not found.\n" msgstr "找不到條目。\n" #: samples/prompt.c:48 msgid "Prompts succeeded.\n" msgstr "提示成功。\n" #: samples/prompt.c:58 msgid "Prompts failed.\n" msgstr "提示失敗。\n" #: samples/testuser.c:76 msgid "Default user object classes:\n" msgstr "預設使用者物件類別:\n" #: samples/testuser.c:82 msgid "Default user attribute names:\n" msgstr "預設使用者特性名稱:\n" #: samples/testuser.c:88 msgid "Getting default user attributes:\n" msgstr "正在取得預設使用者特性:\n" #: samples/testuser.c:95 msgid "Copying user structure:\n" msgstr "正在複製使用者結構:\n" #~ msgid "backup file `%s' exists and is not a regular file" #~ msgstr "備份檔「%s」已存在且非一般檔案" #~ msgid "backup file size mismatch" #~ msgstr "備份檔案的大小不符" python/000077500000000000000000000000001471266067600124165ustar00rootroot00000000000000python/admin.c000066400000000000000000001275731471266067600136710ustar00rootroot00000000000000/* Copyright (C) 2001, 2002, 2004, 2006 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "common.h" #include "../lib/user.h" #include "../lib/user_private.h" #include "../apps/apputil.h" /* Destroy the object. */ static void libuser_admin_destroy(PyObject *self) { struct libuser_admin *me = (struct libuser_admin *) self; size_t i; DEBUG_ENTRY; /* Free the context. */ if (me->ctx != NULL) { lu_end(me->ctx); me->ctx = NULL; } /* Free the prompt data. */ for (i = 0; i < sizeof(me->prompt_data) / sizeof(me->prompt_data[0]); i++) { if (me->prompt_data[i]) { Py_DECREF(me->prompt_data[i]); } me->prompt_data[i] = NULL; } /* Delete the python object. */ PyObject_DEL(self); DEBUG_EXIT; } /* "prompt" attribute getter */ static PyObject * libuser_admin_get_prompt(PyObject *self, void *unused) { struct libuser_admin *me = (struct libuser_admin *)self; (void)unused; DEBUG_CALL; Py_INCREF(me->prompt_data[0]); return me->prompt_data[0]; } /* "prompt" attribute setter */ static int libuser_admin_set_prompt(PyObject *self, PyObject *value, void *unused) { struct libuser_admin *me = (struct libuser_admin *)self; (void)unused; DEBUG_ENTRY; /* If it's a wrapped up function, set the first prompt data * to the function, and the second to an empty tuple. */ if (PyCFunction_Check(value)) { Py_DECREF(me->prompt_data[0]); Py_DECREF(me->prompt_data[1]); me->prompt_data[0] = value; Py_INCREF(me->prompt_data[0]); me->prompt_data[1] = Py_None; Py_INCREF(me->prompt_data[0]); } /* If it's a tuple, the first item is the function, and the * rest are arguments to pass to it. */ if (PyTuple_Check(value)) { Py_DECREF(me->prompt_data[0]); Py_DECREF(me->prompt_data[1]); me->prompt_data[0] = PyTuple_GetItem(value, 0); Py_INCREF(me->prompt_data[0]); me->prompt_data[1] = PyTuple_GetSlice(value, 1, PyTuple_Size(value)); } DEBUG_EXIT; return 0; } /* "prompt_args" attribute getter */ static PyObject * libuser_admin_get_prompt_args(PyObject *self, void *unused) { struct libuser_admin *me = (struct libuser_admin *)self; (void)unused; DEBUG_CALL; Py_INCREF(me->prompt_data[1]); return me->prompt_data[1]; } /* "prompt_args" attribute setter */ static int libuser_admin_set_prompt_args(PyObject *self, PyObject *value, void *unused) { struct libuser_admin *me = (struct libuser_admin *)self; (void)unused; DEBUG_ENTRY; Py_DECREF(me->prompt_data[1]); me->prompt_data[1] = value; Py_INCREF(me->prompt_data[1]); DEBUG_EXIT; return 0; } /* Look up a user by name. */ static PyObject * libuser_admin_lookup_user_name(PyObject *self, PyObject *args, PyObject *kwargs) { char *arg; struct lu_ent *ent; struct lu_error *error = NULL; char *keywords[] = { "name", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* We expect a single string (no mapping shenanigans here). */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &arg)) { DEBUG_EXIT; return NULL; } /* Create the entity to return, and look it up. */ ent = lu_ent_new(); if (lu_user_lookup_name(me->ctx, arg, ent, &error)) { /* Wrap it up, and return it. */ DEBUG_EXIT; return libuser_wrap_ent(ent); } else { /* No such user. Clean up and bug out. */ if (error) lu_error_free(&error); lu_ent_free(ent); DEBUG_EXIT; Py_RETURN_NONE; } } /* Look up a user give the UID. */ static PyObject * libuser_admin_lookup_user_id(PyObject *self, PyObject *args, PyObject *kwargs) { PY_LONG_LONG arg; struct lu_ent *ent; struct lu_error *error = NULL; char *keywords[] = { "id", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* We expect a single string (no mapping shenanigans here). */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "L", keywords, &arg)) { DEBUG_EXIT; return NULL; } if ((uid_t)arg != arg) { PyErr_SetString(PyExc_OverflowError, "UID out of range"); DEBUG_EXIT; return NULL; } ent = lu_ent_new(); if (lu_user_lookup_id(me->ctx, arg, ent, &error)) { /* Wrap it up, and return it. */ DEBUG_EXIT; return libuser_wrap_ent(ent); } else { /* No such user. Clean up and bug out. */ if (error != NULL) lu_error_free(&error); lu_ent_free(ent); DEBUG_EXIT; Py_RETURN_NONE; } } /* Look up a group by name. */ static PyObject * libuser_admin_lookup_group_name(PyObject *self, PyObject *args, PyObject *kwargs) { char *arg; struct lu_ent *ent; struct lu_error *error = NULL; char *keywords[] = { "name", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect a string. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &arg)) { DEBUG_EXIT; return NULL; } /* Try to look up this user. */ ent = lu_ent_new(); if (lu_group_lookup_name(me->ctx, arg, ent, &error)) { /* Got you! Wrap and return. */ DEBUG_EXIT; return libuser_wrap_ent(ent); } else { /* We've got nothing. Return nothing. */ if (error != NULL) lu_error_free(&error); lu_ent_free(ent); DEBUG_EXIT; Py_RETURN_NONE; } } /* Look up a group by ID. */ static PyObject * libuser_admin_lookup_group_id(PyObject *self, PyObject *args, PyObject *kwargs) { PY_LONG_LONG arg; struct lu_ent *ent; struct lu_error *error = NULL; char *keywords[] = { "id", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect a number. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "L", keywords, &arg)) { DEBUG_EXIT; return NULL; } if ((gid_t)arg != arg) { PyErr_SetString(PyExc_OverflowError, "GID out of range"); DEBUG_EXIT; return NULL; } /* Try to look up the group. */ ent = lu_ent_new(); if (lu_group_lookup_id(me->ctx, arg, ent, &error)) { /* Wrap the answer up. */ DEBUG_EXIT; return libuser_wrap_ent(ent); } else { /* Clean up and exit, we have nothing to return. */ if (error != NULL) lu_error_free(&error); lu_ent_free(ent); DEBUG_EXIT; Py_RETURN_NONE; } } /* Create a template user object. */ static PyObject * libuser_admin_init_user(PyObject *self, PyObject *args, PyObject *kwargs) { char *arg; int is_system = 0; struct lu_ent *ent; char *keywords[] = { "name", "is_system", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* We expect a string and an optional flag indicating that the * user will be a system user. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i", keywords, &arg, &is_system)) { DEBUG_EXIT; return NULL; } /* Create a new user object for the user name, and return it. */ ent = lu_ent_new(); lu_user_default(me->ctx, arg, is_system, ent); DEBUG_EXIT; return libuser_wrap_ent(ent); } /* Create a group object. */ static PyObject * libuser_admin_init_group(PyObject *self, PyObject *args, PyObject *kwargs) { char *arg; int is_system = 0; struct lu_ent *ent; char *keywords[] = { "name", "is_system", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect a string and a flag indicating that the group is to be a * system group. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i", keywords, &arg, &is_system)) { DEBUG_EXIT; return NULL; } /* Create a defaulted group by this name, and wrap it up. */ ent = lu_ent_new(); lu_group_default(me->ctx, arg, is_system, ent); DEBUG_EXIT; return libuser_wrap_ent(ent); } /* Run the given function. If the function fails, raise an error. */ static PyObject * libuser_admin_do_wrap(PyObject *self, struct libuser_entity *ent, gboolean (*fn) (struct lu_context *, struct lu_ent *, struct lu_error ** error)) { struct lu_error *error = NULL; struct libuser_admin *me = (struct libuser_admin *)self; DEBUG_ENTRY; /* Try running the function. */ if (fn(me->ctx, ent->ent, &error)) { /* It succeeded! Return truth. */ DEBUG_EXIT; return PYINTTYPE_FROMLONG(1); } else { /* It failed. Build an exception and return an error. */ PyErr_SetString(PyExc_RuntimeError, lu_strerror(error)); if (error) lu_error_free(&error); DEBUG_EXIT; return NULL; } } /* Run the given function, using a Python entity passed in as the first * argument to the function. If the function fails, raise an error. */ static PyObject * libuser_admin_wrap(PyObject *self, PyObject *args, PyObject *kwargs, gboolean(*fn) (struct lu_context *, struct lu_ent *, struct lu_error ** error)) { PyObject *ent; char *keywords[] = { "entity", NULL }; PyObject *ret; DEBUG_ENTRY; /* Expect a Python Entity object and maybe some other stuff we * don't really care about. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", keywords, &EntityType, &ent)) { DEBUG_EXIT; return NULL; } ret = libuser_admin_do_wrap(self, (struct libuser_entity *)ent, fn); DEBUG_EXIT; return ret; } /* Run the given function, using a Python entity passed in as the first * argument to the function. Return a 1 or 0 depending on the boolean * returned by the function. */ static PyObject * libuser_admin_wrap_boolean(PyObject *self, PyObject *args, PyObject *kwargs, gboolean(*fn) (struct lu_context *, struct lu_ent *, struct lu_error ** error)) { struct libuser_entity *ent; struct lu_error *error = NULL; char *keywords[] = { "entity", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; gboolean ret; DEBUG_ENTRY; /* Expect a Python Entity object and maybe some other stuff we * don't really care about. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", keywords, &EntityType, &ent)) { DEBUG_EXIT; return NULL; } /* Run the function. */ ret = fn(me->ctx, ent->ent, &error); if (error != NULL) lu_error_free(&error); DEBUG_EXIT; return PYINTTYPE_FROMLONG(ret ? 1 : 0); } /* Wrap the setpass function for either type of entity. */ static PyObject * libuser_admin_setpass(PyObject *self, PyObject *args, PyObject *kwargs, gboolean(*fn) (struct lu_context *, struct lu_ent *, const char *, gboolean, struct lu_error **)) { struct libuser_entity *ent; struct lu_error *error = NULL; PyObject *is_crypted = NULL; const char *password = NULL; char *keywords[] = { "entity", "password", "is_crypted", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* We expect an entity object and a string. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!sO", keywords, &EntityType, &ent, &password, &is_crypted)) { DEBUG_EXIT; return NULL; } /* Call the appropriate setpass function for this entity. */ if (fn(me->ctx, ent->ent, password, ((is_crypted != NULL) && (PyObject_IsTrue(is_crypted))), &error)) { /* The change succeeded. Return a truth. */ DEBUG_EXIT; return PYINTTYPE_FROMLONG(1); } else { /* The change failed. Return an error. */ PyErr_SetString(PyExc_SystemError, lu_strerror(error)); if (error) { lu_error_free(&error); } DEBUG_EXIT; return NULL; } } /* Create a home directory for a user. */ static PyObject * libuser_admin_create_home(PyObject *self, PyObject *args, PyObject *kwargs) { struct libuser_entity *ent = NULL; struct lu_context *context; const char *dir, *skeleton = NULL; char *keywords[] = { "home", "skeleton", NULL }; uid_t uidNumber = 0; gid_t gidNumber = 0; struct lu_error *error = NULL; (void)self; DEBUG_ENTRY; context = ((struct libuser_admin *)self)->ctx; /* Expect an object and a string. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|s", keywords, &EntityType, &ent, &skeleton)) { DEBUG_EXIT; return NULL; } /* Get the user's home directory value. */ dir = lu_ent_get_first_string(ent->ent, LU_HOMEDIRECTORY); if (dir == NULL) { PyErr_SetString(PyExc_KeyError, "user does not have a `" LU_HOMEDIRECTORY "' attribute"); return NULL; } /* Get the user's UID. */ uidNumber = lu_ent_get_first_id(ent->ent, LU_UIDNUMBER); if (uidNumber == LU_VALUE_INVALID_ID) { PyErr_SetString(PyExc_KeyError, "user does not have a `" LU_UIDNUMBER "' attribute"); return NULL; } /* Get the user's GID. */ gidNumber = lu_ent_get_first_id(ent->ent, LU_GIDNUMBER); if (gidNumber == LU_VALUE_INVALID_ID) { PyErr_SetString(PyExc_KeyError, "user does not have a `" LU_GIDNUMBER "' attribute"); return NULL; } /* Attempt to populate the directory. */ if (lu_homedir_populate(context, skeleton, dir, uidNumber, gidNumber, 0700, &error)) { DEBUG_EXIT; return PYINTTYPE_FROMLONG(1); } else { /* Failure. Mark the error. */ PyErr_SetString(PyExc_RuntimeError, error ? error->string : _("error creating home directory for user")); if (error) { lu_error_free(&error); } DEBUG_EXIT; return NULL; } } /* Remove a user's home directory. */ static PyObject * libuser_admin_remove_home(PyObject *self, PyObject *args, PyObject *kwargs) { struct libuser_entity *ent = NULL; char *keywords[] = { "home", NULL }; struct lu_error *error = NULL; (void)self; DEBUG_ENTRY; /* We expect an object. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", keywords, &EntityType, &ent)) { DEBUG_EXIT; return NULL; } /* Remove the directory. */ if (lu_homedir_remove_for_user(ent->ent, &error)) { /* Successfully removed. */ DEBUG_EXIT; return PYINTTYPE_FROMLONG(1); } else { /* Removal failed. You'll have to come back for repeated * treatments. */ PyErr_SetString(PyExc_RuntimeError, error ? error->string : _("error removing home directory for user")); if (error) { lu_error_free(&error); } DEBUG_EXIT; return NULL; } } /* Remove a user's home directory if it is owned by them. */ static PyObject * libuser_admin_remove_home_if_owned(PyObject *self, PyObject *args, PyObject *kwargs) { struct libuser_entity *ent = NULL; char *keywords[] = { "user", NULL }; struct lu_error *error = NULL; (void)self; DEBUG_ENTRY; /* We expect an object. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", keywords, &EntityType, &ent)) { DEBUG_EXIT; return NULL; } /* Remove the directory. */ if (lu_homedir_remove_for_user_if_owned(ent->ent, &error)) { /* Successfully removed. */ DEBUG_EXIT; return PYINTTYPE_FROMLONG(1); } else { /* Removal failed. You'll have to come back for repeated * treatments. */ PyErr_SetString(PyExc_RuntimeError, error ? error->string : _("error removing home directory for user")); if (error) { lu_error_free(&error); } DEBUG_EXIT; return NULL; } } /* Move a user's home directory somewhere else. */ static PyObject * libuser_admin_move_home(PyObject *self, PyObject *args, PyObject *kwargs) { struct libuser_entity *ent = NULL; const char *olddir = NULL, *newdir = NULL; char *keywords[] = { "entity", "newhome", NULL }; struct lu_error *error = NULL; (void)self; DEBUG_ENTRY; /* We expect an object and an optional string. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|s", keywords, &EntityType, &ent, &newdir)) { DEBUG_EXIT; return NULL; } if (newdir != NULL) { /* We were given a string, so move the user's home directory * to the new location. */ olddir = lu_ent_get_first_string(ent->ent, LU_HOMEDIRECTORY); if (olddir == NULL) { PyErr_SetString(PyExc_KeyError, "user does not have a current `" LU_HOMEDIRECTORY "' attribute"); return NULL; } } else { /* We weren't given a string, so use the current and pending * values, and move from one to the other. */ olddir = lu_ent_get_first_string_current(ent->ent, LU_HOMEDIRECTORY); if (olddir == NULL) { PyErr_SetString(PyExc_KeyError, "user does not have a current `" LU_HOMEDIRECTORY "' attribute"); return NULL; } /* Now read the pending directory. */ newdir = lu_ent_get_first_string(ent->ent, LU_HOMEDIRECTORY); if (newdir == NULL) { PyErr_SetString(PyExc_KeyError, "user does not have a pending `" LU_HOMEDIRECTORY "' attribute"); return NULL; } } /* Attempt the move. */ if (lu_homedir_move(olddir, newdir, &error)) { /* Success! */ DEBUG_EXIT; return PYINTTYPE_FROMLONG(1); } else { /* Failure. Set an error. */ PyErr_SetString(PyExc_RuntimeError, error ? error->string : _("error moving home directory for user")); if (error) { lu_error_free(&error); } DEBUG_EXIT; return NULL; } } /* Create a user's mail spool. */ static PyObject * libuser_admin_create_remove_mail(PyObject *self, PyObject *args, PyObject *kwargs, gboolean action) { struct libuser_entity *ent = NULL; char *keywords[] = { "entity", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; struct lu_error *error; gboolean res; DEBUG_ENTRY; /* We expect an Entity object. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", keywords, &EntityType, &ent)) { DEBUG_EXIT; return NULL; } /* Now just pass it to the internal function. */ error = NULL; if (action) res = lu_mail_spool_create(me->ctx, ent->ent, &error); else res = lu_mail_spool_remove(me->ctx, ent->ent, &error); if (res) { return PYINTTYPE_FROMLONG(1); } else { PyErr_SetString(PyExc_RuntimeError, lu_strerror(error)); if (error != NULL) lu_error_free(&error); return NULL; } } /* Create a user's mail spool. */ static PyObject * libuser_admin_create_mail(PyObject *self, PyObject *args, PyObject *kwargs) { return libuser_admin_create_remove_mail(self, args, kwargs, TRUE); } /* Destroy a user's mail spool. */ static PyObject * libuser_admin_remove_mail(PyObject *self, PyObject *args, PyObject *kwargs) { return libuser_admin_create_remove_mail(self, args, kwargs, FALSE); } /* Add a user. */ static PyObject * libuser_admin_add_user(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *ret = NULL; PyObject *mkhomedir = self; PyObject *mkmailspool = self; PyObject *skeleton = NULL; struct libuser_entity *ent = NULL; struct lu_context *context = NULL; char *keywords[] = { "entity", "mkhomedir", "mkmailspool", "skeleton", NULL }; DEBUG_ENTRY; context = ((struct libuser_admin *)self)->ctx; /* Expect an entity and a flag to tell us if we need to create the * user's home directory. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|OOO", keywords, &EntityType, &ent, &mkhomedir, &mkmailspool, &skeleton)) { DEBUG_EXIT; return NULL; } /* Pass the entity object to lu_user_add(). */ ret = libuser_admin_do_wrap(self, ent, lu_user_add); if (ret != NULL && mkhomedir != NULL && PyObject_IsTrue(mkhomedir)) { PyObject *subargs, *subkwargs; Py_DECREF(ret); /* Create the user's home directory we need to pass the entity structure in a tuple, so create a tuple * and add just that object to it. */ subargs = PyTuple_New(1); Py_INCREF(ent); PyTuple_SetItem(subargs, 0, (PyObject*) ent); /* Create a dictionary for keyword args. */ subkwargs = PyDict_New(); if (skeleton != NULL) { Py_INCREF(skeleton); PyDict_SetItemString(subkwargs, "skeleton", skeleton); } /* We'll return the result of the creation call. */ ret = libuser_admin_create_home(self, subargs, subkwargs); Py_DECREF(subargs); Py_DECREF(subkwargs); } if (ret != NULL && mkmailspool != NULL && PyObject_IsTrue(mkmailspool)) { struct lu_error *error; Py_DECREF(ret); error = NULL; if (lu_mail_spool_create(context, ent->ent, &error)) ret = PYINTTYPE_FROMLONG(1); else { PyErr_SetString(PyExc_RuntimeError, lu_strerror(error)); if (error != NULL) lu_error_free(&error); ret = NULL; } } DEBUG_EXIT; return ret; } /* Add a group. Simple wrapper. */ static PyObject * libuser_admin_add_group(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_group_add); } static PyObject * libuser_admin_modify_user(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *ent = NULL; PyObject *ret; PyObject *mvhomedir = NULL; struct lu_ent *copy = NULL; char *keywords[] = { "entity", "mvhomedir", NULL }; DEBUG_ENTRY; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", keywords, &EntityType, &ent, &mvhomedir)) return NULL; if (mvhomedir != NULL) { if (!PyObject_IsTrue(mvhomedir)) /* Cache the PyObject_IsTrue() result */ mvhomedir = NULL; else { copy = lu_ent_new(); lu_ent_copy(((struct libuser_entity *)ent)->ent, copy); } } ret = libuser_admin_do_wrap(self, (struct libuser_entity *)ent, lu_user_modify); if (ret != NULL && mvhomedir != NULL) { PyObject *subargs, *subkwargs, *wrapped; Py_DECREF(ret); subargs = PyTuple_New(1); wrapped = libuser_wrap_ent(copy); copy = NULL; /* Will be freed along with `wrapped' */ PyTuple_SetItem(subargs, 0, wrapped); subkwargs = PyDict_New(); ret = libuser_admin_move_home(self, subargs, subkwargs); Py_DECREF(subargs); Py_DECREF(subkwargs); } if (copy != NULL) lu_ent_free(copy); DEBUG_EXIT; return ret; } /* Modify a group. Trivial wrapper. */ static PyObject * libuser_admin_modify_group(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_group_modify); } static PyObject * libuser_admin_delete_user(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *ent = NULL; PyObject *ret; PyObject *rmhomedir = NULL, *rmmailspool = NULL; struct lu_context *context; char *keywords[] = { "entity", "rmhomedir", "rmmailspool", NULL }; DEBUG_ENTRY; context = ((struct libuser_admin *)self)->ctx; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|OO", keywords, &EntityType, &ent, &rmhomedir, &rmmailspool)) { return NULL; } ret = libuser_admin_do_wrap(self, (struct libuser_entity *)ent, lu_user_delete); if (ret != NULL && rmhomedir != NULL && PyObject_IsTrue(rmhomedir)) { PyObject *subargs, *subkwargs; Py_DECREF(ret); subargs = PyTuple_New(1); Py_INCREF(ent); PyTuple_SetItem(subargs, 0, ent); subkwargs = PyDict_New(); ret = libuser_admin_remove_home(self, subargs, subkwargs); Py_DECREF(subargs); Py_DECREF(subkwargs); } if (ret != NULL && rmmailspool != NULL && PyObject_IsTrue(rmmailspool)) { struct libuser_entity *entity; struct lu_error *error; Py_DECREF(ret); entity = (struct libuser_entity *)ent; error = NULL; if (lu_mail_spool_remove(context, entity->ent, &error)) ret = PYINTTYPE_FROMLONG(1); else { PyErr_SetString(PyExc_RuntimeError, lu_strerror(error)); if (error != NULL) lu_error_free(&error); ret = NULL; } } DEBUG_EXIT; return ret; } /* Delete a group. Trivial wrapper. */ static PyObject * libuser_admin_delete_group(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_group_delete); } /* Lock a user account. Trivial wrapper. */ static PyObject * libuser_admin_lock_user(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_user_lock); } /* Lock a group account. Trivial wrapper. */ static PyObject * libuser_admin_lock_group(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_group_lock); } /* Unlock a user account. */ static PyObject * libuser_admin_unlock_user(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *ent, *nonempty = NULL; char *keywords[] = { "entity", "nonempty", NULL }; gboolean (*fn) (struct lu_context *, struct lu_ent *, struct lu_error **); PyObject *ret; DEBUG_ENTRY; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", keywords, &EntityType, &ent, &nonempty)) { DEBUG_EXIT; return NULL; } fn = (nonempty != NULL && PyObject_IsTrue (nonempty) ? lu_user_unlock_nonempty : lu_user_unlock); ret = libuser_admin_do_wrap(self, (struct libuser_entity *)ent, fn); DEBUG_EXIT; return ret; } /* Unlock a group account. */ static PyObject * libuser_admin_unlock_group(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *ent, *nonempty = NULL; char *keywords[] = { "entity", "nonempty", NULL }; gboolean (*fn) (struct lu_context *, struct lu_ent *, struct lu_error **); PyObject *ret; DEBUG_ENTRY; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", keywords, &EntityType, &ent, &nonempty)) { DEBUG_EXIT; return NULL; } fn = (nonempty != NULL && PyObject_IsTrue (nonempty) ? lu_group_unlock_nonempty : lu_group_unlock); ret = libuser_admin_do_wrap(self, (struct libuser_entity *)ent, fn); DEBUG_EXIT; return ret; } /* Check if a user account is locked. Trivial wrapper. */ static PyObject * libuser_admin_user_islocked(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap_boolean(self, args, kwargs, lu_user_islocked); } /* Check if a group account is locked. Trivial wrapper. */ static PyObject * libuser_admin_group_islocked(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap_boolean(self, args, kwargs, lu_group_islocked); } /* Remove a user's password. Trivial wrapper to make sure the right function * gets called. */ static PyObject * libuser_admin_removepass_user(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_user_removepass); } /* Remove a group's password. Trivial wrapper to make sure the right function * gets called. */ static PyObject * libuser_admin_removepass_group(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_wrap(self, args, kwargs, lu_group_removepass); } /* Set a user's password. Trivial wrapper to make sure the right setpass * function gets called. */ static PyObject * libuser_admin_setpass_user(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_setpass(self, args, kwargs, lu_user_setpass); } /* Set a group's password. Trivial wrapper to make sure the right setpass * function gets called. */ static PyObject * libuser_admin_setpass_group(PyObject *self, PyObject *args, PyObject *kwargs) { DEBUG_CALL; return libuser_admin_setpass(self, args, kwargs, lu_group_setpass); } /* Get a list of all users who match a particular pattern. */ static PyObject * libuser_admin_enumerate_users(PyObject *self, PyObject *args, PyObject *kwargs) { GValueArray *results; const char *pattern = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "pattern", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect a possible pattern. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", keywords, &pattern)) { DEBUG_EXIT; return NULL; } /* Read the list of all users. */ results = lu_users_enumerate(me->ctx, pattern, &error); if (error != NULL) lu_error_free(&error); /* Convert the list to a PyList. */ ret = convert_value_array_pylist(results); if (results != NULL) g_value_array_free(results); DEBUG_EXIT; return ret; } /* Get a list of all groups. */ static PyObject * libuser_admin_enumerate_groups(PyObject *self, PyObject *args, PyObject *kwargs) { GValueArray *results; const char *pattern = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "pattern", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Possibly expect a pattern. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", keywords, &pattern)) { DEBUG_EXIT; return NULL; } /* Get the list of groups. */ results = lu_groups_enumerate(me->ctx, pattern, &error); if (error != NULL) lu_error_free(&error); /* Convert the list to a PyList. */ ret = convert_value_array_pylist(results); if (results != NULL) g_value_array_free(results); DEBUG_EXIT; return ret; } /* Get the list of users who belong to a group. */ static PyObject * libuser_admin_enumerate_users_by_group(PyObject *self, PyObject *args, PyObject *kwargs) { GValueArray *results; char *group = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "group", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect the group's name. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &group)) { DEBUG_EXIT; return NULL; } /* Get a list of the users in this group. */ results = lu_users_enumerate_by_group(me->ctx, group, &error); if (error != NULL) lu_error_free(&error); ret = convert_value_array_pylist(results); if (results != NULL) g_value_array_free(results); DEBUG_EXIT; return ret; } /* Get a list of groups a user belongs to. */ static PyObject * libuser_admin_enumerate_groups_by_user(PyObject *self, PyObject *args, PyObject *kwargs) { GValueArray *results; char *user = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "user", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect the user's name. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &user)) { DEBUG_EXIT; return NULL; } /* Get the list. */ results = lu_groups_enumerate_by_user(me->ctx, user, &error); if (error != NULL) lu_error_free(&error); ret = convert_value_array_pylist(results); if (results != NULL) g_value_array_free(results); DEBUG_EXIT; return ret; } /* Get a list of all users who match a particular pattern. */ static PyObject * libuser_admin_enumerate_users_full(PyObject *self, PyObject *args, PyObject *kwargs) { GPtrArray *results; const char *pattern = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "pattern", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect a possible pattern. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", keywords, &pattern)) { DEBUG_EXIT; return NULL; } /* Read the list of all users. */ results = lu_users_enumerate_full(me->ctx, pattern, &error); if (error != NULL) lu_error_free(&error); /* Convert the list to a PyList. */ ret = convert_ent_array_pylist(results); if (results != NULL) g_ptr_array_free(results, TRUE); DEBUG_EXIT; return ret; } /* Get a list of all groups. */ static PyObject * libuser_admin_enumerate_groups_full(PyObject *self, PyObject *args, PyObject *kwargs) { GPtrArray *results; const char *pattern = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "pattern", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Possibly expect a pattern. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", keywords, &pattern)) { DEBUG_EXIT; return NULL; } /* Get the list of groups. */ results = lu_groups_enumerate_full(me->ctx, pattern, &error); if (error != NULL) lu_error_free(&error); /* Convert the list to a PyList. */ ret = convert_ent_array_pylist(results); if (results != NULL) g_ptr_array_free(results, TRUE); DEBUG_EXIT; return ret; } /* Get the list of users who belong to a group. */ static PyObject * libuser_admin_enumerate_users_by_group_full(PyObject *self, PyObject *args, PyObject *kwargs) { GPtrArray *results; char *group = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "group", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect the group's name. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &group)) { DEBUG_EXIT; return NULL; } /* Get a list of the users in this group. */ results = lu_users_enumerate_by_group_full(me->ctx, group, &error); if (error != NULL) lu_error_free(&error); ret = convert_ent_array_pylist(results); if (results != NULL) g_ptr_array_free(results, TRUE); DEBUG_EXIT; return ret; } /* Get a list of groups a user belongs to. */ static PyObject * libuser_admin_enumerate_groups_by_user_full(PyObject *self, PyObject *args, PyObject *kwargs) { GPtrArray *results; char *user = NULL; PyObject *ret; struct lu_error *error = NULL; char *keywords[] = { "user", NULL }; struct libuser_admin *me = (struct libuser_admin *) self; DEBUG_ENTRY; /* Expect the user's name. */ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &user)) { DEBUG_EXIT; return NULL; } /* Get the list. */ results = lu_groups_enumerate_by_user_full(me->ctx, user, &error); if (error != NULL) lu_error_free(&error); ret = convert_ent_array_pylist(results); if (results != NULL) g_ptr_array_free(results, TRUE); DEBUG_EXIT; return ret; } static PyObject * libuser_admin_get_first_unused_id_type(struct libuser_admin *me, PyObject * args, PyObject * kwargs, enum lu_entity_type enttype) { const char *key, *key_string, *val; char *keywords[] = { "start", NULL }; PY_LONG_LONG start = 500; g_return_val_if_fail(me != NULL, NULL); DEBUG_ENTRY; switch (enttype) { case lu_user: key = "userdefaults/" LU_UIDNUMBER; key_string = "userdefaults/" G_STRINGIFY_ARG(LU_UIDNUMBER); break; case lu_group: key = "groupdefaults/" LU_GIDNUMBER; key_string = "groupdefaults/" G_STRINGIFY_ARG(LU_GIDNUMBER); break; default: g_assert_not_reached(); } val = lu_cfg_read_single(me->ctx, key, NULL); if (val == NULL) val = lu_cfg_read_single(me->ctx, key_string, NULL); if (val != NULL) { intmax_t imax; char *end; errno = 0; imax = strtoimax(val, &end, 10); if (errno == 0 && *end == 0 && end != val && (id_t)imax == imax) start = imax; } if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|L", keywords, &start)) { DEBUG_EXIT; return NULL; } if ((id_t)start != start) { PyErr_SetString(PyExc_OverflowError, "ID out of range"); DEBUG_EXIT; return NULL; } return PyLong_FromLongLong(lu_get_first_unused_id(me->ctx, enttype, start)); } static PyObject * libuser_admin_get_first_unused_uid(PyObject *self, PyObject * args, PyObject *kwargs) { return libuser_admin_get_first_unused_id_type ((struct libuser_admin *)self, args, kwargs, lu_user); } static PyObject * libuser_admin_get_first_unused_gid(PyObject *self, PyObject * args, PyObject *kwargs) { return libuser_admin_get_first_unused_id_type ((struct libuser_admin *)self, args, kwargs, lu_group); } static struct PyMethodDef libuser_admin_methods[] = { {"lookupUserByName", (PyCFunction) libuser_admin_lookup_user_name, METH_VARARGS | METH_KEYWORDS, "search for a user with the given name"}, {"lookupUserById", (PyCFunction) libuser_admin_lookup_user_id, METH_VARARGS | METH_KEYWORDS, "search for a user with the given uid"}, {"lookupGroupByName", (PyCFunction) libuser_admin_lookup_group_name, METH_VARARGS | METH_KEYWORDS, "search for a group with the given name"}, {"lookupGroupById", (PyCFunction) libuser_admin_lookup_group_id, METH_VARARGS | METH_KEYWORDS, "search for a group with the given gid"}, {"initUser", (PyCFunction) libuser_admin_init_user, METH_VARARGS | METH_KEYWORDS, "create an object with defaults set for creating a new user"}, {"initGroup", (PyCFunction) libuser_admin_init_group, METH_VARARGS | METH_KEYWORDS, "create an object with defaults set for creating a new group"}, {"addUser", (PyCFunction) libuser_admin_add_user, METH_VARARGS | METH_KEYWORDS, "add the user object to the system user database"}, {"addGroup", (PyCFunction) libuser_admin_add_group, METH_VARARGS | METH_KEYWORDS, "add the group object to the system group database"}, {"modifyUser", (PyCFunction) libuser_admin_modify_user, METH_VARARGS | METH_KEYWORDS, "modify an entry in the system user database to match the object"}, {"modifyGroup", (PyCFunction) libuser_admin_modify_group, METH_VARARGS | METH_KEYWORDS, "modify an entry in the system group database to match the object"}, {"deleteUser", (PyCFunction) libuser_admin_delete_user, METH_VARARGS | METH_KEYWORDS, "remove the entry from the system user database which matches the object"}, {"deleteGroup", (PyCFunction) libuser_admin_delete_group, METH_VARARGS | METH_KEYWORDS, "remove the entry from the system group database which matches the object"}, {"lockUser", (PyCFunction) libuser_admin_lock_user, METH_VARARGS | METH_KEYWORDS, "lock the user account associated with the object"}, {"lockGroup", (PyCFunction) libuser_admin_lock_group, METH_VARARGS | METH_KEYWORDS, "lock the group account associated with the object"}, {"unlockUser", (PyCFunction) libuser_admin_unlock_user, METH_VARARGS | METH_KEYWORDS, "unlock the user account associated with the object"}, {"unlockGroup", (PyCFunction) libuser_admin_unlock_group, METH_VARARGS | METH_KEYWORDS, "unlock the group account associated with the object"}, {"userIsLocked", (PyCFunction) libuser_admin_user_islocked, METH_VARARGS | METH_KEYWORDS, "check if the user account associated with the object is locked"}, {"groupIsLocked", (PyCFunction) libuser_admin_group_islocked, METH_VARARGS | METH_KEYWORDS, "check if the group account associated with the object is locked"}, {"setpassUser", (PyCFunction) libuser_admin_setpass_user, METH_VARARGS | METH_KEYWORDS, "set the password for the user account associated with the object"}, {"setpassGroup", (PyCFunction) libuser_admin_setpass_group, METH_VARARGS | METH_KEYWORDS, "set the password for the group account associated with the object"}, {"removepassUser", (PyCFunction) libuser_admin_removepass_user, METH_VARARGS | METH_KEYWORDS, "remove the password for the user account associated with the object"}, {"removepassGroup", (PyCFunction) libuser_admin_removepass_group, METH_VARARGS | METH_KEYWORDS, "remove the password for the group account associated with the object"}, {"enumerateUsers", (PyCFunction) libuser_admin_enumerate_users, METH_VARARGS | METH_KEYWORDS, "get a list of users matching a pattern, in listed databases"}, {"enumerateGroups", (PyCFunction) libuser_admin_enumerate_groups, METH_VARARGS | METH_KEYWORDS, "get a list of groups matching a pattern, in listed databases"}, {"enumerateUsersByGroup", (PyCFunction) libuser_admin_enumerate_users_by_group, METH_VARARGS | METH_KEYWORDS, "get a list of users in a group"}, {"enumerateGroupsByUser", (PyCFunction) libuser_admin_enumerate_groups_by_user, METH_VARARGS | METH_KEYWORDS, "get a list of groups to which a user belongs"}, {"enumerateUsersFull", (PyCFunction) libuser_admin_enumerate_users_full, METH_VARARGS | METH_KEYWORDS, "get a list of users matching a pattern, in listed databases"}, {"enumerateGroupsFull", (PyCFunction) libuser_admin_enumerate_groups_full, METH_VARARGS | METH_KEYWORDS, "get a list of groups matching a pattern, in listed databases"}, {"enumerateUsersByGroupFull", (PyCFunction) libuser_admin_enumerate_users_by_group_full, METH_VARARGS | METH_KEYWORDS, "get a list of users in a group"}, {"enumerateGroupsByUserFull", (PyCFunction) libuser_admin_enumerate_groups_by_user_full, METH_VARARGS | METH_KEYWORDS, "get a list of groups to which a user belongs"}, {"promptConsole", (PyCFunction) libuser_admin_prompt_console, METH_VARARGS | METH_KEYWORDS, "prompt the user for information using the console, and confirming defaults"}, {"promptConsoleQuiet", (PyCFunction) libuser_admin_prompt_console_quiet, METH_VARARGS | METH_KEYWORDS, "prompt the user for information using the console, silently accepting defaults"}, {"createHome", (PyCFunction) libuser_admin_create_home, METH_VARARGS | METH_KEYWORDS, "create a home directory for a user"}, {"moveHome", (PyCFunction) libuser_admin_move_home, METH_VARARGS | METH_KEYWORDS, "move a user's home directory"}, {"removeHome", (PyCFunction) libuser_admin_remove_home, METH_VARARGS | METH_KEYWORDS, "remove a user's home directory"}, {"removeHomeIfOwned", (PyCFunction) libuser_admin_remove_home_if_owned, METH_VARARGS | METH_KEYWORDS, "remove a user's home directory if it is owned by them"}, {"createMail", (PyCFunction) libuser_admin_create_mail, METH_VARARGS | METH_KEYWORDS, "create a mail spool for a user"}, {"removeMail", (PyCFunction) libuser_admin_remove_mail, METH_VARARGS | METH_KEYWORDS, "remove a mail spool for a user"}, {"getUserShells", libuser_get_user_shells, METH_NOARGS, "return a list of valid shells"}, {"getFirstUnusedUid", (PyCFunction) libuser_admin_get_first_unused_uid, METH_VARARGS | METH_KEYWORDS, "return the first available uid"}, {"getFirstUnusedGid", (PyCFunction) libuser_admin_get_first_unused_gid, METH_VARARGS | METH_KEYWORDS, "return the first available gid"}, {NULL, NULL, 0, NULL}, }; static struct PyGetSetDef libuser_admin_getseters[] = { {"prompt", libuser_admin_get_prompt, libuser_admin_set_prompt, "a function to call for getting information from the user", NULL}, {"prompt_args", libuser_admin_get_prompt_args, libuser_admin_set_prompt_args, "additional arguments which should be passed to prompt", NULL}, {NULL, NULL, NULL, NULL, NULL} }; PyTypeObject AdminType = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "libuser.Admin", /* tp_name */ sizeof(struct libuser_admin), /* tp_basicsize */ 0, /* tp_itemsize */ libuser_admin_destroy, /* tp_dealloc */ 0, /* tp_print */ NULL, /* tp_getattr */ NULL, /* tp_setattr */ NULL, /* tp_compare */ NULL, /* tp_repr */ NULL, /* tp_as_number */ NULL, /* tp_as_sequence */ NULL, /* tp_as_mapping */ NULL, /* tp_hash */ NULL, /* tp_call */ NULL, /* tp_str */ NULL, /* tp_getattro */ NULL, /* tp_setattro */ NULL, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ "A libuser context", /* tp_doc */ NULL, /* tp_traverse */ NULL, /* tp_clear */ NULL, /* tp_richcompare */ 0, /* tp_weaklistoffset */ NULL, /* tp_iter */ NULL, /* tp_iternext */ libuser_admin_methods, /* tp_methods */ NULL, /* tp_members */ libuser_admin_getseters, /* tp_getseters */ }; PyObject * libuser_admin_new(PyObject *self, PyObject *args, PyObject *kwargs) { char *name = getlogin(), *modules = NULL, *create = NULL, *p, *q; PyObject *prompt = NULL, *prompt_data = NULL; char *keywords[] = { "name", "type", "modules", "create_modules", "prompt", "prompt_data", NULL, }; int type = lu_user; struct lu_context *context; struct lu_error *error = NULL; struct libuser_admin *ret; DEBUG_ENTRY; ret = PyObject_NEW(struct libuser_admin, &AdminType); if (ret == NULL) { return NULL; } self = (PyObject *) ret; p = ((char *) ret) + sizeof(PyObject); q = ((char *) ret) + sizeof(struct libuser_admin); memset(p, '\0', q - p); ret->ctx = NULL; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|sissOO", keywords, &name, &type, &modules, &create, &prompt, &prompt_data)) { Py_DECREF(ret); return NULL; } if ((type != lu_user) && (type != lu_group)) { PyErr_SetString(PyExc_ValueError, "invalid type"); Py_DECREF(ret); return NULL; } if (PyCallable_Check(prompt)) { ret->prompt_data[0] = prompt; Py_INCREF(ret->prompt_data[0]); } else { ret->prompt_data[0] = PyObject_GetAttrString(self, "promptConsole"); } if (prompt_data != NULL) ret->prompt_data[1] = prompt_data; else ret->prompt_data[1] = Py_None; Py_INCREF(ret->prompt_data[1]); #ifdef DEBUG_BINDING fprintf(stderr, "%sprompt at <%p>, self = <%p>, modules = <%p>, create = <%p>\n", getindent(), prompt, ret, modules, create); #endif context = lu_start(name, type, modules, create, libuser_admin_python_prompter, ret->prompt_data, &error); if (context == NULL) { PyErr_SetString(PyExc_SystemError, error ? error-> string : "error initializing " PACKAGE); if (error) { lu_error_free(&error); } Py_DECREF(ret); return NULL; } ret->ctx = context; DEBUG_EXIT; return self; } python/common.h000066400000000000000000000034251471266067600140630ustar00rootroot00000000000000#ifndef common_h #define common_h #include #include "../lib/user.h" #include "debug.h" #if PY_MAJOR_VERSION >= 3 #define PYINTTYPE_FROMLONG PyLong_FromLong #define PYSTRTYPE_ASSTRING PyUnicode_AsUTF8 #define PYSTRTYPE_CHECK PyUnicode_Check #define PYSTRTYPE_FROMFORMAT PyUnicode_FromFormat #define PYSTRTYPE_FROMSTRING PyUnicode_FromString #else #define PYINTTYPE_FROMLONG PyInt_FromLong #define PYSTRTYPE_ASSTRING PyString_AsString #define PYSTRTYPE_CHECK PyString_Check #define PYSTRTYPE_FROMFORMAT PyString_FromFormat #define PYSTRTYPE_FROMSTRING PyString_FromString #endif struct libuser_admin { PyObject_HEAD PyObject *prompt_data[2]; struct lu_context *ctx; }; struct libuser_entity { PyObject_HEAD struct lu_ent *ent; }; extern PyTypeObject AdminType G_GNUC_INTERNAL; extern PyTypeObject EntityType G_GNUC_INTERNAL; extern PyTypeObject PromptType G_GNUC_INTERNAL; PyObject *libuser_admin_new(PyObject *self, PyObject *args, PyObject *kwargs) G_GNUC_INTERNAL; gboolean libuser_admin_python_prompter(struct lu_prompt *prompts, int count, gpointer callback_data, struct lu_error **error) G_GNUC_INTERNAL; PyObject *libuser_admin_prompt_console(PyObject *self, PyObject *args, PyObject *kwargs) G_GNUC_INTERNAL; PyObject *libuser_admin_prompt_console_quiet(PyObject *self, PyObject *args, PyObject *kwargs) G_GNUC_INTERNAL; PyObject *convert_value_array_pylist(GValueArray *array) G_GNUC_INTERNAL; PyObject *convert_ent_array_pylist(GPtrArray *array) G_GNUC_INTERNAL; PyObject *libuser_prompt_new(PyObject *ignored_self, PyObject *ignore) G_GNUC_INTERNAL; PyObject *libuser_get_user_shells(PyObject *self, PyObject *ignored) G_GNUC_INTERNAL; PyObject *libuser_wrap_ent(struct lu_ent *ent) G_GNUC_INTERNAL; void initlibuser(void); #endif python/debug.h000066400000000000000000000012371471266067600136600ustar00rootroot00000000000000#ifndef debug_h #define debug_h #include #undef DEBUG_BINDING #ifdef DEBUG #define DEBUG_BINDING #endif #ifdef DEBUG_BINDING extern int indent G_GNUC_INTERNAL; char *getindent() G_GNUC_INTERNAL; #define DEBUG_ENTRY {\ fprintf(stderr, "%sEntering `%s' at line %d.\n", \ getindent(), __FUNCTION__, __LINE__); \ indent++; \ } #define DEBUG_CALL {\ fprintf(stderr, "%sIn `%s' at line %d.\n", \ getindent(), __FUNCTION__, __LINE__); \ } #define DEBUG_EXIT {\ indent--; \ fprintf(stderr, "%sLeaving `%s' at line %d.\n", \ getindent(), __FUNCTION__, __LINE__); \ } #else #define DEBUG_ENTRY #define DEBUG_CALL #define DEBUG_EXIT #endif #endif python/ent.c000066400000000000000000000474171471266067600133650ustar00rootroot00000000000000/* Copyright (C) 2001, 2002, 2004 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "common.h" /* Convert a g_value_array into a Python list of values. On error, raise a Python exception and return NULL. */ PyObject * convert_value_array_pylist(GValueArray *array) { PyObject *ret; size_t i; DEBUG_ENTRY; /* Create a new list. */ ret = PyList_New(0); /* Iterate over the array. */ for (i = 0; (array != NULL) && (i < array->n_values); i++) { GValue *value; value = g_value_array_get_nth(array, i); /* If the item is a G_TYPE_LONG, add it as a PyLong. */ if (G_VALUE_HOLDS_LONG(value)) { PyObject *val; long l; l = g_value_get_long(value); val = PyLong_FromLong(l); PyList_Append(ret, val); Py_DECREF(val); #ifdef DEBUG_BINDING fprintf(stderr, "adding %ld to list\n", l); #endif } else if (G_VALUE_HOLDS_INT64(value)) { PyObject *val; long long ll; ll = g_value_get_int64(value); val = PyLong_FromLongLong(ll); PyList_Append(ret, val); Py_DECREF(val); #ifdef DEBUG_BINDING fprintf(stderr, "adding %lld to list\n", ll); #endif } /* If the item is a G_TYPE_STRING, add it as a PyString. */ if (G_VALUE_HOLDS_STRING(value)) { PyObject *val; const char *s; s = g_value_get_string(value); val = PYSTRTYPE_FROMSTRING(s); if (val == NULL) goto err; PyList_Append(ret, val); Py_DECREF(val); #ifdef DEBUG_BINDING fprintf(stderr, "adding `%s' to list\n", s); #endif } } DEBUG_EXIT; return ret; err: Py_DECREF(ret); DEBUG_EXIT; return NULL; } /* Convert a (potentially NULL) GPtrArray of entities into a Python list of values. */ PyObject * convert_ent_array_pylist(GPtrArray *array) { PyObject *ret; size_t i; DEBUG_ENTRY; ret = PyList_New(0); for (i = 0; array != NULL && i < array->len; i++) { PyObject *ent; ent = libuser_wrap_ent(g_ptr_array_index(array, i)); PyList_Append(ret, ent); Py_DECREF(ent); } DEBUG_EXIT; return ret; } /* Wrap up an entity object in a pretty Python wrapper. */ PyObject * libuser_wrap_ent(struct lu_ent *ent) { struct libuser_entity *ret; DEBUG_ENTRY; /* No fair messing with me. */ if (ent == NULL) { DEBUG_EXIT; g_return_val_if_fail(ent != NULL, NULL); } /* Create a new Python object suitable for holding a struct lu_ent. */ ret = PyObject_NEW(struct libuser_entity, &EntityType); if (ret == NULL) { lu_ent_free(ent); DEBUG_EXIT; return NULL; } /* Keep track of the entity. */ ret->ent = ent; DEBUG_EXIT; return (PyObject *) ret; } /* Destroy an entity Python object. */ static void libuser_entity_destroy(PyObject *self) { struct libuser_entity *me; DEBUG_ENTRY; me = (struct libuser_entity *)self; lu_ent_free(me->ent); me->ent = NULL; PyObject_DEL(me); DEBUG_EXIT; } /* A helper function to convert a PyObject to a GValue. */ static gboolean libuser_convert_to_value(PyObject *item, GValue *value) { DEBUG_ENTRY; /* If it's a PyLong, convert it. */ if (PyLong_Check(item)) { PY_LONG_LONG ll; ll = PyLong_AsLongLong(item); if (PyErr_Occurred()) { DEBUG_EXIT; return FALSE; } if ((long)ll == ll) { g_value_init(value, G_TYPE_LONG); g_value_set_long(value, ll); } else if ((id_t)ll == ll && (id_t)ll != LU_VALUE_INVALID_ID) lu_value_init_set_id(value, ll); else { PyErr_SetString(PyExc_OverflowError, "Value out of range"); DEBUG_EXIT; return FALSE; } #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding (%lld) to list.\n", getindent(), (long long)ll); #endif } else /* If it's a PyString/PyUnicode, convert it. */ if (PYSTRTYPE_CHECK(item)) { g_value_init(value, G_TYPE_STRING); g_value_set_string(value, PYSTRTYPE_ASSTRING(item)); #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding (`%s') to list.\n", getindent(), PYSTRTYPE_ASSTRING(item)); #endif } else #if PY_MAJOR_VERSION < 3 && defined(Py_USING_UNICODE) if (PyUnicode_Check(item)) { PyObject *tmp; g_value_init(value, G_TYPE_STRING); tmp = PyUnicode_AsUTF8String(item); g_value_set_string(value, PyString_AsString(tmp)); #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding unicode (`%s') to list.\n", getindent(), PyString_AsString(tmp)); #endif Py_DECREF(tmp); } else #endif if (PyNumber_Check(item)) { PyObject *tmp; PY_LONG_LONG ll; tmp = PyNumber_Long(item); ll = PyLong_AsLongLong(item); if (PyErr_Occurred()) { Py_DECREF(tmp); DEBUG_EXIT; return FALSE; } Py_DECREF(tmp); if ((long)ll == ll) { g_value_init(value, G_TYPE_LONG); g_value_set_long(value, ll); } else if ((id_t)ll == ll && (id_t)ll != LU_VALUE_INVALID_ID) lu_value_init_set_id(value, ll); else { PyErr_SetString(PyExc_OverflowError, "Value out of range"); DEBUG_EXIT; return FALSE; } #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding (%lld) to list.\n", getindent(), ll); #endif } else { PyErr_SetString(PyExc_TypeError, "expected a string or a number"); DEBUG_EXIT; return FALSE; } DEBUG_EXIT; return TRUE; } /* The setattro function. Sets an attribute to have the value of the given * Python object. */ static int libuser_entity_setattro(PyObject *self, PyObject *attr_name, PyObject *value) { const char *name; struct libuser_entity *me; PyObject *list; struct lu_ent *copy; int ret; DEBUG_ENTRY; me = (struct libuser_entity *)self; if (!PYSTRTYPE_CHECK(attr_name)) { PyErr_SetString(PyExc_TypeError, "attribute name must be a string"); DEBUG_EXIT; return -1; } name = PYSTRTYPE_ASSTRING(attr_name); if (name == NULL) { DEBUG_EXIT; return -1; } copy = lu_ent_new(); lu_ent_copy(me->ent, copy); /* Parse out the arguments. We expect a single object. */ if (PyArg_ParseTuple(value, "O", &list)) { PyObject *item; GValue value; Py_ssize_t size, i; lu_ent_clear(me->ent, name); /* If the item is a tuple, scan it. */ if (PyTuple_Check(list)) { /* We need the length of the tuple. */ size = PyTuple_Size(list); #ifdef DEBUG_BINDING fprintf(stderr, "%sTuple has %jd items.\n", getindent(), (intmax_t)size); #endif /* Add each item in turn. */ memset(&value, 0, sizeof(value)); for (i = 0; i < size; i++) { item = PyTuple_GetItem(list, i); if (libuser_convert_to_value(item, &value) == FALSE) goto err; #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding tuple item %s.\n", getindent(), g_value_get_string(&value)); #endif lu_ent_add(me->ent, name, &value); g_value_unset(&value); } ret = 0; goto end; } else /* If the object is a list, add it as a set of values. */ if (PyList_Check(list)) { /* We need the length of the list. */ size = PyList_Size(list); #ifdef DEBUG_BINDING fprintf(stderr, "%sList has %jd items.\n", getindent(), (intmax_t)size); #endif /* Add each item in turn. */ memset(&value, 0, sizeof(value)); for (i = 0; i < size; i++) { item = PyList_GetItem(list, i); if (libuser_convert_to_value(item, &value) == FALSE) goto err; #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding list item %s.\n", getindent(), g_value_get_string(&value)); #endif lu_ent_add(me->ent, name, &value); g_value_unset(&value); } ret = 0; goto end; } else if (PYSTRTYPE_CHECK(list) || PyLong_Check(list) || PyNumber_Check(list)) { /* It's a single item, so just add it. */ if (libuser_convert_to_value(list, &value) == FALSE) goto err; #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding single item %s.\n", getindent(), g_value_get_string(&value)); #endif lu_ent_add(me->ent, name, &value); g_value_unset(&value); ret = 0; goto end; } } PyErr_SetString(PyExc_SystemError, "expected Number, Long, String, Tuple, or List"); err: lu_ent_copy(copy, me->ent); ret = -1; end: lu_ent_free(copy); DEBUG_EXIT; return ret; } /* Get the list of attributes, returning them as a PyList of PyStrings. */ static PyObject * libuser_entity_getattrlist(PyObject *self, PyObject *ignore) { struct libuser_entity *me; GList *list, *i; PyObject *ret; (void)ignore; DEBUG_ENTRY; me = (struct libuser_entity *)self; ret = PyList_New(0); list = lu_ent_get_attributes(me->ent); for (i = list; i != NULL; i = g_list_next(i)) { PyObject *str; str = PYSTRTYPE_FROMSTRING((char*)i->data); if (str == NULL) goto err; PyList_Append(ret, str); Py_DECREF(str); } g_list_free(list); DEBUG_EXIT; return ret; err: g_list_free(list); Py_DECREF(ret); DEBUG_EXIT; return NULL; } /* Get the names of the modules which had something to do with this object. */ static PyObject * libuser_entity_modules(PyObject *self, PyObject *ignore) { struct libuser_entity *me; (void)ignore; DEBUG_CALL; me = (struct libuser_entity *)self; return convert_value_array_pylist(me->ent->modules); } /* Get the values for a particular attribute, or somesuch. */ static PyObject * libuser_entity_get(PyObject *self, PyObject *args) { char *arg; PyObject *default_value = NULL; struct libuser_entity *me; DEBUG_ENTRY; me = (struct libuser_entity *)self; /* The first argument should be the name of the attribute, and the * optional argument is the default value. */ if (!PyArg_ParseTuple(args, "s|O", &arg, &default_value)) { DEBUG_EXIT; return NULL; } /* If we have this attribute, convert it to a list and hand it back. */ if (lu_ent_has(me->ent, arg)) { DEBUG_EXIT; return convert_value_array_pylist(lu_ent_get(me->ent, arg)); } else { /* If not, return a new reference for the default. */ if (default_value != NULL) { Py_INCREF(default_value); DEBUG_EXIT; return default_value; } else { /* If we have no default, return an empty list. */ DEBUG_EXIT; return PyList_New(0); } } } /* Add a value to the entity. */ static PyObject * libuser_entity_add(PyObject *self, PyObject *args) { struct libuser_entity *me; char *attr = NULL; PyObject *val; GValue value; DEBUG_ENTRY; me = (struct libuser_entity *)self; /* We expect a string and some kind of object. */ if (!PyArg_ParseTuple(args, "sO", &attr, &val)) { DEBUG_EXIT; return NULL; } /* Convert the item to a value. */ memset(&value, 0, sizeof(value)); if (libuser_convert_to_value(val, &value) == FALSE) { DEBUG_EXIT; return NULL; } lu_ent_add(me->ent, attr, &value); g_value_unset(&value); DEBUG_EXIT; Py_RETURN_NONE; } /* Set the attribute to a given list of arguments. */ static PyObject * libuser_entity_set(PyObject *self, PyObject *args) { struct libuser_entity *me; char *attr = NULL; PyObject *list = NULL, *val = NULL, *ret; GValue value; struct lu_ent *copy; DEBUG_ENTRY; me = (struct libuser_entity *)self; copy = lu_ent_new(); lu_ent_copy(me->ent, copy); /* We expect a string and some kind of object. */ if (PyArg_ParseTuple(args, "sO!", &attr, &PyList_Type, &list)) { Py_ssize_t i, size; /* It's a list. */ size = PyList_Size(list); #ifdef DEBUG_BINDING fprintf(stderr, "%sList has %jd items.\n", getindent(), (intmax_t)size); #endif /* Remove all current values. */ lu_ent_clear(me->ent, attr); /* Add each of the list items in turn. */ memset(&value, 0, sizeof(value)); for (i = 0; i < size; i++) { PyObject *item; item = PyList_GetItem(list, i); if (libuser_convert_to_value(item, &value) == FALSE) goto err; lu_ent_add(me->ent, attr, &value); g_value_unset(&value); } Py_INCREF(Py_None); ret = Py_None; goto end; } PyErr_Clear (); /* PyArg_ParseTuple() above has raised an exception */ /* It's an object of some kind. */ if (PyArg_ParseTuple(args, "sO", &attr, &val)) { memset(&value, 0, sizeof(value)); if (libuser_convert_to_value(val, &value) == FALSE) goto err; /* Remove all current values. */ lu_ent_clear(me->ent, attr); /* Add this one value. */ lu_ent_add(me->ent, attr, &value); g_value_unset(&value); Py_INCREF(Py_None); ret = Py_None; goto end; } PyErr_SetString(PyExc_SystemError, "expected value or list of values"); err: lu_ent_copy(copy, me->ent); ret = NULL; end: lu_ent_free(copy); DEBUG_EXIT; return ret; } /* Clear out all values for an attribute. */ static PyObject * libuser_entity_clear(PyObject *self, PyObject *args) { struct libuser_entity *me; char *arg; DEBUG_ENTRY; me = (struct libuser_entity *)self; if (!PyArg_ParseTuple(args, "s", &arg)) { DEBUG_EXIT; return NULL; } lu_ent_clear(me->ent, arg); Py_RETURN_NONE; } /* Clear out all values for all attributes. */ static PyObject * libuser_entity_clear_all(PyObject *self, PyObject *ignore) { struct libuser_entity *me; (void)ignore; DEBUG_ENTRY; me = (struct libuser_entity *)self; lu_ent_clear_all(me->ent); Py_RETURN_NONE; } /* Roll-back any changes we've made to the object since it was last read from or * saved to the information store. */ static PyObject * libuser_entity_revert(PyObject *self, PyObject *ignore) { struct libuser_entity *me; (void)ignore; DEBUG_ENTRY; me = (struct libuser_entity *)self; lu_ent_revert(me->ent); DEBUG_EXIT; Py_RETURN_NONE; } /* Get the length of the list of attributes. */ static Py_ssize_t libuser_entity_length(PyObject *self) { struct libuser_entity *me; GList *list; Py_ssize_t ret; DEBUG_CALL; me = (struct libuser_entity *)self; list = lu_ent_get_attributes(me->ent); ret = g_list_length(list); g_list_free(list); return ret; } /* Get the value for a particular item, dictionary style. */ static PyObject * libuser_entity_get_item(PyObject *self, PyObject *item) { struct libuser_entity *me; const char *attr; DEBUG_ENTRY; me = (struct libuser_entity *)self; /* Our lone argument should be a string. */ if (!PYSTRTYPE_CHECK(item)) { PyErr_SetString(PyExc_TypeError, "expected a string"); DEBUG_EXIT; return NULL; } attr = PYSTRTYPE_ASSTRING(item); if (!lu_ent_has(me->ent, attr)) { PyErr_SetString(PyExc_KeyError, "no such attribute defined for this entity"); DEBUG_EXIT; return NULL; } DEBUG_EXIT; return convert_value_array_pylist(lu_ent_get(me->ent, attr)); } /* Check if an object has values for the given attribute. */ static PyObject * libuser_entity_has_key(PyObject *self, PyObject *item) { char *attr; struct libuser_entity *me; DEBUG_ENTRY; me = (struct libuser_entity *)self; if (!PyArg_ParseTuple(item, "s", &attr)) { PyErr_SetString(PyExc_TypeError, "expected a tuple or string"); DEBUG_EXIT; return NULL; } return PYINTTYPE_FROMLONG(lu_ent_has(me->ent, attr) ? 1 : 0); } /* Set a value, dictionary style. */ static int libuser_entity_set_item(PyObject *self, PyObject *item, PyObject *args) { struct libuser_entity *me; const char *attr = NULL; Py_ssize_t i, size; int ret; GValue value; struct lu_ent *copy; DEBUG_ENTRY; me = (struct libuser_entity *)self; /* The item should be a string. */ if (!PYSTRTYPE_CHECK(item)) { PyErr_SetString(PyExc_TypeError, "expected a string"); DEBUG_EXIT; return -1; } attr = PYSTRTYPE_ASSTRING(item); #ifdef DEBUG_BINDING fprintf(stderr, "%sSetting item (`%s')...\n", getindent(), attr); #endif copy = lu_ent_new(); lu_ent_copy(me->ent, copy); /* If the new value is a list, convert each and add in turn. */ if (PyList_Check(args)) { size = PyList_Size(args); #ifdef DEBUG_BINDING fprintf(stderr, "%sList has %jd items.\n", getindent(), (intmax_t)size); #endif lu_ent_clear(me->ent, attr); memset(&value, 0, sizeof(value)); for (i = 0; i < size; i++) { item = PyList_GetItem(args, i); if (libuser_convert_to_value(item, &value) == FALSE) goto err; #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding (`%s') to `%s'.\n", getindent(), g_value_get_string(&value), attr); #endif lu_ent_add(me->ent, attr, &value); g_value_unset(&value); } ret = 0; goto end; } else /* If the new value is a tuple, convert each and add in turn. */ if (PyTuple_Check(args)) { size = PyTuple_Size(args); #ifdef DEBUG_BINDING fprintf(stderr, "%sTuple has %jd items.\n", getindent(), (intmax_t)size); #endif lu_ent_clear(me->ent, attr); memset(&value, 0, sizeof(value)); for (i = 0; i < size; i++) { item = PyTuple_GetItem(args, i); if (libuser_convert_to_value(item, &value) == FALSE) goto err; #ifdef DEBUG_BINDING fprintf(stderr, "%sAdding (`%s') to `%s'.\n", getindent(), g_value_get_string(&value), attr); #endif lu_ent_add(me->ent, attr, &value); g_value_unset(&value); } ret = 0; goto end; } else /* If the new value is a value, convert it and add it. */ if (PYSTRTYPE_CHECK(args) || PyNumber_Check(args) || PyLong_Check(args)) { lu_ent_clear(me->ent, attr); memset(&value, 0, sizeof(value)); if (libuser_convert_to_value(args, &value) == FALSE) goto err; #ifdef DEBUG_BINDING fprintf(stderr, "%sSetting (`%s') to `%s'.\n", getindent(), attr, g_value_get_string(value)); #endif lu_ent_add(me->ent, attr, &value); g_value_unset(&value); ret = 0; goto end; } PyErr_SetString(PyExc_TypeError, "expected values or list of values"); err: lu_ent_copy(copy, me->ent); ret = -1; end: lu_ent_free(copy); DEBUG_EXIT; return ret; } static PyMappingMethods libuser_entity_mapping_methods = { libuser_entity_length, /* mp_length */ libuser_entity_get_item, /* mp_subscript */ libuser_entity_set_item, /* mp_ass_subscript */ }; static PyMethodDef libuser_entity_methods[] = { {"getattrlist", libuser_entity_getattrlist, METH_NOARGS, "get a list of the attributes this entity has"}, {"has_key", libuser_entity_has_key, METH_VARARGS, "check if the entity has a given attribute"}, {"get", libuser_entity_get, METH_VARARGS, "get a list of the values for a given attribute"}, {"keys", libuser_entity_getattrlist, METH_NOARGS}, {"clear", libuser_entity_clear, METH_VARARGS, "clear the list of values for a given attribute"}, {"set", libuser_entity_set, METH_VARARGS, "set the list of values for a given attribute"}, {"add", libuser_entity_add, METH_VARARGS, "add a value to the current list of values for a given attribute"}, {"clear_all", libuser_entity_clear_all, METH_NOARGS, "clear all values for all attributes"}, {"revert", libuser_entity_revert, METH_NOARGS, "revert the list of values for a given attribute to the values which " "were set when the entity was looked up"}, {"modules", libuser_entity_modules, METH_NOARGS, "get a list of the modules which generated or looked up this object"}, {NULL, NULL, 0, NULL}, }; PyTypeObject EntityType = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "libuser.Entity", /* tp_name */ sizeof(struct libuser_entity), /* tp_basicsize */ 0, /* tp_itemsize */ libuser_entity_destroy, /* tp_dealloc */ 0, /* tp_print */ NULL, /* tp_getattr */ NULL, /* tp_setattr */ NULL, /* tp_compare */ NULL, /* tp_repr */ NULL, /* tp_as_number */ NULL, /* tp_as_sequence */ &libuser_entity_mapping_methods, /* tp_as_mapping */ NULL, /* tp_hash */ NULL, /* tp_call */ NULL, /* tp_str */ NULL, /* tp_getattro */ libuser_entity_setattro, /* tp_setattro */ NULL, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ "Data about a particular user or group account", /* tp_doc */ NULL, /* tp_traverse */ NULL, /* tp_clear */ NULL, /* tp_richcompare */ 0, /* tp_weaklistoffset */ NULL, /* tp_iter */ NULL, /* tp_iternext */ libuser_entity_methods, /* tp_methods */ }; python/gtk_prompt_callback.py000077500000000000000000000026771471266067600170110ustar00rootroot00000000000000#!/usr/bin/python import gtk def libuser_gtk_prompt_callback(prompts): dialog = gtk.Dialog() dialog.add_button(gtk.STOCK_OK, 1) dialog.add_button(gtk.STOCK_CANCEL, 0) table = gtk.Table(len(prompts), 2) dialog.vbox.pack_start(table) table.set_row_spacings(4) table.set_col_spacings(4) ret_list = [] for i in range(len(prompts)): prompt = prompts[i] label = gtk.Label(prompt.prompt) label.set_alignment(1.0, 0.5) table.attach(label, 0, 1, i, i + 1) entry = gtk.Entry() entry.set_visibility(prompt.visible) entry.set_text(prompt.default_value) table.attach(entry, 1, 2, i, i + 1) ret_list.append((prompt, entry)) table.show_all() print(dialog.run()) for (prompt, entry) in ret_list: prompt.value = entry.get_text() #regcall(libuser_gtk_prompt_callback, "give me some info") class fake_prompt: def __init__(self, prompt, visible, default_value, value): self.prompt = prompt self.visible = visible self.default_value = default_value self.value = value def __repr__(self): return repr({"prompt" : self.prompt, "visible" : self.visible, "default_value" : self.default_value, "value" : self.value}) def harness(): list = [] for t in [ ("User", 1, "crutcher", ""), ("Password", 0, "defpasswd", ""), ("Real Name", 1, "Crutcher Dunnavant", ""), ("Home Dir", 1, "Home Dir", ""), ("Shell", 1, "/bin/bash", "") ]: list.append(fake_prompt(*t)) libuser_gtk_prompt_callback(list) print(list) harness() python/ldap-script000077500000000000000000000005421471266067600145670ustar00rootroot00000000000000#!/usr/bin/python import libuser import os print("--------- Initializing.") admin = libuser.admin() print("--------- Lookup.") user = admin.lookupUserByName("ldap") if(not user): os.exit(0) print("--------- Setting new name.") user[libuser.USERNAME] = 'bubba' print(user[libuser.USERNAME]) print("--------- Modifying user.") admin.modifyUser(user) python/libusermodule.c000066400000000000000000000161221471266067600154370ustar00rootroot00000000000000/* Copyright (C) 2001,2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "common.h" #ifdef DEBUG_BINDING int indent = 0; char *getindent() { static char buf[LINE_MAX]; g_return_val_if_fail(indent < sizeof(buf), ""); memset(buf, 0, sizeof(buf)); memset(buf, ' ', indent); return buf; } #endif /* Return a list of the valid shells in the system, picked up from * getusershells(). */ PyObject * libuser_get_user_shells(PyObject *self, PyObject *ignored) { PyObject *ret; const char *shell; (void)self; (void)ignored; DEBUG_ENTRY; ret = PyList_New(0); setusershell(); while ((shell = getusershell()) != NULL) { PyObject *str; str = PYSTRTYPE_FROMSTRING(shell); if (str == NULL) goto err; PyList_Append(ret, str); Py_DECREF(str); } endusershell(); DEBUG_EXIT; return ret; err: endusershell(); Py_DECREF(ret); return NULL; } static PyObject * libuser_validate_id_value(PyObject *self, PyObject *value) { PY_LONG_LONG ll; DEBUG_ENTRY; ll = PyLong_AsLongLong(value); if (PyErr_Occurred()) goto error; if ((id_t)ll != ll) { PyErr_SetString(PyExc_OverflowError, _("Value out of range")); goto error; } if (ll < 0) { PyErr_SetString(PyExc_ValueError, _("ID must not be negative")); goto error; } if (ll == LU_VALUE_INVALID_ID) { PyErr_SetString(PyExc_ValueError, _("Invalid ID value")); goto error; } DEBUG_EXIT; Py_RETURN_NONE; error: DEBUG_EXIT; return NULL; } static PyMethodDef libuser_methods[] = { {"admin", (PyCFunction) libuser_admin_new, METH_VARARGS | METH_KEYWORDS, "create a new administration context"}, {"prompt", libuser_prompt_new, METH_NOARGS, "create and return a new prompt record"}, {"get_user_shells", libuser_get_user_shells, METH_NOARGS, "return a list of valid shells"}, {"ADMIN", (PyCFunction) libuser_admin_new, METH_VARARGS | METH_KEYWORDS, "create a new administration context"}, {"PROMPT", libuser_prompt_new, METH_NOARGS, "create and return a new prompt record"}, {"getUserShells", libuser_get_user_shells, METH_NOARGS, "return a list of valid shells"}, {"validateIdValue", libuser_validate_id_value, METH_O, "validate an id_t value"}, {NULL, NULL, 0, NULL}, }; static int initialize_libuser_module(PyObject *module) { if (PyType_Ready(&AdminType) < 0 || PyType_Ready(&EntityType) < 0 || PyType_Ready(&PromptType) < 0) return -1; PyModule_AddIntConstant(module, "USER", lu_user); PyModule_AddIntConstant(module, "GROUP", lu_group); /* User attributes. */ PyModule_AddStringConstant(module, "USERNAME", LU_USERNAME); PyModule_AddStringConstant(module, "USERPASSWORD", LU_USERPASSWORD); PyModule_AddStringConstant(module, "UIDNUMBER", LU_UIDNUMBER); PyModule_AddStringConstant(module, "GIDNUMBER", LU_GIDNUMBER); PyModule_AddStringConstant(module, "GECOS", LU_GECOS); PyModule_AddStringConstant(module, "HOMEDIRECTORY", LU_HOMEDIRECTORY); PyModule_AddStringConstant(module, "LOGINSHELL", LU_LOGINSHELL); /* Group attributes. */ PyModule_AddStringConstant(module, "GROUPNAME", LU_GROUPNAME); PyModule_AddStringConstant(module, "GROUPPASSWORD", LU_GROUPPASSWORD); PyModule_AddStringConstant(module, "ADMINISTRATORNAME", LU_ADMINISTRATORNAME); PyModule_AddStringConstant(module, "MEMBERNAME", LU_MEMBERNAME); /* Shadow attributes. */ PyModule_AddStringConstant(module, "SHADOWNAME", LU_SHADOWNAME); PyModule_AddStringConstant(module, "SHADOWPASSWORD", LU_SHADOWPASSWORD); PyModule_AddStringConstant(module, "SHADOWLASTCHANGE", LU_SHADOWLASTCHANGE); PyModule_AddStringConstant(module, "SHADOWMIN", LU_SHADOWMIN); PyModule_AddStringConstant(module, "SHADOWMAX", LU_SHADOWMAX); PyModule_AddStringConstant(module, "SHADOWWARNING", LU_SHADOWWARNING); PyModule_AddStringConstant(module, "SHADOWINACTIVE", LU_SHADOWINACTIVE); PyModule_AddStringConstant(module, "SHADOWEXPIRE", LU_SHADOWEXPIRE); PyModule_AddStringConstant(module, "SHADOWFLAG", LU_SHADOWFLAG); /* Additional fields. */ PyModule_AddStringConstant(module, "COMMONNAME", LU_COMMONNAME); PyModule_AddStringConstant(module, "GIVENNAME", LU_GIVENNAME); PyModule_AddStringConstant(module, "SN", LU_SN); PyModule_AddStringConstant(module, "ROOMNUMBER", LU_ROOMNUMBER); PyModule_AddStringConstant(module, "TELEPHONENUMBER", LU_TELEPHONENUMBER); PyModule_AddStringConstant(module, "HOMEPHONE", LU_HOMEPHONE); PyModule_AddStringConstant(module, "EMAIL", LU_EMAIL); /* Miscellaneous. */ PyModule_AddIntMacro(module, UT_NAMESIZE); PyModule_AddObject(module, "VALUE_INVALID_ID", PyLong_FromLongLong(LU_VALUE_INVALID_ID)); return 0; } PyDoc_STRVAR(libuser_module_doc, "Python bindings for the libuser library"); #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC initlibuser(void) { PyObject *module; DEBUG_ENTRY; module = Py_InitModule3("libuser", libuser_methods, libuser_module_doc); (void)initialize_libuser_module(module); DEBUG_EXIT; } #else /* PY_MAJOR_VERSION >= 3 */ static struct PyModuleDef libuser_module = { PyModuleDef_HEAD_INIT, "libuser", libuser_module_doc, -1, libuser_methods, NULL, NULL, NULL, NULL }; PyMODINIT_FUNC PyInit_libuser(void) { char *encoding; PyObject *module; DEBUG_ENTRY; /* Python 3 makes it fairly difficult to use non-UTF-8 encodings for * C strings. Support for this is not likely to be needed (among * other reasons because it is unlikely for other Python extensions to * care), so just make sure to fail loudly instead of silently * corrupting data. * * Python 3 always calls setlocale(LC_CTYPE, "") during initialization, * so doing this check already at module import time will properly * reflect system-wide encoding (the one we care for the system-wide * account databases and file system paths), even if the application * decided to locally override the locale to something else. */ encoding = nl_langinfo(CODESET); if (strcmp(encoding, "UTF-8") != 0) { PyErr_Format(PyExc_NotImplementedError, "libuser does not support non-UTF-8 locales with " "Python 3 (currently using %s)", encoding); goto err; } module = PyModule_Create(&libuser_module); if (module == NULL) goto err; if (initialize_libuser_module(module) < 0) goto err_module; DEBUG_EXIT; return module; err_module: Py_DECREF(module); err: DEBUG_EXIT; return NULL; } #endif /* PY_MAJOR_VERSION >= 3 */ python/misc.c000066400000000000000000000334401471266067600135210ustar00rootroot00000000000000/* Copyright (C) 2001,2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include "../lib/user.h" #include "../lib/user_private.h" #include "common.h" struct libuser_prompt { PyObject_HEAD struct lu_prompt prompt; }; #define Prompt_Check(__x) ((__x)->ob_type == &PromptType) gboolean libuser_admin_python_prompter(struct lu_prompt *prompts, int count, gpointer callback_data, struct lu_error **error) { PyObject **prompt_data = (PyObject **) callback_data; DEBUG_ENTRY; if (count > 0) { PyObject *list, *tuple, *ret; int i; if (!PyCallable_Check(prompt_data[0])) { lu_error_new(error, lu_error_generic, NULL); PyErr_SetString(PyExc_RuntimeError, "prompter is not callable"); DEBUG_EXIT; return FALSE; } list = PyList_New(0); for (i = 0; i < count; i++) { struct libuser_prompt *prompt; prompt = (struct libuser_prompt *) libuser_prompt_new(NULL, NULL); if (prompt == NULL) { Py_DECREF(list); DEBUG_EXIT; return FALSE; } prompt->prompt.key = g_strdup(prompts[i].key); prompt->prompt.prompt = g_strdup(prompts[i].prompt); prompt->prompt.domain = g_strdup(prompts[i].domain); prompt->prompt.visible = prompts[i].visible; prompt->prompt.default_value = g_strdup(prompts[i].default_value); prompt->prompt.value = g_strdup(prompts[i].value); prompt->prompt.free_value = g_free; PyList_Append(list, (PyObject *) prompt); Py_DECREF(prompt); } tuple = PyTuple_New(PyTuple_Check(prompt_data[1]) ? PyTuple_Size(prompt_data[1]) + 1 : 1); PyTuple_SetItem(tuple, 0, list); if (PyTuple_Check(prompt_data[1])) { Py_ssize_t j; for (j = 0; j < PyTuple_Size(prompt_data[1]); j++) { PyObject *obj; obj = PyTuple_GetItem(prompt_data[1], j); Py_INCREF(obj); PyTuple_SetItem(tuple, j + 1, obj); } } ret = PyObject_CallObject(prompt_data[0], tuple); if (PyErr_Occurred()) { PyErr_Print(); Py_DECREF(tuple); DEBUG_EXIT; lu_error_new(error, lu_error_generic, _ ("error while prompting for necessary information")); return FALSE; } for (i = 0; i < count; i++) { struct libuser_prompt *prompt; /* i doesn't have to be Py_ssize_t because count is int as well. */ prompt = (struct libuser_prompt *)PyList_GetItem(list, i); prompts[i].value = g_strdup(prompt->prompt.value); prompts[i].free_value = g_free; } Py_DECREF(tuple); Py_DECREF(ret); } DEBUG_EXIT; return TRUE; } static PyObject * libuser_admin_prompt(struct libuser_admin *self, PyObject * args, PyObject * kwargs, lu_prompt_fn * prompter) { Py_ssize_t count; int i; PyObject *list = NULL, *moreargs = NULL; struct lu_prompt *prompts; struct lu_error *error = NULL; char *keywords[] = { "prompt_list", "more_args", NULL }; g_return_val_if_fail(self != NULL, NULL); DEBUG_ENTRY; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", keywords, &PyList_Type, &list, &moreargs)) { DEBUG_EXIT; return NULL; } count = PyList_Size(list); if (count < 0) { PyErr_SetString(PyExc_TypeError, "prompt_list has no size; probably not a list"); DEBUG_EXIT; return NULL; } else if (count > INT_MAX) { PyErr_SetString(PyExc_ValueError, "too many prompts"); DEBUG_EXIT; return NULL; } /* i now may be int because count fits in int */ for (i = 0; i < count; i++) { PyObject *item; item = PyList_GetItem(list, i); DEBUG_CALL; if (!Prompt_Check(item)) { PyErr_SetString(PyExc_TypeError, "expected list of Prompt objects"); DEBUG_EXIT; return NULL; } DEBUG_CALL; } DEBUG_CALL; prompts = g_malloc0_n(count, sizeof(struct lu_prompt)); DEBUG_CALL; for (i = 0; i < count; i++) { struct libuser_prompt *obj; obj = (struct libuser_prompt *) PyList_GetItem(list, i); Py_INCREF(obj); prompts[i].key = g_strdup(obj->prompt.key ? : ""); prompts[i].domain = g_strdup(obj->prompt.domain ? : ""); prompts[i].prompt = g_strdup(obj->prompt.prompt ? : ""); prompts[i].default_value = obj->prompt.default_value ? g_strdup(obj->prompt.default_value) : NULL; prompts[i].visible = obj->prompt.visible; /* FIXME: free the values sometime? */ } #ifdef DEBUG_BINDING fprintf(stderr, "Prompter function promptConsole is at <%p>.\n", lu_prompt_console); fprintf(stderr, "Prompter function promptConsoleQuiet is at <%p>.\n", lu_prompt_console_quiet); fprintf(stderr, "Calling prompter function at <%p>.\n", prompter); #endif if (prompter(prompts, count, self->prompt_data, &error) != FALSE) { for (i = 0; i < count; i++) { struct libuser_prompt *obj; obj = (struct libuser_prompt *)PyList_GetItem(list, i); obj->prompt.value = g_strdup(prompts[i].value ? : ""); obj->prompt.free_value = g_free; if (prompts[i].value && prompts[i].free_value) { prompts[i].free_value(prompts[i].value); prompts[i].value = NULL; prompts[i].free_value = NULL; } Py_DECREF(obj); } DEBUG_EXIT; Py_RETURN_NONE; } else { if (error != NULL) lu_error_free(&error); for (i = 0; i < count; i++) { PyObject *obj; obj = PyList_GetItem(list, i); Py_DECREF(obj); } PyErr_SetString(PyExc_RuntimeError, "error prompting the user for information"); DEBUG_EXIT; return NULL; } } PyObject * libuser_admin_prompt_console(PyObject * self, PyObject * args, PyObject * kwargs) { DEBUG_CALL; return libuser_admin_prompt((struct libuser_admin *) self, args, kwargs, lu_prompt_console); } PyObject * libuser_admin_prompt_console_quiet(PyObject * self, PyObject * args, PyObject * kwargs) { DEBUG_CALL; return libuser_admin_prompt((struct libuser_admin *) self, args, kwargs, lu_prompt_console_quiet); } static void libuser_prompt_destroy(PyObject *self) { struct libuser_prompt *me; DEBUG_ENTRY; me = (struct libuser_prompt *)self; if (me->prompt.value && me->prompt.free_value) me->prompt.free_value(me->prompt.value); g_free((void *)me->prompt.key); g_free((void *)me->prompt.prompt); g_free((void *)me->prompt.domain); g_free((void *)me->prompt.default_value); memset(&me->prompt, 0, sizeof(me->prompt)); PyObject_DEL(me); DEBUG_EXIT; } /* "key" attribute getter */ static PyObject * libuser_prompt_get_key(PyObject *self, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; return PYSTRTYPE_FROMSTRING(me->prompt.key); } /* "key" attribute setter */ static int libuser_prompt_set_key(PyObject *self, PyObject *value, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_ENTRY; if (!PYSTRTYPE_CHECK(value)) { PyErr_SetString(PyExc_TypeError, "key must be a string"); DEBUG_EXIT; return -1; } g_free((char *)me->prompt.key); me->prompt.key = g_strdup(PYSTRTYPE_ASSTRING(value)); DEBUG_EXIT; return 0; } /* "prompt" attribute getter */ static PyObject * libuser_prompt_get_prompt(PyObject *self, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; return PYSTRTYPE_FROMSTRING(me->prompt.prompt); } /* "prompt" attribute setter */ static int libuser_prompt_set_prompt(PyObject *self, PyObject *value, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_ENTRY; if (!PYSTRTYPE_CHECK(value)) { PyErr_SetString(PyExc_TypeError, "prompt must be a string"); DEBUG_EXIT; return -1; } g_free((char *)me->prompt.prompt); me->prompt.prompt = g_strdup(PYSTRTYPE_ASSTRING(value)); DEBUG_EXIT; return 0; } /* "domain" attribute getter */ static PyObject * libuser_prompt_get_domain(PyObject *self, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; return PYSTRTYPE_FROMSTRING(me->prompt.domain ?: ""); } /* "domain" attribute setter */ static int libuser_prompt_set_domain(PyObject *self, PyObject *value, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_ENTRY; if (!PYSTRTYPE_CHECK(value)) { PyErr_SetString(PyExc_TypeError, "domain must be a string"); DEBUG_EXIT; return -1; } g_free((char *)me->prompt.domain); me->prompt.domain = g_strdup(PYSTRTYPE_ASSTRING(value)); DEBUG_EXIT; return 0; } /* "visible" attribute getter */ static PyObject * libuser_prompt_get_visible(PyObject *self, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; return PYINTTYPE_FROMLONG(me->prompt.visible); } /* "visible" attribute setter */ static int libuser_prompt_set_visible(PyObject *self, PyObject *value, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; me->prompt.visible = PyObject_IsTrue(value); return 0; } /* "default_value"/"defaultValue" attribute getter */ static PyObject * libuser_prompt_get_default_value(PyObject *self, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; if (me->prompt.default_value != NULL) return PYSTRTYPE_FROMSTRING(me->prompt.default_value); else Py_RETURN_NONE; } /* "default_value"/"defaultValue" attribute setter */ static int libuser_prompt_set_default_value(PyObject *self, PyObject *value, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_ENTRY; if (!PYSTRTYPE_CHECK(value)) { PyErr_SetString(PyExc_TypeError, "default value must be a string"); DEBUG_EXIT; return -1; } g_free((char *)me->prompt.default_value); me->prompt.default_value = (value == Py_None) ? NULL : g_strdup(PYSTRTYPE_ASSTRING(value)); DEBUG_EXIT; return 0; } /* "value" attribute getter */ static PyObject * libuser_prompt_get_value(PyObject *self, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_CALL; if (me->prompt.value != NULL) return PYSTRTYPE_FROMSTRING(me->prompt.value); else Py_RETURN_NONE; } /* "value" attribute setter */ static int libuser_prompt_set_value(PyObject *self, PyObject *value, void *unused) { struct libuser_prompt *me = (struct libuser_prompt *)self; (void)unused; DEBUG_ENTRY; if (!PYSTRTYPE_CHECK(value)) { PyErr_SetString(PyExc_TypeError, "value must be a string"); DEBUG_EXIT; return -1; } if (me->prompt.value && me->prompt.free_value) me->prompt.free_value(me->prompt.value); me->prompt.value = g_strdup(PYSTRTYPE_ASSTRING(value)); me->prompt.free_value = g_free; DEBUG_EXIT; return 0; } static PyObject * libuser_prompt_str(PyObject *self) { struct libuser_prompt *me; me = (struct libuser_prompt *)self; return PYSTRTYPE_FROMFORMAT("(key = \"%s\", prompt = \"%s\", " "domain = \"%s\", visible = %s, default_value = \"%s\", " "value = \"%s\")", me->prompt.key ? me->prompt.key : "", me->prompt.prompt ? me->prompt.prompt : "", me->prompt.domain ? me->prompt.domain : "", me->prompt.visible ? "true" : "false", me->prompt.default_value ? me->prompt.default_value : "", me->prompt.value ? me->prompt.value : ""); } PyObject * libuser_prompt_new(PyObject *ignored_self, PyObject *ignore) { struct libuser_prompt *ret; (void)ignored_self; (void)ignore; DEBUG_ENTRY; ret = PyObject_NEW(struct libuser_prompt, &PromptType); if (ret != NULL) { memset(&ret->prompt, 0, sizeof(ret->prompt)); } DEBUG_EXIT; return (PyObject *)ret; } static struct PyGetSetDef libuser_prompt_getseters[] = { {"key", libuser_prompt_get_key, libuser_prompt_set_key, "What information to prompt for, format \"module/name\"", NULL}, {"prompt", libuser_prompt_get_prompt, libuser_prompt_set_prompt, "Text of a prompt, possibly translated", NULL}, {"domain", libuser_prompt_get_domain, libuser_prompt_set_domain, "Text domain which contains translation sof the prompt", NULL}, {"visible", libuser_prompt_get_visible, libuser_prompt_set_visible, "Whether the response should be echoed", NULL}, {"default_value", libuser_prompt_get_default_value, libuser_prompt_set_default_value, "Default response value", NULL}, {"defaultValue", libuser_prompt_get_default_value, libuser_prompt_set_default_value, "Default response value", NULL}, {"value", libuser_prompt_get_value, libuser_prompt_set_value, "User's response", NULL}, {NULL, NULL, NULL, NULL, NULL} }; PyTypeObject PromptType = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "libuser.Prompt", /* tp_name */ sizeof(struct libuser_prompt), /* tp_basicsize */ 0, /* tp_itemsize */ libuser_prompt_destroy, /* tp_dealloc */ 0, /* tp_print */ NULL, /* tp_getattr */ NULL, /* tp_setattr */ NULL, /* tp_compare */ NULL, /* tp_repr */ NULL, /* tp_as_number */ NULL, /* tp_as_sequence */ NULL, /* tp_as_mapping */ NULL, /* tp_hash */ NULL, /* tp_call */ libuser_prompt_str, /* tp_str */ NULL, /* tp_getattro */ NULL, /* tp_setattro */ NULL, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ "Data passed to a prompter function", /* tp_doc */ NULL, /* tp_traverse */ NULL, /* tp_clear */ NULL, /* tp_richcompare */ 0, /* tp_weaklistoffset */ NULL, /* tp_iter */ NULL, /* tp_iternext */ NULL, /* tp_methods */ NULL, /* tp_members */ libuser_prompt_getseters, /* tp_getseters */ }; python/modules.txt000066400000000000000000000251671471266067600146420ustar00rootroot00000000000000This is an attempt to document the Python API. Anyone know a better way to format this stuff? libuser: Fields: - USERNAME - USERPASSWORD - UIDNUMBER - GIDNUMBER - GECOS - HOMEDIRECTORY - LOGINSHELL - GROUPNAME - GROUPPASSWORD - GIDNUMBER - ADMINISTRATORUID - MEMBERUID - SHADOWNAME - SHADOWPASSWORD - SHADOWEXPIRE - SHADOWFLAG - SHADOWINACTIVE - SHADOWLASTCHANGE - SHADOWMAX - SHADOWMIN - SHADOWWARNING - UT_NAMESIZE - VALUE_INVALID_ID Methods: - getUserShells: Returns a list of valid shells for users on the system. Arguments: None. Returns: a list of strings. - admin: Creates and returns a new libuser.Admin object. Keyword Arguments: name= type= info= auth= Returns: a libuser.Admin object. - PROMPT: Creates and returns a new libuser.Prompt object. Arguments: None. Returns: a libuser.Prompt object. - validateIdValue: Verifies an id_t value is in the valid range. Arguments: id_t integer value Returns: None. Raises an exception on error. Types: - Admin - An administrative context. Methods: - lookupUserByName: - lookupUserById: - lookupGroupByName: - lookupGroupById: Look up information about a user or group using the user or group's name or UID/GID. Arguments: A name as a string or a numeric ID. Returns: A libuser.Entity object containing information about the user or group, or None if there is no matching user or group. - initUser: - initGroup: Create a new libuser.Entity object, initialized with information suitable for creating a new user or group. Arguments: The new user or group's name as a string (required). A true/false value indicating whether this is a system account or not (optional, default no). Returns: A libuser.Entity object containing information for the user or group to be created. - addUser: Add a new user to the system: Arguments: A libuser.Entity object with the new user or group's information (required). A true/false object indicating whether or not the home directory for the user should be created (optional, defaults yes). A true/false object indicating whether or not the mail spool for the user should be created (optional, defaults yes). Keyword Arguments: skeleton= - addGroup: Add a new group to the system: Arguments: A libuser.Entity object with the new group's information (required). - modifyUser: Modify information about a user on the system. Arguments: A libuser.Entity object with the user or group's information (required). A true/false object indicating whether or not the home directory for the user should be moved from its original location to the location stored in the entity's libuser.HOMEDIRECTORY attribute (optional, default no). - modifyGroup: Modify information about a group on the system. Arguments: A libuser.Entity object with the group's information (required). - deleteUser: Remove a user account. Arguments: A libuser.Entity object with the user's information (required). A true/false value indicating whether or not this user's home directory should be removed (optional, default no). A true/false value indicating whether or not this user's mail spool should be removed (optional, default no). - deleteGroup: Remove a group from the system. Arguments: A libuser.Entity object with the group's information (required). - lockUser: - lockGroup: Lock a user or group account. Arguments: A libuser.Entity object with the user or group's information (required). A true/false object indicating whether unlocking - unlockUser: - unlockGroup: Unlock a user or group account. Arguments: A libuser.Entity object with the user or group's information (required). A true/false object indicating whether unlocking that would empty the password field should fail (optional, default no). - setpassUser: - setpassGroup: Arguments: A libuser.Entity object with the user or group's information (required). A string containing the new password (required). This is preferably in plaintext. An object indicating whether or not the string is a value returned by crypt.crypt(): a false value indicates that the string is plaintext. - removepassUser: - removepassGroup: Arguments: A libuser.Entity object with the user or group's information (required). - enumerateUsers: - enumerateGroups: Get a list of users or groups known to the library and its modules. Arguments: A pattern (wildcard-style) which returned user or group names should match (optional, default is all ("*")). Returns: a list of user or group names. - enumerateUsersByGroup: Get a list of users who belong to a particular group. Arguments: A group's name (required). Returns: a list of user names. - enumerateGroupsByUser: Get a list of groups to which a user belongs. Arguments: A user's name (required). Returns: a list of group names. - enumerateUsersFull: - enumerateGroupsFull: Get a list of users or groups known to the library and its modules, along with any data which can be looked up about them. - enumerateUsersByGroupFull: Get a list of users who belong to a particular group, along with any data which can be looked up about them. Arguments: A group's name (required). Returns: a list of libuser.Entity objects. - enumerateGroupsByUserFull: Get a list of groups to which a user belongs, along with any data which can be looked up about them. Arguments: A user's name (required). Returns: a list of libuser.Entity objects. - promptConsole: Prompt the user for information, including for information for which there is a supplied default. Arguments: A list of libuser.Prompt objects. Returns: a true/false value indicating success or failure. - promptConsoleQuiet: Prompt the user for information, except for information for which there is a supplied default. Arguments: A list of libuser.Prompt objects. Returns: a true/false value indicating success or failure. - createHome: Create user's home directory. Arguments: A libuser.Entity object for the user. Path to the skeleton home directory (optional, default is to use the system default) Returns: a true value, or raises an exception. - moveHome: Move user's home directory. Arguments: A libuser.Entity object for the user. Path for the new directory (optional, default is to use the "pending" value of the LU_HOMEDIRECTORY attribute) Returns: a true value, or raises an exception. - removeHome: Remove user's home directory. Arguments: A libuser.Entity object for the user. Returns: a true value, or raises an exception. - removeHomeIfOwned: Remove user's home directory if it is owned by them. Arguments: A libuser.Entity object for the user. Returns: a true value, or raises an exception. - createMail: Create user's mail spool. Arguments: A libuser.Entity object for the user. Returns: a true value, or raises an exception. - removeMail: Remove user's mail spool. Arguments: A libuser.Entity object for the user. Returns: a true value, or raises an exception. - getFirstUnusedUid: Search the system for an unused UID. Arguments: An initial guess (numeric). Returns: an unused UID. - getFirstUnusedGid: Search the system for an unused GID. Arguments: An initial guess (numeric). Returns: an unused GID. Fields: - prompt(function): A method which can be used to process lists of libuser.Prompt objects. Can be set to the object's promptConsole or promptConsoleQuiet methods, or a user-supplied function. - prompt_args: Additional arguments which should be passed to prompt(). - Entity - An entity. Methods: - getattrlist: Return a list of attributes this entity possesses. Arguments: None. Returns: a list of attribute names. - modules: Return a list of the modules which assisted in the creation or lookup of this libuser.Entity object. Arguments: None. Returns: a list of module names. - has_key: Check if this entity possesses a given attribute. Arguments: An attribute name (required). Returns: a true/false value. - get: Return a list of the values for one attribute this entity possesses. Arguments: An attribute name (required). Returns: a list of values. - set: Set a list of the values for one attribute this entity possesses. Arguments: An attribute name (required). A value or a list of values for that attribute (required). Returns: nothing. - add: Add a single value to the list of the values for one attribute this entity possesses. Arguments: An attribute name (required). A value for that attribute (required). Returns: nothing. - clear: Remove all values for one attribute this entity possesses. Arguments: An attribute name (required). Returns: nothing. - revert: Reset all values for one attribute this entity possesses to the values which it had when it was created. Arguments: None. Returns: nothing. Fields: All get()table and set()table attributes are also implemented using mapping conventions. - Prompt - A prompt record. Methods: None. Fields: - prompt(string): The text of the request which is given to the user. - domain(string): A gettext domain which may be able to provide translations of the prompt. - visible(true/false): Whether or not the user should be able to see a response while typing it. - default_value(string): A default answer. - value(string): The user's answer. python/prompt-script000077500000000000000000000015451471266067600151740ustar00rootroot00000000000000#!/usr/bin/python def prompt(prompts): for p in prompts: p.value = "prompt answers, fast" # main import libuser admin = libuser.admin() prompts = [libuser.prompt(), libuser.prompt()] prompts[0].prompt = "Enter some stuff" prompts[0].visible = 1 prompts[0].defaultValue = "blah" prompts[1].prompt = "Enter some invisible stuff" prompts[1].visible = 0 print("Prompting using default prompter.") admin.prompt(prompts) print(prompts[0].value) print(prompts[1].value) print("\nPrompting using promptConsole.") admin.promptConsole(prompts) print(prompts[0].value) print(prompts[1].value) print("\nPrompting using python function.") admin.prompt = prompt admin.prompt(prompts) print(prompts[0].value) print(prompts[1].value) print("\nPrompting using method.") admin.prompt = admin.promptConsole admin.prompt(prompts) print(prompts[0].value) print(prompts[1].value) python/test-script000077500000000000000000000044011471266067600146240ustar00rootroot00000000000000#!/usr/bin/python import libuser import os import time print("--------- Initializing.") admin = libuser.admin() print("--------- Listing.") for item in sorted(admin.enumerateUsers("l*")): print("Found a user named \"" + item + "\".") print("--------- Lookup.") ldap = admin.lookupUserByName("ldap") print("--------- Reading attribute (get).") print(ldap.get(libuser.LOGINSHELL)) print("--------- Reading attribute (map).") print(ldap[libuser.LOGINSHELL]) print("--------- Reading keys.") print(list(ldap.keys())) print("--------- Setting attribute.") ldap.set(libuser.LOGINSHELL, ["/bin/true"]) ldap[libuser.LOGINSHELL] = "/bin/true" ldap[libuser.LOGINSHELL] = ["/bin/true"] print("--------- Reading attribute (get).") print(ldap.get(libuser.LOGINSHELL)) print("--------- Reading attribute (map).") print(ldap[libuser.LOGINSHELL]) print("--------- Getting directory list.") dir(ldap) print("--------- Modifying user.") admin.modifyUser(ldap) print("--------- Enumerating members of the wheel group.") print(admin.enumerateUsersByGroup("wheel")) print("--------- Looking up the wheel group.") wheel = admin.lookupGroupByName("wheel") print("--------- Reading attribute (memberUid).") print(wheel[libuser.MEMBERNAME]) print("--------- Creating a new user (jimbo).") jimbo = admin.initUser("jimbo") for attr in jimbo.keys(): print(" " + attr + ":", jimbo.get(attr)) print("--------- Adding the user.") jimbo[libuser.HOMEDIRECTORY] = '/var/jimbo-home' print("Set home directory to " + jimbo[libuser.HOMEDIRECTORY][0]) admin.addUser(jimbo) print("--------- Grepping for the user.") os.system("grep jimbo /etc/passwd /etc/group /etc/shadow /etc/gshadow") try: dir = jimbo.get(libuser.HOMEDIRECTORY) print("--------- Looking at user's directory.") os.system("ls " + dir[0]) print("--------- Looking at mail spool directory.") os.system("ls -l /var/mail/*") except: pass print("--------- Removing the user.") admin.deleteUser(jimbo) admin.removeHome(jimbo) admin.removeMail(jimbo) print("--------- Grepping for the user.") os.system("grep jimbo /etc/passwd /etc/group /etc/shadow /etc/gshadow") print("--------- Getting a list of all users.") users = admin.enumerateUsersFull() for user in users: print(" User `" + user[libuser.USERNAME][0] + "' has uid ", user[libuser.UIDNUMBER][0]) samples/000077500000000000000000000000001471266067600125415ustar00rootroot00000000000000samples/enum.c000066400000000000000000000047161471266067600136610ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "../lib/user.h" int main(int argc, char **argv) { struct lu_context *lu; struct lu_error *error = NULL; gboolean group = FALSE, full = FALSE; int c; size_t i; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); while ((c = getopt(argc, argv, "fg")) != -1) { switch (c) { case 'f': full = TRUE; break; case 'g': group = TRUE; break; default: break; } } lu = lu_start(NULL, 0, NULL, NULL, lu_prompt_console, NULL, &error); if (lu == NULL) { fprintf(stderr, gettext("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); return 1; } if (full == FALSE) { GValueArray *names; if (group == FALSE) { names = lu_users_enumerate(lu, argv[optind], &error); } else { names = lu_groups_enumerate(lu, argv[optind], &error); } for (i = 0; (names != NULL) && (i < names->n_values); i++) { GValue *name; name = g_value_array_get_nth(names, i); g_print(" Found %s named `%s'.\n", group ? "group" : "user", g_value_get_string(name)); } if (names != NULL) { g_value_array_free(names); } } else { GPtrArray *accounts; if (group == FALSE) { accounts = lu_users_enumerate_full(lu, argv[optind], &error); } else { accounts = lu_groups_enumerate_full(lu, argv[optind], &error); } for (i = 0; (accounts != NULL) && (i < accounts->len); i++) { struct lu_ent *ent; ent = g_ptr_array_index(accounts, i); g_print("Found account:\n"); lu_ent_dump(ent, stdout); lu_ent_free(ent); } if (accounts != NULL) { g_ptr_array_free(accounts, TRUE); } } lu_end(lu); return 0; } samples/field.c000066400000000000000000000037241471266067600137760ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "../lib/user_private.h" int main(int argc, char **argv) { int fd; struct lu_error *error = NULL; gpointer lock; if (argc < 4) { printf("usage: %s [value]\n", strchr(argv[0], '/') ? strrchr(argv[0], '/') + 1 : argv[0]); exit(1); } fd = open(argv[1], (argc > 4) ? O_RDWR : O_RDONLY); if (fd == -1) { fprintf(stderr, "error opening `%s': %s\n", argv[1], strerror(errno)); exit(2); } if ((lock = lu_util_lock_obtain(fd, &error)) == NULL) { fprintf(stderr, "failed to lock `%s': %s\n", argv[1], lu_strerror(error)); close(fd); exit(3); } if (argc > 4) { if (!lu_util_field_write(fd, argv[2], atoi(argv[3]), argv[4], &error)) { fprintf(stderr, "failed to modify `%s': %s\n", argv[1], lu_strerror(error)); } } else { char *ret; ret = lu_util_field_read(fd, argv[2], atoi(argv[3]), &error); if (ret == NULL) { fprintf(stderr, "failed to read `%s': %s\n", argv[1], lu_strerror(error)); } printf("`%s'\n", ret); g_free(ret); } lu_util_lock_free(lock); close(fd); return 0; } samples/genusers000077500000000000000000000010621471266067600143210ustar00rootroot00000000000000#!/bin/sh userlist() { uid=$1 max=$2 while [ "$uid" -lt "$max" ] ; do echo "joe${uid}:password${uid}:${uid}:${uid}:joe with uid ${uid}:/var/joe${uid}:/bin/bash" uid=`expr $uid + 1` echo "joe${uid}:password${uid}:${uid}:joe${uid}:joe with uid ${uid}:/var/joe${uid}:/bin/bash" uid=`expr $uid + 1` echo "joe${uid}:password${uid}:${uid}:users:joe with uid ${uid}:/var/joe${uid}:/bin/bash" uid=`expr $uid + 1` done } if [ x$1 = x ] ; then uid=50000 else uid=$1 fi if [ x$2 = x ] ; then count=50 else count=$2 fi userlist $uid `expr $uid + $count` samples/homedir.c000066400000000000000000000042301471266067600143330ustar00rootroot00000000000000/* * Copyright (C) 2001,2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include "../apps/apputil.h" int main(int argc, char **argv) { struct lu_error *error = NULL; int add = 0, mod = 0, rem = 0, c; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); while ((c = getopt(argc, argv, "arm")) != -1) { switch (c) { case 'a': add = 1; break; case 'r': rem = 1; break; case 'm': mod = 1; break; default: break; } } if (add) { struct lu_context *ctx; struct lu_error *error; error = NULL; ctx = lu_start(NULL, 0, NULL, NULL, lu_prompt_console, NULL, &error); if (ctx == NULL) { fprintf(stderr, gettext("Error initializing %s: %s\n"), PACKAGE, lu_strerror(error)); return 1; } if (!lu_homedir_populate(ctx, "/etc/skel", argv[optind], 500, 500, 0700, &error)) { fprintf(stderr, "populate_homedir(%s) failed: %s\n", argv[optind], lu_strerror(error)); return 1; } lu_end(ctx); } if (mod && !lu_homedir_move(argv[optind], argv[optind + 1], &error)) { fprintf(stderr, "move_homedir(%s, %s) failed: %s\n", argv[optind], argv[optind + 1], lu_strerror(error)); return 1; } if (rem && !lu_homedir_remove(argv[optind], &error)) { fprintf(stderr, "remove_homedir(%s) failed: %s\n", argv[optind], lu_strerror(error)); return 1; } return 0; } samples/lookup.c000066400000000000000000000054351471266067600142250ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "../lib/user_private.h" int main(int argc, char **argv) { struct lu_context *lu; gboolean success, group = FALSE, byid = FALSE; int c; id_t id; struct lu_ent *ent, *tmp; struct lu_error *error = NULL; const char *modules = NULL; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); while ((c = getopt(argc, argv, "m:gn")) != -1) { switch (c) { case 'g': group = TRUE; break; case 'n': byid = TRUE; break; case 'm': modules = optarg; break; default: break; } } lu = lu_start(NULL, 0, modules, modules, lu_prompt_console, NULL, &error); if (lu == NULL) { fprintf(stderr, gettext("Error initializing %s: %s\n"), PACKAGE, lu_strerror(error)); return 1; } if (optind < argc) { intmax_t imax; char *end; errno = 0; imax = strtoimax(argv[optind], &end, 10); if (errno != 0 || *end != 0 || end == argv[optind] || (id_t)imax != imax) { fprintf(stderr, gettext("Invalid ID %s\n"), argv[optind]); return 1; } id = imax; } else id = 0; tmp = lu_ent_new(); if (group) { if (byid) { g_print(gettext("Searching for group with ID %jd.\n"), (intmax_t)id); success = lu_group_lookup_id(lu, id, tmp, &error); } else { g_print(gettext("Searching for group named %s.\n"), argv[optind]); success = lu_group_lookup_name(lu, argv[optind], tmp, &error); } } else { if (byid) { g_print(gettext ("Searching for user with ID %jd.\n"), (intmax_t)id); success = lu_user_lookup_id(lu, id, tmp, &error); } else { g_print(gettext("Searching for user named %s.\n"), argv[optind]); success = lu_user_lookup_name(lu, argv[optind], tmp, &error); } } ent = tmp; if (success) { fflush(NULL); lu_ent_dump(ent, stdout); fflush(NULL); } else { g_print(gettext("Entry not found.\n")); } lu_ent_free(ent); lu_end(lu); return 0; } samples/prompt.c000066400000000000000000000033721471266067600142330ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "../lib/user_private.h" int main(void) { struct lu_prompt prompts[] = { {"main/name", "Name", PACKAGE, TRUE, g_strdup("anonymous"), NULL, NULL}, {"main/password1", "Password1", PACKAGE, TRUE, g_strdup("anonymous"), NULL, NULL}, {"main/password2", "Password2", PACKAGE, FALSE, g_strdup("anonymous"), NULL, NULL}, }; struct lu_error *error = NULL; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); if (lu_prompt_console(prompts, sizeof(prompts) / sizeof(prompts[0]), NULL, &error)) { size_t i; g_print(gettext("Prompts succeeded.\n")); for (i = 0; i < sizeof(prompts) / sizeof(prompts[0]); i++) { if (prompts[i].value) { g_print("`%s'\n", prompts[i].value); prompts[i].free_value(prompts[i].value); } else { g_print("(null)\n"); } } } else { g_print(gettext("Prompts failed.\n")); } return 0; } samples/testuser.c000066400000000000000000000055051471266067600145700ustar00rootroot00000000000000/* * Copyright (C) 2000-2002 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include "../lib/user_private.h" static void dump_attribute(const char *attribute, struct lu_ent *ent) { GValueArray *array; array = lu_ent_get(ent, attribute); if (array != NULL) { size_t i; for (i = 0; i < array->n_values; i++) { GValue *value; value = g_value_array_get_nth(array, i); if (G_VALUE_HOLDS_STRING(value)) g_print("attribute %s = `%s'\n", attribute, g_value_get_string(value)); else if (G_VALUE_HOLDS_LONG(value)) g_print("attribute %s = %ld\n", attribute, g_value_get_long(value)); else if (G_VALUE_HOLDS_INT64(value)) g_print("attribute %s = %lld\n", attribute, (long long)g_value_get_int64(value)); } } } int main(void) { struct lu_context *ctx; struct lu_ent *ent, *tmp, *temp; struct lu_error *error = NULL; GList *ret; size_t i; void *control; bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); setlocale(LC_ALL, ""); control = g_malloc0(65536); ctx = lu_start(NULL, 0, NULL, NULL, lu_prompt_console, NULL, &error); if (ctx == NULL) { fprintf(stderr, gettext("Error initializing %s: %s.\n"), PACKAGE, lu_strerror(error)); exit(1); } g_print(gettext("Default user object classes:\n")); ret = lu_cfg_read(ctx, "userdefaults/objectclass", "bar"); for (i = 0; i < g_list_length(ret); i++) { g_print(" %s\n", (char *) g_list_nth(ret, i)->data); } g_print(gettext("Default user attribute names:\n")); ret = lu_cfg_read_keys(ctx, "userdefaults"); for (i = 0; i < g_list_length(ret); i++) { g_print(" %s\n", (char *) g_list_nth(ret, i)->data); } g_print(gettext("Getting default user attributes:\n")); ent = lu_ent_new(); lu_user_default(ctx, "newuser", FALSE, ent); lu_ent_dump(ent, stdout); dump_attribute(LU_UIDNUMBER, ent); g_print(gettext("Copying user structure:\n")); tmp = lu_ent_new(); lu_ent_copy(ent, tmp); temp = lu_ent_new(); lu_ent_copy(tmp, temp); lu_ent_dump(temp, stdout); lu_ent_free(ent); lu_ent_free(tmp); lu_ent_free(temp); lu_end(ctx); g_free(control); return 0; } tests/000077500000000000000000000000001471266067600122375ustar00rootroot00000000000000tests/.cvsignore000066400000000000000000000000061471266067600142330ustar00rootroot00000000000000*.pyc tests/alloc_port.c000066400000000000000000000034711471266067600145460ustar00rootroot00000000000000/* Copyright (C) 2011 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #undef NDEBUG #include /* Ask the kernel to allocate a port for 127.0.0.1, and return it. Reusing the port number is inherently racy, but the kernel tends to randomize the returned port number, so this makes collisions (with concurrently running variants of the same test suite) extremely unlikely. */ int main(void) { static const int reuse = 1; struct sockaddr_in sin; socklen_t len; int sock; sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); assert(sock != -1); assert(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == 0); sin.sin_family = AF_INET; sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_port = htons(0); assert(bind(sock, (const struct sockaddr *)&sin, sizeof(sin)) == 0); len = sizeof(sin); assert(getsockname(sock, (struct sockaddr *)&sin, &len) == 0); printf("%d\n", (int)ntohs(sin.sin_port)); close(sock); return EXIT_SUCCESS; } tests/config.conf.in000066400000000000000000000006251471266067600147630ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs modules = files shadow create_modules = files shadow [files] nonroot = yes [shadow] nonroot = yes # trailing garbage on section headers is ignored [test] garbage name = value1 # empty value name2 = # values of the same key are kept in order name = value2 # invalid section header [invalid # no '=' sign name3 # empty key name = value3 tests/config_default_useradd000066400000000000000000000002161471266067600166410ustar00rootroot00000000000000THIS_VARIABLE_IS_UNKNOWN=1@#$% EXPIRE=00:00 UTC May 1 1980 GROUP=4322 HOME=/custom/homes INACTIVE=4323 SHELL=/login/shell SKEL=/skeleton/path tests/config_import.conf.in000066400000000000000000000004131471266067600163500ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs modules = files shadow create_modules = files shadow [import] login_defs = @SRCDIR@/config_login.defs default_useradd = @SRCDIR@/config_default_useradd [files] nonroot = yes [shadow] nonroot = yes tests/config_import2.conf.in000066400000000000000000000003321471266067600164320ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs modules = files shadow create_modules = files shadow [import] login_defs = @SRCDIR@/config_login2.defs [files] nonroot = yes [shadow] nonroot = yes tests/config_login.defs000066400000000000000000000003641471266067600155420ustar00rootroot00000000000000THIS_VARIABLE_IS_UNKNOWN !@#$% GID_MIN 1234 MAIL_DIR /mail/dir/value MD5_CRYPT_ENAB yes PASS_MAX_DAYS 1235 PASS_MIN_DAYS 1236 PASS_WARN_AGE 1237 UID_MIN 1238 # Last value wins UID_MIN 1239 SHA_CRYPT_MIN_ROUNDS 1240 SHA_CRYPT_MAX_ROUNDS 1241 tests/config_login2.defs000066400000000000000000000000501471266067600156140ustar00rootroot00000000000000MD5_CRYPT_ENAB yes ENCRYPT_METHOD SHA256tests/config_override.conf.in000066400000000000000000000013071471266067600166600ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs modules = files shadow create_modules = files shadow mailspooldir = /overridden/mailspooldir crypt_style = des hash_rounds_min = 4250 hash_rounds_max = 4251 skeleton = /overridden/skeleton [import] login_defs = @SRCDIR@/config_login.defs default_useradd = @SRCDIR@/config_default_useradd [groupdefaults] LU_GIDNUMBER = 4242 [userdefaults] LU_SHADOWMAX = 4243 # LU_SHADOWMIN sp_min = 4244 LU_SHADOWWARNING = 4245 # LU_UIDNUMBER pw_uid = 4246 LU_SHADOWEXPIRE = 4247 LU_GIDNUMBER = 4248 LU_HOMEDIRECTORY = /overridden/home-%n # LU_SHADOWINACTIVE sp_inact = 4249 LU_LOGINSHELL = /overridden/shell [files] nonroot = yes [shadow] nonroot = yes tests/config_test.c000066400000000000000000000137031471266067600147130ustar00rootroot00000000000000/* Copyright (C) 2000-2002, 2005, 2008 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include "../lib/user.h" #undef NDEBUG #include static struct lu_context * start(const char *base, const char *file) { char *path; struct lu_context *ctx; struct lu_error *error; path = g_strconcat(base, "/", file, NULL); setenv("LIBUSER_CONF", path, 1); g_free(path); error = NULL; ctx = lu_start(NULL, 0, NULL, NULL, lu_prompt_console_quiet, NULL, &error); if (ctx == NULL) { fprintf(stderr, "Error initializing %s: %s.\n", PACKAGE, lu_strerror(error)); exit(1); } return ctx; } static void verify_var(struct lu_context *ctx, const char *key, ...) { GList *list, *it; va_list ap; const char *val; list = lu_cfg_read(ctx, key, NULL); it = list; va_start(ap, key); while ((val = va_arg(ap, const char *)) != NULL) { assert(it != NULL && strcmp(it->data, val) == 0); it = it->next; } va_end(ap); assert(it == NULL); g_list_free(list); } int main(int argc, char *argv[]) { struct lu_context *ctx; GList *list; assert(argc == 2); ctx = start(argv[1], "libuser.conf"); verify_var(ctx, "test/name", "value1", "value2", (const char *)NULL); list = lu_cfg_read(ctx, "test/nonexistent", "default"); assert(g_list_length(list) == 1); assert(strcmp(list->data, "default") == 0); g_list_free(list); verify_var(ctx, "test/nonexistent", (const char *)NULL); assert(strcmp(lu_cfg_read_single(ctx, "test/name", NULL), "value1") == 0); assert(strcmp(lu_cfg_read_single(ctx, "test/nonexistent", "default"), "default") == 0); assert(lu_cfg_read_single(ctx, "test/nonexistent", NULL) == NULL); list = lu_cfg_read_keys(ctx, "test"); assert(g_list_length(list) == 2); assert(strcmp(list->data, "name") == 0); assert(strcmp(list->next->data, "name2") == 0); g_list_free(list); list = lu_cfg_read_keys(ctx, "invalid"); assert(g_list_length(list) == 0); g_list_free(list); lu_end(ctx); ctx = start(argv[1], "libuser_import.conf"); verify_var(ctx, "groupdefaults/" LU_GIDNUMBER, "1234", (const char *)NULL); verify_var(ctx, "defaults/mailspooldir", "/mail/dir/value", (const char *)NULL); verify_var(ctx, "defaults/crypt_style", "md5", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWMAX, "1235", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWMIN, "1236", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWWARNING, "1237", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_UIDNUMBER, "1239", (const char *)NULL); verify_var(ctx, "defaults/hash_rounds_min", "1240", (const char *)NULL); verify_var(ctx, "defaults/hash_rounds_max", "1241", (const char *)NULL); /* From (echo $(($(date -d 'may 1 1980 0:0' +%s) / 24 / 3600))) */ verify_var(ctx, "userdefaults/" LU_SHADOWEXPIRE, "3773", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_GIDNUMBER, "4322", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_HOMEDIRECTORY, "/custom/homes/%n", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWINACTIVE, "4323", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_LOGINSHELL, "/login/shell", (const char *)NULL); verify_var(ctx, "defaults/skeleton", "/skeleton/path", (const char *)NULL); lu_end(ctx); ctx = start(argv[1], "libuser_import2.conf"); verify_var(ctx, "defaults/crypt_style", "SHA256", (const char *)NULL); lu_end(ctx); ctx = start(argv[1], "libuser_override.conf"); verify_var(ctx, "groupdefaults/LU_GIDNUMBER", "4242", (const char *)NULL); verify_var(ctx, "groupdefaults/" LU_GIDNUMBER, (const char *)NULL); verify_var(ctx, "defaults/mailspooldir", "/overridden/mailspooldir", (const char *)NULL); verify_var(ctx, "defaults/crypt_style", "des", (const char *)NULL); verify_var(ctx, "userdefaults/LU_SHADOWMAX", "4243", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWMAX, (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWMIN, "4244", (const char *)NULL); verify_var(ctx, "userdefaults/LU_SHADOWWARNING", "4245", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWWARNING, (const char *)NULL); verify_var(ctx, "userdefaults/" LU_UIDNUMBER, "4246", (const char *)NULL); verify_var(ctx, "defaults/hash_rounds_min", "4250", (const char *)NULL); verify_var(ctx, "defaults/hash_rounds_max", "4251", (const char *)NULL); verify_var(ctx, "userdefaults/LU_SHADOWEXPIRE", "4247", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWEXPIRE, (const char *)NULL); verify_var(ctx, "userdefaults/LU_GIDNUMBER", "4248", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_GIDNUMBER, (const char *)NULL); verify_var(ctx, "userdefaults/LU_HOMEDIRECTORY", "/overridden/home-%n", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_HOMEDIRECTORY, (const char *)NULL); verify_var(ctx, "userdefaults/" LU_SHADOWINACTIVE, "4249", (const char *)NULL); verify_var(ctx, "userdefaults/LU_LOGINSHELL", "/overridden/shell", (const char *)NULL); verify_var(ctx, "userdefaults/" LU_LOGINSHELL, (const char *)NULL); verify_var(ctx, "defaults/skeleton", "/overridden/skeleton", (const char *)NULL); lu_end(ctx); return 0; } tests/config_test.py000066400000000000000000000012211471266067600151110ustar00rootroot00000000000000import libuser import unittest LARGE_ID = 2147483648 class Tests(unittest.TestCase): def setUp(self): self.a = libuser.admin() def testGetFirstUnusedUid(self): self.assertEqual(self.a.getFirstUnusedUid(start=LARGE_ID + 100), LARGE_ID + 100) self.assertEqual(self.a.getFirstUnusedUid(), 1239) def testGetFirstUnusedGid(self): self.assertEqual(self.a.getFirstUnusedGid(start=LARGE_ID + 200), LARGE_ID + 200) self.assertEqual(self.a.getFirstUnusedGid(), 1234) def tearDown(self): del self.a if __name__ == '__main__': unittest.main() tests/config_test.sh000077500000000000000000000035071471266067600151070ustar00rootroot00000000000000#! /bin/sh # Automated config handling regression tester # # Copyright (c) 2004, 2005, 2008 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmac srcdir=$srcdir/tests workdir=$(pwd)/test_config trap 'status=$?; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" # Set up the client sed "s|@TOP_BUILDDIR@|$(pwd)|g" < "$srcdir"/config.conf.in \ > "$workdir/libuser.conf" sed -e "s|@TOP_BUILDDIR@|$(pwd)|g" -e "s|@SRCDIR@|$srcdir|g" \ < "$srcdir"/config_import.conf.in > "$workdir/libuser_import.conf" sed -e "s|@TOP_BUILDDIR@|$(pwd)|g" -e "s|@SRCDIR@|$srcdir|g" \ < "$srcdir"/config_import2.conf.in > "$workdir/libuser_import2.conf" sed -e "s|@TOP_BUILDDIR@|$(pwd)|g" -e "s|@SRCDIR@|$srcdir|g" \ < "$srcdir"/config_override.conf.in > "$workdir/libuser_override.conf" # Ugly non-portable hacks LD_LIBRARY_PATH=$(pwd)/lib/.libs export LD_LIBRARY_PATH PYTHONPATH=$(pwd)/python/.libs export PYTHONPATH $VALGRIND tests/config_test "$workdir" LIBUSER_CONF="$workdir/libuser_import.conf" export LIBUSER_CONF workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/config_test.py tests/default_pw.conf.in000066400000000000000000000015631471266067600156520ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs skeleton = /etc/skel mailspooldir = /var/mail modules = @MODULES@ create_modules = @MODULES@ crypt_style = md5 [userdefaults] LU_USERNAME = %n LU_UIDNUMBER = 500 LU_GIDNUMBER = %u # LU_USERPASSWORD = !! # LU_GECOS = %n # LU_HOMEDIRECTORY = /home/%n # LU_LOGINSHELL = /bin/bash # LU_SHADOWNAME = %n # LU_SHADOWPASSWORD = !! # LU_SHADOWLASTCHANGE = %d # LU_SHADOWMIN = 0 # LU_SHADOWMAX = 99999 # LU_SHADOWWARNING = 7 # LU_SHADOWINACTIVE = -1 # LU_SHADOWEXPIRE = -1 # LU_SHADOWFLAG = -1 [groupdefaults] LU_GROUPNAME = %n LU_GIDNUMBER = 500 # LU_GROUPPASSWORD = !! # LU_MEMBERUID = # LU_ADMINISTRATORUID = [ldap] server = 127.0.0.1:@LDAP_PORT@ basedn = dc=libuser bindtype = simple binddn = cn=Manager,dc=libuser [files] directory = @WORKDIR@/files nonroot = yes [shadow] directory = @WORKDIR@/files nonroot = yes tests/default_pw_test000077500000000000000000000144741471266067600153700ustar00rootroot00000000000000#! /bin/sh # Automated default password value regression tester # # Copyright (c) 2004, 2010 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmač srcdir=$srcdir/tests workdir=$(pwd)/test_default_pw trap 'status=$?; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" if [ ! -x /usr/sbin/slapd ] ; then have_ldap=no fi # Create a SSL key /usr/bin/openssl req -newkey rsa:2048 -keyout "$workdir"/key1 -nodes \ -x509 -days 2 -out "$workdir"/key3 2>/dev/null < "$workdir"/key2 cat "$workdir"/key{1,2,3} > "$workdir"/key.pem rm "$workdir"/key{1,2,3} sed "s|@WORKDIR@|$workdir|g" < "$srcdir"/slapd.conf.in > "$workdir"/slapd.conf LIBUSER_CONF=$workdir/libuser.conf export LIBUSER_CONF # Ugly non-portable hacks LD_LIBRARY_PATH=$(pwd)/lib/.libs export LD_LIBRARY_PATH PYTHONPATH=$(pwd)/python/.libs export PYTHONPATH exit_status=0 fail() # message { echo "Modules $modules: $1" >&2 exit_status=1 } get_file_password() # file under $workdir/files, entry name { echo "Checking $1 $2 ..." >&2 awk -F : "\$1 == \"$2\" { print \$2; }" "$workdir/files/$1" } get_ldap_password() # entry filter { echo "Checking $1 ..." >&2 ldapsearch -LLL -H ldap://127.0.0.1:$ldap_port -x -b 'dc=libuser' "$1" \ userPassword | sed -n 's/userPassword:: //p' } valid_password() # encoded value { local v=$($PYTHON -c " try: import crypt_r as crypt except ImportError: import crypt print(crypt.crypt('password', '$1')) ") [ "x$v" = "x$1" ] } ldap_port= # Try all concievable combinations and orders, assuming "shadow" requires # "files". for modules in \ files ldap \ 'files ldap' 'files shadow' 'ldap files' 'shadow files' \ 'files ldap shadow' 'files shadow ldap' 'ldap files shadow' \ 'ldap shadow files' 'shadow files ldap' 'shadow ldap files'; do need_ldap=`echo $modules | grep ldap | wc -l` test "$need_ldap" != "0" && test "$have_ldap" = "no" && continue echo ">>>modules: $modules" >&2 # Set up an LDAP server and database files mkdir "$workdir"/db "$workdir"/files touch "$workdir"/files/{passwd,shadow,group,gshadow} case $modules in *ldap*) # This is racy, but much better than a static port [ -z "$ldap_port" ] && ldap_port=$(tests/alloc_port) # FIXME: path /usr/sbin/slapd -h ldap://127.0.0.1:"$ldap_port"/ \ -f "$workdir"/slapd.conf & tests/wait_for_slapd_start "$workdir"/slapd.pid "$ldap_port" slapd_pid=$(cat "$workdir"/slapd.pid) trap 'status=$?; kill $slapd_pid; rm -rf "$workdir"; exit $status' 0 ldapadd -H ldap://127.0.0.1:$ldap_port -f "$srcdir/ldap_skel.ldif" -x \ -D cn=Manager,dc=libuser -w password ;; esac # Set up the client sed -e "s|@WORKDIR@|$workdir|g; s|@TOP_BUILDDIR@|$(pwd)|g" \ -e "s|@MODULES@|$modules|g; s|@LDAP_PORT@|$ldap_port|g" \ < "$srcdir"/default_pw.conf.in > "$LIBUSER_CONF" valid_combination=1 case $modules in *ldap*) case $modules in *files* | *shadow*) valid_combination=0 ;; esac esac # Point "$HOME/ldaprc" to "$srcdir"/ldaprc HOME="$srcdir" $VALGRIND $PYTHON "$srcdir"/default_pw_test.py \ "$valid_combination" if [ "$valid_combination" -ne 0 ]; then # Test that {passwd,group} handle passwords correctly case $modules in *shadow*) for pair in 'passwd user_default' 'passwd user_setpass' \ 'group group_default' 'group group_setpass'; do if [ "x$(get_file_password $pair)" != xx ]; then fail "Unexpected $pair password value" fi done ;; *files*) for pair in 'passwd user_default' 'group group_default'; do if [ "x$(get_file_password $pair)" != 'x!!' ]; then fail "Unexpected $pair password value" fi done for pair in 'passwd user_setpass' 'group group_setpass'; do if ! valid_password "$(get_file_password $pair)"; then fail "Password not set correctly for $pair" fi done ;; esac # Test that {shadow,gshadow} handle passwords correctly case $modules in *shadow*) for pair in 'shadow user_default' 'gshadow group_default'; do if [ "x$(get_file_password $pair)" != 'x!!' ]; then fail "Unexpected $pair password value" fi done for pair in 'shadow user_setpass' 'gshadow group_setpass'; do if ! valid_password "$(get_file_password $pair)"; then fail "Password not set correctly for $pair" fi done ;; esac # Test that ldap handles password correctly case $modules in *ldap*) if [ "x$(get_ldap_password uid=user_default | base64 -d)" \ != 'x{CRYPT}!!' ]; then fail "Unexpected uid=user_default password value" fi # The LDAP module does not add a group password by default. v=$(get_ldap_password cn=group_default) if [ "x$v" != x ]; then fail "Unexpected cn=group_default password" fi v=$(get_ldap_password uid=user_setpass | base64 -d) if [ "x${v#'{CRYPT}'}" = "x$v" ]; then fail "Missing {CRYPT} marker in uid=user_setpass" fi if ! valid_password "${v#'{CRYPT}'}"; then fail "Password not set correctly for uid=user_setpass" fi v=$(get_ldap_password cn=group_setpass | base64 -d) if [ "x${v#'{CRYPT}'}" = "x$v" ]; then fail "Missing {CRYPT} marker in cn=group_setpass" fi if ! valid_password "${v#'{CRYPT}'}"; then fail "Password not set correctly for cn=group_setpass" fi ;; esac fi case $modules in *ldap*) kill "$slapd_pid" trap 'status=$?; rm -rf "$workdir"; exit $status' 0 tests/wait_for_slapd_exit "$workdir"/slapd.pid "$ldap_port" ;; esac slapd_pid= rm -rf "$workdir"/db "$workdir"/files done (exit "$exit_status"); exit "$exit_status" tests/default_pw_test.py000066400000000000000000000040171471266067600160040ustar00rootroot00000000000000import libuser import sys import unittest def prompt_callback(prompts): for p in prompts: if p.key == 'ldap/password': p.value = 'password' else: p.value = p.default_value valid_combination=int(sys.argv[1]) del sys.argv[1] # For unittest.main() # This is ugly; ideally we would want a separate connection for each test case, # but libssl REALLY doesn't like being unloaded (libcrypto is not unloaded # and keeps pointers to unloaded libssl) if valid_combination != 0: admin = libuser.admin(prompt = prompt_callback) else: try: admin = libuser.admin(prompt = prompt_callback) except SystemError: print("Initialization error, as expected") sys.exit(0) sys.stderr.write("Initialization unexpectedly succeeded\n") sys.exit(1) # Test case order matches the order of function pointers in struct lu_module class Tests(unittest.TestCase): def setUp(self): # See the comment at the libuser.admin() call above self.a = admin def testGroupAddDefault(self): # Add a group with default attributes e = self.a.initGroup('group_default') self.a.addGroup(e) del e def testGroupAddSetpass(self): # Add a group, changing a password explicitly e = self.a.initGroup('group_setpass') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group_setpass') self.a.setpassGroup(e, 'password', False) del e def testUserAddDefault(self): # Add an user with default attributes e = self.a.initUser('user_default') self.a.addUser(e, False, False) del e def testUserAddSetpass(self): # Add an user, changing password explicitly e = self.a.initUser('user_setpass') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user_setpass') self.a.setpassUser(e, 'password', False) del e def tearDown(self): del self.a if __name__ == '__main__': unittest.main() tests/files.conf.in000066400000000000000000000014151471266067600146160ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs skeleton = /etc/skel mailspooldir = /var/mail modules = files shadow create_modules = files shadow crypt_style = md5 [userdefaults] LU_USERNAME = %n LU_UIDNUMBER = 500 LU_GIDNUMBER = %u # LU_USERPASSWORD = !! # LU_GECOS = %n # LU_HOMEDIRECTORY = /home/%n # LU_LOGINSHELL = /bin/bash # LU_SHADOWNAME = %n # LU_SHADOWPASSWORD = !! # LU_SHADOWLASTCHANGE = %d # LU_SHADOWMIN = 0 # LU_SHADOWMAX = 99999 # LU_SHADOWWARNING = 7 # LU_SHADOWINACTIVE = -1 # LU_SHADOWEXPIRE = -1 # LU_SHADOWFLAG = -1 [groupdefaults] LU_GROUPNAME = %n LU_GIDNUMBER = 500 # LU_GROUPPASSWORD = !! # LU_MEMBERUID = # LU_ADMINISTRATORUID = [files] directory = @WORKDIR@/files nonroot = yes [shadow] directory = @WORKDIR@/files nonroot = yes tests/files_test000077500000000000000000000037441471266067600143360ustar00rootroot00000000000000#! /bin/sh # Automated files/shadow regression tester # # Copyright (c) 2004 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmac srcdir=$srcdir/tests workdir=$(pwd)/test_files trap 'status=$?; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" # Set up an the environment mkdir "$workdir"/files cat > "$workdir"/files/passwd <<\EOF empty_user::42:43::: 077:077:230:231:077:077:077 +:::::: -nonis_user:::::: +nis_user:::1504::: user12_3:*:1203:1203::: user30_4::3004:3004::: EOF cat > "$workdir"/files/shadow <<\EOF empty_user:::::::: 077:077:077:077:077:077:077:077:077 +:::::::: -nonis_user:::::::: +nis_user:::::::: EOF cat > "$workdir"/files/group <<\EOF empty_group::44: 077:077:1730:077 +::: +nis_group:::user30_4 -nonis_group::: group15_4::1504: group27_3:*:2703: EOF cat > "$workdir"/files/gshadow <<\EOF empty_group::: 077:077:077:077 EOF # Set up the client LIBUSER_CONF=$workdir/libuser.conf export LIBUSER_CONF sed "s|@WORKDIR@|$workdir|g; s|@TOP_BUILDDIR@|$(pwd)|g" \ < "$srcdir"/files.conf.in > "$LIBUSER_CONF" # Ugly non-portable hacks LD_LIBRARY_PATH=$(pwd)/lib/.libs export LD_LIBRARY_PATH PYTHONPATH=$(pwd)/python/.libs export PYTHONPATH workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/files_test.py tests/files_test.py000066400000000000000000001737661471266067600147760ustar00rootroot00000000000000import libuser import os import os.path import sys import unittest # crypt was dropped from Python standard library in 3.13 try: import crypt_r as crypt except ImportError: import crypt LARGE_ID = 2147483648 workdir = os.environ['workdir'] # Test case order matches the order of function pointers in struct lu_module class Tests(unittest.TestCase): def setUp(self): self.a = libuser.admin() # testUsesElevatedPrivileges # Not provided in Python bindings def testUserLookupName1(self): e = self.a.initUser('user2_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user2_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user2_1']) del e e = self.a.lookupUserByName('user2_does_not_exist') self.assertEqual(e, None) def testUserLookupName2(self): # Handling of empty/default values e = self.a.lookupUserByName('empty_user') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['empty_user']) self.assertEqual(e[libuser.USERPASSWORD], ['']) self.assertEqual(e[libuser.UIDNUMBER], [42]) self.assertEqual(e[libuser.GIDNUMBER], [43]) self.assertEqual(e[libuser.GECOS], ['']) self.assertEqual(e[libuser.HOMEDIRECTORY], ['']) self.assertEqual(e[libuser.LOGINSHELL], ['/bin/bash']) self.assertEqual(e[libuser.SHADOWNAME], ['empty_user']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [-1]) self.assertEqual(e[libuser.SHADOWMIN], [-1]) self.assertEqual(e[libuser.SHADOWMAX], [-1]) self.assertEqual(e[libuser.SHADOWWARNING], [-1]) self.assertEqual(e[libuser.SHADOWINACTIVE], [-1]) self.assertEqual(e[libuser.SHADOWEXPIRE], [-1]) self.assertEqual(e[libuser.SHADOWFLAG], [-1]) def testUserLookupName3(self): # Handling of values that appear to be numbers e = self.a.lookupUserByName('077') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['077']) self.assertEqual(e[libuser.USERPASSWORD], ['077']) self.assertEqual(e[libuser.UIDNUMBER], [230]) self.assertEqual(e[libuser.GIDNUMBER], [231]) self.assertEqual(e[libuser.GECOS], ['077']) self.assertEqual(e[libuser.HOMEDIRECTORY], ['077']) self.assertEqual(e[libuser.LOGINSHELL], ['077']) self.assertEqual(e[libuser.SHADOWNAME], ['077']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['077']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [77]) self.assertEqual(e[libuser.SHADOWMIN], [77]) self.assertEqual(e[libuser.SHADOWMAX], [77]) self.assertEqual(e[libuser.SHADOWWARNING], [77]) self.assertEqual(e[libuser.SHADOWINACTIVE], [77]) self.assertEqual(e[libuser.SHADOWEXPIRE], [77]) self.assertEqual(e[libuser.SHADOWFLAG], [77]) def testUserLookupId(self): e = self.a.initUser('user3_1') self.a.addUser(e, False, False) uid = e[libuser.UIDNUMBER][0] del e e = self.a.lookupUserById(uid) self.assertIsNotNone(e) self.assertEqual(e[libuser.UIDNUMBER], [uid]) del e e = self.a.lookupUserById(999999) self.assertEqual(e, None) del e e = self.a.lookupUserById(LARGE_ID + 310) self.assertEqual(e, None) def testUserDefault(self): # Test the default/LU_USERNAME = %n preserves usernames that appear to # be numbers e = self.a.initUser('077') self.assertEqual(e[libuser.USERNAME], ['077']) # Setting of USERPASSWORD to "x" tested below def testUserAddPrep(self): # Nothing to do with the "files" module: tests of lu_name_allowed() e = self.a.initUser('very_long_name_123456789_123456789_123456789') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) del e e = self.a.initUser('non_ascii_name_\xff') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) del e e = self.a.initUser('nonprintable_name_\x0a') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) del e e = self.a.initUser('nonprintable_name_\x7f') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) del e e = self.a.initUser('name with spaces') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) del e e = self.a.initUser('-name_with_hyphen') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) del e e = self.a.initUser('0.allowed-Name-TEST_0123456789$') self.a.addUser(e, False, False) def testUserAdd1(self): # A minimal case e = self.a.initUser('user6_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user6_1']) # Default values self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.LOGINSHELL], ['/bin/bash']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) self.assertEqual(e[libuser.SHADOWMIN], [0]) self.assertEqual(e[libuser.SHADOWMAX], [99999]) self.assertEqual(e[libuser.SHADOWWARNING], [7]) self.assertEqual(e[libuser.SHADOWINACTIVE], [-1]) self.assertEqual(e[libuser.SHADOWEXPIRE], [-1]) self.assertEqual(e[libuser.SHADOWFLAG], [-1]) def testUserAdd2(self): # A maximal case e = self.a.initUser('user6_2') e[libuser.USERNAME] = 'user6_2username' e[libuser.USERPASSWORD] = '!!baduser6_2' # Should be ignored e[libuser.UIDNUMBER] = 4237 e[libuser.GIDNUMBER] = 3742 e[libuser.GECOS] = 'Full Name,Office,1234,4321' e[libuser.HOMEDIRECTORY] = '/home/user6_2home' e[libuser.LOGINSHELL] = '/sbin/nologinuser6_2' e[libuser.SHADOWPASSWORD] = '!!user6_2' e[libuser.SHADOWLASTCHANGE] = 12681 e[libuser.SHADOWMIN] = 5 e[libuser.SHADOWMAX] = 98765 e[libuser.SHADOWWARNING] = 10 e[libuser.SHADOWINACTIVE] = 8 e[libuser.SHADOWEXPIRE] = 9 e[libuser.SHADOWFLAG] = 255 e[libuser.COMMONNAME] = 'Common Name' e[libuser.GIVENNAME] = 'Given' e[libuser.SN] = 'Surname' e[libuser.ROOMNUMBER] = 404 e[libuser.TELEPHONENUMBER] = 1234 e[libuser.HOMEPHONE] = 4321 e[libuser.EMAIL] = 'user6_2@example.com' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_2username') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user6_2username']) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.UIDNUMBER], [4237]) self.assertEqual(e[libuser.GIDNUMBER], [3742]) self.assertEqual(e[libuser.GECOS], ['Full Name,Office,1234,4321']) self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/user6_2home']) self.assertEqual(e[libuser.LOGINSHELL], ['/sbin/nologinuser6_2']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!user6_2'], ) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [12681]) self.assertEqual(e[libuser.SHADOWMIN], [5]) self.assertEqual(e[libuser.SHADOWMAX], [98765]) self.assertEqual(e[libuser.SHADOWWARNING], [10]) self.assertEqual(e[libuser.SHADOWINACTIVE], [8]) self.assertEqual(e[libuser.SHADOWEXPIRE], [9]) self.assertEqual(e[libuser.SHADOWFLAG], [255]) # Not stored by the modules # self.assertEqual(e[libuser.COMMONNAME], ['Common Name']) # self.assertEqual(e[libuser.GIVENNAME], ['Given']) # self.assertEqual(e[libuser.SN], ['Surname']) # self.assertEqual(e[libuser.ROOMNUMBER], [404]) # self.assertEqual(e[libuser.TELEPHONENUMBER], [1234]) # self.assertEqual(e[libuser.HOMEPHONE], [4321]) # self.assertEqual(e[libuser.EMAIL], ['user6_2@example.com']) def testUserAdd3(self): # Large IDs. e = self.a.initUser('user6_3') e[libuser.UIDNUMBER] = LARGE_ID + 630 e[libuser.GIDNUMBER] = LARGE_ID + 631 self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user6_3']) self.assertEqual(e[libuser.UIDNUMBER], [LARGE_ID + 630]) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 631]) def testUserAdd4(self): # Error handling when creating the home directory e = self.a.initUser('user6_4') e[libuser.HOMEDIRECTORY] = os.path.join(workdir, 'this_doesnt_exist', 'user6_4') self.assertRaises(RuntimeError, self.a.addUser, e, mkmailspool = False) def testUserAdd5(self): # Non-absolute home directories e = self.a.initUser('user6_5') e[libuser.HOMEDIRECTORY] = 'this_is_a_relative_path' self.assertRaises(RuntimeError, self.a.addUser, e, mkmailspool = False) def testUserAdd6(self): # ':' in field values # libuser.USERPASSWORD not tested because lu_shadow_user_add_prep() # always replaces it by 'x'. libuser.UIDNUMBER not tested because # ent_has_name_and_id() interprets the value as a number. for field in (libuser.USERNAME, libuser.GIDNUMBER, libuser.GECOS, libuser.HOMEDIRECTORY, libuser.SHADOWPASSWORD, libuser.SHADOWLASTCHANGE, libuser.SHADOWMIN, libuser.SHADOWMAX, libuser.SHADOWWARNING, libuser.SHADOWINACTIVE, libuser.SHADOWEXPIRE): e = self.a.initUser('user_6_6' + field) e[field] = str(e[field][0]) + ':x' self.assertRaises(RuntimeError, self.a.addUser, e, False, False) # libuser.SHADOWFLAG not tested because it is parsed as an integer e = self.a.initUser('user_6_6' + libuser.LOGINSHELL) e[libuser.LOGINSHELL] = e[libuser.LOGINSHELL][0] + ':x' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user_6_6' + libuser.LOGINSHELL) self.assertIn(':', e[libuser.LOGINSHELL][0]) def testUserAdd7(self): # Let the user specify dangerous/dubious home directory paths explicitly for name in ('.', '..'): e = self.a.initUser(name) e[libuser.HOMEDIRECTORY] = '/home/' + name self.a.addUser(e, False, False) del e e = self.a.lookupUserByName(name) self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/' + name]) self.a.deleteUser(e, False, False) e = self.a.initUser('user6_7') e[libuser.HOMEDIRECTORY] = '/home/..' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_7') self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/..']) # ... but never create such home directory paths by default for name in ('.', '..'): e = self.a.initUser(name) self.assertRaises(RuntimeError, self.a.addUser, e, False, False) def testUserAdd8(self): # Adding duplicate entries e = self.a.initUser('user6_8') self.a.addUser(e, False, False) del e e = self.a.initUser('user6_8') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) def testUserAdd9(self): # '\n' in field values # libuser.USERPASSWORD not tested because lu_shadow_user_add_prep() # always replaces it by 'x'. libuser.UIDNUMBER not tested because # ent_has_name_and_id() interprets the value as a number. for field in (libuser.USERNAME, libuser.GIDNUMBER, libuser.GECOS, libuser.HOMEDIRECTORY, libuser.LOGINSHELL, libuser.SHADOWPASSWORD, libuser.SHADOWLASTCHANGE, libuser.SHADOWMIN, libuser.SHADOWMAX, libuser.SHADOWWARNING, libuser.SHADOWINACTIVE, libuser.SHADOWEXPIRE, libuser.SHADOWFLAG): e = self.a.initUser('user_6_9' + field) e[field] = str(e[field][0]) + '\nx' self.assertRaises(RuntimeError, self.a.addUser, e, False, False) def testUserAdd10(self): # Adding a duplicate user UID e = self.a.initUser('user6_10') self.a.addUser(e, False, False) e2 = self.a.initUser('user6_10_2') e2[libuser.UIDNUMBER] = e[libuser.UIDNUMBER] self.assertRaises(RuntimeError, self.a.addUser, e2, False, False) def testUserMod1(self): # A minimal case e = self.a.initUser('user7_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_1') self.assertNotEqual(e[libuser.GECOS], ['user7newGECOS']) e[libuser.GECOS] = 'user7newGECOS' self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_1') self.assertEqual(e[libuser.GECOS], ['user7newGECOS']) def testUserMod2(self): # A maximal case, including renaming e = self.a.initUser('user7_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_2') self.assertNotEqual(e[libuser.USERNAME], ['user7_2username']) e[libuser.USERNAME] = 'user7_2username' self.assertNotEqual(e[libuser.USERPASSWORD], ['!!pwuser7_2']) e[libuser.USERPASSWORD] = '!!pwuser7_2' self.assertNotEqual(e[libuser.UIDNUMBER], [4238]) e[libuser.UIDNUMBER] = 4238 self.assertNotEqual(e[libuser.GIDNUMBER], [3742]) e[libuser.GIDNUMBER] = 3742 self.assertNotEqual(e[libuser.GECOS], ['Full Name,Office,1234,4321']) e[libuser.GECOS] = 'Full Name,Office,1234,4321' self.assertNotEqual(e[libuser.HOMEDIRECTORY], ['/home/user7_2home']) e[libuser.HOMEDIRECTORY] = '/home/user7_2home' self.assertNotEqual(e[libuser.LOGINSHELL], ['/sbin/nologinuser7_2']) e[libuser.LOGINSHELL] = '/sbin/nologinuser7_2' self.assertNotEqual(e[libuser.SHADOWPASSWORD], ['!!user7_2']) e[libuser.SHADOWPASSWORD] = '!!user7_2' self.assertNotEqual(e[libuser.SHADOWLASTCHANGE], [12681]) e[libuser.SHADOWLASTCHANGE] = 12681 self.assertNotEqual(e[libuser.SHADOWMIN], [5]) e[libuser.SHADOWMIN] = 5 self.assertNotEqual(e[libuser.SHADOWMAX], [98765]) e[libuser.SHADOWMAX] = 98765 self.assertNotEqual(e[libuser.SHADOWWARNING], [10]) e[libuser.SHADOWWARNING] = 10 self.assertNotEqual(e[libuser.SHADOWINACTIVE], [8]) e[libuser.SHADOWINACTIVE] = 8 self.assertNotEqual(e[libuser.SHADOWEXPIRE], [9]) e[libuser.SHADOWEXPIRE] = 9 self.assertNotEqual(e[libuser.SHADOWFLAG], [255]) e[libuser.SHADOWFLAG] = 255 self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_2') self.assertEqual(e, None) del e e = self.a.lookupUserByName('user7_2username') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user7_2username']) self.assertEqual(e[libuser.USERPASSWORD], ['!!pwuser7_2']) self.assertEqual(e[libuser.UIDNUMBER], [4238]) self.assertEqual(e[libuser.GIDNUMBER], [3742]) self.assertEqual(e[libuser.GECOS], ['Full Name,Office,1234,4321']) self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/user7_2home']) self.assertEqual(e[libuser.LOGINSHELL], ['/sbin/nologinuser7_2']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!user7_2']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [12681]) self.assertEqual(e[libuser.SHADOWMIN], [5]) self.assertEqual(e[libuser.SHADOWMAX], [98765]) self.assertEqual(e[libuser.SHADOWWARNING], [10]) self.assertEqual(e[libuser.SHADOWINACTIVE], [8]) self.assertEqual(e[libuser.SHADOWEXPIRE], [9]) self.assertEqual(e[libuser.SHADOWFLAG], [255]) def testUserMod3(self): # Large IDs e = self.a.initUser('user7_3') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_3') self.assertNotEqual(e[libuser.UIDNUMBER], [LARGE_ID + 730]) e[libuser.UIDNUMBER] = LARGE_ID + 730 self.assertNotEqual(e[libuser.GIDNUMBER], [LARGE_ID + 731]) e[libuser.GIDNUMBER] = LARGE_ID + 731 self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.UIDNUMBER], [LARGE_ID + 730]) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 731]) def testUserMod4(self): # Some of the attributes are not present e = self.a.initUser('user7_4') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_4') e.clear(libuser.SHADOWFLAG) e.clear(libuser.SHADOWMAX) self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_4') self.assertIsNotNone(e) self.assertEqual(e[libuser.SHADOWMAX], [-1]) self.assertEqual(e[libuser.SHADOWFLAG], [-1]) def testUserMod5(self): # ':' in field values # libuser.USERPASSWORD not tested because lu_shadow_user_add_prep() # always replaces it by 'x'. libuser.UIDNUMBER not tested because # ent_has_name_and_id() interprets the value as a number. for field in (libuser.USERNAME, libuser.USERPASSWORD, libuser.GIDNUMBER, libuser.GECOS, libuser.HOMEDIRECTORY, libuser.SHADOWPASSWORD, libuser.SHADOWLASTCHANGE, libuser.SHADOWMIN, libuser.SHADOWMAX, libuser.SHADOWWARNING, libuser.SHADOWINACTIVE, libuser.SHADOWEXPIRE): e = self.a.initUser('user7_5' + field) self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_5' + field) self.assertIsNotNone(e) self.assertNotIn(':', str(e[field][0])) e[field] = str(e[field][0]) + ':x' self.assertRaises(RuntimeError, self.a.modifyUser, e, False) # libuser.SHADOWFLAG not tested because it is parsed as an integer e = self.a.initUser('user7_5') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_5') self.assertIsNotNone(e) self.assertNotIn(':', e[libuser.LOGINSHELL][0]) e[libuser.LOGINSHELL] = e[libuser.LOGINSHELL][0] + ':x' self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_5') self.assertIsNotNone(e) self.assertIn(':', e[libuser.LOGINSHELL][0]) def testUserMod6(self): # Nothing to do with the files module: test lu_name_allowed is called. e = self.a.initUser('user7_6') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_6') e[libuser.USERNAME] = 'very_long_name_123456789_123456789_123456789' self.assertRaises(RuntimeError, self.a.modifyUser, e, False) del e def testUserMod7(self): # Renaming to create duplicate entries e = self.a.initUser('user7_7') self.a.addUser(e, False, False) del e e = self.a.initUser('user7_8') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_8') e[libuser.USERNAME] = 'user7_7' self.assertRaises(RuntimeError, self.a.modifyUser, e, False) def testUserMod8(self): # '\n' in field values # libuser.USERPASSWORD not tested because lu_shadow_user_add_prep() # always replaces it by 'x'. libuser.UIDNUMBER not tested because # ent_has_name_and_id() interprets the value as a number. for field in (libuser.USERNAME, libuser.USERPASSWORD, libuser.GIDNUMBER, libuser.GECOS, libuser.HOMEDIRECTORY, libuser.LOGINSHELL, libuser.SHADOWPASSWORD, libuser.SHADOWLASTCHANGE, libuser.SHADOWMIN, libuser.SHADOWMAX, libuser.SHADOWWARNING, libuser.SHADOWINACTIVE, libuser.SHADOWEXPIRE, libuser.SHADOWFLAG): e = self.a.initUser('user7_9' + field) self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_9' + field) self.assertIsNotNone(e) self.assertNotIn('\n', str(e[field][0])) e[field] = str(e[field][0]) + '\nx' self.assertRaises(RuntimeError, self.a.modifyUser, e, False) def testUserMod9(self): # Attempt to modify to create UID duplicates e = self.a.initUser('user7_9') self.a.addUser(e, False, False) e_uid = e[libuser.UIDNUMBER] del e e = self.a.initUser('user7_9_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_9_2') e[libuser.UIDNUMBER] = e_uid self.assertRaises(RuntimeError, self.a.modifyUser, e, False) def testUserDel(self): e = self.a.initUser('user8_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user8_1') self.assertIsNotNone(e) self.a.deleteUser(e, False, False) del e e = self.a.lookupUserByName('user8_1') self.assertEqual(e, None) def testUserLock1(self): e = self.a.initUser('user9_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user9_1') self.a.setpassUser(e, '00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) self.a.lockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!00as1wm0AZG56']) def testUserLock2(self): e = self.a.initUser('user9_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user9_2') self.a.setpassUser(e, '!!00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!00as1wm0AZG56']) self.a.lockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!00as1wm0AZG56']) def testUserUnlock1(self): e = self.a.initUser('user10_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_1') self.a.setpassUser(e, '!!00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!00as1wm0AZG56']) self.a.unlockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) def testUserUnlock2(self): e = self.a.initUser('user10_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_2') self.a.setpassUser(e, '00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) self.a.unlockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) def testUserUnlock3(self): e = self.a.initUser('user10_3') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_3') self.a.setpassUser(e, '!!', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) self.a.unlockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['']) def testUserUnlockNonempty1(self): e = self.a.initUser('user32_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_1') self.a.setpassUser(e, '!!00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!00as1wm0AZG56']) self.a.unlockUser(e, True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) def testUserUnlockNonempty2(self): e = self.a.initUser('user32_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_2') self.a.setpassUser(e, '00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) self.a.unlockUser(e, True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['00as1wm0AZG56']) def testUserUnlockNonempty3(self): e = self.a.initUser('user32_3') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_3') self.a.setpassUser(e, '!!', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) self.assertRaises(RuntimeError, self.a.unlockUser, e, True) del e e = self.a.lookupUserByName('user32_3') self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) def testUserIslocked1(self): e = self.a.initUser('user11_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user11_1') self.a.setpassUser(e, '!!01aK1FxKE9YVU', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!01aK1FxKE9YVU']) self.assertEqual(self.a.userIsLocked(e), 1) def testUserIslocked2(self): e = self.a.initUser('user11_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user11_2') self.a.setpassUser(e, '01aK1FxKE9YVU', True) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['01aK1FxKE9YVU']) self.assertEqual(self.a.userIsLocked(e), 0) def testUserSetpass1(self): e = self.a.initUser('user12_1') e[libuser.SHADOWPASSWORD] = '02oawyZdjhhpg' e[libuser.SHADOWLASTCHANGE] = 100 self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_1') self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['02oawyZdjhhpg']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [100]) self.a.setpassUser(e, 'password', False) del e e = self.a.lookupUserByName('user12_1') self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') crypted = crypt.crypt('password', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) self.assertGreater(e[libuser.SHADOWLASTCHANGE][0], 10000) def testUserSetpass2(self): # Forcing the non-shadow password to 'x' e = self.a.initUser('user12_2') e[libuser.USERPASSWORD] = '*' e[libuser.SHADOWPASSWORD] = '08lnuxCM.c36E' self.a.addUser(e, False, False) del e # shadow module's addUser forces USERPASSWORD to 'x' e = self.a.lookupUserByName('user12_2') self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['08lnuxCM.c36E']) e[libuser.USERPASSWORD] = '*' self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user12_2') self.assertEqual(e[libuser.USERPASSWORD], ['*']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['08lnuxCM.c36E']) self.a.setpassUser(e, 'password', False) self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') crypted = crypt.crypt('password', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testUserSetpass3(self): # Overriding an invalid encrypted password e = self.a.lookupUserByName('user12_3') self.assertEqual(e[libuser.USERPASSWORD], ['*']) self.assertRaises(KeyError, lambda: e[libuser.SHADOWPASSWORD]) self.a.setpassUser(e, 'password', False) crypted = crypt.crypt('password', e[libuser.USERPASSWORD][0]) self.assertEqual(e[libuser.USERPASSWORD], [crypted]) self.assertEqual(e[libuser.USERPASSWORD][0][:3], '$1$') self.assertRaises(KeyError, lambda: e[libuser.SHADOWPASSWORD]) def testUserSetpass4(self): # ':' in field value e = self.a.initUser('user12_4') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_4') self.assertNotIn(':', e[libuser.SHADOWPASSWORD][0]) self.assertRaises(SystemError, self.a.setpassUser, e, 'a:b', True) self.a.setpassUser(e, 'a:b', False) del e e = self.a.lookupUserByName('user12_4') self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') self.assertNotIn(':', e[libuser.SHADOWPASSWORD][0]) crypted = crypt.crypt('a:b', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testUserSetpass5(self): # '\n' in field value e = self.a.initUser('user12_5') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_5') self.assertNotIn('\n', e[libuser.SHADOWPASSWORD][0]) self.assertRaises(SystemError, self.a.setpassUser, e, 'a\nb', True) self.a.setpassUser(e, 'a\nb', False) del e e = self.a.lookupUserByName('user12_5') self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') self.assertNotIn('\n', e[libuser.SHADOWPASSWORD][0]) crypted = crypt.crypt('a\nb', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testUserRemovepass(self): e = self.a.initUser('user13_1') e[libuser.SHADOWPASSWORD] = '03dgZm5nZvqOc' e[libuser.SHADOWLASTCHANGE] = 100 self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user13_1') self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['03dgZm5nZvqOc']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [100]) self.a.removepassUser(e) del e e = self.a.lookupUserByName('user13_1') self.assertEqual(e[libuser.USERPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['']) self.assertGreater(e[libuser.SHADOWLASTCHANGE][0], 10000) def testUsersEnumerate1(self): e = self.a.initUser('user14_1') self.a.addUser(e, False, False) e = self.a.initUser('user14_2') self.a.addUser(e, False, False) v = sorted(self.a.enumerateUsers('user14*')) self.assertEqual(v, ['user14_1', 'user14_2']) def testUsersEnumerate2(self): v = [name for name in self.a.enumerateUsers('*') if name.startswith('-') or name.startswith('+')] self.assertEqual(v, []) def testUsersEnumerateByGroup1(self): gid = 1501 # Hopefully unique e = self.a.initGroup('group15_1') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user15_2' self.a.addGroup(e) e = self.a.initUser('user15_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initUser('user15_2') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = sorted(self.a.enumerateUsersByGroup('group15_1')) self.assertEqual(v, ['user15_1', 'user15_2']) def testUsersEnumerateByGroup2(self): gid = 1502 # Hopefully unique e = self.a.initGroup('group15_2') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initUser('user15_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) self.assertEqual(self.a.enumerateUsersByGroup('group15_2'), ['user15_3']) def testUsersEnumerateByGroup3(self): gid = 1503 # Hopefully unique e = self.a.initGroup('group15_3') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user15_4' self.a.addGroup(e) e = self.a.initUser('user15_4') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) self.assertEqual(self.a.enumerateUsersByGroup('group15_3'), ['user15_4']) def testUsersEnumerateByGroup4(self): # Data set up in files_test self.assertEqual(self.a.enumerateUsersByGroup('group15_4'), []) def testUsersEnumerateByGroupFull1(self): gid = 3401 # Hopefully unique e = self.a.initGroup('group34_1') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user34_2' self.a.addGroup(e) e = self.a.initUser('user34_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initUser('user34_2') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = sorted([x[libuser.USERNAME] for x in self.a.enumerateUsersByGroupFull('group34_1')]) self.assertEqual(v, [['user34_1'], ['user34_2']]) def testUsersEnumerateByGroupFull2(self): gid = 3402 # Hopefully unique e = self.a.initGroup('group34_2') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initUser('user34_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) v = [x[libuser.USERNAME] for x in self.a.enumerateUsersByGroupFull('group34_2')] self.assertEqual(v, [['user34_3']]) def testUsersEnumerateByGroupFull3(self): gid = 3403 # Hopefully unique e = self.a.initGroup('group34_3') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user34_4' self.a.addGroup(e) e = self.a.initUser('user34_4') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = [x[libuser.USERNAME] for x in self.a.enumerateUsersByGroupFull('group34_3')] self.assertEqual(v, [['user34_4']]) def testUsersEnumerateFull1(self): e = self.a.initUser('user16_1') self.a.addUser(e, False, False) e = self.a.initUser('user16_2') self.a.addUser(e, False, False) v = sorted([x[libuser.USERNAME] for x in self.a.enumerateUsersFull('user16*')]) self.assertEqual(v, [['user16_1'], ['user16_2']]) def testUsersEnumerateFull2(self): v = [x[libuser.USERNAME] for x in self.a.enumerateUsersFull('*')] v = [name for (name,) in v if name.startswith('-') or name.startswith('+')] self.assertEqual(v, []) def testUsersEnumerateFull3(self): # Only the user name is matched e = self.a.initUser('user16_3') self.a.addUser(e, False, False) self.assertEqual(self.a.enumerateUsersFull('user16_3:*'), []) def testGroupLookupName1(self): e = self.a.initGroup('group17_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group17_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group17_1']) del e e = self.a.lookupGroupByName('group17_does_not_exist') self.assertEqual(e, None) def testGroupLookupName2(self): # Handling of empty/default values e = self.a.lookupGroupByName('empty_group') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['empty_group']) self.assertEqual(e[libuser.GROUPPASSWORD], ['']) self.assertEqual(e[libuser.GIDNUMBER], [44]) self.assertRaises(KeyError, lambda: e[libuser.MEMBERNAME]) self.assertEqual(e[libuser.SHADOWPASSWORD], ['']) self.assertRaises(KeyError, lambda: e[libuser.ADMINISTRATORNAME]) def testGroupLookupName3(self): # Handling of values that appear to be numbers e = self.a.lookupGroupByName('077') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['077']) self.assertEqual(e[libuser.GROUPPASSWORD], ['077']) self.assertEqual(e[libuser.GIDNUMBER], [1730]) self.assertEqual(e[libuser.MEMBERNAME], ['077']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['077']) self.assertEqual(e[libuser.ADMINISTRATORNAME], ['077']) def testGroupLookupId(self): e = self.a.initGroup('group18_1') self.a.addGroup(e) gid = e[libuser.GIDNUMBER][0] del e e = self.a.lookupGroupById(gid) self.assertIsNotNone(e) self.assertEqual(e[libuser.GIDNUMBER], [gid]) del e e = self.a.lookupGroupById(999999) self.assertEqual(e, None) del e e = self.a.lookupGroupById(LARGE_ID + 1810) self.assertEqual(e, None) def testGroupDefault(self): # Test the default/LU_GROUPNAME = %n preserves groupnames that appear # to be numbers e = self.a.initGroup('077') self.assertEqual(e[libuser.GROUPNAME], ['077']) # testGroupAddPrep # Setting of GROUPPASSWORD to "x" tested below def testGroupAdd1(self): # A minimal case e = self.a.initGroup('group21_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group21_1']) # Default values self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) def testGroupAdd2(self): # A maximal case e = self.a.initGroup('group21_2') e[libuser.GROUPNAME] = 'group21_2groupname' e[libuser.GROUPPASSWORD] = '!!badgroup21_2' # Should be ignored e[libuser.GIDNUMBER] = 4237 e[libuser.MEMBERNAME] = ['group21_2member1', 'group21_2member2'] e[libuser.SHADOWPASSWORD] = '!!group21_2' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_2groupname') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group21_2groupname']) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.GIDNUMBER], [4237]) v = sorted(e[libuser.MEMBERNAME]) self.assertEqual(v, ['group21_2member1', 'group21_2member2']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!group21_2']) def testGroupAdd3(self): # Large IDs e = self.a.initGroup('group21_3') e[libuser.GIDNUMBER] = LARGE_ID + 2130 self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group21_3']) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 2130]) def testGroupAdd4(self): # ':' in field values # libuser.GROUPPASSWORD not tested because lu_shadow_group_add_prep() # always replaces it by 'x'. libuser.GIDNUMBER not tested because # ent_has_name_and_id() interprets the value as a number. for field in (libuser.GROUPNAME, libuser.SHADOWPASSWORD, libuser.ADMINISTRATORNAME): e = self.a.initGroup('group_21_4' + field) if e.has_key(field): e[field] = str(e[field][0]) + ':x' else: e[field] = field + ':x' self.assertRaises(RuntimeError, self.a.addGroup, e) e = self.a.initGroup('group21_4' + libuser.MEMBERNAME) e[libuser.MEMBERNAME] = 'group21_4:member' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_4' + libuser.MEMBERNAME) self.assertEqual(e[libuser.MEMBERNAME], ['group21_4:member']) def testGroupAdd5(self): # Adding duplicate entries e = self.a.initGroup('group21_5') self.a.addGroup(e) del e e = self.a.initGroup('group21_5') self.assertRaises(RuntimeError, self.a.addGroup, e) def testGroupAdd6(self): # '\n' in field values # libuser.GROUPPASSWORD not tested because lu_shadow_group_add_prep() # always replaces it by 'x'. libuser.GIDNUMBER not tested because # ent_has_name_and_id() interprets the value as a number. for field in (libuser.GROUPNAME, libuser.SHADOWPASSWORD, libuser.MEMBERNAME, libuser.ADMINISTRATORNAME): e = self.a.initGroup('group_21_6' + field) if e.has_key(field): e[field] = str(e[field][0]) + '\nx' else: e[field] = field + '\nx' self.assertRaises(RuntimeError, self.a.addGroup, e) def testGroupAdd7(self): # Adding a duplicate group GID e = self.a.initGroup('group21_7') e[libuser.MEMBERNAME] = ['group21_7member1', 'group21_7member2'] self.a.addGroup(e) e_gid = e[libuser.GIDNUMBER] del e e_dup = self.a.initGroup('group21_7_dup') self.assertNotEqual(e_dup[libuser.GIDNUMBER], [e_gid]) e_dup[libuser.GIDNUMBER] = e_gid self.assertRaises(RuntimeError, self.a.modifyGroup, e_dup) def testGroupMod1(self): # A minimal case e = self.a.initGroup('group22_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_1') self.assertRaises(KeyError, lambda x: x[libuser.MEMBERNAME], e) e[libuser.MEMBERNAME] = 'group22_1member' self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_1') self.assertEqual(e[libuser.MEMBERNAME], ['group22_1member']) def testGroupMod2(self): # A maximal case, including renaming e = self.a.initGroup('group22_2') e[libuser.MEMBERNAME] = ['group22_2member1', 'group22_2member2'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_2') self.assertNotEqual(e[libuser.GROUPNAME], ['group22_2groupname']) e[libuser.GROUPNAME] = 'group22_2groupname' self.assertNotEqual(e[libuser.GROUPPASSWORD], ['!!grgroup22_2']) e[libuser.GROUPPASSWORD] = '!!grgroup22_2' self.assertNotEqual(e[libuser.GIDNUMBER], [4237]) e[libuser.GIDNUMBER] = 4238 v = sorted(e[libuser.MEMBERNAME]) self.assertNotEqual(v, ['group22_2member1', 'group22_2member3']) e[libuser.MEMBERNAME] = ['group22_2member1', 'group22_2member3'] self.assertNotEqual(e[libuser.SHADOWPASSWORD], ['!!group22_2']) e[libuser.SHADOWPASSWORD] = '!!group22_2' self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_2') self.assertEqual(e, None) del e e = self.a.lookupGroupByName('group22_2groupname') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group22_2groupname']) self.assertEqual(e[libuser.GROUPPASSWORD], ['!!grgroup22_2']) self.assertEqual(e[libuser.GIDNUMBER], [4238]) v = e[libuser.MEMBERNAME] v.sort() self.assertEqual(v, ['group22_2member1', 'group22_2member3']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!group22_2']) def testGroupMod3(self): # Large IDs e = self.a.initGroup('group22_3') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_3') self.assertNotEqual(e[libuser.GIDNUMBER], [LARGE_ID + 2230]) e[libuser.GIDNUMBER] = LARGE_ID + 2230 self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 2230]) def testGroupMod4(self): # ':' in field values # libuser.GIDNUMBER not tested because ent_has_name_and_id() interprets # the value as a number. for field in (libuser.GROUPNAME, libuser.GROUPPASSWORD, libuser.SHADOWPASSWORD, libuser.ADMINISTRATORNAME): e = self.a.initGroup('group22_4' + field) self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_4' + field) self.assertIsNotNone(e) if e.has_key(field): self.assertNotIn(':', str(e[field][0])) e[field] = str(e[field][0]) + ':x' else: e[field] = field + ':x' self.assertRaises(RuntimeError, self.a.modifyGroup, e) e = self.a.initGroup('group22_4' + libuser.MEMBERNAME) self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_4' + libuser.MEMBERNAME) self.assertIsNotNone(e) self.assertFalse(e.has_key(libuser.MEMBERNAME)) e[libuser.MEMBERNAME] = 'group22_4:member' self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_4' + libuser.MEMBERNAME) self.assertIsNotNone(e) self.assertEqual(e[libuser.MEMBERNAME], ['group22_4:member']) def testGroupMod5(self): # Nothing to do with the files module: test lu_name_allowed is called. e = self.a.initGroup('group22_5') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_5') e[libuser.GROUPNAME] = 'very_long_name_123456789_123456789_123456789' self.assertRaises(RuntimeError, self.a.modifyGroup, e) del e def testGroupMod6(self): # Renaming to create duplicate entries e = self.a.initGroup('group22_6') self.a.addGroup(e) del e e = self.a.initGroup('group22_7') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_7') e[libuser.GROUPNAME] = 'group22_6' self.assertRaises(RuntimeError, self.a.modifyGroup, e) def testGroupMod7(self): # '\n' in field values # libuser.GIDNUMBER not tested because ent_has_name_and_id() interprets # the value as a number. for field in (libuser.GROUPNAME, libuser.GROUPPASSWORD, libuser.SHADOWPASSWORD, libuser.MEMBERNAME, libuser.ADMINISTRATORNAME): e = self.a.initGroup('group22_8' + field) self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_8' + field) self.assertIsNotNone(e) if e.has_key(field): self.assertNotIn('\n', str(e[field][0])) e[field] = str(e[field][0]) + '\nx' else: e[field] = field + '\nx' self.assertRaises(RuntimeError, self.a.modifyGroup, e) def testGroupMod8(self): # GID duplicate tests e = self.a.initGroup('group22_8') e[libuser.MEMBERNAME] = ['group22_8member1', 'group22_8member2'] self.a.addGroup(e) e_gid = e[libuser.GIDNUMBER] del e e_dup = self.a.initGroup('group22_8_2') e_dup[libuser.MEMBERNAME] = ['group22_8member1', 'group22_8member2'] self.a.addGroup(e_dup) del e_dup # Changing GID to e's should not work e_dup = self.a.lookupGroupByName('group22_8_2') self.assertNotEqual(e_dup[libuser.GIDNUMBER], [e_gid]) e_dup[libuser.GIDNUMBER] = e_gid self.assertRaises(RuntimeError, self.a.modifyGroup, e_dup) def testGroupDel(self): e = self.a.initGroup('group23_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group23_1') self.assertIsNotNone(e) self.a.deleteGroup(e) del e e = self.a.lookupGroupByName('group23_1') self.assertEqual(e, None) def testGroupLock1(self): e = self.a.initGroup('group24_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group24_1') self.a.setpassGroup(e, '04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) self.a.lockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!04cmES7HM6wtg']) def testGroupLock2(self): e = self.a.initGroup('group24_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group24_2') self.a.setpassGroup(e, '!!04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!04cmES7HM6wtg']) self.a.lockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!04cmES7HM6wtg']) def testGroupUnlock1(self): e = self.a.initGroup('group25_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_1') self.a.setpassGroup(e, '!!04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!04cmES7HM6wtg']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) def testGroupUnlock2(self): e = self.a.initGroup('group25_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_2') self.a.setpassGroup(e, '04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) def testGroupUnlock3(self): e = self.a.initGroup('group25_3') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_3') self.a.setpassGroup(e, '!!', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['']) def testGroupUnlockNonempty1(self): e = self.a.initGroup('group33_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_1') self.a.setpassGroup(e, '!!04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!04cmES7HM6wtg']) self.a.unlockGroup(e, True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) def testGroupUnlockNonempty2(self): e = self.a.initGroup('group33_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_2') self.a.setpassGroup(e, '04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['04cmES7HM6wtg']) def testGroupUnlockNonempty3(self): e = self.a.initGroup('group33_3') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_3') self.a.setpassGroup(e, '!!', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) self.assertRaises(RuntimeError, self.a.unlockGroup, e, True) del e e = self.a.lookupGroupByName('group33_3') self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!']) def testGroupIsLocked1(self): e = self.a.initGroup('group26_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group26_1') self.a.setpassGroup(e, '!!05/lfLEyErrp2', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['!!05/lfLEyErrp2']) self.assertEqual(self.a.groupIsLocked(e), 1) def testGroupIsLocked2(self): e = self.a.initGroup('group26_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group26_2') self.a.setpassGroup(e, '05/lfLEyErrp2', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['05/lfLEyErrp2']) self.assertEqual(self.a.groupIsLocked(e), 0) def testGroupSetpass1(self): e = self.a.initGroup('group27_1') e[libuser.SHADOWPASSWORD] = '06aZrb3pzuu/6' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_1') self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['06aZrb3pzuu/6']) self.a.setpassGroup(e, 'password', False) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') crypted = crypt.crypt('password', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testGroupSetpass2(self): # Forcing the non-shadow password to 'x' e = self.a.initGroup('group27_2') e[libuser.GROUPPASSWORD] = '*' e[libuser.SHADOWPASSWORD] = '07ZZy2Pihe/gg' self.a.addGroup(e) del e # shadow module's addGroup forces GROUPPASSWORD to 'x' e = self.a.lookupGroupByName('group27_2') self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['07ZZy2Pihe/gg']) e[libuser.GROUPPASSWORD] = '*' self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group27_2') self.assertEqual(e[libuser.GROUPPASSWORD], ['*']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['07ZZy2Pihe/gg']) self.a.setpassGroup(e, 'password', False) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') crypted = crypt.crypt('password', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testGroupSetpass3(self): # Overriding an invalid encrypted password e = self.a.lookupGroupByName('group27_3') self.assertEqual(e[libuser.GROUPPASSWORD], ['*']) self.assertRaises(KeyError, lambda: e[libuser.SHADOWPASSWORD]) self.a.setpassGroup(e, 'password', False) crypted = crypt.crypt('password', e[libuser.GROUPPASSWORD][0]) self.assertEqual(e[libuser.GROUPPASSWORD], [crypted]) self.assertEqual(e[libuser.GROUPPASSWORD][0][:3], '$1$') self.assertRaises(KeyError, lambda: e[libuser.SHADOWPASSWORD]) def testGroupSetpass4(self): # ':' in field value e = self.a.initGroup('group27_4') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_4') self.assertNotIn(':', e[libuser.SHADOWPASSWORD][0]) self.assertRaises(SystemError, self.a.setpassGroup, e, 'a:b', True) self.a.setpassGroup(e, 'a:b', False) del e e = self.a.lookupGroupByName('group27_4') self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') self.assertNotIn(':', e[libuser.SHADOWPASSWORD][0]) crypted = crypt.crypt('a:b', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testGroupSetpass4(self): # '\n' in field value e = self.a.initGroup('group27_5') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_5') self.assertNotIn('\n', e[libuser.SHADOWPASSWORD][0]) self.assertRaises(SystemError, self.a.setpassGroup, e, 'a\nb', True) self.a.setpassGroup(e, 'a\nb', False) del e e = self.a.lookupGroupByName('group27_5') self.assertEqual(e[libuser.SHADOWPASSWORD][0][:3], '$1$') self.assertNotIn('\n', e[libuser.SHADOWPASSWORD][0]) crypted = crypt.crypt('a\nb', e[libuser.SHADOWPASSWORD][0]) self.assertEqual(e[libuser.SHADOWPASSWORD], [crypted]) def testGroupRemovepass(self): e = self.a.initGroup('group28_1') e[libuser.SHADOWPASSWORD] = '07Js7N.eEhbgs' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group28_1') self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['07Js7N.eEhbgs']) self.a.removepassGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['x']) self.assertEqual(e[libuser.SHADOWPASSWORD], ['']) def testGroupsEnumerate1(self): e = self.a.initGroup('group29_1') self.a.addGroup(e) e = self.a.initGroup('group29_2') self.a.addGroup(e) v = sorted(self.a.enumerateGroups('group29*')) self.assertEqual(v, ['group29_1', 'group29_2']) def testGroupsEnumerate2(self): v = [name for name in self.a.enumerateGroups('*') if name.startswith('-') or name.startswith('+')] self.assertEqual(v, []) def testGroupsEnumerateByUser1(self): gid = 3001 # Hopefully unique e = self.a.initUser('user30_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group30_1') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initGroup('group30_2') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user30_1' self.a.addGroup(e) v = sorted(self.a.enumerateGroupsByUser('user30_1')) self.assertEqual(v, ['group30_1', 'group30_2']) def testGroupsEnumerateByUser2(self): gid = 3002 # Hopefully unique e = self.a.initUser('user30_2') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group30_3') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) self.assertEqual(self.a.enumerateGroupsByUser('user30_2'), ['group30_3']) def testGroupsEnumerateByUser3(self): gid = 3003 # Hopefully unique e = self.a.initUser('user30_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group30_4') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user30_3' self.a.addGroup(e) self.assertEqual(self.a.enumerateGroupsByUser('user30_3'), ['group30_4']) def testGroupsEnumerateByUser4(self): # Data set up in files_test self.assertEqual(self.a.enumerateGroupsByUser('user30_4'), []) def testGroupsEnumerateByUserFull1(self): gid = 3501 # Hopefully unique e = self.a.initUser('user35_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group35_1') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initGroup('group35_2') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user35_1' self.a.addGroup(e) v = sorted([x[libuser.GROUPNAME] for x in self.a.enumerateGroupsByUserFull('user35_1')]) self.assertEqual(v, [['group35_1'], ['group35_2']]) def testGroupsEnumerateByUserFull2(self): gid = 3502 # Hopefully unique e = self.a.initUser('user35_2') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group35_3') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) v = [x[libuser.GROUPNAME] for x in self.a.enumerateGroupsByUserFull('user35_2')] self.assertEqual(v, [['group35_3']]) def testGroupsEnumerateByUserFull3(self): gid = 3503 # Hopefully unique e = self.a.initUser('user35_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group35_4') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user35_3' self.a.addGroup(e) v = [x[libuser.GROUPNAME] for x in self.a.enumerateGroupsByUserFull('user35_3')] self.assertEqual(v, [['group35_4']]) def testGroupsEnumerateFull1(self): e = self.a.initGroup('group31_1') self.a.addGroup(e) e = self.a.initGroup('group31_2') self.a.addGroup(e) v = sorted([x[libuser.GROUPNAME] for x in self.a.enumerateGroupsFull('group31*')]) self.assertEqual(v, [['group31_1'], ['group31_2']]) def testGroupsEnumerateFull2(self): v = [x[libuser.GROUPNAME] for x in self.a.enumerateGroupsFull('*')] v = [name for (name,) in v if name.startswith('-') or name.startswith('+')] self.assertEqual(v, []) def testGroupsEnumerateFull3(self): # Only the user name is matched e = self.a.initGroup('group31_3') self.a.addGroup(e) self.assertEqual(self.a.enumerateGroupsFull('group31_3:*'), []) # ValidateIdValue is unrelated to the files module. def testValidateIdValue(self): libuser.validateIdValue(0) libuser.validateIdValue(1) libuser.validateIdValue(500) if sys.version_info[0] < 3: libuser.validateIdValue(long(500)) self.assertRaises(TypeError, libuser.validateIdValue, 'abc') # OverflowError if id_t is unsigned, ValueError otherwise self.assertRaises((ValueError, OverflowError), libuser.validateIdValue, -1) self.assertRaises((ValueError, OverflowError), libuser.validateIdValue, -2) self.assertRaises(ValueError, libuser.validateIdValue, libuser.VALUE_INVALID_ID) if libuser.VALUE_INVALID_ID > 0: libuser.validateIdValue(libuser.VALUE_INVALID_ID - 1) if libuser.VALUE_INVALID_ID < 2 ** 64 - 1: self.assertRaises(OverflowError, libuser.validateIdValue, 2 ** 64 - 1) def tearDown(self): del self.a if __name__ == '__main__': unittest.main() tests/fs.conf.in000066400000000000000000000006071471266067600141260ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs skeleton = @WORKDIR@/skel modules = files shadow create_modules = files shadow crypt_style = md5 [userdefaults] LU_USERNAME = %n LU_UIDNUMBER = 500 LU_GIDNUMBER = %u [groupdefaults] LU_GROUPNAME = %n LU_GIDNUMBER = 500 [files] directory = @WORKDIR@/files nonroot = yes [shadow] directory = @WORKDIR@/files nonroot = yes tests/fs_test000077500000000000000000000235651471266067600136470ustar00rootroot00000000000000#! /bin/sh # Automated libuser fs function regression tester # # Copyright (c) 2012 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmač # Some tests runs only as root. If you want to run those tests, # you must run it as a real root and set the variable USE_FAKEROOT=no # Make sure you have backups! if [ -z "$USE_FAKEROOT" ] ; then USE_FAKEROOT=yes fi export USE_FAKEROOT if [ "$USE_FAKEROOT" != "no" ]; then if ! fakeroot --version &>/dev/null; then echo 'fakeroot not available, skipping test' >&2 exit 77 fi fi run_test() { if [ "$USE_FAKEROOT" = "no" ]; then ( "$@"; ) else fakeroot "$@" fi } srcdir=$srcdir/tests workdir=$(pwd)/test_fs export workdir umask 002 trap 'status=$?; chmod -R u+rwx "$workdir"; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" # Set up an the environment mkdir "$workdir"/files > "$workdir"/files/passwd > "$workdir"/files/shadow > "$workdir"/files/group > "$workdir"/files/gshadow # Set up the client LIBUSER_CONF=$workdir/libuser.conf export LIBUSER_CONF sed "s|@WORKDIR@|$workdir|g; s|@TOP_BUILDDIR@|$(pwd)|g" \ < "$srcdir"/fs.conf.in > "$LIBUSER_CONF" # Ugly non-portable hacks LD_LIBRARY_PATH=$(pwd)/lib/.libs export LD_LIBRARY_PATH PYTHONPATH=$(pwd)/python/.libs export PYTHONPATH # Like ls, but filtered to only contain interesting columns and avoid # varying data. Expects one argument, a directory path filtered_ls() { ( cd "$1"; LC_ALL=C ls -lnR | \ awk 'NF > 3 { printf("%.10s %4d %4d %s\n", $1, $3, $4, $9); } NF <= 3 && !/total/ { print }'; ) } export -f filtered_ls # Test lu_homedir_remove() test_lu_homedir_remove() { # User's "own" content mkdir -p "$workdir"/rm/root/{dir,unreadable} touch "$workdir"/rm/{kept,root/{dir,unreadable}/f} mkfifo "$workdir"/rm/root/fifo 2>/dev/null ln -s ../kept "$workdir"/rm/root/symlink chown -R 555:555 "$workdir"/rm/root chmod 701 "$workdir"/rm/root chmod 000 "$workdir"/rm/root/unreadable # Other content in the home directory mknod "$workdir"/rm/root/block b 1 1 mknod "$workdir"/rm/root/char c 1 1 echo 'foo' > "$workdir"/rm/secret chmod 000 "$workdir"/rm/secret ln "$workdir"/rm/{secret,root/hardlink} $VALGRIND $PYTHON "$srcdir"/fs_test.py --remove "$workdir/rm/root" if [ $? -ne 0 ]; then exit 1 fi filtered_ls "$workdir/rm" } export -f test_lu_homedir_remove run_test test_lu_homedir_remove > "$workdir"/rm_output diff "$workdir"/rm_output - <&1 exit 1 fi # Test lu_homedir_remove_for_user_if_owned() test_lu_homedir_remove_for_user_if_owned1() { # User's "own" content mkdir -p "$workdir"/rm_owned1/root/dir touch "$workdir"/rm_owned1/root/dir/f chown -R 555:555 "$workdir"/rm_owned1/root chmod 701 "$workdir"/rm_owned1/root # Other content in the home directory mkdir "$workdir"/rm_owned1/root/non-owned-dir touch "$workdir"/rm_owned1/root/non-owned-dir/f $VALGRIND $PYTHON "$srcdir"/fs_test.py --remove-if-owned \ "$workdir/rm_owned1/root" 555 if [ $? -ne 0 ]; then exit 1 fi filtered_ls "$workdir"/rm_owned1 } export -f test_lu_homedir_remove_for_user_if_owned1 run_test test_lu_homedir_remove_for_user_if_owned1 > "$workdir"/rm_owned_output1 diff "$workdir"/rm_owned_output1 - <&1 exit 1 fi # Nothing is touched if the home directory is not owned by the right UID test_lu_homedir_remove_for_user_if_owned2() { # Non-owned home directory mkdir -p "$workdir"/rm_owned2/root/dir touch "$workdir"/rm_owned2/root/dir/f chown -R 555:555 "$workdir"/rm_owned2/root chown 444:444 "$workdir"/rm_owned2/root chmod 701 "$workdir"/rm_owned2/root # Other content in the home directory mkdir "$workdir"/rm_owned2/root/non-owned-dir touch "$workdir"/rm_owned2/root/non-owned-dir/f $VALGRIND $PYTHON "$srcdir"/fs_test.py --remove-if-owned \ "$workdir/rm_owned2/root" 555 echo $? filtered_ls "$workdir"/rm_owned2 } export -f test_lu_homedir_remove_for_user_if_owned2 run_test test_lu_homedir_remove_for_user_if_owned2 \ > "$workdir"/rm_owned_output2 2>&1 diff "$workdir"/rm_owned_output2 - <&1 exit 1 fi # Prepare an "interesting" directory, to be used both directly as a home # directory and as a skeleton. Note: changes the current directory! create_source_directory() { mkdir -p "$1"/{dir,unreadable,group-owned} # User's "own" content for i in "$1" "$1"/dir "$1"/group-owned; do touch "$i"/f "$i"/setuid mkfifo "$i"/fifo 2>/dev/null ln -s ../outside "$i"/symlink done mkdir "$1"/setgid chmod g+s "$1"/setgid echo 'content' > "$1"/unreadable/f chmod 000 "$1"/unreadable/f "$1"/unreadable chown -R 555:555 "$1" chgrp -R 444 "$1"/group-owned for i in "$1" "$1"/dir "$1"/group-owned; do chmod u+xs "$i"/setuid done # Other content in the home directory mknod "$1"/block b 1 1 mknod "$1"/char c 1 1 echo 'foo' > "$1"/secret chmod 000 "$1"/secret } export -f create_source_directory # Test lu_homedir_move() test_lu_homedir_move1() { create_source_directory "$workdir"/home1 $VALGRIND $PYTHON "$srcdir"/fs_test.py --move "$workdir"/{home1,home2} if [ $? -ne 0 ]; then exit 1 fi filtered_ls "$workdir"/home2 } if [ $USE_FAKEROOT = "no" ] ; then export -f test_lu_homedir_move1 run_test test_lu_homedir_move1 > "$workdir"/mv_output # Special files and fifos are not copied over. Ownership and permissions are # preserved. diff "$workdir"/mv_output - <&2 exit 1 fi else echo "Skipped: test_lu_homedir_move1" >&2 fi # Moving onto an existing directory is prohibited test_lu_homedir_move2() { mkdir "$workdir"/mv2home{1,2} $VALGRIND $PYTHON "$srcdir"/fs_test.py --move "$workdir"/mv2home{1,2} echo $? } if [ $USE_FAKEROOT = "no" ] ; then export -f test_lu_homedir_move2 run_test test_lu_homedir_move2 > "$workdir"/mv2_output 2>&1 diff "$workdir"/mv2_output - <&2 exit 1 fi else echo "Skipped: test_lu_homedir_move2" >&2 fi # Test lu_homedir_populate() function test_lu_homedir_populate1() { create_source_directory "$workdir"/skel chown -R 0:0 "$workdir"/skel chgrp -R 444 "$workdir"/skel/group-owned # chown/chgrp have reset permissions, fix them up for i in "$workdir"/skel "$workdir"/skel/dir "$workdir"/skel/group-owned; do chmod u+xs "$i"/setuid done $VALGRIND $PYTHON "$srcdir"/fs_test.py --populate "$workdir"/newhome 556 557 if [ $? -ne 0 ]; then exit 1 fi filtered_ls "$workdir"/newhome } if [ $USE_FAKEROOT = "no" ] ; then export -f test_lu_homedir_populate1 run_test test_lu_homedir_populate1 > "$workdir"/pop_output # Special files and fifos are not copied over. Permissions are preserved, # ownership is changed to the desired values except for non-root groups diff "$workdir"/pop_output - <&2 exit 1 fi else echo "Skipped: test_lu_homedir_populate1" >&2 fi # Populating an existing directory is prohibited function test_lu_homedir_populate2() { rm -rf "$workdir"/skel mkdir "$workdir"/{skel,pop2} $VALGRIND $PYTHON "$srcdir"/fs_test.py --populate "$workdir"/pop2 556 557 echo $? } export -f test_lu_homedir_populate2 run_test test_lu_homedir_populate2 > "$workdir"/pop2_output 2>&1 diff "$workdir"/pop2_output - <&2 exit 1 fi tests/fs_test.py000066400000000000000000000040641471266067600142640ustar00rootroot00000000000000# Helpers for fs_test. # -*- coding: utf-8 -*- # # Copyright (c) 2012 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmač import libuser import sys def main(): if sys.argv[1] == '--remove': a = libuser.admin() u = a.initUser('fs_test_remove') u[libuser.HOMEDIRECTORY] = sys.argv[2] a.removeHome(u) elif sys.argv[1] == '--remove-if-owned': a = libuser.admin() u = a.initUser('fs_test_remove') u[libuser.HOMEDIRECTORY] = sys.argv[2] u[libuser.UIDNUMBER] = int(sys.argv[3]) try: a.removeHomeIfOwned(u) except RuntimeError as e: sys.exit(str(e)) elif sys.argv[1] == '--move': a = libuser.admin() u = a.initUser('fs_test_move') u[libuser.HOMEDIRECTORY] = sys.argv[2] try: a.moveHome(u, sys.argv[3]) except RuntimeError as e: sys.exit(str(e)) elif sys.argv[1] == '--populate': a = libuser.admin() u = a.initUser('fs_test_populate') u[libuser.HOMEDIRECTORY] = sys.argv[2] u[libuser.UIDNUMBER] = int(sys.argv[3]) u[libuser.GIDNUMBER] = int(sys.argv[4]) try: a.createHome(u) except RuntimeError as e: sys.exit(str(e)) else: sys.exit('Unexpected mode') if __name__ == '__main__': main() tests/ldap.conf.in000066400000000000000000000014021471266067600144300ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs skeleton = /etc/skel mailspooldir = /var/mail modules = ldap create_modules = ldap crypt_style = md5 [userdefaults] LU_USERNAME = %n LU_UIDNUMBER = 500 LU_GIDNUMBER = %u # LU_USERPASSWORD = !! # LU_GECOS = %n # LU_HOMEDIRECTORY = /home/%n # LU_LOGINSHELL = /bin/bash # LU_SHADOWNAME = %n # LU_SHADOWPASSWORD = !! # LU_SHADOWLASTCHANGE = %d # LU_SHADOWMIN = 0 # LU_SHADOWMAX = 99999 # LU_SHADOWWARNING = 7 # LU_SHADOWINACTIVE = -1 # LU_SHADOWEXPIRE = -1 # LU_SHADOWFLAG = -1 [groupdefaults] LU_GROUPNAME = %n LU_GIDNUMBER = 500 # LU_GROUPPASSWORD = !! # LU_MEMBERUID = # LU_ADMINISTRATORUID = [ldap] server = 127.0.0.1:@LDAP_PORT@ basedn = dc=libuser bindtype = simple binddn = cn=Manager,dc=libuser tests/ldap_skel.ldif000066400000000000000000000003521471266067600150350ustar00rootroot00000000000000dn: dc=libuser dc: libuser objectClass: top objectClass: domain dn: ou=People,dc=libuser ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=libuser ou: Group objectClass: top objectClass: organizationalUnit tests/ldap_test000077500000000000000000000046651471266067600141570ustar00rootroot00000000000000#! /bin/sh # Automated LDAP regression tester # # Copyright (c) 2004 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmac if [ ! -x /usr/sbin/slapd ] ; then echo "The openldap server not found" >&2 exit 77 fi srcdir=$srcdir/tests workdir=$(pwd)/test_ldap trap 'status=$?; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" # Create a SSL key /usr/bin/openssl req -newkey rsa:2048 -keyout "$workdir"/key1 -nodes \ -x509 -days 2 -out "$workdir"/key3 2>/dev/null < "$workdir"/key2 cat "$workdir"/key{1,2,3} > "$workdir"/key.pem rm "$workdir"/key{1,2,3} # Set up an LDAP server mkdir "$workdir"/db sed "s|@WORKDIR@|$workdir|g" < "$srcdir"/slapd.conf.in > "$workdir"/slapd.conf ldap_port=$(tests/alloc_port) # This is racy, but much better than a static port # FIXME: path /usr/sbin/slapd -h ldap://127.0.0.1:"$ldap_port"/ -f "$workdir"/slapd.conf & tests/wait_for_slapd_start "$workdir"/slapd.pid "$ldap_port" slapd_pid=$(cat "$workdir"/slapd.pid) trap 'status=$?; kill $slapd_pid tests/wait_for_slapd_exit "$workdir"/slapd.pid "$ldap_port" rm -rf "$workdir"; exit $status' 0 ldapadd -H "ldap://127.0.0.1:$ldap_port" -f "$srcdir/ldap_skel.ldif" -x \ -D cn=Manager,dc=libuser -w password # Set up the client LIBUSER_CONF=$workdir/libuser.conf export LIBUSER_CONF sed -e "s|@WORKDIR@|$workdir|g; s|@TOP_BUILDDIR@|$(pwd)|g" \ -e "s|@LDAP_PORT@|$ldap_port|g" < "$srcdir"/ldap.conf.in > "$LIBUSER_CONF" # Ugly non-portable hacks LD_LIBRARY_PATH=$(pwd)/lib/.libs export LD_LIBRARY_PATH PYTHONPATH=$(pwd)/python/.libs export PYTHONPATH # Point "$HOME/ldaprc" to "$srcdir"/ldaprc HOME="$srcdir" $VALGRIND $PYTHON "$srcdir"/ldap_test.py tests/ldap_test.py000066400000000000000000001321761471266067600146020ustar00rootroot00000000000000import libuser import unittest # crypt was dropped from Python standard library in 3.13 try: import crypt_r as crypt except ImportError: import crypt LARGE_ID = 2147483648 def prompt_callback(prompts): for p in prompts: if p.key == 'ldap/password': p.value = 'password' else: p.value = p.default_value # This is ugly; ideally we would want a separate connection for each test case, # but libssl REALLY doesn't like being unloaded (libcrypto is not unloaded # and keeps pointers to unloaded libssl) admin = libuser.admin(prompt = prompt_callback) # Test case order matches the order of function pointers in struct lu_module class Tests(unittest.TestCase): def setUp(self): # See the comment at the libuser.admin() call above self.a = admin # testUsesElevatedPrivileges # Not provided in Python bindings def testUserLookupName(self): e = self.a.initUser('user2_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user2_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user2_1']) del e e = self.a.lookupUserByName('user2_does_not_exist') self.assertEqual(e, None) def testUserLookupId(self): e = self.a.initUser('user3_1') self.a.addUser(e, False, False) uid = e[libuser.UIDNUMBER][0] del e e = self.a.lookupUserById(uid) self.assertIsNotNone(e) self.assertEqual(e[libuser.UIDNUMBER], [uid]) del e e = self.a.lookupUserById(999999) self.assertEqual(e, None) del e e = self.a.lookupUserById(LARGE_ID + 310) self.assertEqual(e, None) # testUserDefault # There is little to test, in addition most is configurable # testUserAddPrep: # Nothing to test def testUserAdd1(self): # A minimal case e = self.a.initUser('user6_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user6_1']) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!!']) def testUserAdd2(self): # A maximal case e = self.a.initUser('user6_2') e[libuser.USERNAME] = 'user6_2username' e[libuser.USERPASSWORD] = '!!user6_2' e[libuser.UIDNUMBER] = 4237 e[libuser.GIDNUMBER] = 3742 e[libuser.GECOS] = 'Full Name,Office,1234,4321' e[libuser.HOMEDIRECTORY] = '/home/user6_2home' e[libuser.LOGINSHELL] = '/sbin/nologinuser6_2' e[libuser.SHADOWPASSWORD] = '!!baduser6_2' # Should be ignored e[libuser.SHADOWLASTCHANGE] = 12681 e[libuser.SHADOWMIN] = 5 e[libuser.SHADOWMAX] = 98765 e[libuser.SHADOWWARNING] = 10 e[libuser.SHADOWINACTIVE] = 8 e[libuser.SHADOWEXPIRE] = 9 e[libuser.SHADOWFLAG] = 255 e[libuser.COMMONNAME] = 'Common Name' e[libuser.GIVENNAME] = 'Given' e[libuser.SN] = 'Surname' e[libuser.ROOMNUMBER] = '404' e[libuser.TELEPHONENUMBER] = '1234' e[libuser.HOMEPHONE] = '4321' e[libuser.EMAIL] = 'user6_2@example.com' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_2username') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user6_2username']) self.assertEqual(e[libuser.USERPASSWORD], ['!!user6_2']) self.assertEqual(e[libuser.UIDNUMBER], [4237]) self.assertEqual(e[libuser.GIDNUMBER], [3742]) self.assertEqual(e[libuser.GECOS], ['Full Name,Office,1234,4321']) self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/user6_2home']) self.assertEqual(e[libuser.LOGINSHELL], ['/sbin/nologinuser6_2']) self.assertRaises(KeyError, lambda x: x[libuser.SHADOWPASSWORD], e) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [12681]) self.assertEqual(e[libuser.SHADOWMIN], [5]) self.assertEqual(e[libuser.SHADOWMAX], [98765]) self.assertEqual(e[libuser.SHADOWWARNING], [10]) self.assertEqual(e[libuser.SHADOWINACTIVE], [8]) self.assertEqual(e[libuser.SHADOWEXPIRE], [9]) self.assertEqual(e[libuser.SHADOWFLAG], [255]) self.assertEqual(e[libuser.COMMONNAME], ['Common Name']) self.assertEqual(e[libuser.GIVENNAME], ['Given']) self.assertEqual(e[libuser.SN], ['Surname']) self.assertEqual(e[libuser.ROOMNUMBER], ['404']) self.assertEqual(e[libuser.TELEPHONENUMBER], ['1234']) self.assertEqual(e[libuser.HOMEPHONE], ['4321']) # Not stored by our LDAP module # self.assertEqual(e[libuser.EMAIL], ['user6_2@example.com']) def testUserAdd3(self): # Schema violation e = self.a.initUser('user6_3') e[libuser.GIVENNAME] = 'Given' # e[libuser.SN] required by inetOrgPerson schema, but not provided self.assertRaises(RuntimeError, self.a.addUser, e, False, False) def testUserAdd4(self): # Large IDs. e = self.a.initUser('user6_4') e[libuser.UIDNUMBER] = LARGE_ID + 640 e[libuser.GIDNUMBER] = LARGE_ID + 641 self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_4') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user6_4']) self.assertEqual(e[libuser.UIDNUMBER], [LARGE_ID + 640]) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 641]) def testUserAdd5(self): # Let the user specify dangerous/dubious home directory paths explicitly for name in ('.', '..'): e = self.a.initUser(name) e[libuser.HOMEDIRECTORY] = '/home/' + name self.a.addUser(e, False, False) del e e = self.a.lookupUserByName(name) self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/' + name]) self.a.deleteUser(e, False, False) e = self.a.initUser('user6_5') e[libuser.HOMEDIRECTORY] = '/home/..' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_5') self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/..']) # ... but nevere create such home directory paths by default for name in ('.', '..'): e = self.a.initUser(name) self.assertRaises(RuntimeError, self.a.addUser, e, False, False) def testUserAdd6(self): # Adding duplicate entries e = self.a.initUser('user6_6') self.a.addUser(e, False, False) del e e = self.a.initUser('user6_6') self.assertRaises(RuntimeError, self.a.addUser, e, False, False) def testUserAdd7(self): # Adding commonName if it is not defined: # - Explicitly set e = self.a.initUser('user6_7') e[libuser.COMMONNAME] = 'Common Name' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_7') self.assertEqual(e[libuser.COMMONNAME], ['Common Name']) # - Defaulted from GECOS e = self.a.initUser('user6_8') e[libuser.GECOS] = 'Full Name,Office,1234,4321' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_8') self.assertEqual(e[libuser.COMMONNAME], ['Full Name']) # Defaulted from user name e = self.a.initUser('user6_9') self.assertEqual(e[libuser.GECOS], ['user6_9']) e.clear(libuser.GECOS) self.assertRaises(KeyError, lambda x: x[libuser.GECOS], e) self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_9') self.assertEqual(e[libuser.COMMONNAME], ['user6_9']) # Defaulted from user name if GECOS is empty e = self.a.initUser('user6_10') e[libuser.GECOS] = '' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user6_10') self.assertEqual(e[libuser.COMMONNAME], ['user6_10']) def testUserMod1(self): # A minimal case e = self.a.initUser('user7_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_1') self.assertNotEqual(e[libuser.GECOS], ['user7newGECOS']) e[libuser.GECOS] = 'user7newGECOS' self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_1') self.assertEqual(e[libuser.GECOS], ['user7newGECOS']) def testUserMod2(self): # A maximal case, including renaming e = self.a.initUser('user7_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_2') self.assertNotEqual(e[libuser.USERNAME], ['user7_2username']) e[libuser.USERNAME] = 'user7_2username' self.assertNotEqual(e[libuser.USERPASSWORD], ['!!user7_2']) e[libuser.USERPASSWORD] = '!!user7_2' self.assertNotEqual(e[libuser.UIDNUMBER], [4237]) e[libuser.UIDNUMBER] = 4237 self.assertNotEqual(e[libuser.GIDNUMBER], [3742]) e[libuser.GIDNUMBER] = 3742 self.assertNotEqual(e[libuser.GECOS], ['Full Name,Office,1234,4321']) e[libuser.GECOS] = 'Full Name,Office,1234,4321' self.assertNotEqual(e[libuser.HOMEDIRECTORY], ['/home/user7_2home']) e[libuser.HOMEDIRECTORY] = '/home/user7_2home' self.assertNotEqual(e[libuser.LOGINSHELL], ['/sbin/nologinuser7_2']) e[libuser.LOGINSHELL] = '/sbin/nologinuser7_2' self.assertNotEqual(e[libuser.SHADOWLASTCHANGE], [12681]) e[libuser.SHADOWLASTCHANGE] = 12681 self.assertNotEqual(e[libuser.SHADOWMIN], [5]) e[libuser.SHADOWMIN] = 5 self.assertNotEqual(e[libuser.SHADOWMAX], [98765]) e[libuser.SHADOWMAX] = 98765 self.assertNotEqual(e[libuser.SHADOWWARNING], [10]) e[libuser.SHADOWWARNING] = 10 self.assertNotEqual(e[libuser.SHADOWINACTIVE], [8]) e[libuser.SHADOWINACTIVE] = 8 self.assertNotEqual(e[libuser.SHADOWEXPIRE], [9]) e[libuser.SHADOWEXPIRE] = 9 self.assertNotEqual(e[libuser.SHADOWFLAG], [255]) e[libuser.SHADOWFLAG] = 255 self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_2') self.assertEqual(e, None) del e e = self.a.lookupUserByName('user7_2username') self.assertIsNotNone(e) self.assertEqual(e[libuser.USERNAME], ['user7_2username']) self.assertEqual(e[libuser.USERPASSWORD], ['!!user7_2']) self.assertEqual(e[libuser.UIDNUMBER], [4237]) self.assertEqual(e[libuser.GIDNUMBER], [3742]) self.assertEqual(e[libuser.GECOS], ['Full Name,Office,1234,4321']) self.assertEqual(e[libuser.HOMEDIRECTORY], ['/home/user7_2home']) self.assertEqual(e[libuser.LOGINSHELL], ['/sbin/nologinuser7_2']) self.assertRaises(KeyError, lambda x: x[libuser.SHADOWPASSWORD], e) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [12681]) self.assertEqual(e[libuser.SHADOWMIN], [5]) self.assertEqual(e[libuser.SHADOWMAX], [98765]) self.assertEqual(e[libuser.SHADOWWARNING], [10]) self.assertEqual(e[libuser.SHADOWINACTIVE], [8]) self.assertEqual(e[libuser.SHADOWEXPIRE], [9]) self.assertEqual(e[libuser.SHADOWFLAG], [255]) def testUserMod3(self): # Large IDs e = self.a.initUser('user7_3') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_3') self.assertNotEqual(e[libuser.UIDNUMBER], [LARGE_ID + 730]) e[libuser.UIDNUMBER] = LARGE_ID + 730 self.assertNotEqual(e[libuser.GIDNUMBER], [LARGE_ID + 731]) e[libuser.GIDNUMBER] = LARGE_ID + 731 self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.UIDNUMBER], [LARGE_ID + 730]) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 731]) def testUserMod4(self): # No modification at all e = self.a.initUser('user7_4') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_4') self.a.modifyUser(e, False) del e e = self.a.lookupUserByName('user7_4') self.assertIsNotNone(e) def testUserMod5(self): # Renaming to create duplicate entries e = self.a.initUser('user7_5') self.a.addUser(e, False, False) del e e = self.a.initUser('user7_6') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user7_6') e[libuser.USERNAME] = 'user7_5' self.assertRaises(RuntimeError, self.a.modifyUser, e, False) def testUserDel(self): e = self.a.initUser('user8_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user8_1') self.assertIsNotNone(e) self.a.deleteUser(e, False, False) del e e = self.a.lookupUserByName('user8_1') self.assertEqual(e, None) def testUserLock1(self): e = self.a.initUser('user9_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user9_1') self.a.setpassUser(e, '00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) self.a.lockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!00as1wm0AZG56']) def testUserLock2(self): e = self.a.initUser('user9_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user9_2') self.a.setpassUser(e, '!00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!00as1wm0AZG56']) self.a.lockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!00as1wm0AZG56']) def testUserLock3(self): e = self.a.initUser('user9_3') e[libuser.USERPASSWORD] = '{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user9_3') self.assertEqual(e[libuser.USERPASSWORD], ['{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==']) self.assertRaises(RuntimeError, self.a.lockUser, e) def testUserUnlock1(self): e = self.a.initUser('user10_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_1') self.a.setpassUser(e, '!00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!00as1wm0AZG56']) self.a.unlockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) def testUserUnlock2(self): e = self.a.initUser('user10_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_2') self.a.setpassUser(e, '00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) self.a.unlockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) def testUserUnlock3(self): e = self.a.initUser('user10_3') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_3') self.a.setpassUser(e, '!', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!']) self.a.unlockUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}']) def testUserUnlock4(self): e = self.a.initUser('user10_4') e[libuser.USERPASSWORD] = '{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user10_4') self.assertEqual(e[libuser.USERPASSWORD], ['{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==']) self.assertRaises(RuntimeError, self.a.unlockUser, e) def testUserUnlockNonempty1(self): e = self.a.initUser('user32_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_1') self.a.setpassUser(e, '!00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!00as1wm0AZG56']) self.a.unlockUser(e, True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) def testUserUnlockNonempty2(self): e = self.a.initUser('user32_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_2') self.a.setpassUser(e, '00as1wm0AZG56', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) self.a.unlockUser(e, True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}00as1wm0AZG56']) def testUserUnlockNonempty3(self): e = self.a.initUser('user32_3') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_3') self.a.setpassUser(e, '!', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!']) self.assertRaises(RuntimeError, self.a.unlockUser, e, True) del e e = self.a.lookupUserByName('user32_3') self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!']) def testUserUnlockNonempty4(self): e = self.a.initUser('user32_4') e[libuser.USERPASSWORD] = '{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==' self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user32_4') self.assertEqual(e[libuser.USERPASSWORD], ['{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==']) self.assertRaises(RuntimeError, self.a.unlockUser, e, True) def testUserIslocked1(self): e = self.a.initUser('user11_1') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user11_1') self.a.setpassUser(e, '!01aK1FxKE9YVU', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!01aK1FxKE9YVU']) self.assertEqual(self.a.userIsLocked(e), 1) def testUserIslocked2(self): e = self.a.initUser('user11_2') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user11_2') self.a.setpassUser(e, '01aK1FxKE9YVU', True) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}01aK1FxKE9YVU']) self.assertEqual(self.a.userIsLocked(e), 0) def testUserSetpass1(self): e = self.a.initUser('user12_1') e[libuser.USERPASSWORD] = '{CRYPT}02oawyZdjhhpg' e[libuser.SHADOWLASTCHANGE] = 100 self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_1') self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}02oawyZdjhhpg']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [100]) self.a.setpassUser(e, 'password', False) del e e = self.a.lookupUserByName('user12_1') self.assertNotEqual(e[libuser.USERPASSWORD][0][7], '$') crypted = crypt.crypt('password', e[libuser.USERPASSWORD][0][7:]) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}' + crypted]) self.assertGreater(e[libuser.SHADOWLASTCHANGE][0], 10000) def testUserSetpass2(self): e = self.a.initUser('user12_2') e[libuser.USERPASSWORD] = ['unknown', '{CRYPT}02oawyZdjhhpg'] self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_2') v = sorted(e[libuser.USERPASSWORD]) self.assertEqual(v, ['unknown', '{CRYPT}02oawyZdjhhpg']) self.a.setpassUser(e, 'password', False) v = e[libuser.USERPASSWORD] v.sort() self.assertNotEqual(v[1][7], '$') crypted = crypt.crypt('password', v[1][7:]) self.assertEqual(v, ['unknown', '{CRYPT}' + crypted]) def testUserSetpass3(self): e = self.a.initUser('user12_3') e[libuser.USERPASSWORD] = ['unknown1', 'unknown2'] self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_3') v = sorted(e[libuser.USERPASSWORD]) self.assertEqual(v, ['unknown1', 'unknown2']) self.a.setpassUser(e, 'password', False) self.assertEqual(e[libuser.USERPASSWORD][0][7:10], '$1$') crypted = crypt.crypt('password', e[libuser.USERPASSWORD][0][7:]) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}' + crypted]) def testUserSetpass4(self): # Test that crypt_style is honored on accounts with no existing hash e = self.a.initUser('user12_4') self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_4') self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!!']) self.a.setpassUser(e, 'password', False) del e e = self.a.lookupUserByName('user12_4') self.assertEqual(e[libuser.USERPASSWORD][0][7:10], '$1$') crypted = crypt.crypt('password', e[libuser.USERPASSWORD][0][7:]) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}' + crypted]) def testUserSetpass5(self): # Test that existing hash is recognized on locked accounts e = self.a.initUser('user12_5') e[libuser.USERPASSWORD] = ['{CRYPT}!05q.yCrQKlZy6'] self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user12_5') self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}!05q.yCrQKlZy6']) self.a.setpassUser(e, 'password', False) del e e = self.a.lookupUserByName('user12_5') self.assertNotEqual(e[libuser.USERPASSWORD][0][7], '$') crypted = crypt.crypt('password', e[libuser.USERPASSWORD][0][7:]) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}' + crypted]) def testUserRemovepass1(self): e = self.a.initUser('user13_1') e[libuser.USERPASSWORD] = '{CRYPT}03dgZm5nZvqOc' e[libuser.SHADOWLASTCHANGE] = 100 self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user13_1') self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}03dgZm5nZvqOc']) self.assertEqual(e[libuser.SHADOWLASTCHANGE], [100]) self.a.removepassUser(e) del e e = self.a.lookupUserByName('user13_1') self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}']) self.assertGreater(e[libuser.SHADOWLASTCHANGE][0], 10000) def testUserRemovepass2(self): e = self.a.initUser('user13_2') e[libuser.USERPASSWORD] = ['unknown', '{CRYPT}03dgZm5nZvqOc'] self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user13_2') v = sorted(e[libuser.USERPASSWORD]) self.assertEqual(v, ['unknown', '{CRYPT}03dgZm5nZvqOc']) self.a.removepassUser(e) v = e[libuser.USERPASSWORD] v.sort() self.assertEqual(v, ['unknown', '{CRYPT}']) def testUserRemovepass3(self): e = self.a.initUser('user13_3') e[libuser.USERPASSWORD] = ['unknown1', 'unknown2'] self.a.addUser(e, False, False) del e e = self.a.lookupUserByName('user13_3') v = sorted(e[libuser.USERPASSWORD]) self.assertEqual(v, ['unknown1', 'unknown2']) self.a.removepassUser(e) self.assertEqual(e[libuser.USERPASSWORD], ['{CRYPT}']) def testUsersEnumerate(self): e = self.a.initUser('user14_1') self.a.addUser(e, False, False) e = self.a.initUser('user14_2') self.a.addUser(e, False, False) v = sorted(self.a.enumerateUsers('user14*')) self.assertEqual(v, ['user14_1', 'user14_2']) def testUsersEnumerateByGroup1(self): gid = 1501 # Hopefully unique e = self.a.initGroup('group15_1') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user15_2' self.a.addGroup(e) e = self.a.initUser('user15_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initUser('user15_2') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = sorted(self.a.enumerateUsersByGroup('group15_1')) self.assertEqual(v, ['user15_1', 'user15_2']) def testUsersEnumerateByGroup2(self): gid = 1502 # Hopefully unique e = self.a.initGroup('group15_2') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initUser('user15_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) self.assertEqual(self.a.enumerateUsersByGroup('group15_2'), ['user15_3']) def testUsersEnumerateByGroup3(self): gid = 1503 # Hopefully unique e = self.a.initGroup('group15_3') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user15_4' self.a.addGroup(e) e = self.a.initUser('user15_4') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = self.a.enumerateUsersByGroup('group15_3') self.assertEqual(self.a.enumerateUsersByGroup('group15_3'), ['user15_4']) def testUsersEnumerateFull(self): e = self.a.initUser('user16_1') self.a.addUser(e, False, False) e = self.a.initUser('user16_2') self.a.addUser(e, False, False) v = sorted([x[libuser.USERNAME] for x in self.a.enumerateUsersFull('user16*')]) self.assertEqual(v, [['user16_1'], ['user16_2']]) def testUsersEnumerateByGroupFull1(self): gid = 3401 # Hopefully unique e = self.a.initGroup('group34_1') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user34_2' self.a.addGroup(e) e = self.a.initUser('user34_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initUser('user34_2') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = sorted([x[libuser.USERNAME] for x in self.a.enumerateUsersByGroupFull('group34_1')]) self.assertEqual(v, [['user34_1'], ['user34_2']]) def testUsersEnumerateByGroupFull2(self): gid = 3402 # Hopefully unique e = self.a.initGroup('group34_2') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initUser('user34_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) v = [x[libuser.USERNAME] for x in self.a.enumerateUsersByGroupFull('group34_2')] self.assertEqual(v, [['user34_3']]) def testUsersEnumerateByGroupFull3(self): gid = 3403 # Hopefully unique e = self.a.initGroup('group34_3') e[libuser.GIDNUMBER] = gid e[libuser.MEMBERNAME] = 'user34_4' self.a.addGroup(e) e = self.a.initUser('user34_4') e[libuser.GIDNUMBER] = gid + 10 self.a.addUser(e, False, False) v = [x[libuser.USERNAME] for x in self.a.enumerateUsersByGroupFull('group34_3')] self.assertEqual(v, [['user34_4']]) def testGroupLookupName(self): e = self.a.initGroup('group17_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group17_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group17_1']) del e e = self.a.lookupGroupByName('group17_does_not_exist') self.assertEqual(e, None) def testGroupLookupId(self): e = self.a.initGroup('group18_1') self.a.addGroup(e) gid = e[libuser.GIDNUMBER][0] del e e = self.a.lookupGroupById(gid) self.assertIsNotNone(e) self.assertEqual(e[libuser.GIDNUMBER], [gid]) del e e = self.a.lookupGroupById(999999) self.assertEqual(e, None) del e e = self.a.lookupGroupById(LARGE_ID + 1810) self.assertEqual(e, None) # testGroupDefault # There is little to test, in addition most is configurable # testGroupAddPrep # Nothing to test def testGroupAdd1(self): # A minimal case e = self.a.initGroup('group21_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_1') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group21_1']) self.assertRaises(KeyError, lambda x: x[libuser.GROUPPASSWORD], e) def testGroupAdd2(self): # A maximal case e = self.a.initGroup('group21_2') e[libuser.GROUPNAME] = 'group21_2groupname' e[libuser.GROUPPASSWORD] = '!!group21_2' e[libuser.GIDNUMBER] = 4237 e[libuser.MEMBERNAME] = ['group21_2member1', 'group21_2member2'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_2groupname') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group21_2groupname']) self.assertEqual(e[libuser.GROUPPASSWORD], ['!!group21_2']) self.assertEqual(e[libuser.GIDNUMBER], [4237]) v = sorted(e[libuser.MEMBERNAME]) self.assertEqual(v, ['group21_2member1', 'group21_2member2']) def testGroupAdd3(self): # Large IDs e = self.a.initGroup('group21_3') e[libuser.GIDNUMBER] = LARGE_ID + 2130 self.a.addGroup(e) del e e = self.a.lookupGroupByName('group21_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group21_3']) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 2130]) def testGroupAdd4(self): # Adding duplicate entries e = self.a.initGroup('group21_4') self.a.addGroup(e) del e e = self.a.initGroup('group21_4') self.assertRaises(RuntimeError, self.a.addGroup, e) def testGroupMod1(self): # A minimal case e = self.a.initGroup('group22_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_1') self.assertRaises(KeyError, lambda x: x[libuser.MEMBERNAME], e) e[libuser.MEMBERNAME] = 'group22_1member' self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_1') self.assertEqual(e[libuser.MEMBERNAME], ['group22_1member']) def testGroupMod2(self): # A maximal case, including renaming e = self.a.initGroup('group22_2') e[libuser.MEMBERNAME] = ['group22_2member1', 'group22_2member2'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_2') self.assertNotEqual(e[libuser.GROUPNAME], ['group22_2groupname']) e[libuser.GROUPNAME] = 'group22_2groupname' self.assertNotEqual(e[libuser.GIDNUMBER], [4237]) e[libuser.GIDNUMBER] = 4237 v = sorted(e[libuser.MEMBERNAME]) self.assertNotEqual(v, ['group22_2member1', 'group22_2member3']) e[libuser.MEMBERNAME] = ['group22_2member1', 'group22_2member3'] self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_2') self.assertEqual(e, None) del e e = self.a.lookupGroupByName('group22_2groupname') self.assertIsNotNone(e) self.assertEqual(e[libuser.GROUPNAME], ['group22_2groupname']) self.assertEqual(e[libuser.GIDNUMBER], [4237]) v = e[libuser.MEMBERNAME] v.sort() self.assertEqual(v, ['group22_2member1', 'group22_2member3']) def testGroupMod3(self): # Large IDs e = self.a.initGroup('group22_3') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_3') self.assertNotEqual(e[libuser.GIDNUMBER], [LARGE_ID + 2230]) e[libuser.GIDNUMBER] = LARGE_ID + 2230 self.a.modifyGroup(e) del e e = self.a.lookupGroupByName('group22_3') self.assertIsNotNone(e) self.assertEqual(e[libuser.GIDNUMBER], [LARGE_ID + 2230]) def testGroupMod4(self): # Renaming to create duplicate entries e = self.a.initGroup('group22_4') self.a.addGroup(e) del e e = self.a.initGroup('group22_5') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group22_5') e[libuser.GROUPNAME] = 'group22_4' self.assertRaises(RuntimeError, self.a.modifyGroup, e) def testGroupDel(self): e = self.a.initGroup('group23_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group23_1') self.assertIsNotNone(e) self.a.deleteGroup(e) del e e = self.a.lookupGroupByName('group23_1') self.assertEqual(e, None) def testGroupLock1(self): e = self.a.initGroup('group24_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group24_1') self.a.setpassGroup(e, '04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) self.a.lockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!04cmES7HM6wtg']) def testGroupLock2(self): e = self.a.initGroup('group24_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group24_2') self.a.setpassGroup(e, '!04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!04cmES7HM6wtg']) self.a.lockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!04cmES7HM6wtg']) def testGroupLock3(self): e = self.a.initGroup('group24_3') e[libuser.USERPASSWORD] = '{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group24_3') self.assertEqual(e[libuser.GROUPPASSWORD], ['{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==']) self.assertRaises(RuntimeError, self.a.lockGroup, e) def testGroupUnlock1(self): e = self.a.initGroup('group25_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_1') self.a.setpassGroup(e, '!04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!04cmES7HM6wtg']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) def testGroupUnlock2(self): e = self.a.initGroup('group25_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_2') self.a.setpassGroup(e, '04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) def testGroupUnlock3(self): e = self.a.initGroup('group25_3') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_3') self.a.setpassGroup(e, '!', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!']) self.a.unlockGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}']) def testGroupUnlock4(self): e = self.a.initGroup('group25_4') e[libuser.USERPASSWORD] = '{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group25_4') self.assertEqual(e[libuser.GROUPPASSWORD], ['{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==']) self.assertRaises(RuntimeError, self.a.unlockGroup, e) def testGroupUnlockNonempty1(self): e = self.a.initGroup('group33_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_1') self.a.setpassGroup(e, '!04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!04cmES7HM6wtg']) self.a.unlockGroup(e, True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) def testGroupUnlockNonempty2(self): e = self.a.initGroup('group33_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_2') self.a.setpassGroup(e, '04cmES7HM6wtg', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) self.a.unlockGroup(e, True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}04cmES7HM6wtg']) def testGroupUnlockNonempty3(self): e = self.a.initGroup('group33_3') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_3') self.a.setpassGroup(e, '!', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!']) self.assertRaises(RuntimeError, self.a.unlockGroup, e, True) del e e = self.a.lookupGroupByName('group33_3') self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!']) def testGroupUnlockNonempty4(self): e = self.a.initGroup('group33_4') e[libuser.USERPASSWORD] = '{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group33_4') self.assertEqual(e[libuser.GROUPPASSWORD], ['{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==']) self.assertRaises(RuntimeError, self.a.unlockGroup, e, True) def testGroupIsLocked1(self): e = self.a.initGroup('group26_1') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group26_1') self.a.setpassGroup(e, '!05/lfLEyErrp2', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!05/lfLEyErrp2']) self.assertEqual(self.a.groupIsLocked(e), 1) def testGroupIsLocked2(self): e = self.a.initGroup('group26_2') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group26_2') self.a.setpassGroup(e, '05/lfLEyErrp2', True) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}05/lfLEyErrp2']) self.assertEqual(self.a.groupIsLocked(e), 0) def testGroupSetpass1(self): e = self.a.initGroup('group27_1') e[libuser.GROUPPASSWORD] = '{CRYPT}06aZrb3pzuu/6' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_1') self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}06aZrb3pzuu/6']) self.a.setpassGroup(e, 'password', False) self.assertNotEqual(e[libuser.GROUPPASSWORD][0][7], '$') crypted = crypt.crypt('password', e[libuser.GROUPPASSWORD][0][7:]) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}' + crypted]) def testGroupSetpass2(self): e = self.a.initGroup('group27_2') e[libuser.GROUPPASSWORD] = ['unknown', '{CRYPT}06aZrb3pzuu/6'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_2') v = sorted(e[libuser.GROUPPASSWORD]) self.assertEqual(v, ['unknown', '{CRYPT}06aZrb3pzuu/6']) self.a.setpassGroup(e, 'password', False) v = e[libuser.GROUPPASSWORD] v.sort() self.assertNotEqual(e[libuser.GROUPPASSWORD][1][7], '$') crypted = crypt.crypt('password', v[1][7:]) self.assertEqual(v, ['unknown', '{CRYPT}' + crypted]) def testGroupSetpass3(self): e = self.a.initGroup('group27_3') e[libuser.GROUPPASSWORD] = ['unknown1', 'unknown2'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_3') v = sorted(e[libuser.GROUPPASSWORD]) self.assertEqual(v, ['unknown1', 'unknown2']) self.a.setpassGroup(e, 'password', False) self.assertEqual(e[libuser.GROUPPASSWORD][0][7:10], '$1$') crypted = crypt.crypt('password', e[libuser.GROUPPASSWORD][0][7:]) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}' + crypted]) def testGroupSetpass4(self): # Test that crypt_style is honored on accounts with no existing hash e = self.a.initGroup('group27_4') self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_4') self.assertRaises(KeyError, lambda x: x[libuser.GROUPPASSWORD], e) self.a.setpassGroup(e, 'password', False) del e e = self.a.lookupGroupByName('group27_4') self.assertEqual(e[libuser.GROUPPASSWORD][0][7:10], '$1$') crypted = crypt.crypt('password', e[libuser.GROUPPASSWORD][0][7:]) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}' + crypted]) def testGroupSetpass5(self): # Test that crypt_style is honored on accounts with no existing hash e = self.a.initGroup('group27_5') e[libuser.GROUPPASSWORD] = ['{CRYPT}!05XMoJIk1se52'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group27_5') self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}!05XMoJIk1se52']) self.a.setpassGroup(e, 'password', False) del e e = self.a.lookupGroupByName('group27_5') self.assertNotEqual(e[libuser.GROUPPASSWORD][0][7], '$') crypted = crypt.crypt('password', e[libuser.GROUPPASSWORD][0][7:]) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}' + crypted]) def testGroupRemovepass1(self): e = self.a.initGroup('group28_1') e[libuser.GROUPPASSWORD] = '{CRYPT}07Js7N.eEhbgs' self.a.addGroup(e) del e e = self.a.lookupGroupByName('group28_1') self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}07Js7N.eEhbgs']) self.a.removepassGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}']) def testGroupRemovepass2(self): e = self.a.initGroup('group28_2') e[libuser.GROUPPASSWORD] = ['unknown', '{CRYPT}07Js7N.eEhbgs'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group28_2') v = sorted(e[libuser.GROUPPASSWORD]) self.assertEqual(v, ['unknown', '{CRYPT}07Js7N.eEhbgs']) self.a.removepassGroup(e) v = e[libuser.GROUPPASSWORD] v.sort() self.assertEqual(v, ['unknown', '{CRYPT}']) def testGroupRemovepass3(self): e = self.a.initGroup('group28_3') e[libuser.GROUPPASSWORD] = ['unknown1', 'unknown2'] self.a.addGroup(e) del e e = self.a.lookupGroupByName('group28_3') v = sorted(e[libuser.GROUPPASSWORD]) self.assertEqual(v, ['unknown1', 'unknown2']) self.a.removepassGroup(e) self.assertEqual(e[libuser.GROUPPASSWORD], ['{CRYPT}']) def testGroupsEnumerate(self): e = self.a.initGroup('group29_1') self.a.addGroup(e) e = self.a.initGroup('group29_2') self.a.addGroup(e) v = sorted(self.a.enumerateGroups('group29*')) self.assertEqual(v, ['group29_1', 'group29_2']) def testGroupsEnumerateByUser1(self): gid = 3001 # Hopefully unique e = self.a.initUser('user30_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group30_1') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initGroup('group30_2') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user30_1' self.a.addGroup(e) v = sorted(self.a.enumerateGroupsByUser('user30_1')) self.assertEqual(v, ['group30_1', 'group30_2']) def testGroupsEnumerateByUser2(self): gid = 3002 # Hopefully unique e = self.a.initUser('user30_2') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group30_3') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) self.assertEqual(self.a.enumerateGroupsByUser('user30_2'), ['group30_3']) def testGroupsEnumerateByUser3(self): gid = 3003 # Hopefully unique e = self.a.initUser('user30_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group30_4') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user30_3' self.a.addGroup(e) self.assertEqual(self.a.enumerateGroupsByUser('user30_3'), ['group30_4']) def testGroupsEnumerateFull(self): e = self.a.initGroup('group31_1') self.a.addGroup(e) e = self.a.initGroup('group31_2') self.a.addGroup(e) v = sorted([x[libuser.GROUPNAME] for x in self.a.enumerateGroupsFull('group31*')]) self.assertEqual(v, [['group31_1'], ['group31_2']]) def testGroupsEnumerateByUserFull1(self): gid = 3501 # Hopefully unique e = self.a.initUser('user35_1') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group35_1') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) e = self.a.initGroup('group35_2') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user35_1' self.a.addGroup(e) v = sorted([x[libuser.GROUPNAME] for x in self.a.enumerateGroupsByUserFull('user35_1')]) self.assertEqual(v, [['group35_1'], ['group35_2']]) def testGroupsEnumerateByUserFull2(self): gid = 3502 # Hopefully unique e = self.a.initUser('user35_2') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group35_3') e[libuser.GIDNUMBER] = gid self.a.addGroup(e) v = [x[libuser.GROUPNAME] for x in self.a.enumerateGroupsByUserFull('user35_2')] self.assertEqual(v, [['group35_3']]) def testGroupsEnumerateByUserFull3(self): gid = 3503 # Hopefully unique e = self.a.initUser('user35_3') e[libuser.GIDNUMBER] = gid self.a.addUser(e, False, False) e = self.a.initGroup('group35_4') e[libuser.GIDNUMBER] = gid + 10 e[libuser.MEMBERNAME] = 'user35_3' self.a.addGroup(e) v = [x[libuser.GROUPNAME] for x in self.a.enumerateGroupsByUserFull('user35_3')] self.assertEqual(v, [['group35_4']]) def tearDown(self): del self.a if __name__ == '__main__': unittest.main() tests/ldaprc000066400000000000000000000001271471266067600134270ustar00rootroot00000000000000HOST 127.0.0.1 BASE dc=libuser # Don't check hostname on certificate TLS_REQCERT allow tests/pwhash.conf.in000066400000000000000000000005471471266067600150130ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs modules = files shadow create_modules = files shadow [userdefaults] LU_USERNAME = %n LU_UIDNUMBER = 500 LU_GIDNUMBER = %u [groupdefaults] LU_GROUPNAME = %n LU_GIDNUMBER = 500 [files] directory = @WORKDIR@/files nonroot = yes [shadow] directory = @WORKDIR@/files nonroot = yes [defaults] tests/pwhash.py000066400000000000000000000003431471266067600141030ustar00rootroot00000000000000import libuser admin = libuser.admin() e = admin.initUser('pwhash_user') admin.addUser(e, False, False) admin.setpassUser(e, 'password', False) res = e[libuser.SHADOWPASSWORD][0] admin.deleteUser(e, False, False) print(res) tests/pwhash_test000077500000000000000000000111111471266067600145110ustar00rootroot00000000000000#! /bin/sh # Automated password hashing regression tester # # Copyright (c) 2008 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmac srcdir=$srcdir/tests workdir=$(pwd)/test_pwhash trap 'status=$?; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" # Set up the environment mkdir "$workdir"/files touch "$workdir"/files/passwd "$workdir"/files/shadow touch "$workdir"/files/group "$workdir"/files/gshadow LIBUSER_CONF=$workdir/libuser.conf export LIBUSER_CONF sed "s|@WORKDIR@|$workdir|g; s|@TOP_BUILDDIR@|$(pwd)|g" \ < "$srcdir"/pwhash.conf.in > "${LIBUSER_CONF}_" # Ugly non-portable hacks LD_LIBRARY_PATH=$(pwd)/lib/.libs export LD_LIBRARY_PATH PYTHONPATH=$(pwd)/python/.libs export PYTHONPATH cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" echo 'crypt_style = des' >> "$LIBUSER_CONF" pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$}" != "x$pw" ]; then echo "Invalid DES hash" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" echo 'crypt_style = md5' >> "$LIBUSER_CONF" pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$1\$}" = "x$pw" ]; then echo "Invalid MD5 hash" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" echo 'crypt_style = sha256' >> "$LIBUSER_CONF" pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$}" = "x$pw" ]; then echo "Invalid SHA256 hash" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" echo 'crypt_style = sha512' >> "$LIBUSER_CONF" pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$6\$}" = "x$pw" ]; then echo "Invalid SHA512 hash" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" echo 'crypt_style = blowfish' >> "$LIBUSER_CONF" pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$2b\$}" = "x$pw" ]; then echo "Invalid BLOWFISH hash" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" echo 'crypt_style = yescrypt' >> "$LIBUSER_CONF" pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$y\$}" = "x$pw" ]; then echo "Invalid YESCRYPT hash" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" cat >> "$LIBUSER_CONF" <<\EOF crypt_style = sha256 hash_rounds_min = 4242 EOF pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$rounds=4242\$}" = "x$pw" ]; then echo "Invalid rounds value" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" cat >> "$LIBUSER_CONF" <<\EOF crypt_style = sha256 hash_rounds_max = 4243 EOF pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$rounds=4243\$}" = "x$pw" ]; then echo "Invalid rounds value" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" cat >> "$LIBUSER_CONF" <<\EOF crypt_style = sha256 hash_rounds_min = 4244 hash_rounds_max = 4244 EOF pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$rounds=4244\$}" = "x$pw" ]; then echo "Invalid rounds value" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" cat >> "$LIBUSER_CONF" <<\EOF crypt_style = sha256 hash_rounds_min = 4246 hash_rounds_max = 4245 EOF pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$rounds=4246\$}" = "x$pw" ]; then echo "Invalid rounds value" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" cat >> "$LIBUSER_CONF" <<\EOF crypt_style = sha256 hash_rounds_min = 4247 hash_rounds_max = 4247 EOF pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$rounds=4247\$}" = "x$pw" ]; then echo "Invalid rounds value" >&2 exit 1 fi cp "${LIBUSER_CONF}_" "$LIBUSER_CONF" cat >> "$LIBUSER_CONF" <<\EOF crypt_style = sha256 hash_rounds_min = 50000 hash_rounds_max = 59999 EOF pw=$(workdir="$workdir" $VALGRIND $PYTHON "$srcdir"/pwhash.py) if [ "x${pw#\$5\$rounds=5????\$}" = "x$pw" ]; then echo "Invalid rounds value" >&2 exit 1 fi tests/slapd.conf.in000066400000000000000000000012301471266067600146120ustar00rootroot00000000000000include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema allow bind_v2 pidfile @WORKDIR@/slapd.pid TLSCertificateFile @WORKDIR@/key.pem TLSCertificateKeyFile @WORKDIR@/key.pem database mdb suffix "dc=libuser" rootdn "cn=Manager,dc=libuser" rootpw {SSHA}ABgelmLFZQ/OJzVEp3OM5MzWQ9rt3b4F directory @WORKDIR@/db index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub tests/utils.conf.in000066400000000000000000000014151471266067600146540ustar00rootroot00000000000000[defaults] # non-portable moduledir = @TOP_BUILDDIR@/modules/.libs skeleton = /etc/skel mailspooldir = /var/mail modules = files shadow create_modules = files shadow crypt_style = md5 [userdefaults] LU_USERNAME = %n LU_UIDNUMBER = 500 LU_GIDNUMBER = %u # LU_USERPASSWORD = !! # LU_GECOS = %n # LU_HOMEDIRECTORY = /home/%n # LU_LOGINSHELL = /bin/bash # LU_SHADOWNAME = %n # LU_SHADOWPASSWORD = !! # LU_SHADOWLASTCHANGE = %d # LU_SHADOWMIN = 0 # LU_SHADOWMAX = 99999 # LU_SHADOWWARNING = 7 # LU_SHADOWINACTIVE = -1 # LU_SHADOWEXPIRE = -1 # LU_SHADOWFLAG = -1 [groupdefaults] LU_GROUPNAME = %n LU_GIDNUMBER = 500 # LU_GROUPPASSWORD = !! # LU_MEMBERUID = # LU_ADMINISTRATORUID = [files] directory = @WORKDIR@/files nonroot = yes [shadow] directory = @WORKDIR@/files nonroot = yes tests/utils_group000066400000000000000000000011111471266067600145300ustar00rootroot00000000000000group1_1:x:2147483758: group3_2:x:2147483959:user3_4 group3_3:x:2147483978: group3_4:x:2147483989:user3_6 group3_5:x:2147483998: user4_1:x:2147484058: user4_2:x:2147484068: group5_1:x:2147484158:user5_2 group5_2:x:2147484168:user5_1,user5_2 group5_3:x:2147484178: user6_2:x:2147484268: group6_3:x:2147484278: user6_1:x:2147484258: group6_4:x:GID: group7_1:x:2147484358: 2147484369:x:2147484368: group8_1:x:2147484458: user8_3:x:2147484478: group9_1:x:2147484558: group9_2:x:2147484568: group9_3:x:2147484578: group9_4:x:2147484588: group9_5:x:2147484598:user9_5 group9_6:x:2147484608: tests/utils_gshadow000066400000000000000000000006271471266067600150430ustar00rootroot00000000000000group1_1:!!:: group3_2:!!01vokOibos3pg:user3_2:user3_4 group3_3:02yd6IWnPes66:: group3_4:!!::user3_6 group3_5:!!:: user4_1:!!:: user4_2:!!:: group5_1:!!::user5_2 group5_2:!!::user5_1,user5_2 group5_3:!!:: user6_2:!!:: group6_3:!!:: user6_1:!!:: group6_4:!!:: group7_1:!!:: 2147484369:!!:: group8_1:!!:: user8_3:!!:: group9_1:!!:: group9_2:!!:: group9_3:!!:: group9_4:!!:: group9_5:!!::user9_5 group9_6:!!:: tests/utils_passwd000066400000000000000000000017711471266067600147110ustar00rootroot00000000000000user3_5:x:2147483998:2147483989:user3_5:/home/user3_5:/bin/bash user3_6:x:2147484008:2147483998:user3_6:/home/user3_6:/bin/bash user4_1:x:2147484058:2147484058:user4_1:/home/user4_1:/bin/bash user4_2:x:2147484068:2147484068:user4_2:/home/user4_2:/bin/bash user5_1:x:2147484158:2147484158:user5_1:/home/user5_1:/bin/bash user5_2:x:2147484168:2147484178:user5_2:/home/user5_2:/bin/bash user6_1:x:2147484258:2147484258:GECOS6_1:HomeDir6_1:Shell6_1 user6_2:x:2147484268:2147484268:user6_2:/home/user6_2:/bin/bash user6_3:x:2147484278:2147484278:user6_3:/home/user6_3:/bin/bash user6_4:x:2147484288:GID:user6_4:/home/user6_4:/bin/bash user7_1:x:2147484358:2147484358:GECOS7_1:HomeDir7_1:Shell7_1 2147484369:x:2147484370:2147484368:2147484369:/home/2147484369:/bin/bash user9_2:x:2147484559:2147484568:GECOS9_1:HomeDir9_1:Shell9_1 user9_3:x:2147484578:2147484578:user9_3:/home/user9_3:/bin/bash user9_5:x:2147484588:2147484588:user9_4:/home/user9_4:/bin/bash user9_6:x:2147484608:2147484609:user9_6:/home/user9_6:/bin/bash tests/utils_shadow000066400000000000000000000007721471266067600146750ustar00rootroot00000000000000user3_5:!!:DATE:0:99999:7::: user3_6:!!:DATE:0:99999:7::: user4_1:!!:400:430:440:450:420:410: user4_2:!!::::::: user5_1:!!:DATE:0:99999:7::: user5_2:!!:DATE:0:99999:7::: user6_1:HASH:DATE:0:99999:7::: user6_2:HASH:DATE:0:99999:7::: user6_3:HASH:DATE:0:99999:7::: user6_4:HASH:DATE:0:99999:7::: user7_1:03dgZm5nZvqOc:DATE:0:99999:7::: 2147484369:!!:DATE:0:99999:7::: user9_2:!!04aqostCGmvZM:DATE:0:99999:7::: user9_3:05FdoegP8UniQ:DATE:0:99999:7::: user9_5:!!:DATE:0:99999:7::: user9_6:!!:DATE:0:99999:7::: tests/utils_test000077500000000000000000000205421471266067600143670ustar00rootroot00000000000000#! /bin/sh # Automated libuser utilities regression tester # # Copyright (c) 2004, 2005, 2008 Red Hat, Inc. All rights reserved. # # This 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 program 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 # General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Miloslav Trmac srcdir=$srcdir/tests workdir=$(pwd)/test_utils trap 'status=$?; rm -rf "$workdir"; exit $status' 0 trap '(exit 1); exit 1' 1 2 13 15 rm -rf "$workdir" mkdir "$workdir" # Set up an the environment mkdir "$workdir"/files > "$workdir"/files/passwd > "$workdir"/files/shadow > "$workdir"/files/group > "$workdir"/files/gshadow # Set up the client LIBUSER_CONF=$workdir/libuser.conf export LIBUSER_CONF sed "s|@WORKDIR@|$workdir|g; s|@TOP_BUILDDIR@|$(pwd)|g" \ < "$srcdir"/utils.conf.in > "$LIBUSER_CONF" P=$(pwd)/apps VG=$VALGRIND LARGE_ID=2147483648 ( set -e # lgroupadd: $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 110)" group1_1 # untested: -r # lgroupdel: $VG "$P"/lgroupadd group2_1 $VG "$P"/lgroupdel group2_1 # lgroupmod: $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 310)" group3_1 $VG "$P"/lgroupmod -A user3_1,user3_2 -g "$(expr $LARGE_ID + 311)" -L \ -M user3_3,user3_4 -n group3_2 -p '01vokOibos3pg' group3_1 $VG "$P"/lgroupmod -a user3_1,user3_1notexist -m user3_3,user3_2notexist -L \ group3_2 $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 330)" group3_3 $VG "$P"/lgroupmod -p '!!02yd6IWnPes66' group3_3 $VG "$P"/lgroupmod -U group3_3 # Handling of GID change for primary and secondary groups $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 340)" group3_4 $VG "$P"/luseradd -M -g group3_4 -u "$(expr $LARGE_ID + 350)" user3_5 $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 350)" group3_5 $VG "$P"/luseradd -M -g group3_5 -u "$(expr $LARGE_ID + 360)" user3_6 $VG "$P"/lgroupmod -M user3_6 group3_4 $VG "$P"/lgroupmod -g "$(expr $LARGE_ID + 341)" group3_4 # untested: -P # lchage: $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 410)" user4_1 $VG "$P"/luseradd -M -u "$(expr $LARGE_ID + 410)" user4_1 $VG "$P"/lchage -d 400 -E 410 -I 420 -m 430 -M 440 -W 450 user4_1 LC_ALL=C $VG "$P"/lchage -l user4_1 > "$workdir"/lchage_output diff - "$workdir"/lchage_output <<\EOF Account is locked. Minimum: 430 Maximum: 440 Warning: 450 Inactive: 420 Last Change: 02/05/71 Password Expires: 04/20/72 Password Inactive: 06/14/73 Account Expires: 02/15/71 EOF $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 420)" user4_2 $VG "$P"/luseradd -M -u "$(expr $LARGE_ID + 420)" user4_2 $VG "$P"/lchage -d 0 -E -1 -I -1 -m -1 -M -1 -W -1 user4_2 LC_ALL=C $VG "$P"/lchage -l user4_2 > "$workdir"/lchage_output diff - "$workdir"/lchage_output <<\EOF Account is locked. Minimum: 0 Maximum: None Warning: 0 Inactive: Never Last Change: Must change password on next login Password Expires: Must change password on next login Password Inactive: Must change password on next login Account Expires: Never EOF $VG "$P"/lchage -d -1 -E -1 -I -1 -m -1 -M -1 -W -1 user4_2 LC_ALL=C $VG "$P"/lchage -l user4_2 > "$workdir"/lchage_output diff - "$workdir"/lchage_output <<\EOF Account is locked. Minimum: 0 Maximum: None Warning: 0 Inactive: Never Last Change: Never Password Expires: Never Password Inactive: Never Account Expires: Never EOF # lchfn: untested (requires system account) # lchsh: untested (requires system account) # lid: $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 510)" group5_1 $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 520)" group5_2 $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 530)" group5_3 $VG "$P"/luseradd -M -g group5_1 -u "$(expr $LARGE_ID + 510)" user5_1 $VG "$P"/luseradd -M -g group5_3 -u "$(expr $LARGE_ID + 520)" user5_2 $VG "$P"/lgroupmod -M user5_1,user5_2 group5_2 $VG "$P"/lgroupmod -M user5_2 group5_1 $VG "$P"/lid user5_1 > "$workdir"/lid_output1 diff - "$workdir"/lid_output1 < "$workdir"/lid_output2 diff - "$workdir"/lid_output2 <<\EOF group5_1 group5_2 EOF $VG "$P"/lid -g group5_1 > "$workdir"/lid_output3 diff - "$workdir"/lid_output3 < "$workdir"/lid_output4 diff - "$workdir"/lid_output4 <<\EOF user5_1 user5_2 EOF # lnewusers: $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 620)" user6_2 $VG "$P"/lgroupadd -g "$(expr $LARGE_ID + 630)" group6_3 LC_ALL=C $VG "$P"/lnewusers -M -n 2> "$workdir"/lnewusers_output <"$workdir"/lusermod_output diff - "$workdir"/lusermod_output < "$workdir"/group diff -u "$srcdir"/utils_group "$workdir"/group grep -v '^\.\.\?:' < "$workdir"/files/gshadow > "$workdir"/gshadow diff -u "$srcdir"/utils_gshadow "$workdir"/gshadow sed 's/^\(user6_4:x:[^:]*\):[0123456789]*:\(.*\)$/\1:GID:\2/' \ < "$workdir"/files/passwd > "$workdir"/passwd diff -u "$srcdir"/utils_passwd "$workdir"/passwd sed -e 's/^\([^:]*:[^:]*\):[0123456789]\{5,\}:\(.*\)$/\1:DATE:\2/' \ -e 's/^\([^:]*\):\$1\$[^:]*:\(.*\)$/\1:HASH:\2/' \ < "$workdir"/files/shadow \ | grep -v '^\.\.\?:' > "$workdir"/shadow diff -u "$srcdir"/utils_shadow "$workdir"/shadow ) tests/valgrind.supp000066400000000000000000000017621471266067600147640ustar00rootroot00000000000000{ GLib g_type_init Memcheck:Leak ... fun:g_type_init_with_debug_flags } { librpm addr1 Memcheck:Addr1 ... fun:init_rpm } { librpm addr2 Memcheck:Addr2 ... fun:init_rpm } { librpm addr4 Memcheck:Addr4 ... fun:init_rpm } { librpm/NSS Memcheck:Leak ... fun:NSS_NoDB_Init ... fun:init_rpm } { glibc md5 Memcheck:Cond fun:__stpncpy_sse2_unaligned fun:__md5_crypt_r } { glibc sha256 Memcheck:Cond fun:__stpncpy_sse2_unaligned fun:__sha256_crypt_r } { glibc sha512 Memcheck:Cond fun:__stpncpy_sse2_unaligned fun:__sha512_crypt_r } { NSS initialization Memcheck:Leak ... fun:NSS_InitContext } { strlen() in popt (?) Memcheck:Addr4 ... fun:poptGetNextOpt } { known memory leak "in" popt (well, the data is for the caller...) Memcheck:Leak fun:malloc fun:poptGetNextOpt } { known memory leak in popt Memcheck:Leak fun:realloc fun:poptGetNextOpt fun:main } tests/wait_for_slapd_exit.c000066400000000000000000000042541471266067600164360ustar00rootroot00000000000000/* Copyright (C) 2012 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #undef NDEBUG #include static int slapd_exited(const char *pid_file, int sock, const struct sockaddr_in *sin) { return access(pid_file, F_OK) != 0 && connect(sock, (const struct sockaddr *)sin, sizeof (*sin)) != 0; } /* Wait for slapd to remove its pid file and close its socket. */ int main(int argc, char *argv[]) { long port; char *p; struct sockaddr_in sin; int sock, i; assert(argc == 3); errno = 0; port = strtol(argv[2], &p, 10); assert (errno == 0 && *p == 0 && p != argv[2] && (in_port_t)port == port); sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); assert(sock != -1); sin.sin_family = AF_INET; sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_port = htons(port); for (i = 0; i < 50; i++) { printf("\rWaiting for slapd exit: %.1f...", i / 10.0); fflush(stdout); if (slapd_exited(argv[1], sock, &sin)) goto ok; usleep(100000); } for (i = 5; i < 30; i++) { printf("\rWaiting for slapd exit: %d... ", i); fflush(stdout); if (slapd_exited(argv[1], sock, &sin)) goto ok; sleep(1); } close(sock); putchar('\n'); fprintf(stderr, "Timeout waiting for exit\n"); return EXIT_FAILURE; ok: close(sock); putchar('\n'); return EXIT_SUCCESS; } tests/wait_for_slapd_start.c000066400000000000000000000042321471266067600166160ustar00rootroot00000000000000/* Copyright (C) 2012 Red Hat, Inc. * * This 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 program 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 * General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #undef NDEBUG #include static int slapd_started(const char *pid_file, int sock, const struct sockaddr_in *sin) { return access(pid_file, F_OK) == 0 && connect(sock, (const struct sockaddr *)sin, sizeof (*sin)) == 0; } /* Wait for slapd to start and create its pid file */ int main(int argc, char *argv[]) { long port; char *p; struct sockaddr_in sin; int sock, i; assert(argc == 3); errno = 0; port = strtol(argv[2], &p, 10); assert (errno == 0 && *p == 0 && p != argv[2] && (in_port_t)port == port); sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); assert(sock != -1); sin.sin_family = AF_INET; sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_port = htons(port); for (i = 0; i < 50; i++) { printf("\rWaiting for slapd: %.1f...", i / 10.0); fflush(stdout); if (slapd_started(argv[1], sock, &sin)) goto ok; usleep(100000); } for (i = 5; i < 30; i++) { printf("\rWaiting for slapd: %d... ", i); fflush(stdout); if (slapd_started(argv[1], sock, &sin)) goto ok; sleep(1); } close(sock); putchar('\n'); fprintf(stderr, "Timeout waiting for slapd\n"); return EXIT_FAILURE; ok: close(sock); putchar('\n'); return EXIT_SUCCESS; } zanata.xml000066400000000000000000000054001471266067600130740ustar00rootroot00000000000000 https://fedora.zanata.org/ libuser default gettext po po af am anp ar as ast bal be bg bn bn-IN bo br brx bs ca cs cy da de de-CH el en-GB eo es et eu fa fi fr gl gu he hi hr hu ia id ilo is it ja ka kk km kn ko kw kw-GB kw@kkcor kw@uccor ky lt lv mai mk ml mn mr ms nb nds ne nl nn nso or pa pl pt pt-BR ro ru si sk sl sq sr sr@latin sv ta te tg th tr tw uk ur vi wba yo zh-CN zh-HK zh-TW zu