/* * This file is part of the SSH Library * * Copyright (c) 2010 by Aris Adamantiadis * * The SSH Library is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or (at your * option) any later version. * * The SSH Library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the SSH Library; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. */ #ifndef LIBSSHPP_HPP_ #define LIBSSHPP_HPP_ /** * @defgroup ssh_cpp The libssh C++ wrapper * * The C++ bindings for libssh are completely embedded in a single .hpp file, and * this for two reasons: * - C++ is hard to keep binary compatible, C is easy. We try to keep libssh C version * as much as possible binary compatible between releases, while this would be hard for * C++. If you compile your program with these headers, you will only link to the C version * of libssh which will be kept ABI compatible. No need to recompile your C++ program * each time a new binary-compatible version of libssh is out * - Most of the functions in this file are really short and are probably worth the "inline" * linking mode, which the compiler can decide to do in some case. There would be nearly no * performance penalty of using the wrapper rather than native calls. * * Please visit the documentation of ssh::Session and ssh::Channel * @see ssh::Session * @see ssh::Channel * * If you wish not to use C++ exceptions, please define SSH_NO_CPP_EXCEPTIONS: * @code * #define SSH_NO_CPP_EXCEPTIONS * #include * @endcode * All functions will then return SSH_ERROR in case of error. * @{ */ /* do not use deprecated functions */ #define LIBSSH_LEGACY_0_4 #include #include #include #include #include namespace ssh { class Channel; /** Some people do not like C++ exceptions. With this define, we give * the choice to use or not exceptions. * @brief if defined, disable C++ exceptions for libssh c++ wrapper */ #ifndef SSH_NO_CPP_EXCEPTIONS /** @brief This class describes a SSH Exception object. This object can be thrown * by several SSH functions that interact with the network, and may fail because of * socket, protocol or memory errors. */ class SshException{ public: SshException(ssh_session csession){ code=ssh_get_error_code(csession); description=std::string(ssh_get_error(csession)); } SshException(const SshException &e){ code=e.code; description=e.description; } /** @brief returns the Error code * @returns SSH_FATAL Fatal error happened (not recoverable) * @returns SSH_REQUEST_DENIED Request was denied by remote host * @see ssh_get_error_code */ int getCode(){ return code; } /** @brief returns the error message of the last exception * @returns pointer to a c string containing the description of error * @see ssh_get_error */ std::string getError(){ return description; } private: int code; std::string description; }; /** @internal * @brief Macro to throw exception if there was an error */ #define ssh_throw(x) if((x)==SSH_ERROR) throw SshException(getCSession()) #define ssh_throw_null(CSession,x) if((x)==NULL) throw SshException(CSession) #define void_throwable void #else /* No exception at all. All functions will return an error code instead * of an exception */ #define ssh_throw(x) if((x)==SSH_ERROR) return SSH_ERROR #define ssh_throw_null(CSession,x) if((x)==NULL) return NULL #define void_throwable int #endif /** * The ssh::Session class contains the state of a SSH connection. */ class Session { friend class Channel; public: Session(){ c_session=ssh_new(); } ~Session(){ ssh_free(c_session); c_session=NULL; } /** @brief sets an SSH session options * @param type Type of option * @param option cstring containing the value of option * @throws SshException on error * @see ssh_options_set */ void_throwable setOption(enum ssh_options_e type, const char *option){ ssh_throw(ssh_options_set(c_session,type,option)); } /** @brief sets an SSH session options * @param type Type of option * @param option long integer containing the value of option * @throws SshException on error * @see ssh_options_set */ void_throwable setOption(enum ssh_options_e type, long int option){ ssh_throw(ssh_options_set(c_session,type,&option)); } /** @brief sets an SSH session options * @param type Type of option * @param option void pointer containing the value of option * @throws SshException on error * @see ssh_options_set */ void_throwable setOption(enum ssh_options_e type, void *option){ ssh_throw(ssh_options_set(c_session,type,option)); } /** @brief connects to the remote host * @throws SshException on error * @see ssh_connect */ void_throwable connect(){ int ret=ssh_connect(c_session); ssh_throw(ret); } /** @brief Authenticates automatically using public key * @throws SshException on error * @returns SSH_AUTH_SUCCESS, SSH_AUTH_PARTIAL, SSH_AUTH_DENIED * @see ssh_userauth_autopubkey */ int userauthAutopubkey(void){ int ret=ssh_userauth_autopubkey(c_session,NULL); ssh_throw(ret); return ret; } /** @brief Authenticates using the "none" method. Prefer using autopubkey if * possible. * @throws SshException on error * @returns SSH_AUTH_SUCCESS, SSH_AUTH_PARTIAL, SSH_AUTH_DENIED * @see ssh_userauth_none * @see Session::userauthAutoPubkey */ int userauthNone(){ int ret=ssh_userauth_none(c_session,NULL); ssh_throw(ret); return ret; } /** @brief Authenticates using the password method. * @param[in] password password to use for authentication * @throws SshException on error * @returns SSH_AUTH_SUCCESS, SSH_AUTH_PARTIAL, SSH_AUTH_DENIED * @see ssh_userauth_password */ int userauthPassword(const char *password){ int ret=ssh_userauth_password(c_session,NULL,password); ssh_throw(ret); return ret; } /** @brief Try to authenticate using the publickey method. * @param[in] type public key type * @param[in] pubkey public key to use for authentication * @throws SshException on error * @returns SSH_AUTH_SUCCESS if the pubkey is accepted, * @returns SSH_AUTH_DENIED if the pubkey is denied * @see ssh_userauth_offer_pubkey */ int userauthOfferPubkey(int type, ssh_string pubkey){ int ret=ssh_userauth_offer_pubkey(c_session,NULL,type,pubkey); ssh_throw(ret); return ret; } /** @brief Authenticates using the publickey method. * @param[in] pubkey public key to use for authentication * @param[in] privkey private key to use for authentication * @throws SshException on error * @returns SSH_AUTH_SUCCESS, SSH_AUTH_PARTIAL, SSH_AUTH_DENIED * @see ssh_userauth_pubkey */ int userauthPubkey(ssh_string pubkey, ssh_private_key privkey){ int ret=ssh_userauth_pubkey(c_session,NULL,pubkey,privkey); ssh_throw(ret); return ret; } int userauthPubkey(ssh_private_key privkey){ int ret=ssh_userauth_pubkey(c_session,NULL,NULL,privkey); ssh_throw(ret); return ret; } int userauthPrivatekeyFile(const char *filename, const char *passphrase); /** @brief Returns the available authentication methods from the server * @throws SshException on error * @returns Bitfield of available methods. * @see ssh_userauth_list */ int getAuthList(){ int ret=ssh_userauth_list(c_session, NULL); ssh_throw(ret); return ret; } /** @brief Disconnects from the SSH server and closes connection * @see ssh_disconnect */ void disconnect(){ ssh_disconnect(c_session); } /** @brief Returns the disconnect message from the server, if any * @returns pointer to the message, or NULL. Do not attempt to free * the pointer. */ const char *getDisconnectMessage(){ const char *msg=ssh_get_disconnect_message(c_session); return msg; } /** @internal * @brief gets error message */ const char *getError(){ return ssh_get_error(c_session); } /** @internal * @brief returns error code */ int getErrorCode(){ return ssh_get_error_code(c_session); } /** @brief returns the file descriptor used for the communication * @returns the file descriptor * @warning if a proxycommand is used, this function will only return * one of the two file descriptors being used * @see ssh_get_fd */ socket_t getSocket(){ return ssh_get_fd(c_session); } /** @brief gets the Issue banner from the ssh server * @returns the issue banner. This is generally a MOTD from server * @see ssh_get_issue_banner */ std::string getIssueBanner(){ char *banner=ssh_get_issue_banner(c_session); std::string ret= std::string(banner); ::free(banner); return ret; } /** @brief returns the OpenSSH version (server) if possible * @returns openssh version code * @see ssh_get_openssh_version */ int getOpensshVersion(){ return ssh_get_openssh_version(c_session); } /** @brief returns the version of the SSH protocol being used * @returns the SSH protocol version * @see ssh_get_version */ int getVersion(){ return ssh_get_version(c_session); } /** @brief verifies that the server is known * @throws SshException on error * @returns Integer value depending on the knowledge of the * server key * @see ssh_is_server_known */ int isServerKnown(){ int ret=ssh_is_server_known(c_session); ssh_throw(ret); return ret; } void log(int priority, const char *format, ...){ char buffer[1024]; int min; va_list va; va_start(va, format); vsnprintf(buffer, sizeof(buffer), format, va); va_end(va); ssh_log(c_session,priority, "%s", buffer); } /** @brief copies options from a session to another * @throws SshException on error * @see ssh_options_copy */ void_throwable optionsCopy(const Session &source){ ssh_throw(ssh_options_copy(source.c_session,&c_session)); } /** @brief parses a configuration file for options * @throws SshException on error * @param[in] file configuration file name * @see ssh_options_parse_config */ void_throwable optionsParseConfig(const char *file){ ssh_throw(ssh_options_parse_config(c_session,file)); } /** @brief silently disconnect from remote host * @see ssh_silent_disconnect */ void silentDisconnect(){ ssh_silent_disconnect(c_session); } /** @brief Writes the known host file with current * host key * @throws SshException on error * @see ssh_write_knownhost */ int writeKnownhost(){ ssh_throw(ssh_write_knownhost(c_session)); } /** @brief accept an incoming forward connection * @param[in] timeout_ms timeout for waiting, in ms * @returns new Channel pointer on the forward connection * @returns NULL in case of error * @warning you have to delete this pointer after use * @see ssh_channel_forward_accept * @see Session::listenForward */ Channel *acceptForward(int timeout_ms); /* acceptForward is implemented later in this file */ void_throwable cancelForward(const char *address, int port){ int err=ssh_forward_cancel(c_session, address, port); ssh_throw(err); } void_throwable listenForward(const char *address, int port, int &boundport){ int err=ssh_forward_listen(c_session, address, port, &boundport); ssh_throw(err); } private: ssh_session c_session; ssh_session getCSession(){ return c_session; } /* No copy constructor, no = operator */ Session(const Session &); Session& operator=(const Session &); }; /** @brief the ssh::Channel class describes the state of an SSH * channel. * @see ssh_channel */ class Channel { friend class Session; public: Channel(Session &session){ channel=ssh_channel_new(session.getCSession()); this->session=&session; } ~Channel(){ ssh_channel_free(channel); channel=NULL; } /** @brief accept an incoming X11 connection * @param[in] timeout_ms timeout for waiting, in ms * @returns new Channel pointer on the X11 connection * @returns NULL in case of error * @warning you have to delete this pointer after use * @see ssh_channel_accept_x11 * @see Channel::requestX11 */ Channel *acceptX11(int timeout_ms){ ssh_channel x11chan = ssh_channel_accept_x11(channel,timeout_ms); ssh_throw_null(getCSession(),x11chan); Channel *newchan = new Channel(getSession(),x11chan); return newchan; } /** @brief change the size of a pseudoterminal * @param[in] cols number of columns * @param[in] rows number of rows * @throws SshException on error * @see ssh_channel_change_pty_size */ void_throwable changePtySize(int cols, int rows){ int err=ssh_channel_change_pty_size(channel,cols,rows); ssh_throw(err); } /** @brief closes a channel * @throws SshException on error * @see ssh_channel_close */ void_throwable close(){ ssh_throw(ssh_channel_close(channel)); } int getExitStatus(){ return ssh_channel_get_exit_status(channel); } Session &getSession(){ return *session; } /** @brief returns true if channel is in closed state * @see ssh_channel_is_closed */ bool isClosed(){ return ssh_channel_is_closed(channel) != 0; } /** @brief returns true if channel is in EOF state * @see ssh_channel_is_eof */ bool isEof(){ return ssh_channel_is_eof(channel) != 0; } /** @brief returns true if channel is in open state * @see ssh_channel_is_open */ bool isOpen(){ return ssh_channel_is_open(channel) != 0; } int openForward(const char *remotehost, int remoteport, const char *sourcehost=NULL, int localport=0){ int err=ssh_channel_open_forward(channel,remotehost,remoteport, sourcehost, localport); ssh_throw(err); return err; } /* TODO: completely remove this ? */ void_throwable openSession(){ int err=ssh_channel_open_session(channel); ssh_throw(err); } int poll(bool is_stderr=false){ int err=ssh_channel_poll(channel,is_stderr); ssh_throw(err); return err; } int read(void *dest, size_t count, bool is_stderr=false){ int err; /* handle int overflow */ if(count > 0x7fffffff) count = 0x7fffffff; err=ssh_channel_read(channel,dest,count,is_stderr); ssh_throw(err); return err; } int readNonblocking(void *dest, size_t count, bool is_stderr=false){ int err; /* handle int overflow */ if(count > 0x7fffffff) count = 0x7fffffff; err=ssh_channel_read_nonblocking(channel,dest,count,is_stderr); ssh_throw(err); return err; } void_throwable requestEnv(const char *name, const char *value){ int err=ssh_channel_request_env(channel,name,value); ssh_throw(err); } void_throwable requestExec(const char *cmd){ int err=ssh_channel_request_exec(channel,cmd); ssh_throw(err); } void_throwable requestPty(const char *term=NULL, int cols=0, int rows=0){ int err; if(term != NULL && cols != 0 && rows != 0) err=ssh_channel_request_pty_size(channel,term,cols,rows); else err=ssh_channel_request_pty(channel); ssh_throw(err); } void_throwable requestShell(){ int err=ssh_channel_request_shell(channel); ssh_throw(err); } void_throwable requestSendSignal(const char *signum){ int err=ssh_channel_request_send_signal(channel, signum); ssh_throw(err); } void_throwable requestSubsystem(const char *subsystem){ int err=ssh_channel_request_subsystem(channel,subsystem); ssh_throw(err); } int requestX11(bool single_connection, const char *protocol, const char *cookie, int screen_number){ int err=ssh_channel_request_x11(channel,single_connection, protocol, cookie, screen_number); ssh_throw(err); } void_throwable sendEof(){ int err=ssh_channel_send_eof(channel); ssh_throw(err); } /** @brief Writes on a channel * @param data data to write. * @param len number of bytes to write. * @param is_stderr write should be done on the stderr channel (server only) * @returns number of bytes written * @throws SshException in case of error * @see channel_write * @see channel_write_stderr */ int write(const void *data, size_t len, bool is_stderr=false){ int ret; if(is_stderr){ ret=channel_write_stderr(channel,data,len); } else { ret=ssh_channel_write(channel,data,len); } ssh_throw(ret); return ret; } private: ssh_session getCSession(){ return session->getCSession(); } Channel (Session &session, ssh_channel c_channel){ this->channel=c_channel; this->session=&session; } Session *session; ssh_channel channel; /* No copy and no = operator */ Channel(const Channel &); Channel &operator=(const Channel &); }; /* This code cannot be put inline due to references to Channel */ Channel *Session::acceptForward(int timeout_ms){ ssh_channel forward = ssh_forward_accept(c_session, timeout_ms); ssh_throw_null(c_session,forward); Channel *newchan = new Channel(*this,forward); return newchan; } } // namespace ssh /** @} */ #endif /* LIBSSHPP_HPP_ */ > 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Red Hat, Inc.
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Adolfo Jayme Barrientos <fitoschido@ubuntu.com>, 2012
# Daniel Cabrera <logan@fedoraproject.org>, 2011
# vareli <ehespinosa@ya.com>, 2013
# Daniel Cabrera <logan@fedoraproject.org>, 2011
# Hugo Jiménez Hernández <hjimenezhdez@gmail.com>, 2011
# sgallagh <sgallagh@redhat.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: SSSD\n"
"Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n"
"POT-Creation-Date: 2013-08-28 22:37+0200\n"
"PO-Revision-Date: 2013-07-24 12:27+0000\n"
"Last-Translator: jhrozek <jhrozek@redhat.com>\n"
"Language-Team: Spanish <trans-es@lists.fedoraproject.org>\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"

