小编Ask*_*man的帖子

如何防止新用户做任何危险的事情?

我最近在我的服务器上安装了 Ubuntu 服务器以作为新用户试用 linux。我遵循了有关如何设置 Web 服务器的教程,其中说我需要chmod 777Web 服务器目录,以便可以将其写入。

无论如何,我为一个家伙创建了一个新帐户,让他可以查看服务器上我放置在他的主目录中的一些文件:

adduser francis
Run Code Online (Sandbox Code Playgroud)

创建帐户后,我检查了他的访问权限

groups francis
Run Code Online (Sandbox Code Playgroud)

它说“弗朗西斯:弗朗西斯”,所以我认为这不是问题,默认情况下,ubuntu 没有将他包含在任何组中,这是有道理的,它在安全方面创建了他没有额外的权限,所以一切都很好。一周后,在绝对而彻底的恐惧中,我发现即使他无法执行 SUDO 之类的操作或在系统目录中乱七八糟,他也可以完全访问服务器上的几乎所有其他内容。例如,即使该目录不在他的主目录中,他也可以完全读/写我在 /var/www 上的 Web 服务器文件(因此密码存储在 php 配置文件等中),而且我从未将他添加到任何可能访问该目录,在执行 adduser 之后,我也没有授予他任何对任何内容的特殊访问权限。

无论如何,这里发生了什么?我如何阻止他访问任何重要的东西?他不应该能够访问像 /media 或 /var/www 这样的东西。我认为默认情况下会阻止新用户做任何危险的事情或窥探他们不应该做的事情。

总而言之,我只需要允许他访问我手动指定的目录 + 到他需要正常运行的目录(他的主目录、vim、nano 等)

谢谢

server users user-management

31
推荐指数
3
解决办法
4098
查看次数

在 ubuntu 18.04 上启动后运行命令的正确方法是什么?

我需要在计算机启动后运行一批简单的命令,例如

sudo thing
sudo thing1 -p
Run Code Online (Sandbox Code Playgroud)

但对于我的生活,我无法弄清楚如何。我用谷歌搜索又搜索,我一直发现同样的事情:将命令放入 /etc/rc.local 或 /etc/init.d/rc.local 文件中。问题是我的系统上不存在这些文件!此外,我已经读到 /etc/rc.local 无论如何都已弃用,那么正确且简单的方法是什么?

我想知道如何处理这两件事:

  • 计算机启动后运行命令

  • 指定用户登录后运行命令,以指定用户身份运行

    (并且仅通过在终端中编辑内容来实现所有这些,无需 GUI 工具)

谢谢你。

command-line boot init 18.04

8
推荐指数
0
解决办法
3万
查看次数

我可以手动设置 LVM 吗?

到目前为止,我一直在为我的 Ubuntu 安装使用标准的分区方案:

- 4GB /swap
- 30GB /
- Rest of the HDD /home
Run Code Online (Sandbox Code Playgroud)

但是,我现在正在重新安装 Ubuntu,并希望使用快照和 LVM 提供的其他东西。

Ubuntu 安装程序有一个复选框来安装 Ubuntu 并自动为其设置 LVM,但我不想使用这个选项,因为我喜欢手动设置我的分区。这样,我可以选择诸如交换分区的大小或根分区的大小等内容,但是唉,在 Ubuntu 安装程序的手动分区工具中,我看不到任何创建任何 LVM 分区方案或任何选项的选项像那样。

是否可以像这样手动设置 LVM,或者是通过勾选 LVM 框让 Ubuntu 全自动完成的唯一选择?

谢谢你。

partitioning lvm system-installation

4
推荐指数
1
解决办法
9453
查看次数

制作 .sh 脚本来检查 SSH 连接是否存在,如果不存在则连接

我正在努力编写我认为应该是简单的脚本。

基本上我有一台工作计算机,它隐藏在我无法访问的 NAT 后面。我需要通过 SSH 连接到这台计算机,因此唯一的方法是设置反向端口重定向,这台经过 NAT 处理的计算机将连接到我家里的服务器,同时为其自身重定向端口,然后我可以简单地通过 ssh 连接到它通过我的家庭服务器。

.sh 脚本将由工作中的计算机每 5 分钟执行一次,这就是我希望它执行的操作:

检查是否存在到我的服务器的活动 ssh 连接,如果是,则只需执行任何操作并退出脚本即可。

如果没有检测到活动连接,则通过执行“ssh me@1.2.3.4 -i key.priv”进行连接并退出脚本。

如果 ssh 连接尝试由于某种原因挂起,例如超过 2 分钟,则强制退出脚本(不确定这是否可行,如果不可行,则不必存在)

非常感谢您的建议。

ssh command-line bash scripts networking

4
推荐指数
1
解决办法
8148
查看次数

如何使用 rsync 移动多个文件并同时显示进度?

我可以使用以下命令移动文件:

mv -t /mnt/hdd /home/me/movies/movie1.avi /home/me/movies/movie2.avi
Run Code Online (Sandbox Code Playgroud)

问题是,它根本没有显示任何进展,所以我不知道操作是完成了 1% 还是完成了 80%。

我知道 rsync 能够显示进度。

那么上面命令的 rsync 变体会是什么样子,同时还显示操作的进度呢?

谢谢

command-line files rsync mv

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

如何让 umount 等待,直到设备不忙?

我有一个 bash 脚本文件,在其中执行一堆命令。

#!/bin/bash
umount /media/hdd1
umount /media/hdd2
something1
something2
Run Code Online (Sandbox Code Playgroud)

但由于文件中后面的命令与已卸载的硬盘一起使用,因此我需要确保卸载成功后再继续。

我当然可以检查 umount 是否失败并退出 1,但这并不理想。

所以基本上,我想做的是以某种方式让 umount 命令等待,直到设备不忙,然后卸载 HDD 并继续执行脚本。

因此它会像这样工作:

#!/bin/bash
umount /media/hdd1 # Device umounted without any problems continuing the script..
umount /media/hdd2 # Device is busy! Let's just sit around and wait until it isn't... let's say 5 minutes later whatever was accessing that HDD isn't anymore and the umount umounts the HDD and the script continues
something1
something2
Run Code Online (Sandbox Code Playgroud)

谢谢。

bash umount mount

3
推荐指数
1
解决办法
6788
查看次数