The translation is temporarily closed for contributions due to maintenance, please come back later.

Translation

Unfortunately, as of the time this was written FreeBSD did not support changing user passwords with <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. BecauseAs a result of this, most administrators are left to implement a solution themselves. I provide some examples here. Note that if you write your own password change script, there are some security issues you should be made aware of; see <xref linkend="security-passwd"/>
(itstool) path: sect2/para
English
Unfortunately, as of the time this was written FreeBSD did not support changing user passwords with <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. As a result of this, most administrators are left to implement a solution themselves. I provide some examples here. Note that if you write your own password change script, there are some security issues you should be made aware of; see <xref linkend="security-passwd"/>
Context English Portuguese (Brazil) State
Additionally, this directive is not checked in PAM during authentication, it is checked during account management, so you will need a second line in your PAM files under <literal>account</literal>. This will require, in turn, <emphasis>every</emphasis> user to be listed in the group, which is not necessarily what we want. To avoid blocking users that are not in LDAP, you should enable the <literal>ignore_unknown_user</literal> attribute. Finally, you should set the <literal>ignore_authinfo_unavail</literal> option so that you are not locked out of every computer when the LDAP server is unavailable. Além disso, essa diretiva não é verificada no PAM durante a autenticação, ela é verificada durante o gerenciamento de contas, portanto, você precisará de uma segunda linha em seus arquivos PAM sob <literal>account</literal>. Isso exigirá, por sua vez, que <emphasis>todo</emphasis> usuário seja listado no grupo, o que não é necessariamente o que queremos. Para evitar o bloqueio de usuários que não estão no LDAP, você deve ativar o atributo <literal>ignore_unknown_user</literal>. Finalmente, você deve definir a opção <literal>ignore_authinfo_unavail</literal> para que você não fique bloqueado em todos os computadores quando o servidor LDAP estiver indisponível.
Your <filename>pam.d/sshd</filename> might then end up looking like this: Seu <filename>pam.d/sshd</filename> pode acabar ficando assim:
Sample <filename>pam.d/sshd</filename> Exemplo <filename>pam.d/sshd</filename>
auth required pam_nologin.so no_warn
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient /usr/local/lib/pam_ldap.so no_warn
auth required pam_unix.so no_warn try_first_pass

account required pam_login_access.so
account required /usr/local/lib/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user
auth required pam_nologin.so no_warn
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient /usr/local/lib/pam_ldap.so no_warn
auth required pam_unix.so no_warn try_first_pass

account required pam_login_access.so
account required /usr/local/lib/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user
Since we are adding these lines specifically to <filename>pam.d/sshd</filename>, this will only have an effect on <application>SSH</application> sessions. LDAP users will be unable to log in at the console. To change this behavior, examine the other files in <filename>/etc/pam.d</filename> and modify them accordingly. Como estamos adicionando essas linhas especificamente para <filename>pam.d/sshd</filename>, isso só terá um efeito nas sessões <application>SSH</application>. Os usuários LDAP não poderão efetuar login no console. Para mudar este comportamento, examine os outros arquivos em <filename>/etc/pam.d</filename> e modifique-os de acordo.
Name Service Switch Switch de serviço de nome
<application>NSS</application> is the service that maps attributes to names. So, for example, if a file is owned by user <literal>1001</literal>, an application will query <application>NSS</application> for the name of <literal>1001</literal>, and it might get <literal>bob</literal> or <literal>ted</literal> or whatever the user's name is. <application>NSS</application> é o serviço que mapeia atributos para nomes. Assim, por exemplo, se um arquivo é de propriedade do usuário <literal>1001</literal>, um aplicativo consultará o <application>NSS</application> para o nome de <literal>1001</literal>, e ele pode obter <literal>bob</literal> ou <literal>ted</literal> ou qualquer que seja o nome do usuário.
Now that our user information is kept in LDAP, we need to tell <application>NSS</application> to look there when queried. Agora que nossas informações sobre o usuário são mantidas no LDAP, precisamos dizer ao <application>NSS</application> para procurar lá quando perguntado.
The <package>net/nss_ldap</package> port does this. It uses the same configuration file as <package>security/pam_ldap</package>, and should not need any extra parameters once it is installed. Instead, what is left is simply to edit <filename>/etc/nsswitch.conf</filename> to take advantage of the directory. Simply replace the following lines: O port <package>net/nss_ldap</package> faz isso. Ele usa o mesmo arquivo de configuração como <package>security/pam_ldap</package> e não deve precisar de nenhum parâmetro extra depois de instalado. Em vez disso, o que resta é simplesmente editar é <filename>/etc/nsswitch.conf</filename> para aproveitar o diretório. Simplesmente substitua as seguintes linhas:
group: compat
passwd: compat
group: compat
passwd: compat
with com
group: files ldap
passwd: files ldap
group: files ldap
passwd: files ldap
This will allow you to map usernames to UIDs and UIDs to usernames. Isso permitirá que você mapeie nomes de usuários para UIDs e UIDs para nomes de usuários.
Congratulations! You should now have working LDAP authentication. Parabéns! Agora você deve ter autenticação LDAP em funcionamento.
Caveats Ressalvas
Unfortunately, as of the time this was written FreeBSD did not support changing user passwords with <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. As a result of this, most administrators are left to implement a solution themselves. I provide some examples here. Note that if you write your own password change script, there are some security issues you should be made aware of; see <xref linkend="security-passwd"/> Infelizmente, a partir do momento em que isso foi escrito, o FreeBSD não suportava a mudança de senhas de usuário com <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. Por causa disso, a maioria dos administradores estão deixando para implementar uma solução por conta própria. Eu forneço alguns exemplos aqui. Observe que, se você escrever seu próprio script de alteração de senha, há alguns problemas de segurança dos quais você deve estar ciente; veja <xref linkend="security-passwd"/>
Shell Script for Changing Passwords Script de shell para alteração de senhas
#!/bin/sh