#: src/config/SSSDConfig/__init__.py.in:39
msgid "Set the verbosity of the debug logging"
msgstr "Establece el nivel de detalle del registro de depuración"

#: src/config/SSSDConfig/__init__.py.in:40
msgid "Include timestamps in debug logs"
msgstr "Incluir la marca de tiempo en los registros de depuración"

#: src/config/SSSDConfig/__init__.py.in:41
msgid "Include microseconds in timestamps in debug logs"
msgstr ""
"Incluir microsegundos en la marca de tiempo en los registros de depuración"

#: src/config/SSSDConfig/__init__.py.in:42
msgid "Write debug messages to logfiles"
msgstr "Escribir los mensajes de depuración a archivos log"

#: src/config/SSSDConfig/__init__.py.in:43
msgid "Ping timeout before restarting service"
msgstr "Tiempo máximo de ping antes de reiniciar el servicio"

#: src/config/SSSDConfig/__init__.py.in:44
msgid ""
"Timeout between three failed ping checks and forcibly killing the service"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:45
msgid "Command to start service"
msgstr "Comando para iniciar el servicio"

#: src/config/SSSDConfig/__init__.py.in:46
msgid "Number of times to attempt connection to Data Providers"
msgstr ""
"Número de veces que debe intentar la conexión con los Proveedores de Datos"

