【问题标题】:Run Rails app as non-root user, but ask for root password to access files以非 root 用户身份运行 Rails 应用程序,但要求输入 root 密码才能访问文件
【发布时间】:2016-01-25 10:05:45
【问题描述】:

我的任务是在不提供密码(root 用户密码)的情况下使 Rails 应用程序的源文件不可读,因此客户端将无法查看应用程序内部(它将在机器将保存在客户的服务器机房中)。

我尝试将所有应用程序文件夹(以及文件和子文件夹等)的所有权更改为 root,并将权限设置为仅对“其他”用户执行...但无济于事:我实现了非非root用户的文件可读性,但也无法运行该应用程序。

运行sudo rails ... 也无法使用这些权限。

机器运行的是 Ubuntu 14.04。该应用程序基于 Rails 4.2 和 Ruby v2.2.1p85,实际上在 nginx 之后运行,并使用 unicorn(+ 瘦作为集成 Web 服务器)......如果这有什么不同的话。机器设置为启动并自动登录唯一的非 root 用户(比如company)而不要求输入密码,并立即启动 unicorn。

我还没有尝试过的一件事,因为我认为它可能过于侵入性操作,是创建一个新的用户帐户,比如client,并让机器自动登录这个新帐户。在将 company 作为应用程序文件和文件夹的所有者时,我会将 Ubuntu 设置为以不同于登录用户的身份运行 unicorn(即 companyclient),并且无法打开阅读器中的文件。

如果可能的话,我怎样才能实现我的目标?

【问题讨论】:

    标签: ruby-on-rails ubuntu permissions user-permissions systemmanagement


    【解决方案1】:

    按照您的第一种方法更改所有文件的权限,您为什么不尝试设置the set-user-ID-on-execution bit

    chmod -R 4701 <app_dir>
    

    这将阻止“其他”用户读取并允许他们执行,但在执行时他们将获得所有者的权限(这是set-user-ID 的利益)。

    附:我不知道这是否适合你,但值得一试。

    【讨论】:

    • 可能是一个可以接受的想法,但是当我 unicorn_rails -c config/unicorn.conf.rb 时,我什至无法启动应用程序。有什么方法可以将应用程序文件夹所有者设置为不同的用户(www-datarails,无论什么工作......),然后以该用户身份启动应用程序,同时仍然在启动时登录 company
    猜你喜欢
    • 2021-06-22
    • 2019-03-23
    • 2014-08-10
    • 2016-04-11
    • 2017-07-08
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多