我想将 Ubuntu 无人值守升级包配置为仅下载更新但不应用它们。这可能吗?我没有在此页面上看到这样做的方法,但他们使用cron显示了一些可能适合这样做的东西。只是想知道 UU 包是否以某种方式完成它而不是重新发明它
Server Fault's questions
我正在尝试使用 Pythonldap3
模块管理 OpenLDAP 目录中用户的组成员资格。Delete 操作的文档显示了如何从 中删除用户OU
,但是我只想删除组对象中的条目以及memberUid
对象中的条目。POSIX
member
groupOfName
我尝试使用c.delete()
调用来执行此操作但没有成功。还有其他方法吗?
我的组对象如下所示:
dn: cn=sales,ou=groups,dc=mycorp,dc=net
cn: sales
gidNumber: 12009
objectClass: posixGroup
objectClass: top
memberUid: milton
memberUid: trebor
memberUid: yggdrasil
我能想到的唯一咒语(显然是错误的)是:
conn.delete ('memberUid=milton,cn=sales,ou=groups,dc=mycorp,dc=net')
结果是:
ldap3.core.exceptions.LDAPNoSuchObjectResult: LDAPNoSuchObjectResult - 32 - noSuchObject - cn=sales,ou=groups,dc=mycorp,dc=net - None - delResponse - None
我在 python 2.7 下使用ldap3模块并在我的目录上进行搜索。我可以检索用户的cn:
,但如何正确检索DistinguishedName(具体DN:
如下)?
>>> conn.search (BASE_DN, '(&(uid=user456))', attributes=['*'])
True
>>> print conn.entries[0]
DN: uid=user456,ou=myou,dc=myorg
cn: user456
...
>>> print conn.entries[0]['cn']
user456
>>> print conn.entries[0]['DN']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/ldap3/abstract/entry.py", line 100, in __getitem__
return self.__getattr__(item)
File "/usr/lib/python2.7/dist-packages/ldap3/abstract/entry.py", line 88, in __getattr__
raise LDAPKeyError('key not found')
ldap3.core.exceptions.LDAPKeyError: 'key not found'
任何人都知道要删除哪些软件包以 git 摆脱 Ubuntu 18.04 上的所有登录垃圾?
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* MicroK8s 1.15 is out! It has already been installed on more
than 14 different distros. Guess which ones?
https://snapcraft.io/microk8s
我认为它可能是update-motd
包,但在发布后apt purge update-motd
仍有文件/目录留在/etc/
. dpkg -S
报告这些文件属于base-files
我可能不想清除的包。
# find /etc/ | grep motd
/etc/motd
/etc/systemd/system/timers.target.wants/motd-news.timer
/etc/update-motd.d
/etc/update-motd.d/10-help-text
/etc/update-motd.d/97-overlayroot
/etc/update-motd.d/50-motd-news
/etc/update-motd.d/00-header
/etc/default/motd-news
# dpkg -S /etc/update-motd.d/10-help-text
base-files: /etc/update-motd.d/10-help-text
我过去只是通过蛮力文件删除解决了这个问题,但想知道是否有更好的方法来做到这一点。最好是我也可以很容易地融入ansible
剧本的东西。
我今天查看了PHP EOL 时间表,发现 Ubuntu 16.04 (PHP 7.0) 附带的版本在 php.net 上显示为不再支持。我想知道,如果 Ubuntu确实向后移植了安全修复程序,那么 PHP 7.0 之类的补丁来自哪里,因为它在 php.net 上不受支持?
在ansible中,我想替换它:
<sadmin>
<user>admin@localhost</user>
</sadmin>
有了这个:
<sadmin>
<user>user1@somedomain</user>
<user>user2@somedomain</user>
<user>user3@somedomain</user>
</sadmin>
我试过使用替换模块,但不知道正则表达式是否可以跨越多行(我将如何使用 python 原始符号作为换行符?)。我尝试了该xml
模块,但我认为这实际上不是 XML 文件,因为它一直<?xml version='1.0' encoding='UTF-8'?>
在文件顶部添加标题。我怎样才能做到这一点?更好地使用模板?
- name: add replacements to jabber config files
replace:
path : "/etc/jabberd2/{{ item.path }}"
regexp : "{{ item.regex }}"
replace: "{{ item.replace }}"
with_items:
- { path: 'muc.xml', regex: 'conference.localhost', replace: 'conference.mydomain' }
- { path: 'muc.xml', regex: '<sadmin>.*</sadmin>', replace: '<sadmin><user>user1@somedomain</user>\n<user>user2@somedomain</user></sadmin>' }
我正在尝试使用WinSvr_STD_CORE_2016_64Bit_-4_DC_STD_X21-70526风格的 ISO 在 Debian 9 上的 KVM(Virt-Manager)下设置 Windows 2016 服务器。过去,Fedora的 virtio 驱动程序通常可以让 Windows VM 启动并运行。然而,2016 服务器版似乎无法使用任何最新的 Virtio 驱动程序。在挂载的 Virtio ISO 上选择W2k16(或任何其他目录)会导致“找不到设备驱动程序。确保安装介质包含正确的驱动程序,然后单击确定”是否有其他方法可以启动 Windows 2016 VM并在 KVM 下运行?
如何根据请求 URI 最好地过滤流量?我想做的是some-script.php
在只给出某个参数列表时限制对脚本的访问。例如,允许每个人访问user_info
相关user_id
值,但拒绝每个人访问,action=admin_login
除非他们的 IP 地址在 LAN 上。
我知道这if
是邪恶的,并且allow all
不会如下所示工作,但我似乎无法找到我想要做的事情。
location ~* /live/some-script\.php {
// allow "?action=user_info&user_id=[0-9]{1,6}"
if ($request_uri ~* "action=bwg_frontend_data" ) {
allow all;
}
// deny everyone access to "?action=admin_login", but allow 192.168.100.0/24
if ($request_uri ~* "?action=admin_login.*")
{
allow from 192.168.100.0/24;
}
return 403;
}
有没有办法从常规 CDROM 安装中保存我的设置选择以用作预种子或 kickstart 文件?我正在尝试从 PXE 引导主机以标准化 Ubuntu 安装,并想知道是否有更简单的方法可以按照我想要的方式获取配置。特别是 Partman 配置是一种皇家痛苦。
更新:这似乎从某个地方挖掘了设置配置,但结果并没有完全通过它自己的检查:
apt-get -y install debconf-utils
debconf-get-selections --installer > /tmp/setup.cfg
# debconf-set-selections -v -c /tmp/setup.cfg
warning: Unknown type error, skipping line 2
info: Trying to set 'netcfg/wireless_security_type' [select] to 'wpa'
info: Loading answer for 'netcfg/wireless_security_type'
warning: Unknown type error, skipping line 7
warning: Unknown type error, skipping line 9
info: Trying to set 'mirror/http/proxy' [string] to ''
...
尝试使用 PXE 客户端启动,setup.cfg
尽管在检查过程中出现了所有警告,但它似乎确实(大部分)工作。它最终失败并出现以下错误:
每隔一段时间,我就会不小心将一些控制代码爆破到我的终端会话中(错误编码或意外gpg --export
)。这有时会导致我的 tmux 会话松散它的格式并将控制字符打印到 tmux 窗口的边框中。之后所有的 tmux 窗口都变得非常混乱。即使只是聚焦一个窗口也会弄乱其他窗口。reset
终端( , )的传统重置技巧echo [CTRL]+V [CTRL]+C
无法修复它,因此我最终退出所有活动会话并不得不重新启动 tmux。
有人知道在不终止 tmux 的情况下重置/刷新所有 tmux 窗格的方法吗?
我在 Proxmox 5.2-11 下运行 Ubuntu 16.04 容器。应用最新一轮补丁1后,我无法在控制台或通过 ssh 登录。
我在管理程序上安装了容器根 FS 并添加pts/0
到/etc/security/access.conf
(我们运行pam_access
)并允许根登录到控制台。我们有root : lxc/tty0 lxc/tty1 lxc/tty2
我access.conf
认为足够的东西,所以为什么我pts/0
现在需要它是令人费解的。
我注意到 ssh 没有运行,所以尝试手动启动它 ( /usr/sbin/sshd -DDD -f /etc/ssh/sshd_config
) 并收到此错误:
Missing privilege separation directory: /var/run/sshd
我手动创建了目录,启动ssh
并最终能够登录,但重新启动后,问题仍然存在。未创建目录。只有有用journalctl
的部分和唯一有趣的部分是关于“不允许操作”的内容,但没有更多信息。
我对 16.04 不太熟悉,所以想知道如何找到有关该问题的更多信息。我没有/var/log/syslog
或/var/log/messages
只有kern.log
这样一种迷失。
systemd-sysv 229-4ubuntu21.9
libpam-systemd 229-4ubuntu21.9
libsystemd0 229-4ubuntu21.9
systemd 229-4ubuntu21.9
udev 229-4ubuntu21.9
libudev1 229-4ubuntu21.9
iproute2 4.3.0-1ubuntu3.16.04.4
libsasl2-modules-db 2.1.26.dfsg1-14ubuntu0.1
libsasl2-2 2.1.26.dfsg1-14ubuntu0.1
ldap-utils 2.4.42dfsg-2ubuntu3.4
libldap-2.4-2 2.4.42dfsg-2ubuntu3.4
libsasl2-modules 2.1.26.dfsg1-14ubuntu0.1
libgs9-common 9.25dfsg1-0ubuntu0.16.04.3
ghostscript 9.25dfsg1-0ubuntu0.16.04.3
libgs9 9.25dfsg1-0ubuntu0.16.04.3
[2]
Nov 27 10:13:48 host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 host16 sshd[474]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 host16 mysqld_safe[495]: Starting mysqld daemon with databases from /var/lib/mysql/mysql
Nov 27 10:13:48 host16 mysqld[500]: 181127 10:13:48 [Note] /usr/sbin/mysqld (mysqld 10.0.36-MariaDB-0ubuntu0.16.04.1) starting as process 499 ...
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 host16 sshd[502]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 host16 sshd[503]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 host16 sshd[504]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:49 host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:49 host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:49 host16 systemd[1]: ssh.service: Start request repeated too quickly.
Nov 27 10:13:49 host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:49 host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:49 host16 systemd[1]: ssh.service: Failed with result 'start-limit-hit'.
Nov 27 10:13:49 host16 systemd[1]: Started /etc/rc.local Compatibility.
Nov 27 10:13:49 host16 systemd[1]: Failed to reset devices.list on /system.slice/plymouth-quit.service: Operation not permitted
Nov 27 10:13:49 host16 systemd[1]: Starting Terminate Plymouth Boot Screen...
Nov 27 10:13:49 host16 systemd[1]: Failed to reset devices.list on /system.slice/plymouth-quit-wait.service: Operation not permitted
Nov 27 10:13:49 host16 systemd[1]: Starting Hold until boot process finishes up...
Nov 27 10:13:49 host16 systemd[1]: Failed to reset devices.list on /system.slice/rc-local.service: Operation not permitted
Nov 27 10:13:49 host16 systemd[1]: Started Hold until boot process finishes up.
Nov 27 10:13:49 host16 systemd[1]: Started Container Getty on /dev/pts/1.
Nov 27 10:13:49 host16 systemd[1]: Started Container Getty on /dev/pts/0.
Nov 27 10:13:49 host16 systemd[1]: Failed to reset devices.list on /system.slice/console-getty.service: Operation not permitted
Nov 27 10:13:49 host16 systemd[1]: Started Console Getty.
Nov 27 10:13:49 host16 systemd[1]: Reached target Login Prompts.
Nov 27 10:13:49 host16 systemd[1]: Started Terminate Plymouth Boot Screen.
Nov 27 10:13:52 host16 nslcd[338]: accepting connections
Nov 27 10:13:52 host16 nslcd[275]: ...done.
Nov 27 10:13:52 host16 systemd[1]: Started LSB: LDAP connection daemon.
Nov 27 10:13:52 host16 systemd[1]: Failed to reset devices.list on /system.slice/cron.service: Operation not permitted
Nov 27 10:13:52 host16 systemd[1]: Started Regular background program processing daemon.
Nov 27 10:13:52 host16 systemd[1]: Failed to reset devices.list on /system.slice/atd.service: Operation not permitted
添加的systemd-tmpfiles --create
输出
我最近将系统从 Ubuntu 14.04 升级到 16.04(mysql Ver 15.1 Distrib 10.0.36-MariaDB)并注意到 root 可以在没有密码的情况下进入,例如:mysql -u root
为空。
尝试通过 mysql 设置新通行证,UPDATE mysql.user SET authentication_string = PASSWORD('supersekrit') WHERE User = 'root';
但这并没有禁用空密码。也试过跑步mysql_secure_installation
无济于事。
找到一篇关于将用户行中的字段设置为“NULL”的帖子。plugin
我这样做了,但现在root根本无法登录。
我在帖子中点击了指向 percona 的链接,其中说明了执行此操作的正确方法是运行以下命令: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
. 这会导致错误消息 ->ERROR 1064 (42000): You have an error in your SQL syntax...
不太确定解决此问题的正确方法是什么。有任何想法吗?
更新:在为 root mysql 帐户设置密码后,Ubuntu 16.04 cron 守护程序现在在 logrotate 期间抛出错误。看起来这个问题是一个兔子洞。我现在已经清空了 root 密码,直到我能弄清楚 logrotate 有什么问题。是的。
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
我正在将 Ubuntu 14.04 OpenLDAP 服务器升级到 16.04 并遇到障碍。有一个 (localhost) 导入脚本,用于ldapdelete -r -Y EXTERNAL -H ldapi:///...
删除一些 OU,然后用新信息重新填充它们。由于我怀疑是缺少/更改的olcAccess
属性,这失败了。任何人都知道为什么这不起作用?
我已经从脚本中手动运行了一行,结果如下:
# ldapdelete -r -Y EXTERNAL -H ldapi:/// "ou=people,dc=my,dc=org"
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldap_delete: Insufficient access (50)
additional info: no write access to parent
我可以使用olcRootDn
成功删除 OU,但这需要将 rootdn 密码放在我不想这样做的地方。
# ldapdelete -x -D "cn=admin,dc=my,dc=org" -W -h ldap1 "ou=people,dc=my,dc=org"
Enter LDAP Password:
# ldapdelete -x -D "cn=admin,dc=my,dc=org" -W -h ldap1 "ou=people,dc=my,dc=org"
Enter LDAP Password:
ldap_delete: No such object (32)
matched DN: dc=my,dc=org
我已经跑去slapcat
查看olcAccess
属性——似乎dn-exact=...
条目应该提供正确的权限,但这一定是不正确的。
dn: olcBackend={0}hdb,cn=config
objectClass: olcBackendConfig
olcBackend: {0}hdb
dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read
olcSizeLimit: 500
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=my,dc=org
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=my,dc=org
olcRootPW: {SSHA}(removed)...
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
我目前有两个跨多个非托管交换机(以及一些作为子网管理器运行的 PC)的 infiniband IPoIB 网络,其中多个 Linux 节点连接有 Infiniband 适配器。
内部有一个 SX6036 交换机,我想用它来整合 SM、网络和连接,但是一个 IPoIB 网络在 DMZ 中运行,而另一个 IPoIB 网络在 LAN 上运行。为了安全合规,我需要保持这两个网络隔离(以及服务器上的 ACLS)。
有没有办法将一系列端口分组到一个 IPoIB 子网(类似于以太网 VLAN)并将另一个端口范围分组到不同的子网?
我想iostat
在设备sda的输出前加上时间戳。Ymd H:M:S就足够了。然而,这似乎并不那么简单。我的第一次尝试很简单:
# vi just_echo
mystamp=$(date '+%Y-%m-%d %H:%M:%S')
cat /dev/stdin | grep sda | sed "s/sda/$mystamp/"
# iostat 5 | ./just_echo
但是,这不会产生任何输出。如果我删除sed
我会得到一些输出,但这里发生了什么?
我正在尝试编写一个 Ansible 剧本,它允许我在已定义的服务器列表中定义一个组列表以应用于用户列表。
['mike']
除了正在创建的用户是文字列表值(例如in )之外,它似乎正在接近工作/etc/passwd
。
我如何告诉 Ansible 使用的值which_users
?
---
- hosts: all
gather_facts: false
vars:
local_group_info:
- name : developer group
which_users :
- mike
- george
which_groups :
- adm
- www-data
on_hosts :
- test.sv1.org
- punchy.sv1.org
- name: admin group
which_users:
- kelly
which_groups:
- sudo
on_hosts :
- test.sv1.org
tasks:
- name: Add users to local groups if current host matches
when: inventory_hostname in item.0.on_hosts or 'all' in item.0.on_hosts
debug:
msg: "user {{ item.0.which_users }} should be in group {{ item.1 }}"
with_subelements:
- "{{ local_group_info }}"
- which_groups
输出:
PLAY [all] **************************************************************************************************************************
TASK [Add users to local groups if current host matches] ****************************************************************************
ok: [test.sv1.org] => (item=[{u'which_users': [u'mike', u'george'], u'name': u'developer group', u'on_hosts': [u'test.sv1.org', u'punchy.sv1.org']}, u'adm']) => {
"msg": "user [u'mike', u'george'] should be in group adm"
}
ok: [test.sv1.org] => (item=[{u'which_users': [u'mike', u'george'], u'name': u'developer group', u'on_hosts': [u'test.sv1.org', u'punchy.sv1.org']}, u'www-data']) => {
"msg": "user [u'mike', u'george'] should be in group www-data"
}
ok: [test.sv1.org] => (item=[{u'which_users': [u'kelly'], u'name': u'admin group', u'on_hosts': [u'test.sv1.org']}, u'sudo']) => {
"msg": "user [u'kelly'] should be in group sudo"
}
PLAY RECAP **************************************************************************************************************************
test.sv1.org : ok=1 changed=0 unreachable=0 failed=0
我想将sshd
日志条目中的源 IP 地址保存到 mysql 数据库中syslog-ng
。目前,我定义了一个过滤器,它匹配所需日志条目的子字符串。
我可以将日志条目完整地保存到数据库中,但是$MSG
系统日志条目的一部分包含很多我不想要的额外数据。有没有办法将系统日志条目的字段“拆分”为仅将 IP 地址写入数据库?
这是我的配置:
filter f_sshd
{
# (log entry) Sep 5 14:59:20 myhost4 sshd Starting session: shell on pts/0 for rbackup from 10.120.192.25 port 36894 id 0
match("Starting session:" value ("MESSAGE") );
};
destination d_sshd
{
sql( type(mysql)
username("xxxxx")
password("xxxxxxx")
database("syslog")
host("localhost")
table("ssh")
columns("host", "facility", "priority", "level", "pid", "tag", "timestamp", "program", "msg")
values("$HOST", "$FACILITY", "$PRIORITY", "$LEVEL", "$PID", "$TAG","$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC","$PROGRAM", "$MSG")
indexes("timestamp", "host", "program", "pid", "message"));
};
log
{
# s_stunnel is defined in syslog-ng/conf.d/stunnel.conf
source(s_stunnel);
filter(f_sshd);
destination(d_sshd);
};
我正在尝试找出一种方法来管理跨多个站点的单个用户的公钥,以及将该密钥放入多个$HOME目录中。原因是;我们的开发人员以自己的身份登录以检查、运行sudo
等,但是他们通过 SSH 以乘客用户身份部署代码,因此他们的 pubkey 也需要位于~/home/passenger/.ssh/authorized_keys中。
我不确定更换是否会让这变得不那么疯狂,但因为我几乎用我目前的剧本在那里,我想我会按原样发布问题,看看它会发生什么AuthorizedKeysFile
。/etc/ssh/sshd_config
也许这确实会以另一种方式更好地解决。
在我的homedirs.yml
文件中,我创建了用户的主目录(它们存在于 LDAP 中),然后将他们的 pubkey 移动到位。这适用于他们自己的主目录,但passenger
用户也需要此密钥。由于我可以将此剧本用于其他用户和主机,因此我定义了一个to_user:
列表,该列表定义了应该为哪些主目录设置 pubkey。
如何循环播放当前引用的{{ item.to_user }}
列表中的列表?authorized_key:
{{ item.name }}
剧本
---
- hosts: all
vars_files:
- ../group_vars/homedirs.yml
gather_facts: false
tasks:
- name: Set up home directory
when: inventory_hostname in item.allowed_hosts
file:
path: "/home/{{ item.name }}"
state: directory
owner: "{{ item.name }}"
group: "{{ item.group }}"
mode : 0750
with_items: "{{ homedirs }}"
- name: setup ssh pub key
when: inventory_hostname in item.allowed_hosts
authorized_key:
user: '{{ item.name }}'
state: present
key: '{{ item.pubkey }}'
with_items: "{{ homedirs }}"
主页目录.yml
# homedirs.yml
homedirs:
- name : usr123
group : developers
pubkey : "{{ lookup('file', '../group_vars/pubkeys/[email protected]') }}"
to_user:
- user123
- passenger
allowed_hosts :
- web1.my.com
- web1.test.my.com
- name : usr555
group : admin
pubkey : "{{ lookup('file', '../group_vars/pubkeys/[email protected]') }}"
to_user:
- user555
- sysadmin
allowed_hosts :
- blah.blah.host
我继承了两个 Mellanox Infiniband 环境。一个在 LAN 上,另一个在 DMZ 中。两个 IB 网络都有自己的 SX6005 非管理型交换机和几个运行网络子网管理器的小型台式计算机。据我了解,运行托管交换机会将子网管理器放在交换机上,从而不需要台式计算机子网管理器,对吗?
最好购买两台交换机来保持 LAN/DMZ 的隔离,还是 Mellanox VLAN 间路由“足够好”?
此外,我对所有 Infiniband 技术都很陌生。我如何知道哪个交换机与我的服务器 NIC (MCX354A-FCBT CX35A FDR) 兼容?是否有任何 FDR 交换机可以工作,或者接口类型是否也会起作用(QSFP、QSFP+)?
谢谢
Ansible 新手,有几台机器pam_access
使用/etc/security/access.conf
. 多行指定 ALLOW/DENY (+/-),然后指定用户或组以及要匹配的 src IP 地址。
在 Ansible 中管理这个文件的更简洁的方法是什么?
该文件/etc/security/access.conf
看起来像这样:
+ : root : cron crond :0 ttyS0 tty1 tty2 tty3 tty4 tty5 tty6
+ : root : 10.137.198.176
+ : inventory: 10.137.198.25
+ : sysadmin : 10.137.198.202
- : ALL : ALL
大多数机器将使用此基本 ACL,然后可以根据需要添加其他组或用户。Web 开发人员通过 SFTP 在两个 Web 服务器上登录,因此将为该组(- : ALL : ALL
行前)插入 ACL,如下所示:
+ : webdev : 10.137.198.0/24
- : ALL : ALL
一些 Web 服务器也运行passenger
. 这些系统的开发人员以用户身份推出代码passenger
,因此允许该用户从开发 LAN 中访问,但这并非在所有 Web 服务器上。
+ : passenger: 10.137.197.0/24
- : ALL : ALL
对于每台机器,规则变得非常具体,我看不到管理此文件的简单方法。我从下面的 playbook 和 group_vars 开始,但对于同一台机器有多个定义需要帮助。可能需要剧本中的数组定义line:
并进行调查。
此外,此模型每次都需要重新写入文件,因为从中删除主机group_vars
不会从access.conf
. 的唯一状态lineinfile
是absent
或present
。我需要一个名为add_line_if_missing_remove_if_absent_from_vars
. 有没有更好的办法?
- hosts: all
vars_files:
- ../group_vars/test-etc-security-access-conf.yml
gather_facts: false
tasks:
- name: "Set up /etc/security/access.conf for {{ inventory_hostname }}"
when: inventory_hostname is match (item.name)
lineinfile:
dest : /tmp/access.conf
regexp: '{{ item.regexp }}'
line: '{{ item.line }}'
with_items: "{{ access_rules }}"
group_vars - 必须是更好的方法:
access_rules:
- name: 10.137.1.66
regexp: '.*passenger.*'
line: '+ : passenger : 10.137.10.0/24'
- name: 10.137.1.66
regexp: '.*webdev.*'
line: '+ : webdev : 10.137.198.0/24'