#: src/config/SSSDConfig/__init__.py.in:47
msgid "The number of file descriptors that may be opened by this responder"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:48
msgid "Idle time before automatic disconnection of a client"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:51
msgid "SSSD Services to start"
msgstr "Servicios SSSD a iniciar"

#: src/config/SSSDConfig/__init__.py.in:52
msgid "SSSD Domains to start"
msgstr "Dominios SSSD a iniciar"

#: src/config/SSSDConfig/__init__.py.in:53
msgid "Timeout for messages sent over the SBUS"
msgstr "Tiempo máximo para los mensajes enviados a través de SBUS"

#: src/config/SSSDConfig/__init__.py.in:54
msgid "Regex to parse username and domain"
msgstr ""
"Expresión regular para analizar sintácticamente el nombre de usuario y "
"dominio"

#: src/config/SSSDConfig/__init__.py.in:55
msgid "Printf-compatible format for displaying fully-qualified names"
msgstr ""
"Formato compatible con printf para mostrar nombres completamente calificados"

#: src/config/SSSDConfig/__init__.py.in:56
msgid ""
"Directory on the filesystem where SSSD should store Kerberos replay cache "
"files."
msgstr ""
"Directorio en el sistema de archivos donde SSSD debería guardar fichero de "
"reproducción de cache de Kerberos."

#: src/config/SSSDConfig/__init__.py.in:57
msgid "Domain to add to names without a domain component."
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:60
msgid "Enumeration cache timeout length (seconds)"
msgstr "Tiempo máximo (segundos) del caché de enumeración"

#: src/config/SSSDConfig/__init__.py.in:61
msgid "Entry cache background update timeout length (seconds)"
msgstr ""
"Tiempo máximo (segundos) de la entrada de caché a actualizar en segundo plano"

#: src/config/SSSDConfig/__init__.py.in:62
#: src/config/SSSDConfig/__init__.py.in:88
msgid "Negative cache timeout length (seconds)"
msgstr "Tiempo máximo negativo del cache (segundos)"

#: src/config/SSSDConfig/__init__.py.in:63
msgid "Users that SSSD should explicitly ignore"
msgstr "Usuarios que deben ser explícitamente ignorados por SSSD"

#: src/config/SSSDConfig/__init__.py.in:64
msgid "Groups that SSSD should explicitly ignore"
msgstr "Grupos que deben ser explícitamente ignorados por SSSD"

#: src/config/SSSDConfig/__init__.py.in:65
msgid "Should filtered users appear in groups"
msgstr "Deben aparecer los usuarios filtrados en los grupos"

#: src/config/SSSDConfig/__init__.py.in:66
msgid "The value of the password field the NSS provider should return"
msgstr "El valor del campo contraseña que el proveedor NSS debe devolver"

#: src/config/SSSDConfig/__init__.py.in:67
msgid "Override homedir value from the identity provider with this value"
msgstr ""
"Sustituye valores del directorio personal del proveedor de la identidad con "
"este valor"

#: src/config/SSSDConfig/__init__.py.in:68
msgid ""
"Substitute empty homedir value from the identity provider with this value"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:69
msgid "Override shell value from the identity provider with this value"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:70
msgid "The list of shells users are allowed to log in with"
msgstr "Lista de los usuarios de consola habilitados para registrarse"

#: src/config/SSSDConfig/__init__.py.in:71
msgid ""
"The list of shells that will be vetoed, and replaced with the fallback shell"
msgstr ""
"Lista de consolas que serán vetadas, y reemplazadas por la consola de reserva"

#: src/config/SSSDConfig/__init__.py.in:72
msgid ""
"If a shell stored in central directory is allowed but not available, use "
"this fallback"
msgstr ""
"Si una consola almacenada en el directorio central es permitida pero no se "
"encuentra disponible, utilice esta de reserva"

#: src/config/SSSDConfig/__init__.py.in:73
msgid "Shell to use if the provider does not list one"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:74
msgid "How long will be in-memory cache records valid"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:77
msgid "How long to allow cached logins between online logins (days)"
msgstr ""
"Por cuánto tiempo permitir ingresos cacheados entre ingresos en línea (días)"

#: src/config/SSSDConfig/__init__.py.in:78
msgid "How many failed logins attempts are allowed when offline"
msgstr ""
"Cuantos intentos de ingreso fallidos se permiten cuando está desconectado"

#: src/config/SSSDConfig/__init__.py.in:79
msgid ""
"How long (minutes) to deny login after offline_failed_login_attempts has "
"been reached"
msgstr ""
"Cuántos minutos se denegará el ingreso después de que se alcance el máximo "
"de ingresos fallidos offline_failed_login_attempts"

#: src/config/SSSDConfig/__init__.py.in:80
msgid "What kind of messages are displayed to the user during authentication"
msgstr "Que clase de mensajes se muestran al usuario durante la autenticación"

#: src/config/SSSDConfig/__init__.py.in:81
msgid "How many seconds to keep identity information cached for PAM requests"
msgstr ""
"Cuanto segundos se mantendrá la información de identidad almacenada para "
"solicitudes de PAM"

#: src/config/SSSDConfig/__init__.py.in:82
msgid "How many days before password expiration a warning should be displayed"
msgstr "Cuanto días se debe mostrar un aviso de expiración de contraseña"

#: src/config/SSSDConfig/__init__.py.in:85
msgid "Whether to evaluate the time-based attributes in sudo rules"
msgstr "Ya sea para evaluar los atributos basados en el tiempo en reglas sudo"

#: src/config/SSSDConfig/__init__.py.in:91
msgid "Whether to hash host names and addresses in the known_hosts file"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:92
msgid ""
"How many seconds to keep a host in the known_hosts file after its host keys "
"were requested"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:95
msgid "List of UIDs or user names allowed to access the PAC responder"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:98
msgid "Identity provider"
msgstr "Proveedor de identidad"

#: src/config/SSSDConfig/__init__.py.in:99
msgid "Authentication provider"
msgstr "Proveedor de Autenticación"

#: src/config/SSSDConfig/__init__.py.in:100
msgid "Access control provider"
msgstr "Proveedor de control de acceso"

#: src/config/SSSDConfig/__init__.py.in:101
msgid "Password change provider"
msgstr "Proveedor de cambio de contraseña"

#: src/config/SSSDConfig/__init__.py.in:102
msgid "SUDO provider"
msgstr "Proveedor de SUDO"

#: src/config/SSSDConfig/__init__.py.in:103
msgid "Autofs provider"
msgstr "Proveedor de Autofs"

#: src/config/SSSDConfig/__init__.py.in:104
msgid "Session-loading provider"
msgstr "Suministrador de carga de sesión"

#: src/config/SSSDConfig/__init__.py.in:105
msgid "Host identity provider"
msgstr "Suministrador de identidad de host"

#: src/config/SSSDConfig/__init__.py.in:108
msgid "Minimum user ID"
msgstr "ID mínimo de usuario"

#: src/config/SSSDConfig/__init__.py.in:109
msgid "Maximum user ID"
msgstr "ID máximo de usuario"

#: src/config/SSSDConfig/__init__.py.in:110
msgid "Enable enumerating all users/groups"
msgstr "Habilitar la enumeración de todos los usuarios/grupos"

#: src/config/SSSDConfig/__init__.py.in:111
msgid "Cache credentials for offline login"
msgstr "Hacer caché de las credenciales para ingresos fuera de línea"

#: src/config/SSSDConfig/__init__.py.in:112
msgid "Store password hashes"
msgstr "Guardar los hashes de la contraseña"

#: src/config/SSSDConfig/__init__.py.in:113
msgid "Display users/groups in fully-qualified form"
msgstr "Mostrar los usuarios/grupos en un formato completamente calificado"

#: src/config/SSSDConfig/__init__.py.in:114
msgid "Don't include group members in group lookups"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:115
#: src/config/SSSDConfig/__init__.py.in:122
#: src/config/SSSDConfig/__init__.py.in:123
#: src/config/SSSDConfig/__init__.py.in:124
#: src/config/SSSDConfig/__init__.py.in:125
#: src/config/SSSDConfig/__init__.py.in:126
#: src/config/SSSDConfig/__init__.py.in:127
msgid "Entry cache timeout length (seconds)"
msgstr "Tiempo máximo de una entrada del caché (segundos)"

