除另一个用户外,还添加用户所有权

除另一个用户外,还添加用户所有权

我遇到了一些权限问题,我网站的程序员希望我将管理员用户添加到 apache 组,然后设置一些权限。我对 Linux 的了解非常有限,所以我在网上找到了以下内容:

chown -R apache:apache /path/to/webserver/www 
chmod -R g+rw /path/to/webserver/www

效果非常好,而且几天内一切都很顺利(顺便说一句,由于我使用的是 CentOS,因此我使用了“apache”而不是 www-data)。现在,他们说他们无法将文件上传到该文件夹​​,因为它归 apache 用户所有,而他们希望它归 apache 和管理员用户所有。

除了“apache”之外,如何将“admin”添加到所有权中?

谢谢

编辑:

我使用该mount命令并得到以下结果:

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=16377400k,nr_inodes=4094350,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda3 on / type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
/dev/sda5 on /tmp type ext4 (rw,nosuid,nodev,noexec,relatime,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)

接下来我使用tune2fs -l | grep acl并得到以下结果:

Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g group]

        [-i interval[d|m|w]] [-j] [-J journal_options] [-l]

        [-m reserved_blocks_percent] [-o [^]mount_options[,...]] [-p mmp_update_interval]

        [-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label]

        [-M last_mounted_dir] [-O [^]feature[,...]]

        [-E extended-option[,...]] [-T last_check_time] [-U UUID]

        [ -I new_inode_size ] device

我不确定是否可以——我该如何处理?

答案1

根据传统的文件权限,这是不可能的:一个文件只有一个所有者。

您的方法包括行政阿帕奇小组应该发挥作用。

然而大多数现代文件系统支持ACL。如果您想使用 ACL 授予其他用户读取 ( r) 和写入 ( w) 权限,则可以使用命令设置

setfacl -m user:admin:rw /path/to/webserver/www 

即使您使用的文件系统支持 ACL,也请检查它是否支持 ACL。在这种情况下,您需要发出命令mount并获取与文件系统相关的设备,例如:

[root@centos]#mount

/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

根文件系统的 dev 是/dev/sda3

现在tune2fs您必须使用该命令发出以下命令:

[root@centos]tune2fs -l /dev/sda3 | grep acl

Default mount options:    user_xattr acl

在这种情况下,它已acl启用。如果没有,那么你必须修改/etc/fstab包括acl在选项中,如解释的那样这里

答案2

杰伯穆用ACL规则给出了答案:

setfacl -m user:admin:rw /path/to/webserver/www

但这样行政不允许进入 www 目录

正确的 ACL 是:

setfacl -m user:admin:rwx /path/to/webserver/www

使用此命令,程序员将只被授予在此目录中创建自己的文件的权限。他们既不能修改 www 中其他新创建的文件,也不能在 www 的子目录中创建文件。因此,您需要添加以下 ACL 规则作为默认规则:

 setfacl -dm user:admin:rwx /path/to/webserver/www

最好的方法是修改 www 中现有的文件/子文件夹以符合新的 ACL,并为新创建的文件/子文件夹添加默认规则。在这种情况下,请使用以下命令代替上述两个命令:

setfacl -Rm d:u:admin:rwX,u:admin:rwX /path/to/webserver/www

这里将现有和新创建的文件和文件夹的规则组合在一个字符串中。

-R M R递归地修改 ACL

管理员:rwX为用户设置 ACL行政对于起始的现有文件和(子)文件夹万维网文件夹

d:u:管理员:rwX为用户设置 ACL行政对于新创建的文件和(子)文件夹

您可以随时使用以下方法删除所有附加 ACL

setfacl -Rb /path/to/webserver/www

相关内容