小编Mar*_*ery的帖子

/usr/sbin/nologin 作为登录 shell 是否出于安全目的?

在我的/etc/passwd文件中,我可以看到www-dataApache 使用的用户,以及各种系统用户,都拥有/usr/sbin/nologin/bin/false作为他们的登录 shell。例如,这里是选择的行:

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
Run Code Online (Sandbox Code Playgroud)

因此,如果我尝试切换到这些用户中的任何一个(有时我想这样做以检查我对他们权限的理解,并且可能还有其他至少一半合理的原因),我失败了:

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:

-- https://unix.stackexchange.com/a/78996/29001

出于安全原因,我创建了一个没有登录 shell …

shell security users login

92
推荐指数
6
解决办法
10万
查看次数

如何使用中键滚动屏幕?

在 Windows 上,大多数带有大型可滚动文本容器的程序(例如所有浏览器、大多数文字处理器和 IDE)都允许您按下鼠标中键,然后移动鼠标进行滚动。这种滚动是平滑的,允许您仅使用鼠标就可以非常快速地滚动。

当我在笔记本电脑上使用 Linux 时,两指滚动执行的功能大致相同;快速向下滚动页面很容易(比滚动鼠标滚轮快得多)但滚动保持足够平滑以允许精确定位。

我不确定在使用鼠标在桌面上运行 Linux 时如何实现相同的目标。据我在一堆谷歌搜索后可以看出,既没有特定于应用程序的设置可以切换到 Windows 风格的鼠标中键行为,也没有任何系统范围的设置来实现相同的效果。

只是为了具体化,让我们说 - 如果它相关 - 我在 Firefox、Google Chrome、Gedit 和 Eclipse 的上下文中询问最新版本的 Mint(我在家使用的)或 Ubuntu(我使用的)在上班)。不过,我怀疑这是一个与发行版和应用程序无关的问题。

据我所知,我的滚动选项是:

  • 用鼠标滚轮滚动 - 慢!
  • 使用 PgUp / PgDn 键 - 一次跳跃很远的距离,因此不能用于精确定位,并且不如使用鼠标舒适
  • 像我以前在带有两键鼠标的旧 Windows PC 上那样上下拖动屏幕右侧的滚动条。这就是我在实践中所做的,但它比 Windows 风格的鼠标中键滚动更不舒服;在巨大的宽屏上,将光标从屏幕中间移到滚动条需要花费我大部分时间,而将其再次移回需要花费大部分时间,而我不得不将目光从我看到的内容上移开'实际上滚动来做到这一点。

这些都不满足我!这个 UI 问题是影响我在台式机上使用 Linux 的唯一原因,几乎让我希望我使用的是笔记本电脑触摸板而不是鼠标。这让我很恼火,以至于我得出的结论是,要么我缺少一些解决这个问题的基本 Linux UI 功能,要么我只是一个过于敏感的怪胎,它甚至不打扰其他人 - 但我不确定哪个.

所以我的问题是:

  1. 在 Linux 世界的任何地方都存在 Windows 风格的鼠标中键滚动,还是真的纯粹是 Windows 的东西?特别是,是否有任何 Linux 网络浏览器允许您使用 Windows 风格的滚动?
  2. 是否有任何滚动页面的机制存在于 Linux 但不存在于 Windows 中,尤其是那些执行我所描述的角色的机制?
  3. 我缺少的任何其他解决方案?

mouse scrolling

51
推荐指数
2
解决办法
7万
查看次数

如果目录已经为空,则删除目录中的文件而不会出错

作为部署脚本的一部分,我想从我的临时目录中转储一些缓存的内容。我使用如下命令:

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 中删除目录内容而不会收到抱怨目录已经为空的消息的简洁方法是什么?

rm files

41
推荐指数
2
解决办法
6万
查看次数

有没有办法在 macOS 上运行 Linux 二进制文件?

有没有办法在 macOS 中运行 Linux 二进制文件?我试图运行一个二进制文件,但它说它不可执行。

binary

29
推荐指数
2
解决办法
6万
查看次数

