设置具有多个访问权限的 Linux 服务器

设置具有多个访问权限的 Linux 服务器

我是一名研究生,想在办公室安装一个 Linux 服务器(最好是 Ubuntu)。我还想让我的朋友通过 SSH 访问该服务器。

我的问题是,我是否可以设置我的服务器,以便我可以授予我的一个朋友在我的计算机上安装软件的权限,但他不能浏览他被允许的目录之外的内容?

我可以为不同的人设置多个 apache 实例(在不同的端口上)吗?这样每个人都可以访问自己的 apache 实例?

答案1

您可以通过在文件中精确控制访问权限来执行此操作/etc/sudoers。以 root 身份运行该命令visudo并添加类似以下内容:

username         ALL =  (root) /usr/bin/apt-get update,        \
                               /usr/bin/apt-get install

或者:

username         ALL =  (root) /path/to/yum install

取决于你使用的是 centos 还是其他使用yumdebian/ubuntu 的发行版,后者使用aptapt-get

文件中的这些行将/etc/sudoers允许以 root 用户身份username运行命令/usr/sbin/apt-get update/usr/sbin/apt-get install [packagenamex]/或/path/to/yum install [packagenamex],并且将提示他们输入/他们的/密码,而不是 root 的密码。他们将没有对该机器的其他特权访问权限。

除此之外,大多数软件包都可以使用以下命令从源代码进行编译:

./configure --prefix=/home/username
make
make install

它会将包安装到它们的主目录中,通常会创建~/bin ~/lib~/usr等等目录。

因此也许./configure --prefix=/home/username/local或其他什么会更合适。

为了设置 apache httpd,允许每个用户控制他们自己的虚拟主机等,而无需运行多个实例,您可以向 apache 配置添加一个选项,例如/etc/apache2/apache2.conf,一行内容:

Include /home/*/httpd/user.conf

配置文件可以命名为任何你想要的,任何可能更合适的,但这告诉 apache 在/home/*/httpd/(其中*被翻译为glob到其下的任何子目录/home)中查找一个名为的文件user.conf,您可以允许用户在其中添加有关VirtualHosts的信息

如果您想以这种方式授予普通用户的访问权限,他们可以安装或配置 apache,使其在非特权端口上运行其主目录。非特权端口是 1024 以上的任何端口,他们必须在其个人 apache 配置中添加一条指令,例如Listen ip.add.re.ss:8888启动在端口 8888 上运行的 apache httpd 服务器

为确保他们无法浏览到您的或任何其他人的主目录,请确保已设置它们chmod 700chmod 711(以允许 apache httpd 访问以执行其目录,以便/home/username/public_html如果您想在 apache 中拥有用户目录)您可以通过执行以下操作来测试ls -ld /home/username它应该显示:

drwx------ 185 username users 36864 May 18 17:05 /home/username/

获得权限700,并drwx--x--x获取权限711。如果出现,drwxr-xr-x则需要运行chmod 700 /home/usernamechmod 711 /home/username

相关内容