如何在不查看的情况下检查哪些选项被编译到 Linux 内核中,/boot/config-*
以及我是否无权访问/boot/config-*
剩余的文件?
我sudo
在 Debian 8 上遇到了一个相当奇怪的问题。用户无法在/etc/sudoers.d
. 我使用 Chef 来分发配置,所以所有文件都是自动生成的。
例子:
这个配置工作正常
root@server:~# cat /etc/sudoers.d/nginx
# This file is managed by Chef.
# Do NOT modify this file directly.
user ALL=(root) NOPASSWD:/usr/sbin/nginx
Run Code Online (Sandbox Code Playgroud)
这失败了:
root@server:~# cat /etc/sudoers.d/update-rc.d
# This file is managed by Chef.
# Do NOT modify this file directly.
user ALL=(root) NOPASSWD:/usr/sbin/update-rc.d
user@www42:~$ sudo update-rc.d
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.
Run Code Online (Sandbox Code Playgroud)
有什么问题?
诊断:
Mar 5 12:12:51 server …
Run Code Online (Sandbox Code Playgroud) 在我的实验室中有一个用于测量的服务器在 Ubuntu 上运行。还有C程序,它通过TCP连接接收数据,并应尽快发送回复。
配置
接收数据包时的网络延迟非常关键(几十微秒很重要)。我最大限度地优化了程序,但我没有调整 Ubuntu 的经验。
在Ubuntu中可以配置什么来减少处理/发送数据包的本地延迟?
我们运行一个Apache Cassandra集群,其中每个主机在任何给定时间都有几十万个文件打开。
我们希望能够定期获取打开文件的数量并将这个数字输入到Graphite 中,但是当我们在 Graphitelsof
下运行时collectd
,它最终需要几分钟才能完成并同时消耗过多的 CPU .
我想知道是否有另一种更友好的方式来获取 lsof 提供的相同数据,或者甚至是一种运行 lsof 的方法,它不会明显地占用 CPU?(虽然我认为后一种方法可能需要比目前更长的时间才能完成......并不理想)。
也许内核在某处维护了一些包含打开文件数的变量?妄想?
更新:
作为对其中一个答案的回应,我们已经在使用-b
和-n
标志。这是我在下面运行的完整命令collectd
:
sudo lsof -b -n -w | stdbuf -i0 -o0 -e0 wc -l
Run Code Online (Sandbox Code Playgroud) 我正在创建一个 Java 开源包,它可以轻松地将 HttpClient 3.1 连接到受 NTLm v1/v2 和 Kerberos 保护的资源。
我需要在现实世界的服务器上测试这个工具。是否有任何受 NTLM 或 Kerberos 保护的公开可用端点,我可以获得用户和密码以进行测试?
基本上我正在寻找类似用于 NTLM/Kerberos 的Browserspy 的东西。使用自签名证书的公共站点也有助于测试。
是否可以在身份验证阶段pam_ldap
将用户记录的任意 LDAP 属性映射到生成的用户环境中?
如果您看到解决问题的另一种方法,我的具体情况是我编写了一个自定义 SFTP 子系统,它将 SFTP 命令映射到 Ceph/Rados 池。我希望这个子系统使用与经过身份验证的用户关联的密钥连接到 Ceph 集群(用于控制池访问等)
我已经通过 LDAP 对用户进行了 SSH/SFTP 连接的身份验证,并且相信我可以将对他们的 Ceph 密钥属性的读取访问权限锁定到只有 root 和 self。如果可能,我不想使用共享的 LDAP 绑定帐户进行另一个 LDAP 查找。
更新:
虽然我还没有找到一种方法来完全满足我在这里的要求,但我确实有一些“工作”,它使用pam_exec.so
会话模块(作为 root)来拉取 ldap 属性并将其写入/run/users/<UID>/<filename>.<SESSION_ID>
(by chmod 400
, chown <UID>:root
)。然后自定义子系统(作为经过身份验证的用户)读取并删除此文件。
尽管这有效,但这是否会引起相当大的安全问题?
如何查看lsof
特定目录中由其他用户打开 ( ) 的文件列表?
我可以这样做lsof +D /path
,但这只显示当前用户的文件。
有什么方法可以查看其他用户是否打开了目录中的文件?
我们的 Spark Thrift 服务器几乎没有问题。这是一个新的 Ambari 集群,现在没有运行 Spark 作业。
从日志中我们可以看到一条错误信息:
Failed to send RPC 9053901149358924945 to /DATA NODE MACHINE:50149
Run Code Online (Sandbox Code Playgroud)
请建议为什么会发生这种情况,解决方案是什么?
Failed to send RPC 9053901149358924945 to /DATA NODE MACHINE:50149: java.nio.channels.ClosedChannelException
more spark-hive-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-master03.sys67.com.out
Spark Command: /usr/jdk64/jdk1.8.0_112/bin/java -Dhdp.version=2.6.0.3-8 -cp /usr/hdp/current/spark2-thriftserver/conf/:/usr/hdp/current/spark2-thriftserver/jars/*:/usr/hdp/c
urrent/hadoop-client/conf/ -Xmx10000m org.apache.spark.deploy.SparkSubmit --conf spark.driver.memory=15g --properties-file /usr/hdp/current/spark2-thriftserver/conf/spark-th
rift-sparkconf.conf --class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 --name Thrift JDBC/ODBC Server --executor-cores 7 spark-internal
========================================
Warning: Master yarn-client is deprecated since 2.0. Please use master "yarn" with specified deploy mode instead.
18/02/07 17:55:21 ERROR TransportClient: Failed to send RPC 9053901149358924945 …
Run Code Online (Sandbox Code Playgroud) 我有一个似乎采用以下SubjectPublicKeyInfo
格式的公钥。我说“出现”是因为我对这个密钥的唯一了解是它加载一个 Java 应用程序X509EncodedKeySpec
,根据文档,该应用程序用于以SubjectPublicKeyInfo
格式加载密钥。
我无法使用openssl
,pkcs8
或x509
来解析文件asn1parse
。
下面是asn1解析的结果:
openssl asn1parse -in public_key.der -inform der
0:d=0 hl=4 l= 290 cons: SEQUENCE
4:d=1 hl=2 l= 13 cons: SEQUENCE
6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
17:d=2 hl=2 l= 0 prim: NULL
19:d=1 hl=4 l= 271 prim: BIT STRING
Run Code Online (Sandbox Code Playgroud)
基于该输出,我尝试通过尝试不同的偏移量和长度来提取实际密钥,然后将其保存到 .der 文件中:
openssl asn1parse -in public_key.der -inform der -offset <> -length <l> -out public_key.der
Run Code Online (Sandbox Code Playgroud)
然后我将输出反馈给openssl
:
openssl pkcs8 -inform …
Run Code Online (Sandbox Code Playgroud) 我在 Linux 机器上运行启用了网关的 CNTLM。同一网络上的许多其他计算机都配置为使用它作为代理。
我在Ubuntu中搜索cntlm.log
并没有找到这样的文件。
我怎么能看到通过 CNTLM 发出的所有请求的日志(拦截请求)?
我们使用 chrony 来将 Red Hat (7.2) 服务器与 NTP 服务器同步。
为此,我们配置了logdir /var/log/chrony
inchrony.conf
并通过 重启了 chrony systemctl restart chronyd
。
但该文件夹仍然/var/log/chrony
是空的,没有任何日志。
这种行为的原因可能是什么?