AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[ldap](server)

Martin Hope
Bala Sambandam
Asked: 2024-12-18 10:37:42 +0800 CST

无法让 useradd 使用 LDAP

  • 6

操作系统是 Amazon Linux 2023。我尝试使用 LDAP 对所有新用户进行用户/组管理。我安装了 openldap-servers、openldap-clients 和 nss-pam-ldapd 软件包。我在 slapd 上配置了 SSL,并且

ldapwhoami -x -H ldaps://myserver.mydomain.com
ldapwhoami -x -H ldapi:///

均返回匿名。

sudo ldapwhoami -H ldapi:///

返回 dn:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth。

我已将 nsswitch.conf 设置为:

passwd:       ldap sss files
shadow:       ldap files
group:        ldap sss files

我已将 nslcd.conf 设置为:

uid root
gid root
uri ldapi:///
base dc=mydomain,dc=com

当我跑步时:

sudo useradd -b /home balaguru1

它似乎没有将用户添加到 LDAP 数据库。/var/lib/ldap/ 中的文件保持不变。/etc/passwd 已使用新用户进行了修改。

我错过了什么?

ldap
  • 1 个回答
  • 60 Views
Martin Hope
Samuel
Asked: 2024-07-17 20:32:05 +0800 CST

OpenLDAP - BindDN 使用“o=”作为域名

  • 9

通常查询 OpenLDAP 服务器我使用以下查询

ldapsearch -x -H ldap://host -b dc=domain,dc=com uidNumber=4158

但最近我看到了另一种查询方式

ldapsearch -x -H ldap://host -b o=domain.com uidNumber=4158

什么是“o=”格式,我应该如何配置我的 LDAP 服务器来使用它?

谢谢!

ldap
  • 1 个回答
  • 132 Views
Martin Hope
the_endian
Asked: 2024-06-05 11:22:27 +0800 CST

如何在 Fedora 上重置 OpenLDAP 的管理员密码?

  • 5

我在 Fedora 上并设置了 OpenLDAP 服务器。我不记得一开始就设置过管理员密码,但我必须在提示输入管理员密码的地方执行操作。不输入任何内容是行不通的。我对这个问题进行了广泛的搜索,并尝试了以下方法:

$ ldapmodify -Q -Y EXTERNAL -H ldapi:/// << E0F
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}wDiv2teFapZFmOwSz04/2CMaYvpqfLvi
E0F
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Insufficient access (50)
$ sudo -i
[sudo] password for User: 
[root@localhost ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// << E0F
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}wDiv2teFapZFmOwSz04/2CMaYvpqfLvi
E0F
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Insufficient access (50)
$ ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b  cn=config olcRootDN=cn=admin,dc=com,dc=example  dn olcRootDN olcRootPW
SASL/EXTERNAL authentication started
SASL username: gidNumber=1000+uidNumber=1000,cn=peercred,cn=external,cn=auth
SASL SSF: 0
No such object (32)
$ sudo ldapsearch -H ldapi:/// -Y EXTERNAL -b 'cn=config'
[sudo] password for User: 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
# extended LDIF
#
# LDAPv3
# base <cn=config
> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
$ sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// << E0F
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}wDiv2teFapZFmOwSz04/2CMaYvpqfLvi
E0F
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Insufficient access (50)

我还将以上内容放入一个文件中并尝试这样做:

$ vim pw_reset.ldif
$ sudo ldapmodify -Y EXTERNAL -D 'cn=config' -H ldapi:/// -f ./pw_reset.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Insufficient access (50)

因此,这里明显的问题是,无论如何,我似乎没有“足够的访问权限”,这就是这里的问题。我需要管理员密码来设置管理员密码。正确的方法是什么?

ldap
  • 1 个回答
  • 16 Views
Martin Hope
Vamshi Krishna
Asked: 2024-06-04 18:02:29 +0800 CST

无法连接到 LDAP 服务器。:javax.naming.AuthenticationException

  • 5

我已经在 J​​boss 实例中配置了 ldap,但是它没有连接到 ldap 服务器并抛出以下错误。

