我是一名研究生,想在办公室安装一个 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 还是其他使用yum
debian/ubuntu 的发行版,后者使用apt
和apt-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
,您可以允许用户在其中添加有关VirtualHost
s的信息
如果您想以这种方式授予普通用户的访问权限,他们可以安装或配置 apache,使其在非特权端口上运行其主目录。非特权端口是 1024 以上的任何端口,他们必须在其个人 apache 配置中添加一条指令,例如Listen ip.add.re.ss:8888
启动在端口 8888 上运行的 apache httpd 服务器
为确保他们无法浏览到您的或任何其他人的主目录,请确保已设置它们chmod 700
或chmod 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/username
或chmod 711 /home/username