#: src/config/SSSDConfig/__init__.py.in:116
msgid ""
"Restrict or prefer a specific address family when performing DNS lookups"
msgstr ""
"Restringir o preferir una familia de direcciones específica, cuando se "
"realicen búsquedas DNS"

#: src/config/SSSDConfig/__init__.py.in:117
msgid "How long to keep cached entries after last successful login (days)"
msgstr "Por cuánto tiempo permitir ingresos cacheados luego del último (días)"

#: src/config/SSSDConfig/__init__.py.in:118
msgid "How long to wait for replies from DNS when resolving servers (seconds)"
msgstr ""
"Cantidad de tiempo (en segundos) a esperar respuestas desde DNS cuando se "
"estén resolviendo servidores"

#: src/config/SSSDConfig/__init__.py.in:119
msgid "The domain part of service discovery DNS query"
msgstr "La sección del dominio de la consulta para descubrir servicios DNS"

#: src/config/SSSDConfig/__init__.py.in:120
msgid "Override GID value from the identity provider with this value"
msgstr "Sustituye valor GID del proveedor de la identidad con este valor"

#: src/config/SSSDConfig/__init__.py.in:121
msgid "Treat usernames as case sensitive"
msgstr "Trate al nombre de usuario con mayúsculas y minúsculas"

#: src/config/SSSDConfig/__init__.py.in:128
msgid "How often should expired entries be refreshed in background"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:129
msgid "Whether to automatically update the client's DNS entry"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:130
#: src/config/SSSDConfig/__init__.py.in:144
msgid "The TTL to apply to the client's DNS entry after updating it"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:131
#: src/config/SSSDConfig/__init__.py.in:145
msgid "The interface whose IP should be used for dynamic DNS updates"
msgstr ""
"La interfaz cuya IP debería ser utilizada para actualizaciones DNS "
"automáticas"

#: src/config/SSSDConfig/__init__.py.in:132
msgid "How often to periodically update the client's DNS entry"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:133
msgid "Whether the provider should explicitly update the PTR record as well"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:134
msgid "Whether the nsupdate utility should default to using TCP"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:135
msgid "What kind of authentication should be used to perform the DNS update"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:136
msgid "Control enumeration of trusted domains"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:139
msgid "IPA domain"
msgstr "Dominio IPA"

#: src/config/SSSDConfig/__init__.py.in:140
msgid "IPA server address"
msgstr "Dirección del servidor IPA"

#: src/config/SSSDConfig/__init__.py.in:141
msgid "Address of backup IPA server"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:142
msgid "IPA client hostname"
msgstr "Nombre de equipo del cliente IPA"

#: src/config/SSSDConfig/__init__.py.in:143
msgid "Whether to automatically update the client's DNS entry in FreeIPA"
msgstr ""
"Si actualizar o no en forma automática la entrada DNS del cliente en FreeIPA"

#: src/config/SSSDConfig/__init__.py.in:146
msgid "Search base for HBAC related objects"
msgstr "Búsqueda base para objetos HBAC"

#: src/config/SSSDConfig/__init__.py.in:147
msgid ""
"The amount of time between lookups of the HBAC rules against the IPA server"
msgstr ""
"Cantidad de tiempo entre búsquedas de reglas HBAC contra el servidor IPA"

#: src/config/SSSDConfig/__init__.py.in:148
msgid ""
"The amount of time in seconds between lookups of the SELinux maps against "
"the IPA server"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:149
msgid "If DENY rules are present, either DENY_ALL or IGNORE"
msgstr ""
"Si se encuentran presentes reglas de negación (DENY) o bien se niega todo "
"(DENY_ALL) o se ignora (IGNORE)"

#: src/config/SSSDConfig/__init__.py.in:150
msgid "If set to false, host argument given by PAM will be ignored"
msgstr ""
"Si se lo define en 'false', será ignorado el argumento de equipo ofrecido "
"por PAM"

#: src/config/SSSDConfig/__init__.py.in:151
msgid "The automounter location this IPA client is using"
msgstr "La ubicación de montaje automático que este cliente de IPA está usando"

#: src/config/SSSDConfig/__init__.py.in:152
msgid "Search base for object containing info about IPA domain"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:153
msgid "Search base for objects containing info about ID ranges"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:154
#: src/config/SSSDConfig/__init__.py.in:161
msgid "Enable DNS sites - location based service discovery"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:157
msgid "Active Directory domain"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:158
msgid "Active Directory server address"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:159
msgid "Active Directory backup server address"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:160
msgid "Active Directory client hostname"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:164
#: src/config/SSSDConfig/__init__.py.in:165
msgid "Kerberos server address"
msgstr "Dirección del servidor Kerberos"

#: src/config/SSSDConfig/__init__.py.in:166
msgid "Kerberos backup server address"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:167
msgid "Kerberos realm"
msgstr "Reinado Kerberos"

#: src/config/SSSDConfig/__init__.py.in:168
msgid "Authentication timeout"
msgstr "Expiración de la autenticación"

#: src/config/SSSDConfig/__init__.py.in:169
msgid "Whether to create kdcinfo files"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:172
msgid "Directory to store credential caches"
msgstr "Directorio donde almacenar las credenciales cacheadas"

#: src/config/SSSDConfig/__init__.py.in:173
msgid "Location of the user's credential cache"
msgstr "Ubicación del caché de credenciales del usuario"

#: src/config/SSSDConfig/__init__.py.in:174
msgid "Location of the keytab to validate credentials"
msgstr "Ubicación de la tabla de claves para validar las credenciales"

#: src/config/SSSDConfig/__init__.py.in:175
msgid "Enable credential validation"
msgstr "Habilitar la validación de credenciales"

#: src/config/SSSDConfig/__init__.py.in:176
msgid "Store password if offline for later online authentication"
msgstr ""
"Si se encuentra desconectado, almacena contraseñas para más tarde realizar "
"una autenticación en línea"

#: src/config/SSSDConfig/__init__.py.in:177
msgid "Renewable lifetime of the TGT"
msgstr "ciclo de vida renovable del TGT"

#: src/config/SSSDConfig/__init__.py.in:178
msgid "Lifetime of the TGT"
msgstr "ciclo de vida del TGT"

#: src/config/SSSDConfig/__init__.py.in:179
msgid "Time between two checks for renewal"
msgstr "tiempo entre dos comprobaciones para renovación "

#: src/config/SSSDConfig/__init__.py.in:180
msgid "Enables FAST"
msgstr "Habilita FAST"

#: src/config/SSSDConfig/__init__.py.in:181
msgid "Selects the principal to use for FAST"
msgstr "Selecciona el principal  para su uso por FAST"

#: src/config/SSSDConfig/__init__.py.in:182
msgid "Enables principal canonicalization"
msgstr "Habilita canonicalización principal"

#: src/config/SSSDConfig/__init__.py.in:183
msgid "Enables enterprise principals"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:186
#: src/config/SSSDConfig/__init__.py.in:187
msgid "Server where the change password service is running if not on the KDC"
msgstr ""
"El servidor en donde está ejecutándose el servicio de modificación de "
"contraseña, en caso de no ser KDC. "

#: src/config/SSSDConfig/__init__.py.in:190
msgid "ldap_uri, The URI of the LDAP server"
msgstr "ldap_uri, El URI del servidor LDAP"

#: src/config/SSSDConfig/__init__.py.in:191
msgid "ldap_backup_uri, The URI of the LDAP server"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:192
msgid "The default base DN"
msgstr "DN base predeterminado"

#: src/config/SSSDConfig/__init__.py.in:193
msgid "The Schema Type in use on the LDAP server, rfc2307"
msgstr "El Tipo de Esquema a usar en el servidor LDAP, rfc2307"

#: src/config/SSSDConfig/__init__.py.in:194
msgid "The default bind DN"
msgstr "El DN Bind predeterminado"

#: src/config/SSSDConfig/__init__.py.in:195
msgid "The type of the authentication token of the default bind DN"
msgstr "El tipo del token de autenticación del DN bind predeterminado"

#: src/config/SSSDConfig/__init__.py.in:196
msgid "The authentication token of the default bind DN"
msgstr "El token de autenticación del DN bind predeterminado"