02:50:08,512 DEBUG [org.wildfly.security] (management task-1) Obtaining lock for identity [user1]...
02:50:08,513 DEBUG [org.wildfly.security] (management task-1) Obtained lock for identity [user1].
02:50:08,517 DEBUG [org.wildfly.security] (management task-1) Creating [class javax.naming.directory.InitialDirContext] with environment:
02:50:08,517 DEBUG [org.wildfly.security] (management task-1)     Property [java.naming.security.credentials] with value [******]
02:50:08,517 DEBUG [org.wildfly.security] (management task-1)     Property [java.naming.security.authentication] with value [simple]
02:50:08,518 DEBUG [org.wildfly.security] (management task-1)     Property [java.naming.provider.url] with value [ldap://ldap_server:3268]
02:50:08,518 DEBUG [org.wildfly.security] (management task-1)     Property [com.sun.jndi.ldap.read.timeout] with value [60000]
02:50:08,518 DEBUG [org.wildfly.security] (management task-1)     Property [com.sun.jndi.ldap.connect.pool] with value [false]
02:50:08,518 DEBUG [org.wildfly.security] (management task-1)     Property [com.sun.jndi.ldap.connect.timeout] with value [5000]
02:50:08,518 DEBUG [org.wildfly.security] (management task-1)     Property [java.naming.security.principal] with value [CN=svc_account,OU=IT,DC=local,DC=xxx,DC=xxx]
02:50:08,518 DEBUG [org.wildfly.security] (management task-1)     Property [java.naming.referral] with value [ignore]
02:50:08,519 DEBUG [org.wildfly.security] (management task-1)     Property [java.naming.factory.initial] with value [com.sun.jndi.ldap.LdapCtxFactory]
02:50:08,536 DEBUG [org.wildfly.security] (management task-1) Could not create [class javax.naming.ldap.InitialLdapContext]. Failed to connect to LDAP server.: javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090449, comment: AcceptSecurityContext error, data 52e, v3839]
ldap
  • 2 个回答
  • 80 Views
Martin Hope
Ralequi
Asked: 2024-04-12 17:17:18 +0800 CST

用作代理时如何重写 slapd 中的 LDAP 属性?

  • 5

我目前正在将 slapd 设置为代理,并面临重写 LDAP 属性的挑战。我知道 DN 的重写模块 (rwm) 功能,但我需要将类似的功能应用于 LDAP 属性。

上下文:我们的用户 ID 的结构是由一两个非必要字母组成的前缀,后跟 8-9 个重要数字。我的目标是去掉这些字母并利用剩余的数字通过 nslcd/sssd 分配 POSIX 用户/组 ID。不幸的是,无法对原始 LDAP 服务器进行修改,因为管理员不愿意进行更改。

问题:尽管进行了几天的研究和试验,包括咨询资源和使用 ChatGPT,我只成功地重写了 DN。我希望了解是否可以对 DN 以外的属性使用重写功能,如果可以,如何实现这一点。

尝试:

我尝试过使用数据库映射和 LDAP 以及 rwm 覆盖来操作属性。我的配置仅成功重写了 DN,但未成功重写其他属性。

最后一次尝试的示例:

...
moduleload      back_ldap
moduleload      back_meta
database meta
...
rebind-as-user  true
rewriteEngine on

rewriteContext searchResult
rewriteRule "^(uid=[a-zA-Z]*)([0-9]*)(,.*)$" "$1$2$3,posixUID=$2" ":@"

问题:

  • 是否可以使用 slapd 中的 rwm 重写 LDAP 属性?
  • 如果是,我如何配置它以从用户 ID 属性中删除特定字符并保留数字?

任何指导或示例将不胜感激。谢谢你!

ldap
  • 1 个回答
  • 18 Views
Martin Hope
user23497333
Asked: 2024-02-29 03:26:07 +0800 CST

sssd 允许通过 su 切换到 ldap_access_filter 阻止的用户以获取可以登录的用户

  • 6

