Dodanie użytkownika do własności oprócz innego użytkownika

1

Miałem pewne problemy z uprawnieniami, programiści mojej witryny chcieli, żebym dodał użytkownika administratora do grupy apache, a następnie ustawił pewne uprawnienia. Moja wiedza na temat Linuksa jest dość ograniczona, więc znalazłem w Internecie:

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

Działa to doskonale i wszystko działało dobrze przez kilka dni (BTW, użyłem „apache” zamiast www-data, ponieważ jestem na CentOS). Teraz mówią, że nie mogą przesyłać plików do tego folderu, ponieważ jest on własnością użytkownika apache, a chcą, aby był własnością apache AND administrator.

Jak dodać „admin” również do własności oprócz „apache”?

Dzięki

Edytować:

Użyłem mountpolecenia i otrzymałem następujące:

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)

Następnie użyłem tune2fs -l | grep acli otrzymałem następujące:

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

Nie jestem pewien, czy jest w porządku, czy nie - jak to zrobić?

ZNISZCZYĆ
źródło

Odpowiedzi:

1

Zgodnie z tradycyjnym zezwoleniem na plik, które nie jest możliwe: plik ma tylko jednego właściciela.

Twoje podejście, w tym admin do grupy apache , powinno działać.

Jednak większość współczesnych systemów plików obsługuje listy ACL . Jeśli chcesz używać list ACL, aby dać innemu użytkownikowi uprawnienia do odczytu ( r) i zapisu ( w), możesz użyć polecenia setfacl :

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

Nawet jeśli używany system plików obsługuje listy ACL, sprawdź, czy jest on podłączony z obsługą list ACL. W takim przypadku musisz wydać polecenie mounti uzyskać programistę związaną z systemem plików, na przykład:

[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 dla głównego systemu plików to /dev/sda3.

Teraz z poleceniem tune2fsmusisz wydać polecenie:

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

Default mount options:    user_xattr acl

W tym przypadku zostało aclwłączone. Jeśli tak nie było, musisz zmodyfikować plik / etc / fstab, aby uwzględnić aclopcje, jak to wyjaśniono tutaj .

jcbermu
źródło
dziękuję za szybką odpowiedź, wypróbowałem je i zamieściłem wynik w pierwotnym pytaniu, ponieważ było ono zbyt długie na komentarz, czy możesz sprawdzić i dać mi znać, jak mam postępować?
MAR
@MAR My bad !!!. Komenda musi znajdować się w tune2fs -l /dev/sda3 | grep aclmiejscu, gdzie / dev / sda3 jest głównym systemem plików.
jcbermu
O cholera właśnie użyłem „setfacl -m użytkownik: admin: rw / path / to / webserver / www” i usunąłem cały folder ... co mam zrobić? Edycja: właściwie z jakiegoś powodu może być przede mną ukryty, ale nie mogę również uzyskać dostępu do strony internetowej ... Jak to odwrócić?
MAR
@MAR użyj, getfacl /path/to/webserver/wwwaby sprawdzić, które grupy i użytkownicy mają uprawnienia, jeśli tak, to rootbędziesz miał dostęp i nie będzie przed tobą ukryty.
jcbermu
@MAR setfacl -b /path/to/webserver/wwwpowinien przywrócić listy ACL do poprzedniego stanu.
jcbermu
0

jcbermu podał odpowiedź z regułą ACL:

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

Ale w ten sposób administrator nie będzie mógł wejść do katalogu www

Prawidłowa lista ACL to:

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

Za pomocą tego polecenia programiści otrzymają jedynie prawa do tworzenia własnych plików w tym samym katalogu. Nie mogą modyfikować innych nowo tworzonych plików na www ani tworzyć plików w podkatalogach www. Musisz więc dodać domyślną regułę ACL:

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

Najlepszym sposobem jest zmodyfikowanie istniejących plików / podfolderów w www, aby były zgodne z nowymi listami ACL i dodanie domyślnych reguł dla nowo tworzonych plików / podfolderów. W takim przypadku użyj poniższego polecenia zamiast dwóch powyżej:

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

Tutaj reguły dla istniejących i nowo tworzonych plików i folderów są łączone w jeden ciąg.

-Rm R ecursively m odify ACL

u: admin: rwX Ustaw ACL dla administratora użytkownika dla istniejących plików i (pod) folderów początkowego folderu www

d: u: admin: rwX Ustaw ACL dla administratora użytkownika dla nowo tworzonych plików i (pod) folderów

W dowolnym momencie możesz usunąć wszystkie dodatkowe listy ACL

setfacl -Rb /path/to/webserver/www
Oleg Bolden
źródło