V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bb2018
V2EX  ›  Python

nginx 的配置中, user nginx nginx; 指定 nginx 运行的用户及用户组,这个用户名 用 useradd nginxuser 创建了后。需要给他什么权限 以限给他什么组?

  •  
  •   bb2018 · 2017-08-24 17:50:24 +08:00 · 22966 次点击
    这是一个创建于 2648 天前的主题,其中的信息可能已经有所发展或是发生改变。
    nginx 的配置中,user nginx nginx; 指定 nginx 运行的用户及用户组,这个用户名 用 useradd nginxuser 创建了后。需要给他什么权限 以限给他什么组? 怎么设置他的组与权限。

    让 user nginxuser ;
    可以正常运行?
    14 条回复    2017-08-31 09:42:44 +08:00
    RH
        1
    RH  
       2017-08-24 19:37:46 +08:00 via iPhone
    根据你的 Nginx 提供服务所需的最小权限给。如果只是提供静态文件服务,只需要给到能读取静态文件的权限。
    bb2018
        3
    bb2018  
    OP
       2017-08-24 22:12:54 +08:00
    @RH
    就是只提供静态文件
    那要怎么设置新用户 nginxuser 的权限 及用户组呢?
    bb2018
        4
    bb2018  
    OP
       2017-08-24 22:35:21 +08:00
    看到三个回复。进来了一看只有两个。。。。。

    3 回复
    cxbig
        5
    cxbig  
       2017-08-24 22:58:53 +08:00   ❤️ 1
    没那么多讲究的,保证 server root 可以被该用户访问到即可
    比方说是 /var/www/project
    用 sudo -u nginxuser ls /var/www/project 就可以验证该用户是否拥有访问权限
    这类系统服务用户可以指定默认 shell 为 /sbin/nologin, /bin/true|false 来避免远程登录

    另外切换新用户需要指定稳定的 client_body_temp_path,不然缓存可能会有写入权限的问题
    NoAnyLove
        6
    NoAnyLove  
       2017-08-24 23:57:25 +08:00
    可以创建一个 nginx 用户,nginx 组,然后什么权限都不给,shell 指定为 nologin 或者 false 都行
    msg7086
        7
    msg7086  
       2017-08-25 03:27:38 +08:00
    Debian 中的惯例是拿 www-data 权限,然后网站路径 /var/www 分配给 www-data 就行了。
    miaomiao0323
        8
    miaomiao0323  
       2017-08-25 10:44:47 +08:00
    最小权限原则,nginxuser 对静态资源有只读权限就行
    bb2018
        9
    bb2018  
    OP
       2017-08-25 11:19:36 +08:00
    @miaomiao0323

    这个。。怎么设置 nginxuser 对静态资源有只读权限就行?
    bb2018
        10
    bb2018  
    OP
       2017-08-25 11:22:47 +08:00
    @cxbig

    sudo -u nginxuser ls /var/www/project
    我这样就只列出 project 下面的文件了。
    这样就说明可以有访问权限?
    cxbig
        11
    cxbig  
       2017-08-25 14:27:36 +08:00
    @bb2018 不,只是该文件夹的访问权限

    这只是一个例子,如果你想彻底了解文件夹下所有文件和文件夹的权限,可以用 find 命令
    -type d //只寻找文件夹
    -perm -u=rx //(至少有)读和执行的权限,前面加!号去反

    sudo -u nginxuser find /var/www/project -type d ! -perm -u=rx -ls
    用该用户的名义查找文件夹和子文件夹,列举所有没有读+执行权限(文件夹基本权限)的所有文件夹。
    这命令找到了某个文件夹,那么里面的东西也是看不见的,你要给了权限再运行一次去探索内部

    同理可以检查文件
    sudo -u nginxuser find /var/www/project -type f ! -perm -u=r -ls

    这些只是基本的检查,至于极限的安全配置,你得读读相关文章了,几句话说不清楚。
    bb2018
        12
    bb2018  
    OP
       2017-08-30 23:42:17 +08:00
    @cxbig

    你好。我进行如下操作。

    1. groupadd nginxuser 创建个用户组
    2.useradd -s /sbin/nologin -g nginxuser nginxuser 创建个用户

    用这个
    sudo -u nginxuser find /var/wwwroot/html/xxx -type d ! -perm -u=rx -ls
    查不到任何文件

    这样用这个用户:nginxuser 可以用在 ningx.conf 里

    user nginxuser nginxuser;

    上传图片大于 10K 的话就提示如下错误:

    2017/08/30 23:35:11 [crit] 1471#0: *5 open() "/var/lib/nginx/tmp/client_body/0000000002" failed (13: Permission denied), client: 111.10.111.1111, server: xxxx.com, request: "POST /user/change/admin/ HTTP/1.1", host: "xxxx.com", referrer: "http://xxxx.com/user/change/admin/"

    如果我在 nginx.conf 用:

    user root 或者 user nginx

    上传什么的都正常。

    那我自已创建的用户。需要给他设置什么最小安全权限才可以正常上传文件?
    怎么设置这个 nginxuser ?具体 谢谢
    cxbig
        13
    cxbig  
       2017-08-31 05:02:52 +08:00
    @bb2018

    这就是我上面说的 client_body_temp_path 系列配置问题
    /var/lib/nginx/tmp/ 是默认的缓存根目录,通常属于 nginx:root
    你 nginx 用户改了就不能再用这个路径,更新到新用户也会遇到问题(具体原因我没有深挖,v2ex 有行家的烦请提点)

    可以考虑建立新目录 /var/www/tmp,归属 nginxuser:root 0755

    再在 nginx 的 http 层添加如下配置
    client_body_temp_path /var/www/tmp/client_body_temp 1 2; // 解决你上面那个问题

    下面这 2 个也用到的话,酌情添加
    proxy_temp_path /var/www/tmp/proxy_temp 1 2; // proxy 相关
    fastcgi_temp_path /var/www/tmp/fastcgi_temp 1 2; // fastcgi 相关
    bb2018
        14
    bb2018  
    OP
       2017-08-31 09:42:44 +08:00
    @cxbig
    谢谢.这样确实完美解决了...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2349 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:10 · PVG 00:10 · LAX 08:10 · JFK 11:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.