/usr/share/dict/words 中的单词从何而来?

/usr/share/dict/words包含很多单词。这个列表是如何生成的?它的内容在不同的 Unices 中是否相同?是否有任何标准规定它必须包含什么?

到目前为止,我所能找到的是,在 Ubuntu/Debian 上,列表来自wordlist包,但它们的描述没有提供关于列表是如何实际生成的线索。

dictionary words

16
推荐指数
1
解决办法
2万
查看次数

“无法解析主机名” - 如何在不重新启动的情况下干净地更改主机名

在工作中,我使用托管在 Amazon EC2 实例上的 Ubuntu 服务器在一个小型网站上工作。我们有两个网络服务器,在任何给定时间,其中一个是“实时”的,一个是“测试”的,但是当我们在“测试”服务器上运行我们的新功能或错误修正时,我们运行一个脚本,该脚本使用AWS API 交换分配给两个框的 IP 地址,以便交换由两个服务器提供服务的域。

因此,在任何给定时刻,这些服务器之一可以是我们的“实时”服务器或我们的“测试”服务器,但这些不是永久状态。

为了避免在通过 SSH 连接到这些服务器中的任何一个时造成混淆,特别是如果一些愚蠢的人(比如我)长时间打开 SSH 会话并且对他们在哪个服务器上感到困惑,我想修改两个服务器的主机名以便终端窗口中的提示和标题将读取ubuntu@ourwebsiteLIVEubuntu@ourwebsiteTESTING取决于服务器当前是在线还是测试。

我知道我可以通过hostname ourwebsiteLIVE在我们的 IP 交换脚本中运行等来做到这一点,并且已经实现了这一点。它有效,但现在每次我sudo在我们的任何一台服务器上打印任何东西时,例如

sudo:无法解析主机ourwebsiteLIVE

这似乎没有破坏任何东西,但相当令人恼火。我认为,如果我尝试将通过管道传输到彼此的命令链接起来,将来它也可能最终会破坏某些东西,所以我想这在技术上不仅仅是一个美学问题。

我见过的所有解决“无法解析主机名”消息的方法都涉及修改/etc/hosts或一些类似的文件,然后重新启动服务器。我可以看到这对于许多用例来说都很好,但对我们来说远非理想,因为我们正在以常规和编程方式修改主机名;我们不想每次运行交换脚本时都必须等待重新启动。

有没有一种方法可以让错误消息消失而无需重新启动?

linux ubuntu hostname

7
推荐指数
1
解决办法
1万
查看次数

rsync 协议名称完整路径,不是模块

是否可以在 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'

rsync

6
推荐指数
1
解决办法
4465
查看次数

curl 的 --data 选项执行哪些数据转换?

我最近使用了 curl 的 --data选项将一些 JSON 上传到服务器,在阅读联机帮助页后,我不确定我是否可以确信它完好无损。

curl 的联机帮助页 明确描述了 curl 的--data/--data-ascii--data-binary选项之间的一个区别;即,当使用该@filename语法使 curl 从文件中读取数据时,将从文件中--data去除换行符,但--data-binary不会。

但是,手册页使它听起来有更多差异。描述中的以下段落--data-binary只能合理地解释为意味着除了--data对给定的数据进行换行删除之外,还有某些“转换” :

--data-binary <数据>

...

...数据以与 --data-ascii 类似的方式发布,除了保留换行符和回车符并且永远不会进行转换(强调我的)

这些神秘的“转换”是什么?他们甚至存在吗?它们没有记录在手册的--data选项部分中,我也无法通过实验发现它们。人们可能期望--data选项转换的显而易见的东西(如与号、斜线、哈希、问号、等号、汉字或笑眯眯的猫脸)都完好无损地发送。

那么手册在说什么?

curl

5
推荐指数
1
解决办法
2614
查看次数

标签 统计

binary ×1

curl ×1

dictionary ×1

files ×1

hostname ×1

linux ×1

login ×1

mouse ×1

rm ×1

rsync ×1

scrolling ×1

security ×1

shell ×1

ubuntu ×1

users ×1

words ×1