我一直在看其他人写的一些脚本(特别是 Red Hat),他们的很多变量都是使用以下符号分配的
VARIABLE1="${VARIABLE1:-some_val}"
或一些扩展其他变量
VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}"
使用这种表示法而不是直接声明值有什么意义(例如, VARIABLE1=some_val)有什么意义?
这种表示法是否有好处或可以防止可能出现的错误?
是否:-有特定的含义在这方面?
我有一个 Apache 服务器 (RHEL 6) 托管多个用户网页,该网页当前连接到我的 Active Directory 环境以对用户进行身份验证。服务器用于自动托管用户放入其 /home/<user>/public_html 文件夹中的内容。我还将此服务器配置为使用 chroot,因此用户将无法在其主文件夹之外浏览服务器上的任何其他内容。登录脚本不会为用户创建主文件夹。这些是手动创建的,因为我们只希望某些用户能够从该服务器托管网页。
问题是,任何用户当前都可以登录服务器,而不是进入他们的 /home 文件夹(因为它不存在),他们会自动进入 /。这使他们可以查看其组具有读取权限的服务器上的任何文件/文件夹。这是一个安全问题,我想将登录限制为拥有 /home 目录的用户。我们不想将 AD 组或用户列表指定为经过身份验证,因为该列表可能会变得很长并且难以管理,尽管它可能比编写 PAM 模块更容易。
有没有办法将 LDAP 登录限制为只有已经拥有 /home 目录的用户?我在 PAM 选项或文档中没有找到任何内容。
我有一台我更改了主机名的机器。我改变了它/etc/hosts,/etc/sysconfig/network以及与hostname命令。hostname返回正确的短名称,hostname --fqdn返回预期的 FQDN,但hostname -A返回旧名称。我更改了机器的 IP 地址以确保它不是外部 DNS 缓存。
如果我打开 python 并运行
import socket
print(socket.gethostname())
print(socket.getfqdn())
Run Code Online (Sandbox Code Playgroud)
两者都返回旧的主机名/fqdn,与 hostname -A
从主机名手册页看来--fqdn,它只需要短名称和域并将它们放在一起。
显示 FQDN(完全限定域名)。FQDN 由短主机名和 DNS 域名组成。除非您使用 bind 或 NIS 进行主机查找,否则您可以更改 /etc/hosts 文件中的 FQDN 和 DNS 域名(它是 FQDN 的一部分)。
这些命令之间有什么区别,我如何更好地解决旧主机名仍然存在的原因。
如果我跑
FOO=bar docker run -it -e FOO=$FOO debian env
Run Code Online (Sandbox Code Playgroud)
该环境变量未在命令的命令输出中设置env。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=03f3b59c0aab
TERM=xterm
FOO=
HOME=/root
Run Code Online (Sandbox Code Playgroud)
但如果我跑
FOO=bar; docker run -i -t --rm -e FOO=$FOO debian:stable-slim env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=672bfdcde93c
TERM=xterm
FOO=bar
HOME=/root
Run Code Online (Sandbox Code Playgroud)
然后该变量可以从容器中获得,也可以导出到我当前的 shell 环境中。
echo $FOO
bar
Run Code Online (Sandbox Code Playgroud)
我期待这种行为,export FOO=bar但为什么;也会发生这种情况?
我试图将一堆名为 folder.jpg 的文件复制到一个文件夹中。问题是因为所有文件都命名为相同的东西,我需要在过程中重命名它们。我知道我可能可以用 sed 做到这一点,但我想将它们重命名为父文件夹的一部分的名称。这是我找到并复制文件所得到的
cp $(find . -iname "folder.jpg") .albumart/
Run Code Online (Sandbox Code Playgroud)
文件夹结构是 ./artist/artist.year.album/folder.jpg 以及我想使用父文件夹(或只是其中的一部分)来命名文件的内容。有人可以用一个班轮帮助我完成任务吗?更棘手的是,有些文件夹还有一层 CD1 和 CD2,如果它们存在,我想忽略它们(例如 ./artist/artist.year.album/CD1/folder.jpg)