#: src/config/SSSDConfig/__init__.py.in:197
msgid "Length of time to attempt connection"
msgstr "Tiempo durante el que se intentará la conexión"

#: src/config/SSSDConfig/__init__.py.in:198
msgid "Length of time to attempt synchronous LDAP operations"
msgstr "Tiempo durante el que se intentará operaciones LDAP sincrónicas"

#: src/config/SSSDConfig/__init__.py.in:199
msgid "Length of time between attempts to reconnect while offline"
msgstr "Tiempo entre intentos de reconexión cuando esté fuera de línea"

#: src/config/SSSDConfig/__init__.py.in:200
msgid "Use only the upper case for realm names"
msgstr "Use solo el caso superior para nombres reales"

#: src/config/SSSDConfig/__init__.py.in:201
msgid "File that contains CA certificates"
msgstr "Archivo que contiene los certificados CA"

#: src/config/SSSDConfig/__init__.py.in:202
msgid "Path to CA certificate directory"
msgstr "Ruta hacia un directorio certificado CA"

#: src/config/SSSDConfig/__init__.py.in:203
msgid "File that contains the client certificate"
msgstr "Fichero que contiene el certificado de cliente"

#: src/config/SSSDConfig/__init__.py.in:204
msgid "File that contains the client key"
msgstr "Fichero que contiene la llave de cliente"

#: src/config/SSSDConfig/__init__.py.in:205
msgid "List of possible ciphers suites"
msgstr "Lista de posibles suites de cifrado"

#: src/config/SSSDConfig/__init__.py.in:206
msgid "Require TLS certificate verification"
msgstr "Requiere la verificación de certificado TLS"

#: src/config/SSSDConfig/__init__.py.in:207
msgid "Specify the sasl mechanism to use"
msgstr "Especificar el mecanismo sasl a usar"

#: src/config/SSSDConfig/__init__.py.in:208
msgid "Specify the sasl authorization id to use"
msgstr "Especifique el id de autorización sasl a usar"

#: src/config/SSSDConfig/__init__.py.in:209
msgid "Specify the sasl authorization realm to use"
msgstr "Especifica el reinado de autorización sasl a ser utilizado"

#: src/config/SSSDConfig/__init__.py.in:210
msgid "Specify the minimal SSF for LDAP sasl authorization"
msgstr "Especificar los SSF mínimos para autorizaciones sasl de LDAP"

#: src/config/SSSDConfig/__init__.py.in:211
msgid "Kerberos service keytab"
msgstr "Tabla de clave del servicio Kerberos"

#: src/config/SSSDConfig/__init__.py.in:212
msgid "Use Kerberos auth for LDAP connection"
msgstr "Usar auth Kerberos para la conexión LDAP"

#: src/config/SSSDConfig/__init__.py.in:213
msgid "Follow LDAP referrals"
msgstr "Seguir referencias LDAP"

#: src/config/SSSDConfig/__init__.py.in:214
msgid "Lifetime of TGT for LDAP connection"
msgstr "Período de vida del TGT para la conexión LDAP"

#: src/config/SSSDConfig/__init__.py.in:215
msgid "How to dereference aliases"
msgstr "Como eliminar aliases"

#: src/config/SSSDConfig/__init__.py.in:216
msgid "Service name for DNS service lookups"
msgstr "Nombre de servicio para busquedas de servicios DNS"

#: src/config/SSSDConfig/__init__.py.in:217
msgid "The number of records to retrieve in a single LDAP query"
msgstr "La cantidad de registros a ser obtenidos en una única consulta LDAP"

#: src/config/SSSDConfig/__init__.py.in:218
msgid "The number of members that must be missing to trigger a full deref"
msgstr ""
"La cantidad de miembros que deben faltar para desencadenar una deref completa"

#: src/config/SSSDConfig/__init__.py.in:219
msgid ""
"Whether the LDAP library should perform a reverse lookup to canonicalize the "
"host name during a SASL bind"
msgstr ""
"Si la Biblioteca LDAP debería realizar una búsqueda inversa para "
"canonicalizar el nombre del host durante un enlace SASL"

#: src/config/SSSDConfig/__init__.py.in:221
msgid "entryUSN attribute"
msgstr "atributo entryUSN"

#: src/config/SSSDConfig/__init__.py.in:222
msgid "lastUSN attribute"
msgstr "atributo lastUSN"

#: src/config/SSSDConfig/__init__.py.in:224
msgid "How long to retain a connection to the LDAP server before disconnecting"
msgstr ""
"El período de tiempo máximo para retener una conexión con el servidor LDAP "
"antes de desconectar"

#: src/config/SSSDConfig/__init__.py.in:226
msgid "Disable the LDAP paging control"
msgstr "Deshabilita el control de paginación LDAP"

#: src/config/SSSDConfig/__init__.py.in:227
msgid "Disable Active Directory range retrieval"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:230
msgid "Length of time to wait for a search request"
msgstr "Tiempo máximo a esperar un pedido de búsqueda"

#: src/config/SSSDConfig/__init__.py.in:231
msgid "Length of time to wait for a enumeration request"
msgstr "periodo de espera para solicitud de enumeración"

#: src/config/SSSDConfig/__init__.py.in:232
msgid "Length of time between enumeration updates"
msgstr "Tiempo en segundos entre las actualizaciones de enumeración"

#: src/config/SSSDConfig/__init__.py.in:233
msgid "Length of time between cache cleanups"
msgstr "periodo de tiempo entre borrados de la caché"

#: src/config/SSSDConfig/__init__.py.in:234
msgid "Require TLS for ID lookups"
msgstr "Requiere TLS para búsquedas de ID"

#: src/config/SSSDConfig/__init__.py.in:235
msgid "Use ID-mapping of objectSID instead of pre-set IDs"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:236
msgid "Base DN for user lookups"
msgstr "DN base para búsquedas de usuario"

#: src/config/SSSDConfig/__init__.py.in:237
msgid "Scope of user lookups"
msgstr "Ambito de las búsquedas del usuario"

#: src/config/SSSDConfig/__init__.py.in:238
msgid "Filter for user lookups"
msgstr "Filtro para las búsquedas del usuario"

#: src/config/SSSDConfig/__init__.py.in:239
msgid "Objectclass for users"
msgstr "Objectclass para los usuarios"

#: src/config/SSSDConfig/__init__.py.in:240
msgid "Username attribute"
msgstr "Atributo Username"

#: src/config/SSSDConfig/__init__.py.in:242
msgid "UID attribute"
msgstr "Atributo UID"

#: src/config/SSSDConfig/__init__.py.in:243
msgid "Primary GID attribute"
msgstr "Atributo GID primario"

#: src/config/SSSDConfig/__init__.py.in:244
msgid "GECOS attribute"
msgstr "Atributo GECOS"

#: src/config/SSSDConfig/__init__.py.in:245
msgid "Home directory attribute"
msgstr "Atributo Directorio de inicio"

#: src/config/SSSDConfig/__init__.py.in:246
msgid "Shell attribute"
msgstr "Atributo shell"

#: src/config/SSSDConfig/__init__.py.in:247
msgid "UUID attribute"
msgstr "Atributo UUID"

#: src/config/SSSDConfig/__init__.py.in:248
#: src/config/SSSDConfig/__init__.py.in:284
msgid "objectSID attribute"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:249
msgid "Active Directory primary group attribute for ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:250
msgid "User principal attribute (for Kerberos)"
msgstr "Atributo principal del usuario (para Kerberos) "

#: src/config/SSSDConfig/__init__.py.in:251
msgid "Full Name"
msgstr "Nombre completo"

#: src/config/SSSDConfig/__init__.py.in:252
msgid "memberOf attribute"
msgstr "Atributo memberOf"

#: src/config/SSSDConfig/__init__.py.in:253
msgid "Modification time attribute"
msgstr "Atributo hora de modificación"

#: src/config/SSSDConfig/__init__.py.in:255
msgid "shadowLastChange attribute"
msgstr "atributo shadowLastChange"

#: src/config/SSSDConfig/__init__.py.in:256
msgid "shadowMin attribute"
msgstr "atributo shadowMin "

#: src/config/SSSDConfig/__init__.py.in:257
msgid "shadowMax attribute"
msgstr "atributo shadowMax"

#: src/config/SSSDConfig/__init__.py.in:258
msgid "shadowWarning attribute"
msgstr "atributo shadowWarning "

#: src/config/SSSDConfig/__init__.py.in:259
msgid "shadowInactive attribute"
msgstr "atributo shadowInactive "

