我在 Ubuntu 上运行了一个 LAMP。我想授予一些同事和朋友使用我的机器上传他们的网站并在他们已添加虚拟主机的主目录中执行任何他们想做的事情的权限。但是,系统中的几乎所有内容都可以被任何人读取(显然这是 Ubuntu 的默认设置),这意味着他们也可以读取我的我已经在项目中设置了所有 MySQL 密码和其他信息,这意味着他们可以轻松登录我的服务器,因为他们已经拥有 ssh 访问权限。我知道我可以将密码文件设置为只有我自己可以读取,但这并不能完全解决问题,也许将来我会忘记这样做,或者我可能会不知不觉地更改权限,但这仍然是一个问题。
也许如果我不允许用户使用,mysql
除非他们正在使用,sudo
在我看来就足够了,但这可能吗?
答案1
Ubuntu 通过为文件、目录、组和 umask 应用“简单”权限,使桌面用户的操作更加简单。要将您的环境配置为多用户服务器,以下是一些建议:
- 改变
umask
系统上所有用户帐户的默认设置。这允许-rw-------
在创建新文件/目录时授予权限,而不是像默认设置-rw-r--r--
那样每个人都可以读取所有内容。 - 删除 Ubuntu 为每个新用户帐户添加的所有附加组(例如:pulse、plugdev、cdrom 等等)
创建新用户帐户时,请创建一个与其用户名匹配的默认组,例如:
# useradd --uid 51000 --create-home --user-groups user133
。默认情况下,Ubuntu 将使用uid
1000 个用户开始创建用户。当将文件复制到新系统时,如果此用户 ID 是为其他人设置的,这可能会出现问题。使用非默认用户uid
开始创建用户可以为您节省一些麻烦。创建匹配的用户组名称允许将用户主目录上的权限专门设置为用户。创建一个附加组,允许共享所有用户所属的文件,例如:
# groupadd --gid 60001 webfiles
。这将允许您为组中的任何人分配共享文件和目录的权限webfiles
。需要的用户高架通道重新启动网络服务器或可以放置一些东西/etc/sudoers
。最后,对于
mysql
,您应用的安全分区将取决于您需要获得多强的铁拳。如果您只是想防止事故发生,只需为每个用户提供一个受密码保护的数据库工作就足够了。