我的部门正在改用 sssd 和 ldap 来登录我们所有的 Linux 主机。我已经一切正常,但在我们的开发环境中继续测试之前,我希望解决一个问题。我们指定可以使用 ldap_access_filter 选项登录的 ldap 组,并且按预期工作,但具有 root 访问权限的用户似乎可以切换到 ldap 用户(使用 root 权限),而应阻止使用 ldap_access_filter 选项登录。 ldap_access_filter。我希望能够不允许用户切换或通过 id 命令获取信息给这些不需要访问我所关心的机器的用户。是否可以通过修改我的 ldap_search_base、ldap_user_search_base 或 ldap_group_search_base 或者其他方法来防止这种情况发生。

这是我的 sssd 配置

[sssd]
#debug_level = 9
config_file_version = 2
services = nss, pam
domains = domain.edu

[pam]
#debug_level = 9
offline_credentials_expiration = 30

[domain/domain.edu]
#debug_level = 9
id_provider = ldap
auth_provider = ldap
access_provider = ldap
ldap_schema = rfc2307bis
ldap_uri = ldaps://sub.domain.edu:636
ldap_search_base = ou=people,o=cuid
ldap_default_bind_dn = cn=svcaccount,ou=proxy,o=cuid
ldap_access_order = filter
ldap_access_filter = groupMembership=cn=devtest,ou=groups,ou=people,o=cuid
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = [redacted]
ldap_tls_cacert = /etc/openldap/certs/devldap.pem
ldap_tls_reqcert = never
enumerate = true
cache_credentials = True
account_cache_expiration = 30
entry_cache_timeout = 14400
subdomain_inherit = ignore_group_members, ldap_purge_cache_timeout
ignore_group_members = True
ldap_purge_cache_timeout = 0
access_provider = ldap
ldap
  • 1 个回答
  • 49 Views
Martin Hope
iSpain17
Asked: 2024-02-29 01:48:26 +0800 CST

Samba4 用户密码未通过 LDAP 消息正确更新,只能通过 smbpasswd

  • 5

我已经设置了 Samba4 AD DC,并且可以Administrator通过 .net 代码成功地对我的用户进行身份验证:

var directoryIdentifier = new LdapDirectoryIdentifier("127.0.0.1", 636);
var credentials = new NetworkCredential($"CN=Administrator,CN=Users,DC=ldap,DC=test,DC=dev", "admin1234!");
using(var connection = new LdapConnection(directoryIdentifier, credentials)) 
{
    try 
    {
        connection.SessionOptions.ProtocolVersion = 3;
        connection.SessionOptions.SecureSocketLayer = true;
        connection.SessionOptions.ReferralChasing = ReferralChasingOptions.None;

        connection.AuthType = AuthType.Basic;

        connection.Bind(credentials);
    }
}

然后通过此连接,我创建一个新用户:

        var addRequest = new AddRequest(
            "CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev",
            new DirectoryAttribute("objectClass", new object[] { "user" }),
            new DirectoryAttribute("cn", "testuser"),
            new DirectoryAttribute("uid", "testuser"),
            new DirectoryAttribute("sAMAccountName", "testuser"),
            new DirectoryAttribute("unicodePwd", Encoding.Unicode.GetBytes($@"""pw1234!"""))
        );
        var addResponse = connection.SendRequest(addRequest);

        Console.WriteLine($"[ADD] response: {addResponse.ErrorMessage}");

或从终端执行相同操作:

ldapadd -H LDAPS://127.0.0.1:636 -D "CN=Administrator,CN=Users,DC=ldap,DC=test,DC=dev" -w admin1234!
dn: CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev
objectClass: user
cn: testuser
uid: testuser
unicodePwd:: IgBwAHcAMQAyADMANAAhACIA
sAMAccountName: testUser

我从哪里得到 unicodePwd echo -n "\"pw1234\!\"" | iconv -f UTF-8 -t UTF-16LE | base64。

但是,当尝试对此用户进行身份验证时:

var testUser_directoryIdentifier = new LdapDirectoryIdentifier("127.0.0.1", 636);
var testUser_credentials = new NetworkCredential($"CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev", "pw1234!");
using(var connection = new LdapConnection(testUser_directoryIdentifier, testUser_credentials)) 
{
    try 
    {
        connection.SessionOptions.ProtocolVersion = 3;
        connection.SessionOptions.SecureSocketLayer = true;
        connection.SessionOptions.ReferralChasing = ReferralChasingOptions.None;

        connection.AuthType = AuthType.Basic;

        connection.Bind(testUser_credentials);
    }
}

