我正在运行 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 群组 (groups ubuntu)
root@****:/var/www# groups ubuntu
ubuntu : ubuntu adm dialout cdrom floppy sudo audio dip www-data video plugdev netdev
我的ubuntu服务器上的所有组(more/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
MOUNTED DRIVES(挂载)
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)
最佳答案
"Why am i unable to overwrite files in the /var/www/html folder as Ubuntu user?"
我的理解是,您可以在 /var/www/html 中写入 文件,但无法覆盖 由其他www-data
组用户(如果您无法覆盖您拥有
的文件/目录,那是完全不同的问题)。
出于以下原因,您可以在 /var/www/html
中写入文件:
- /var/www/html 归
www-data
用户所有,并且在www-data
组中
- 您是
www-data 组的用户
- /var/www/html对该组有写入权限
默认情况下,当您在 /var/www/html 中创建文件/目录时,您就是该文件的所有者,该文件的组设置为您的primary
组(在你的例子中是 ubuntu
)。
您的主要组之外的其他人没有写入
权限。
-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 {} +
关于apache - 授予 ubuntu 访问 www-data 的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26366063/