stty -echo
read -p "Old Password: " oldp; echo
read -p "New Password: " np1; echo
read -p "Retype New Password: " np2; echo
stty echo

if [ "$np1" != "$np2" ]; then
echo "Passwords do not match."
exit 1
fi

ldappasswd -D uid="$USER",ou=people,dc=example,dc=org \
-w "$oldp" \
-a "$oldp" \
-s "$np1"
#!/bin/sh

stty -echo
read -p "Old Password: " oldp; echo
read -p "New Password: " np1; echo
read -p "Retype New Password: " np2; echo
stty echo

if [ "$np1" != "$np2" ]; then
echo "Passwords do not match."
exit 1
fi

ldappasswd -D uid="$USER",ou=people,dc=example,dc=org \
-w "$oldp" \
-a "$oldp" \
-s "$np1"
This script does hardly any error checking, but more important it is very cavalier about how it stores your passwords. If you do anything like this, at least adjust the <literal>security.bsd.see_other_uids</literal> sysctl value: Esse script dificilmente faz qualquer verificação de erros, mas, o mais importante, é muito indiferente sobre como ele armazena suas senhas. Se você fizer algo assim, ajuste pelo menos o valor de sysctl <literal>security.bsd.see_other_uids</literal>:
<prompt>#</prompt> <userinput>sysctl security.bsd.see_other_uids=0</userinput> <prompt>#</prompt> <userinput>sysctl security.bsd.see_other_uids=0</userinput>
A more flexible (and probably more secure) approach can be used by writing a custom program, or even a web interface. The following is part of a <application>Ruby</application> library that can change LDAP passwords. It sees use both on the command line, and on the web. Uma abordagem mais flexível (e provavelmente mais segura) pode ser usada escrevendo um programa personalizado, ou até mesmo uma interface web. A seguir, parte de uma biblioteca <application>Ruby</application> que pode alterar senhas LDAP. Ele vê o uso na linha de comando e na web.
Ruby Script for Changing Passwords Script Ruby para Alterar Senhas
require 'ldap'
require 'base64'
require 'digest'
require 'password' # ruby-password

ldap_server = "ldap.example.org"
luser = "uid=#{ENV['USER']},ou=people,dc=example,dc=org"

# get the new password, check it, and create a salted hash from it
def get_password
pwd1 = Password.get("New Password: ")
pwd2 = Password.get("Retype New Password: ")

raise if pwd1 != pwd2
pwd1.check # check password strength

salt = rand.to_s.gsub(/0\./, '')
pass = pwd1.to_s
hash = "{SSHA}"+Base64.encode64(Digest::SHA1.digest("#{pass}#{salt}")+salt).chomp!
return hash
end