#: src/config/SSSDConfig/__init__.py.in:260
msgid "shadowExpire attribute"
msgstr "atributo shadowExpire"

#: src/config/SSSDConfig/__init__.py.in:261
msgid "shadowFlag attribute"
msgstr "atributo shadowFlag "

#: src/config/SSSDConfig/__init__.py.in:262
msgid "Attribute listing authorized PAM services"
msgstr "listado de atributos de servicios PAM autorizados"

#: src/config/SSSDConfig/__init__.py.in:263
msgid "Attribute listing authorized server hosts"
msgstr "Atributo de listado de equipos de servidor autorizados"

#: src/config/SSSDConfig/__init__.py.in:264
msgid "krbLastPwdChange attribute"
msgstr "atributo krbLastPwdChange "

#: src/config/SSSDConfig/__init__.py.in:265
msgid "krbPasswordExpiration attribute"
msgstr "atributo krbPasswordExpiration "

#: src/config/SSSDConfig/__init__.py.in:266
msgid "Attribute indicating that server side password policies are active"
msgstr ""
"atributo indicando que las políticas de contraseña del lado del servidor "
"están activas"

#: src/config/SSSDConfig/__init__.py.in:267
msgid "accountExpires attribute of AD"
msgstr "atributo accountExpires de AD"

#: src/config/SSSDConfig/__init__.py.in:268
msgid "userAccountControl attribute of AD"
msgstr "atributo userAccountControl de AD"

#: src/config/SSSDConfig/__init__.py.in:269
msgid "nsAccountLock attribute"
msgstr "atributo nsAccountLock "

#: src/config/SSSDConfig/__init__.py.in:270
msgid "loginDisabled attribute of NDS"
msgstr "loginDisabled atributo de NDS"

#: src/config/SSSDConfig/__init__.py.in:271
msgid "loginExpirationTime attribute of NDS"
msgstr "loginExpirationTime atributo de NDS"

#: src/config/SSSDConfig/__init__.py.in:272
msgid "loginAllowedTimeMap attribute of NDS"
msgstr "loginAllowedTimeMap atributo de NDS"

#: src/config/SSSDConfig/__init__.py.in:273
msgid "SSH public key attribute"
msgstr "Atributo de clave pública SSH"

#: src/config/SSSDConfig/__init__.py.in:275
msgid "Base DN for group lookups"
msgstr "DN base para busqueda de grupos"

#: src/config/SSSDConfig/__init__.py.in:278
msgid "Objectclass for groups"
msgstr "clase objeto para"

#: src/config/SSSDConfig/__init__.py.in:279
msgid "Group name"
msgstr "Nombre del grupo"

#: src/config/SSSDConfig/__init__.py.in:280
msgid "Group password"
msgstr "Contraseña del grupo"

#: src/config/SSSDConfig/__init__.py.in:281
msgid "GID attribute"
msgstr "Atributo GID"

#: src/config/SSSDConfig/__init__.py.in:282
msgid "Group member attribute"
msgstr "Atributo de miembro del grupo"

#: src/config/SSSDConfig/__init__.py.in:283
msgid "Group UUID attribute"
msgstr "Atributo de UUID del grupo"

#: src/config/SSSDConfig/__init__.py.in:285
msgid "Modification time attribute for groups"
msgstr "Atributo de modificación de tiempo para los grupos"

#: src/config/SSSDConfig/__init__.py.in:287
msgid "Maximum nesting level SSSd will follow"
msgstr "A continuación, nivel SSSD de anidado máximo"

#: src/config/SSSDConfig/__init__.py.in:289
msgid "Base DN for netgroup lookups"
msgstr "DN base para búsquedas de grupos de red"

#: src/config/SSSDConfig/__init__.py.in:290
msgid "Objectclass for netgroups"
msgstr "Clases de objetos para grupos de red"

#: src/config/SSSDConfig/__init__.py.in:291
msgid "Netgroup name"
msgstr "Nombre de grupo de red"

#: src/config/SSSDConfig/__init__.py.in:292
msgid "Netgroups members attribute"
msgstr "Atributo de miembros de grupos de red"

#: src/config/SSSDConfig/__init__.py.in:293
msgid "Netgroup triple attribute"
msgstr "Atributo triple de grupo de red"

#: src/config/SSSDConfig/__init__.py.in:294
msgid "Netgroup UUID attribute"
msgstr "Atributo UUID de miembro de red"

#: src/config/SSSDConfig/__init__.py.in:295
msgid "Modification time attribute for netgroups"
msgstr "Atributo de modificación de tiempo para grupos de red"

#: src/config/SSSDConfig/__init__.py.in:297
msgid "Base DN for service lookups"
msgstr "Base DN para servicio de búsquedas"

#: src/config/SSSDConfig/__init__.py.in:298
msgid "Objectclass for services"
msgstr "Clase de objeto para servicio"

#: src/config/SSSDConfig/__init__.py.in:299
msgid "Service name attribute"
msgstr "Atributo de nombre de servicio"

#: src/config/SSSDConfig/__init__.py.in:300
msgid "Service port attribute"
msgstr "Atributo de puerto de servicio"

#: src/config/SSSDConfig/__init__.py.in:301
msgid "Service protocol attribute"
msgstr "Atributo de protocolo de servidor"

#: src/config/SSSDConfig/__init__.py.in:304
msgid "Lower bound for ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:305
msgid "Upper bound for ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:306
msgid "Number of IDs for each slice when ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:307
msgid "Use autorid-compatible algorithm for ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:308
msgid "Name of the default domain for ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:309
msgid "SID of the default domain for ID-mapping"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:311
msgid "Use LDAP_MATCHING_RULE_IN_CHAIN for group lookups"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:312
msgid "Use LDAP_MATCHING_RULE_IN_CHAIN for initgroup lookups"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:313
msgid "Set lower boundary for allowed IDs from the LDAP server"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:314
msgid "Set upper boundary for allowed IDs from the LDAP server"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:317
msgid "Policy to evaluate the password expiration"
msgstr "Política para evaluar el vencimiento de la contraseña"

#: src/config/SSSDConfig/__init__.py.in:320
msgid "LDAP filter to determine access privileges"
msgstr "Filtro LDAP para determinar privilegios de acceso"

#: src/config/SSSDConfig/__init__.py.in:321
msgid "Which attributes shall be used to evaluate if an account is expired"
msgstr ""
"Los atributos que deberán ser utilizados para evaluar si una cuenta ha "
"expirado"

#: src/config/SSSDConfig/__init__.py.in:322
msgid "Which rules should be used to evaluate access control"
msgstr "Las reglas que deberían ser utilizadas para evaluar control de acceso"

#: src/config/SSSDConfig/__init__.py.in:325
msgid "URI of an LDAP server where password changes are allowed"
msgstr ""
"URI de un servidor LDAP donde se permite la modificación de contraseñas"

#: src/config/SSSDConfig/__init__.py.in:326
msgid "URI of a backup LDAP server where password changes are allowed"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:327
msgid "DNS service name for LDAP password change server"
msgstr ""
"Nombre del servicio DNS para el servidor de modificación de contraseñas LDAP"

#: src/config/SSSDConfig/__init__.py.in:328
msgid ""
"Whether to update the ldap_user_shadow_last_change attribute after a "
"password change"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:331
msgid "Base DN for sudo rules lookups"
msgstr "Base DN para búsquedas de reglas sudo"

#: src/config/SSSDConfig/__init__.py.in:332
msgid "Automatic full refresh period"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:333
msgid "Automatic smart refresh period"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:334
msgid "Whether to filter rules by hostname, IP addresses and network"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:335
msgid ""
"Hostnames and/or fully qualified domain names of this machine to filter sudo "
"rules"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:336
msgid "IPv4 or IPv6 addresses or network of this machine to filter sudo rules"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:337
msgid "Whether to include rules that contains netgroup in host attribute"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:338
msgid ""
"Whether to include rules that contains regular expression in host attribute"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:339
msgid "Object class for sudo rules"
msgstr "Objeto clase para reglas sudo"

#: src/config/SSSDConfig/__init__.py.in:340
msgid "Sudo rule name"
msgstr "Nombre de regla sudo"

#: src/config/SSSDConfig/__init__.py.in:341
msgid "Sudo rule command attribute"
msgstr "Atributo de regla de comando sudo"

#: src/config/SSSDConfig/__init__.py.in:342
msgid "Sudo rule host attribute"
msgstr "Atributo de la regla host de sudo"

#: src/config/SSSDConfig/__init__.py.in:343
msgid "Sudo rule user attribute"
msgstr "Atributo de la regla usuario de sudo"