我收到错误:

提供的凭据无效。[错误代码 49]

同样,对于终端命令

ldapwhoami -vvv -H ldaps://127.0.0.1:636 -D "CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev" -x -w pw1234\! 

我明白了

ldap_bind:凭据无效(49)附加信息:80090308:LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext错误,数据533,v1db1

在 samba AD DC 上执行时ldbsearch -H /var/lib/samba/private/sam.ldb '(cn=testuser)' unicodePwd,我得到以下结果:

# record 1
dn: CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev
unicodePwd:: 0pQq91kmGPJQOuQ3oiHPgg==

[...]

(附带问题,0pQq91kmGPJQOuQ3oiHPgg==不等于我传入的内容,IgBwAHcAMQAyADMANAAhACIA不知道为什么。不过似乎无关。)

但是,当我使用该smbpasswd工具并设置相同的密码时,它似乎有效:

smbpasswd testuser

我可以通过再次执行ldbsearch -H /var/lib/samba/private/sam.ldb '(cn=testuser)' unicodePwd并接收回相同的记录来确认这一点。

这次,相同的 bash 脚本起作用了:

ldapwhoami -vvv -H ldaps://127.0.0.1:636 -D "CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev" -x -w pw1234\!
ldap_initialize( ldaps://127.0.0.1:636/??base )
u:DEV-AD\testUser
Result: Success (0)

为什么简单的 LDAP 消息不起作用(完全符合unicodePwdActive Directory 的规范)?ldapsearch -D -wsmbpasswd 是否也会更新通过或 .net进行身份验证时使用的其他内容LdapConnection?

ldap
  • 1 个回答
  • 18 Views
Martin Hope
VladC
Asked: 2024-02-02 18:05:50 +0800 CST

访问权限不足 (50) LDAP

  • 7

我试图在 OpenLDAP 服务器启动开始时执行自定义 .ldif 文件,并使用以下命令成功:

ldapadd -x -D cn=admin,dc=vlad,dc=lan -w admin -H ldap:// -f ldap/ldap-test.ldif

遗憾的是,我希望能够使用以下命令将自定义属性和对象类添加到架构中:

dn: cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 1.2.3.4.5.6.7.8.9.0 NAME 'myCustomObjectClass'
  DESC 'My Custom Object Class'
  AUXILIARY
  MAY ( customAttribute1 $ customAttribute2 $ customAttribute3 $
        customAttribute4 $ customAttribute5 $ customAttribute6 $
        customAttribute7 $ customAttribute8 $ customAttribute9 $
        customAttribute10 $ customAttribute11 $ customAttribute12 $
        customAttribute13 $ customAttribute14 $ customAttribute15 ) )

遗憾的是,它抛出了访问不足 50 错误。这是 slapcat -n0 的输出

dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth manage by * break
olcRootDN: cn=admin,cn=config
structuralObjectClass: olcDatabaseConfig
entryUUID: 3e49b716-55fd-103e-8582-a14a85261557
creatorsName: cn=config
createTimestamp: 20240202095739Z
olcRootPW:: e1NTSEF9d3J4NGVYaUFvaGRmc2dDOXlqT0V0cEFmSWhZYklxWXo=
entryCSN: 20240202095739.321947Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20240202095739Z

dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=vlad,dc=lan
olcLastMod: TRUE
olcRootDN: cn=admin,dc=vlad,dc=lan
olcRootPW:: -----
olcDbCheckpoint: 512 30
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: 3e49fae6-55fd-103e-8589-a14a85261557
creatorsName: cn=admin,cn=config
createTimestamp: 20240202095739Z
olcDbIndex: uid eq
olcDbIndex: mail eq
olcDbIndex: memberOf eq
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
olcDbIndex: objectClass eq
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth manage by * break
olcAccess: {1}to attrs=userPassword,shadowLastChange by self write by dn="cn
 =admin,dc=vlad,dc=lan" write by anonymous auth by * none
olcAccess: {2}to * by self read by dn="cn=admin,dc=vlad,dc=lan" wri
 te by dn="cn=user-ro,dc=vlad,dc=lan" read by * none