oldp = Password.get("Old Password: ")
newp = get_password

# We'll just replace it. That we can bind proves that we either know
# the old password or are an admin.

replace = LDAP::Mod.new(LDAP::LDAP_MOD_REPLACE | LDAP::LDAP_MOD_BVALUES,
"userPassword",
[newp])

conn = LDAP::SSLConn.new(ldap_server, 389, true)
conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)
conn.bind(luser, oldp)
conn.modify(luser, [replace])
require 'ldap'
require 'base64'
require 'digest'
require 'password' # ruby-password

ldap_server = "ldap.example.org"
luser = "uid=#{ENV['USER']},ou=people,dc=example,dc=org"

# get the new password, check it, and create a salted hash from it
def get_password
pwd1 = Password.get("New Password: ")
pwd2 = Password.get("Retype New Password: ")

raise if pwd1 != pwd2
pwd1.check # check password strength

salt = rand.to_s.gsub(/0\./, '')
pass = pwd1.to_s
hash = "{SSHA}"+Base64.encode64(Digest::SHA1.digest("#{pass}#{salt}")+salt).chomp!
return hash
end

oldp = Password.get("Old Password: ")
newp = get_password

# We'll just replace it. That we can bind proves that we either know
# the old password or are an admin.

replace = LDAP::Mod.new(LDAP::LDAP_MOD_REPLACE | LDAP::LDAP_MOD_BVALUES,
"userPassword",
[newp])

conn = LDAP::SSLConn.new(ldap_server, 389, true)
conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)
conn.bind(luser, oldp)
conn.modify(luser, [replace])
Although not guaranteed to be free of security holes (the password is kept in memory, for example) this is cleaner and more flexible than a simple <command>sh</command> script. Apesar de não ter a garantia de estar livre de falhas de segurança (a senha é mantida na memória, por exemplo), isso é mais limpo e mais flexível do que um simples script <command>sh</command>.
Security Considerations Considerações de segurança
Now that your machines (and possibly other services) are authenticating against your LDAP server, this server needs to be protected at least as well as <filename>/etc/master.passwd</filename> would be on a regular server, and possibly even more so since a broken or cracked LDAP server would break every client service. Agora que suas máquinas (e possivelmente outros serviços) estão autenticando em seu servidor LDAP, este servidor precisa ser protegido pelo menos tão bem quanto <filename>/etc/master.passwd</filename> seria em um servidor regular, e possivelmente mais ainda, uma vez que um servidor LDAP corrompido quebraria todos os serviços do cliente.
Remember, this section is not exhaustive. You should continually review your configuration and procedures for improvements. Lembre-se, esta seção não é exaustiva. Você deve revisar continuamente sua configuração e procedimentos para melhorias.
Setting Attributes Read-only Definindo atributos somente leitura
Several attributes in LDAP should be read-only. If left writable by the user, for example, a user could change his <literal>uidNumber</literal> attribute to <literal>0</literal> and get <systemitem class="username">root</systemitem> access! Vários atributos no LDAP devem ser somente leitura. Se deixado gravável pelo usuário, por exemplo, um usuário poderia alterar seu atributo <literal>uidNumber</literal> para <literal>0</literal> e obter acesso ao <systemitem class="username">root</systemitem>!
To begin with, the <literal>userPassword</literal> attribute should not be world-readable. By default, anyone who can connect to the LDAP server can read this attribute. To disable this, put the following in <filename>slapd.conf</filename>: Para começar, o atributo <literal>userPassword</literal> não deve ser legível por todos. Por padrão, qualquer pessoa que possa se conectar ao servidor LDAP pode ler esse atributo. Para desabilitar isso, coloque o seguinte em <filename>slapd.conf</filename>:
Hide Passwords Ocultar senhas

Loading…

Unfortunately, as of the time this was written FreeBSD did not support changing user passwords with <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. BecauseAs a result of this, most administrators are left to implement a solution themselves. I provide some examples here. Note that if you write your own password change script, there are some security issues you should be made aware of; see <xref linkend="security-passwd"/>
a month ago
Browse all component changes

Glossary

English Portuguese (Brazil)
No related strings found in the glossary.

Source information

Source string comment
(itstool) path: sect2/para
Source string location
article.translate.xml:618
String age
a month ago
Source string age
a month ago
Translation file
articles/pt_BR/ldap-auth.po, string 113