#: src/config/SSSDConfig/__init__.py.in:344
msgid "Sudo rule option attribute"
msgstr "Atributo de la regla opción de sudo"

#: src/config/SSSDConfig/__init__.py.in:345
msgid "Sudo rule runasuser attribute"
msgstr "Atributo de la regla suda runasuser"

#: src/config/SSSDConfig/__init__.py.in:346
msgid "Sudo rule runasgroup attribute"
msgstr "Atributo de regla runasgroup de sudo"

#: src/config/SSSDConfig/__init__.py.in:347
msgid "Sudo rule notbefore attribute"
msgstr "Atributo de regla notbefore de sudo"

#: src/config/SSSDConfig/__init__.py.in:348
msgid "Sudo rule notafter attribute"
msgstr "Atributo de regla noafter de sudo"

#: src/config/SSSDConfig/__init__.py.in:349
msgid "Sudo rule order attribute"
msgstr "Atributo de regla orden de sudo"

#: src/config/SSSDConfig/__init__.py.in:352
msgid "Object class for automounter maps"
msgstr "Objeto clase para mapas automontador"

#: src/config/SSSDConfig/__init__.py.in:353
msgid "Automounter map name attribute"
msgstr "Atributo de nombre de mapa de automontador"

#: src/config/SSSDConfig/__init__.py.in:354
msgid "Object class for automounter map entries"
msgstr "Objeto clase para entradas de mapa de automontador"

#: src/config/SSSDConfig/__init__.py.in:355
msgid "Automounter map entry key attribute"
msgstr "Atributo de clave de entrada para mapa de automontador"

#: src/config/SSSDConfig/__init__.py.in:356
msgid "Automounter map entry value attribute"
msgstr "Atributo de valor de entrada para mapa de automontador"

#: src/config/SSSDConfig/__init__.py.in:357
msgid "Base DN for automounter map lookups"
msgstr "Base DN para búsquedas de mapa de automontador"

#: src/config/SSSDConfig/__init__.py.in:360
msgid "Comma separated list of allowed users"
msgstr "Lista separada por comas de usuarios autorizados"

#: src/config/SSSDConfig/__init__.py.in:361
msgid "Comma separated list of prohibited users"
msgstr "Lista separada por comas de usuarios prohibidos"

#: src/config/SSSDConfig/__init__.py.in:364
msgid "Default shell, /bin/bash"
msgstr "Shell predeterminado, /bin/bash"

#: src/config/SSSDConfig/__init__.py.in:365
msgid "Base for home directories"
msgstr "Base de los directorios de inicio"

#: src/config/SSSDConfig/__init__.py.in:368
msgid "The name of the NSS library to use"
msgstr "Nombre de la biblioteca NSS a usar"

#: src/config/SSSDConfig/__init__.py.in:369
msgid "Whether to look up canonical group name from cache if possible"
msgstr ""

#: src/config/SSSDConfig/__init__.py.in:372
msgid "PAM stack to use"
msgstr "Pila PAM a usar"

#: src/monitor/monitor.c:2646
msgid "Become a daemon (default)"
msgstr "Convertirse en demonio (predeterminado)"

#: src/monitor/monitor.c:2648
msgid "Run interactive (not a daemon)"
msgstr "Ejecutarse en forma interactiva (no un demonio)"

#: src/monitor/monitor.c:2650 src/tools/sss_debuglevel.c:71
msgid "Specify a non-default config file"
msgstr "Indicar un archivo de configuración diferente al predeterminado"

#: src/monitor/monitor.c:2652
msgid "Print version number and exit"
msgstr "Muestra el número de versión y finaliza"

#: src/providers/krb5/krb5_child.c:2227 src/providers/ldap/ldap_child.c:435
#: src/util/util.h:93
msgid "Debug level"
msgstr "Nive de depuración"

#: src/providers/krb5/krb5_child.c:2229 src/providers/ldap/ldap_child.c:437
#: src/util/util.h:97
msgid "Add debug timestamps"
msgstr "Agregar marcas de tiempo de depuración"

#: src/providers/krb5/krb5_child.c:2231 src/providers/ldap/ldap_child.c:439
#: src/util/util.h:99
msgid "Show timestamps with microseconds"
msgstr "Mostrar marcas de tiempo con microsegundos"

#: src/providers/krb5/krb5_child.c:2233 src/providers/ldap/ldap_child.c:441
msgid "An open file descriptor for the debug logs"
msgstr "Un arhivo abierto de descriptor para los registros de depuración"

#: src/providers/data_provider_be.c:2850
msgid "Domain of the information provider (mandatory)"
msgstr "Dominio del proveedor de información (obligatorio)"

#: src/sss_client/common.c:946
msgid "Privileged socket has wrong ownership or permissions."
msgstr "El zócalo privilegiado posee permisos o pertenencia equivocados."

#: src/sss_client/common.c:949
msgid "Public socket has wrong ownership or permissions."
msgstr "El zócalo público posee permisos o pertenencia equivocados."

#: src/sss_client/common.c:952
msgid "Unexpected format of the server credential message."
msgstr "Formato no esperado del mensaje de la credencial del servidor."

#: src/sss_client/common.c:955
msgid "SSSD is not run by root."
msgstr "SSSD no está siendo ejecutado por el usuario root."

#: src/sss_client/common.c:960
msgid "An error occurred, but no description can be found."
msgstr "Ha ocurrido un error, pero no se ha podido encontrar una descripción."

#: src/sss_client/common.c:966
msgid "Unexpected error while looking for an error description"
msgstr ""
"Ha ocurrido un error no esperado mientras se buscaba la descripción del error"

#: src/sss_client/pam_sss.c:387
msgid "Passwords do not match"
msgstr "Las contraseñas no coinciden"

#: src/sss_client/pam_sss.c:575
msgid "Password reset by root is not supported."
msgstr "No existe soporte para reseteado de la contraseña por el usuario root."

#: src/sss_client/pam_sss.c:616
msgid "Authenticated with cached credentials"
msgstr "Autenticado mediante credenciales cacheada"

#: src/sss_client/pam_sss.c:617
msgid ", your cached password will expire at: "
msgstr ", su contraseña cacheada vencerá el:"

#: src/sss_client/pam_sss.c:647
#, c-format
msgid "Your password has expired. You have %1$d grace login(s) remaining."
msgstr ""

#: src/sss_client/pam_sss.c:693
#, c-format
msgid "Your password will expire in %1$d %2$s."
msgstr ""

#: src/sss_client/pam_sss.c:742
msgid "Authentication is denied until: "
msgstr "La autenticación ha sido denegada hasta:"

#: src/sss_client/pam_sss.c:763
msgid "System is offline, password change not possible"
msgstr "El sistema está fuera de línea, no se puede cambiar la contraseña"

#: src/sss_client/pam_sss.c:793 src/sss_client/pam_sss.c:806
msgid "Password change failed. "
msgstr "Falló el cambio de contraseña."

#: src/sss_client/pam_sss.c:796 src/sss_client/pam_sss.c:807
msgid "Server message: "
msgstr "Mensaje del servidor:"

#: src/sss_client/pam_sss.c:1231
msgid "New Password: "
msgstr "Nueva contraseña: "

#: src/sss_client/pam_sss.c:1232
msgid "Reenter new Password: "
msgstr "Reingrese la contraseña nueva:"

#: src/sss_client/pam_sss.c:1318
msgid "Password: "
msgstr "Contraseña: "

#: src/sss_client/pam_sss.c:1350
msgid "Current Password: "
msgstr "Contraseña actual: "

#: src/sss_client/pam_sss.c:1497
msgid "Password expired. Change your password now."
msgstr "La contraseña ha expirado. Modifíquela en este preciso momento."

#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:40
#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:192 src/tools/sss_useradd.c:48
#: src/tools/sss_groupadd.c:41 src/tools/sss_groupdel.c:44
#: src/tools/sss_groupmod.c:42 src/tools/sss_groupshow.c:652
#: src/tools/sss_userdel.c:134 src/tools/sss_usermod.c:47
#: src/tools/sss_cache.c:528 src/tools/sss_debuglevel.c:69
msgid "The debug level to run with"
msgstr "Nivel de depuración en que se debe ejecutar"

#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:42
#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:196
msgid "The SSSD domain to use"
msgstr "El dominio SSSD a usar"