entryCSN: 20240202095739.438344Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20240202095739Z

如何才能使用 ldapadd 或 ldapmodify 运行上述命令?需要什么用户进行身份验证。

更新: dn: cn=schema,cn=config changetype: modify add: olcObjectClasses olcObjectClasses: ( 1.2.3.4.5.6.7.8.9.0 NAME 'myCustomObjectClass' DESC 'My Custom Object Class' AUXILIARY MAY ( name ) )

将上面的代码与命令一起使用: ldapmodify -Y EXTERNAL -H ldapi:// -f ldap/ldap-modify.ldif

一切似乎都很好,应该添加。

尝试使用该类:

dn: OU=CustomOU,DC=vlad,DC=lan
ou: CustomOU
objectClass: top
objectClass: organizationalUnit
objectClass: myCustomObjectClass

通过命令,它说:

ldapadd -x -D cn=admin,dc=vlad,dc=lan -w admin -H ldap:// -f ldap/ldap-test.ldif 

additional info: objectClass: value #2 invalid per syntax

并且在检查 slapcat -n0 时,似乎没有添加自定义对象。

ldap
  • 1 个回答
  • 89 Views
Martin Hope
Gamification
Asked: 2024-01-16 00:53:02 +0800 CST

如何选择 LDAP 的基本 DN?

  • 4

我正在设置 LDAP(LLDAP,用于同一登录),并且我了解每个目录都需要一个基本 DN。据我所知,基本 DN 的工作原理就像一个包含该目录所有条目的命名空间。看来,更改正在运行的 LDAP 设置的基本 DN 可能并不简单。

那么我应该如何选择Base DN呢?它是完全任意的还是在某个时候会出现某些要求?

它应该是我拥有的域还是保留/私有 DNS 命名空间?它应该有两个直流分量吗?

到目前为止我发现的一个要求是,对于某些应用程序,基本 DN 可能不为空。

ldap
  • 1 个回答
  • 22 Views
Martin Hope
user2690527
Asked: 2023-12-26 23:30:50 +0800 CST

Dovecot/Postfix:如何在查询 LDAP 进行身份验证之前对用户名强制执行初始语法检查?

  • 5

我有一个 Postfix/Dovecot 设置并使用 OpenLDAP 作为用户/密码后端。由于虚拟主机,用户必须使用完全合格的电子邮件地址作为用户名登录,因此域部分对于身份验证是必需的,即用户名类似于<local-part>@<fqdn-domain>.

然而,不断有攻击尝试使用不带域部分的用户名进行身份验证。由于这会导致 LDAP 查询中的 DN 无效,因此我的日志中会出现大量由于 LDAP DN 无效而导致的错误消息。

是否有任何配置选项允许 Dovecot 对提供的用户名强制执行一些初始语法检查,如果失败,Dovecot 通过立即拒绝响应来缩短身份验证过程,而不是查询 LDAP 服务器然后失败?

Dovecot 中的 LDAP 配置是

uris = ldapi://%2frun%2fopenldap%2fslapd.sock
auth_bind = yes
auth_bind_userdn = uid=%n,ou=users,o=%d,dc=my-host,dc=my-domain,dc=my-tld
base = ou=users,o=%d,dc=server,dc=my-host,dc=my-domain,dc=my-tld

正如您所看到的,我的 LDAP 设置使用所谓的“连接点”在 DIT 中为不同的托管域提供不同的子分支。(o=%dDN 中的 - 部分。)根据Dovecot 配置手册 - 用户变量,%d如果用户名后面没有域部分,则为空@。

当攻击者尝试使用不完整的用户名进行身份验证时,这会导致我的日志中出现多余的错误消息,例如

Dec 26 16:25:54 server dovecot[24946]: auth: Error: ldap(root,187.205.80.184): ldap_bind() failed: Invalid DN syntax

这里,来自 187.205.80.184 的攻击者尝试以用户身份进行身份验证root,Dovecot 尝试查找uid=root,ou=users,o=,dc=my-host,dc=my-domain,dc=my-tld这显然是无效的,因为 后没有任何内容o=。

ldap
  • 2 个回答
  • 47 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve