【问题标题】:Grant ubuntu access to www-data授予 ubuntu 访问 www-data
【发布时间】:2014-12-09 13:22:09
【问题描述】:

我正在运行 Ubuntu,希望能够使用 SSH 上传文件以更新网站代码。

我的 ubuntu 用户(id ubuntu)

root@****:/var/www# id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu)     groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),33(www-data),44(video),46(plugdev),102(netdev)

我的 ubuntu 群组(ubuntu 群组)

root@****:/var/www# groups ubuntu
ubuntu : ubuntu adm dialout cdrom floppy sudo audio dip www-data video plugdev netdev

我的 ubuntu 服务器上的所有组(更多 /etc/group)

    root@****:/var/www# more /etc/group
    root:x:0:
    daemon:x:1:
    bin:x:2:
    sys:x:3:
    adm:x:4:syslog,ubuntu
    tty:x:5:
    disk:x:6:
    lp:x:7:
    mail:x:8:
    news:x:9:
    uucp:x:10:
    man:x:12:
    proxy:x:13:
    kmem:x:15:
    dialout:x:20:ubuntu
    fax:x:21:
    voice:x:22:
    cdrom:x:24:ubuntu
    floppy:x:25:ubuntu
    tape:x:26:
    sudo:x:27:ubuntu
    audio:x:29:ubuntu
    dip:x:30:ubuntu
    www-data:x:33:ubuntu
    backup:x:34:
    operator:x:37:
    list:x:38:
    irc:x:39:
    src:x:40:
    gnats:x:41:
    shadow:x:42:
    utmp:x:43:
    video:x:44:ubuntu
    sasl:x:45:
    plugdev:x:46:ubuntu
    staff:x:50:
    games:x:60:
    users:x:100:
    nogroup:x:65534:
    libuuid:x:101:
    netdev:x:102:ubuntu
    crontab:x:103:
    syslog:x:104:
    fuse:x:105:
    messagebus:x:106:
    mlocate:x:107:
    ssh:x:108:
    landscape:x:109:
    admin:x:110:
    ubuntu:x:1000:
    mysql:x:111:
    ssl-cert:x:112:

为什么我无法以 Ubuntu 用户覆盖 /www/var/html 文件夹中的文件?

编辑

我的 /var/www 和 /var/www/html 的文件夹权限是:

root@****:/var/www# ls -l
total 4
drwxrwxr-x 3 www-data www-data 4096 Oct 13 20:24 html
root@****:/var/www# cd html
root@****:/var/www/html# ls -l
total 4
drwxrwxr-x 9 www-data www-data 4096 Oct 13 20:24 somefolder

安装驱动器(安装)

    root@****:/# mount
    /dev/xvda1 on / type ext4 (rw,discard)
    proc on /proc type proc (rw,noexec,nosuid,nodev)
    sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
    none on /sys/fs/cgroup type tmpfs (rw)
    none on /sys/fs/fuse/connections type fusectl (rw)
    none on /sys/kernel/debug type debugfs (rw)
    none on /sys/kernel/security type securityfs (rw)
    udev on /dev type devtmpfs (rw,mode=0755)
    devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
    tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
    none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
    none on /run/shm type tmpfs (rw,nosuid,nodev)
    none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
    none on /sys/fs/pstore type pstore (rw)
    /dev/xvdb on /mnt type ext3 (rw)
    systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)

【问题讨论】:

  • /www、/www/var 和 /www/var/html 有哪些权限?它们是本地磁盘还是已挂载?
  • drwxrwxr-x 3 www-data www-data 4096 10 月 13 日 20:22 www AND drwxrwxr-x 3 www-data www-data 4096 10 月 13 日 20:24 html ... AWS 上的 EBS 安装驱动器
  • 已挂载:mount 对磁盘的挂载选项有何看法?
  • 我在问题中添加了“挂载”详细信息。有什么想法为什么我对这么简单的事情如此困难?

标签: apache ubuntu permissions


【解决方案1】:

“为什么我无法以 Ubuntu 用户身份覆盖 /var/www/html 文件夹中的文件?”

我的理解是,您可以在 /var/www/html写入文件,但无法覆盖由其他www-data 组用户(如果你不能覆盖owned 的文件/目录,那是一个完全不同的问题)。

您可以在/var/www/html 中写入文件,原因如下:

  • /var/www/htmlwww-data 用户所有,并且在组 www-data
  • 您是www-data group 的用户
  • /var/www/html 对该组有写权限

默认情况下,当您在 /var/www/html 中创建文件/目录时,您是文件的所有者,并且文件的组设置为您的 primary 组( ubuntu 在你的情况下)。 您的主要组之外的其他人没有write 权限。

-rw-rw-r-- 1 ubuntu ubuntu 123 Oct 12 13:14 test.html

此策略对 www-data 组的所有用户都是相同的,并且会产生不允许您覆盖由 www-data 的其他成员创建的文件的问题(除非他们手动将文件组更改为 www-data) .

解决此问题的方法是强制在 /var/www/html 内创建的每个文件/目录都以 www-data 为组。这是使用setgid

完成的
sudo chmod g+s /var/www/html

确保所有组用户对所有文件/目录都有写权限:

sudo chmod -R g+w /var/www/html

为 /var/www/html 中的现有目录设置gid

sudo find /var/www/html -type d -exec chmod g+s {} +

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2019-06-22
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多