#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:57 src/tools/sss_useradd.c:73
#: src/tools/sss_groupadd.c:58 src/tools/sss_groupdel.c:53
#: src/tools/sss_groupmod.c:65 src/tools/sss_groupshow.c:663
#: src/tools/sss_userdel.c:151 src/tools/sss_usermod.c:74
#: src/tools/sss_cache.c:561
msgid "Error setting the locale\n"
msgstr "Error al poner la región\n"

#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:64
msgid "Not enough memory\n"
msgstr "Nos hay suficiente memoria\n"

#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:83
msgid "User not specified\n"
msgstr "Usuario no especificado\n"

#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:92
msgid "Error looking up public keys\n"
msgstr "Error buscando claves públicas\n"

#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:194
msgid "The port to use to connect to the host"
msgstr "El puerto a usar para conectar al host"

#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:238
msgid "Invalid port\n"
msgstr ""

#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:243
msgid "Host not specified\n"
msgstr "Host no especificado\n"

#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:249
msgid "The path to the proxy command must be absolute\n"
msgstr "La ruta al comando proxy debe ser absoluta\n"

#: src/tools/sss_useradd.c:49 src/tools/sss_usermod.c:48
msgid "The UID of the user"
msgstr "El UID del usuario"

#: src/tools/sss_useradd.c:50 src/tools/sss_usermod.c:50
msgid "The comment string"
msgstr "La cadena de comentarios"

#: src/tools/sss_useradd.c:51 src/tools/sss_usermod.c:51
msgid "Home directory"
msgstr "Directorio de inicio"

#: src/tools/sss_useradd.c:52 src/tools/sss_usermod.c:52
msgid "Login shell"
msgstr "Shell de ingreso"

#: src/tools/sss_useradd.c:53
msgid "Groups"
msgstr "Grupos"

#: src/tools/sss_useradd.c:54
msgid "Create user's directory if it does not exist"
msgstr "Crear el directorio del usuario si no existe"

#: src/tools/sss_useradd.c:55
msgid "Never create user's directory, overrides config"
msgstr ""
"La opción de nunca crear el directorio del usuario, anula la configurada"

#: src/tools/sss_useradd.c:56
msgid "Specify an alternative skeleton directory"
msgstr "Debe especificar un directorio esqueleto alternativo"

#: src/tools/sss_useradd.c:57 src/tools/sss_usermod.c:57
msgid "The SELinux user for user's login"
msgstr "El usuario de SELinux para el registro del usuario"

#: src/tools/sss_useradd.c:86 src/tools/sss_groupmod.c:78
#: src/tools/sss_usermod.c:87
msgid "Specify group to add to\n"
msgstr "Especifica el grupo a ser añadido\n"

#: src/tools/sss_useradd.c:110
msgid "Specify user to add\n"
msgstr "Especifique el usuario a agregar\n"

#: src/tools/sss_useradd.c:119 src/tools/sss_groupadd.c:84
#: src/tools/sss_groupdel.c:78 src/tools/sss_groupmod.c:111
#: src/tools/sss_groupshow.c:696 src/tools/sss_userdel.c:196
#: src/tools/sss_usermod.c:128
msgid "Error initializing the tools - no local domain\n"
msgstr "Error al inicializar las herramientas -  no hay dominio local\n"

#: src/tools/sss_useradd.c:121 src/tools/sss_groupadd.c:86
#: src/tools/sss_groupdel.c:80 src/tools/sss_groupmod.c:113
#: src/tools/sss_groupshow.c:698 src/tools/sss_userdel.c:198
#: src/tools/sss_usermod.c:130
msgid "Error initializing the tools\n"
msgstr "Error al inicializar las herramientas\n"

#: src/tools/sss_useradd.c:130 src/tools/sss_groupadd.c:95
#: src/tools/sss_groupdel.c:89 src/tools/sss_groupmod.c:121
#: src/tools/sss_groupshow.c:707 src/tools/sss_userdel.c:207
#: src/tools/sss_usermod.c:139
msgid "Invalid domain specified in FQDN\n"
msgstr "Dominio inválido especificado en FQDN\n"

#: src/tools/sss_useradd.c:139 src/tools/sss_groupmod.c:141
#: src/tools/sss_groupmod.c:168 src/tools/sss_usermod.c:162
#: src/tools/sss_usermod.c:189
msgid "Internal error while parsing parameters\n"
msgstr "Error interno al analizar sintácticamente los parámetros.\n"

#: src/tools/sss_useradd.c:147 src/tools/sss_usermod.c:170
#: src/tools/sss_usermod.c:197
msgid "Groups must be in the same domain as user\n"
msgstr "Los grupos deben estar en el mismo dominio que el usuario\n"

#: src/tools/sss_useradd.c:155
#, c-format
msgid "Cannot find group %1$s in local domain\n"
msgstr ""

#: src/tools/sss_useradd.c:170 src/tools/sss_userdel.c:217
msgid "Cannot set default values\n"
msgstr "No se pudieron establecer los valores predeterminados\n"

#: src/tools/sss_useradd.c:177 src/tools/sss_usermod.c:153
msgid "The selected UID is outside the allowed range\n"
msgstr "El UID seleccionado está fuera del rango permitido\n"

#: src/tools/sss_useradd.c:206 src/tools/sss_usermod.c:264
msgid "Cannot set SELinux login context\n"
msgstr "No es posible definir contexto de registro de SELinux\n"

#: src/tools/sss_useradd.c:221
msgid "Cannot get info about the user\n"
msgstr "No se pudo obtener información del usuario\n"

#: src/tools/sss_useradd.c:233
msgid "User's home directory already exists, not copying data from skeldir\n"
msgstr ""
"El directorio de inicio del usuario ya existe, no copiar datos desde el "
"esqueleto\n"

#: src/tools/sss_useradd.c:236
#, c-format
msgid "Cannot create user's home directory: %1$s\n"
msgstr ""

#: src/tools/sss_useradd.c:247
#, c-format
msgid "Cannot create user's mail spool: %1$s\n"
msgstr ""

#: src/tools/sss_useradd.c:266
msgid "Could not allocate ID for the user - domain full?\n"
msgstr "No se pudo asignar el ID para el usuario - ¿el dominio estará lleno?\n"

#: src/tools/sss_useradd.c:270
msgid "A user or group with the same name or ID already exists\n"
msgstr "Ya existe un usuario o grupo con el mismo nombre o ID\n"

#: src/tools/sss_useradd.c:276
msgid "Transaction error. Could not add user.\n"
msgstr "Error en la transacción. No se pudo agregar el usuario.\n"

#: src/tools/sss_groupadd.c:43 src/tools/sss_groupmod.c:48
msgid "The GID of the group"
msgstr "El GID del grupo"

#: src/tools/sss_groupadd.c:75
msgid "Specify group to add\n"
msgstr "Especifique el grupo a agregar\n"

#: src/tools/sss_groupadd.c:104 src/tools/sss_groupmod.c:192
msgid "The selected GID is outside the allowed range\n"
msgstr "El GID elegido está fuera del rango permitido\n"

#: src/tools/sss_groupadd.c:141
msgid "Could not allocate ID for the group - domain full?\n"
msgstr "No se pudo asignar el ID para el grupo - ¿el dominio estará lleno?\n"

#: src/tools/sss_groupadd.c:145
msgid "A group with the same name or GID already exists\n"
msgstr "Ya existe un grupo con el mismo nombre o GID\n"

#: src/tools/sss_groupadd.c:150
msgid "Transaction error. Could not add group.\n"
msgstr "Error en la transacción. No se pudo agregar el grupo.\n"

#: src/tools/sss_groupdel.c:69
msgid "Specify group to delete\n"
msgstr "Especifique el grupo a borrar\n"

#: src/tools/sss_groupdel.c:102
#, c-format
msgid "Group %1$s is outside the defined ID range for domain\n"
msgstr ""

#: src/tools/sss_groupdel.c:117 src/tools/sss_groupmod.c:219
#: src/tools/sss_groupmod.c:226 src/tools/sss_groupmod.c:233
#: src/tools/sss_userdel.c:294 src/tools/sss_usermod.c:241
#: src/tools/sss_usermod.c:248 src/tools/sss_usermod.c:255
#, c-format
msgid "NSS request failed (%1$d). Entry might remain in memory cache.\n"
msgstr ""

#: src/tools/sss_groupdel.c:129
msgid ""
"No such group in local domain. Removing groups only allowed in local "
"domain.\n"
msgstr ""
"No existe tal grupo en el dominio local. Eliminando los grupos que sólo se "
"permiten en el dominio local.\n"

#: src/tools/sss_groupdel.c:134