在我的/etc/passwd
文件中,我可以看到www-data
Apache 使用的用户,以及各种系统用户,都拥有/usr/sbin/nologin
或/bin/false
作为他们的登录 shell。例如,这里是选择的行:
Run Code Online (Sandbox Code Playgroud)daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
因此,如果我尝试切换到这些用户中的任何一个(有时我想这样做以检查我对他们权限的理解,并且可能还有其他至少一半合理的原因),我失败了:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Run Code Online (Sandbox Code Playgroud)
当然,这并没有太大的不便,因为我仍然可以通过这样的方法为他们启动一个shell:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Run Code Online (Sandbox Code Playgroud)
但这只是让我想知道拒绝这些用户登录 shell 的目的是什么。环顾互联网寻求解释,许多人声称这与安全性有关,并且每个人似乎都同意更改这些用户的登录外壳在某种程度上是一个坏主意。以下是引用的集合:
将 Apache 用户的 shell 设置为非交互式通常是一种很好的安全实践(实际上,所有不必以交互方式登录的服务用户都应该将其 shell 设置为非交互式)。
-- https://serverfault.com/a/559315/147556
用户 www-data 的 shell 设置为 /usr/sbin/nologin,这是有充分理由的。
-- https://askubuntu.com/a/486661/119754
[系统帐户]可能是安全漏洞,特别是如果它们启用了 shell:
坏的
Run Code Online (Sandbox Code Playgroud)bin:x:1:1:bin:/bin:/bin/sh
好的
Run Code Online (Sandbox Code Playgroud)bin:x:1:1:bin:/bin:/sbin/nologin
-- https://unix.stackexchange.com/a/78996/29001
出于安全原因,我创建了一个没有登录 shell …
在 Windows 上,大多数带有大型可滚动文本容器的程序(例如所有浏览器、大多数文字处理器和 IDE)都允许您按下鼠标中键,然后移动鼠标进行滚动。这种滚动是平滑的,允许您仅使用鼠标就可以非常快速地滚动。
当我在笔记本电脑上使用 Linux 时,两指滚动执行的功能大致相同;快速向下滚动页面很容易(比滚动鼠标滚轮快得多)但滚动保持足够平滑以允许精确定位。
我不确定在使用鼠标在桌面上运行 Linux 时如何实现相同的目标。据我在一堆谷歌搜索后可以看出,既没有特定于应用程序的设置可以切换到 Windows 风格的鼠标中键行为,也没有任何系统范围的设置来实现相同的效果。
只是为了具体化,让我们说 - 如果它相关 - 我在 Firefox、Google Chrome、Gedit 和 Eclipse 的上下文中询问最新版本的 Mint(我在家使用的)或 Ubuntu(我使用的)在上班)。不过,我怀疑这是一个与发行版和应用程序无关的问题。
据我所知,我的滚动选项是:
这些都不满足我!这个 UI 问题是影响我在台式机上使用 Linux 的唯一原因,几乎让我希望我使用的是笔记本电脑触摸板而不是鼠标。这让我很恼火,以至于我得出的结论是,要么我缺少一些解决这个问题的基本 Linux UI 功能,要么我只是一个过于敏感的怪胎,它甚至不打扰其他人 - 但我不确定哪个.
所以我的问题是:
作为部署脚本的一部分,我想从我的临时目录中转储一些缓存的内容。我使用如下命令:
rm /tmp/our_cache/*
Run Code Online (Sandbox Code Playgroud)
但是,如果/tmp/our_cache
为空(在快速连续向我们的测试服务器推送许多更改时很常见),则会打印以下错误消息:
rm: cannot remove `/tmp/our_cache/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这没什么大不了的,但它有点难看,我想降低这个脚本输出中的噪声信号比。
在 unix 中删除目录内容而不会收到抱怨目录已经为空的消息的简洁方法是什么?
有没有办法在 macOS 中运行 Linux 二进制文件?我试图运行一个二进制文件,但它说它不可执行。
/usr/share/dict/words
包含很多单词。这个列表是如何生成的?它的内容在不同的 Unices 中是否相同?是否有任何标准规定它必须包含什么?
到目前为止,我所能找到的是,在 Ubuntu/Debian 上,列表来自wordlist包,但它们的描述没有提供关于列表是如何实际生成的线索。
在工作中,我使用托管在 Amazon EC2 实例上的 Ubuntu 服务器在一个小型网站上工作。我们有两个网络服务器,在任何给定时间,其中一个是“实时”的,一个是“测试”的,但是当我们在“测试”服务器上运行我们的新功能或错误修正时,我们运行一个脚本,该脚本使用AWS API 交换分配给两个框的 IP 地址,以便交换由两个服务器提供服务的域。
因此,在任何给定时刻,这些服务器之一可以是我们的“实时”服务器或我们的“测试”服务器,但这些不是永久状态。
为了避免在通过 SSH 连接到这些服务器中的任何一个时造成混淆,特别是如果一些愚蠢的人(比如我)长时间打开 SSH 会话并且对他们在哪个服务器上感到困惑,我想修改两个服务器的主机名以便终端窗口中的提示和标题将读取ubuntu@ourwebsiteLIVE
或ubuntu@ourwebsiteTESTING
取决于服务器当前是在线还是测试。
我知道我可以通过hostname ourwebsiteLIVE
在我们的 IP 交换脚本中运行等来做到这一点,并且已经实现了这一点。它有效,但现在每次我sudo
在我们的任何一台服务器上打印任何东西时,例如
sudo:无法解析主机ourwebsiteLIVE
这似乎没有破坏任何东西,但相当令人恼火。我认为,如果我尝试将通过管道传输到彼此的命令链接起来,将来它也可能最终会破坏某些东西,所以我想这在技术上不仅仅是一个美学问题。
我见过的所有解决“无法解析主机名”消息的方法都涉及修改/etc/hosts
或一些类似的文件,然后重新启动服务器。我可以看到这对于许多用例来说都很好,但对我们来说远非理想,因为我们正在以常规和编程方式修改主机名;我们不想每次运行交换脚本时都必须等待重新启动。
有没有一种方法可以让错误消息消失而无需重新启动?
是否可以在 rsync 命令中命名源目录的完整路径而不是模块的名称?
例如:
rsync -av rsync://10.171.73.23/home/user/work/tests .
Run Code Online (Sandbox Code Playgroud)
代替:
rsync -av rsync://10.171.73.23/ftp/work/tests .
Run Code Online (Sandbox Code Playgroud)
(ftp 是 /etc/rsyncd.conf 中的一个模块)
尝试第一个版本时,我得到 @ERROR: Unknown module 'home'
我最近使用了 curl 的 --data
选项将一些 JSON 上传到服务器,在阅读联机帮助页后,我不确定我是否可以确信它完好无损。
curl 的联机帮助页 明确描述了 curl 的--data
/--data-ascii
和--data-binary
选项之间的一个区别;即,当使用该@filename
语法使 curl 从文件中读取数据时,将从文件中--data
去除换行符,但--data-binary
不会。
但是,手册页也使它听起来有更多差异。描述中的以下段落--data-binary
只能合理地解释为意味着除了--data
对给定的数据进行换行删除之外,还有某些“转换” :
--data-binary <数据>
...
...数据以与 --data-ascii 类似的方式发布,除了保留换行符和回车符并且永远不会进行转换。(强调我的)
这些神秘的“转换”是什么?他们甚至存在吗?它们没有记录在手册的--data
选项部分中,我也无法通过实验发现它们。人们可能期望--data
选项转换的显而易见的东西(如与号、斜线、哈希、问号、等号、汉字或笑眯眯的猫脸)都完好无损地发送。
那么手册在说什么?