Adicionando usuário à propriedade além de outro usuário

1

Eu tive alguns problemas com permissões, os programadores do meu site queriam que eu adicionasse o usuário admin ao grupo do apache e, em seguida, definissem algumas permissões. Meu conhecimento do Linux é bastante limitado, então encontrei o seguinte online:

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

Isso funcionou perfeitamente, e tudo ficou bem por alguns dias (BTW, eu usei "apache" em vez de www-data, já que estou no CentOS). Agora, eles estão dizendo que não podem fazer upload de arquivos para essa pasta, pois ela pertence ao usuário do Apache, enquanto eles querem que ele seja de propriedade do usuário admin e do Apache.

Como adiciono 'admin' à propriedade, além do 'apache'?

Obrigado

Editar:

Eu usei o comando mount e recebi o seguinte:

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)

Em seguida, usei o tune2fs -l | grep acl e recebi o seguinte:

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

Não tenho certeza se está tudo bem ou não - como procedo?

    
por MAR 29.03.2016 / 11:04

2 respostas

1

De acordo com a permissão de arquivo tradicional, isso não é possível: um arquivo tem apenas um único proprietário.

Sua abordagem, incluindo admin , ao grupo apache deve funcionar.

No entanto, a maioria dos sistemas de arquivos modernos suporta ACLs . Se você quiser usar ACLs para dar a outro usuário as permissões read ( r ) e write ( w ), então você pode usar o comando setfacl :

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

Mesmo se o sistema de arquivos que você estiver usando suportar ACLs, verifique se ele está montado com suporte para ACLs. Nesse caso, você precisa emitir o comando mount e obter o dev relacionado ao sistema de arquivos, por exemplo:

[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)

O dev para o sistema de arquivos raiz é /dev/sda3 .

Agora, com o comando tune2fs , você precisa emitir o comando:

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

Default mount options:    user_xattr acl

Neste caso, tem acl ativado. Se não foi o caso, você terá que modificar / etc / fstab para incluir acl nas opções, conforme explicado aqui .

    
por 29.03.2016 / 11:22
0

jcbermu deu a resposta com a regra da ACL:

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

Mas desta forma admin não seria permitido entrar no diretório www

A ACL correta é:

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

Com este comando, os programadores receberão apenas direitos para criar seus próprios arquivos neste mesmo diretório. Eles não podem modificar outros arquivos recém-criados dentro de www nem criar arquivos em subdiretórios de www. Então você precisa adicionar a seguinte regra da ACL como padrão:

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

A melhor maneira é modificar arquivos / subpastas existentes em www para adequar-se a novas ACLs e adicionar regras padrão para arquivos / subpastas recém-criadas. Nesse caso, use o comando abaixo, em vez dos dois acima:

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

Aqui, as regras para arquivos e pastas existentes e recém-criadas são combinadas em uma string.

-Rm R ecursivamente m odifica as ACLs

u: admin: rwX Defina ACLs para o usuário admin para arquivos existentes e (sub) pastas da pasta www inicial

d: u: admin: rwX Defina as ACLs para o usuário admin para arquivos recém-criados e (sub) pastas

Você pode remover todas as ACLs adicionais a qualquer momento usando

setfacl -Rb /path/to/webserver/www
    
por 29.03.2016 / 16:14