Zawsze musisz chown przy dodawaniu nowego pliku? Centos 6


1

Ilekroć przesyłam nowy plik na mój serwer, muszę chown -R apache:apache /dir aby była dostępna.

Czy jest to łatwiejszy sposób?


Czy to twój własny serwer? Następnie musimy wiedzieć, który serwer ftp jest uruchomiony. Na każdym serwerze ftp możesz zmienić konfigurację, aby przesłane pliki otrzymywały właściwego użytkownika: grupę i uprawnienia. Można również pracować z uprawnieniami dziedziczonymi z katalogu nadrzędnego lub z listą ACL (Access Control List), ale znacznie łatwiej jest ustawić go na serwerze ftp.
Rik

Chyba że wysyłasz FTP na swój serwer jako użytkownik apache:apache to tak, musisz to zrobić, czy to ręcznie, czy za pomocą konfiguracji klienta / serwera FTP
Jobbo

@Jobbo Jak mogę przejść do przesyłania jako apache użytkownika: apache?
Travis

@Travis Możesz zalogować się do ftp za pomocą nazwy użytkownika apache (jeśli masz do tego hasło). W przeciwnym razie musisz zmienić konfigurację swojego serwera ftp. Czy to twój własny serwer? A jaki demon serwera działa? VSFTPD czy coś innego?
Rik

@Rik Używam vsftpd To jest także mój serwer. Mam uprawnienia administratora i przesyłam wszystko jako root.
Travis

Odpowiedzi:


2

Najprawdopodobniej, aby pliki były dostępne, ich grupa jest ustawiona na apache. Możesz łatwo ustawić go domyślnie dla nowych plików, uruchamiając:

find /path/to/root/directory/of/website -type d -print0 | xargs -0 chmod g+s

Spowoduje to ustawienie setgid oznacz także we wszystkich podkatalogach. Po ustawieniu tej flagi każdy nowy plik utworzony w tym miejscu dziedziczy grupę swojego katalogu nadrzędnego. ( -print0 i -0 opcje są zaprojektowane do obsługi poprawnie spacji w nazwach plików)

Przed uruchomieniem upewnij się, że prawa własności do plików są poprawne. Jeśli nie jesteś pewien, możesz to naprawić w ten sam sposób:

find /path/to/root/directory/of/website -print0 | xargs -0 chown apache:apache

A co z nowym informator tworzy z programem ftp?
Rik

Powinny także dziedziczyć, o ile program ftp nie zmienia jawnie grupy.
Levans

Tak, to działa. Myślę, że pomyliłem się z częścią „użytkownika”. Tego nie można odziedziczyć bez użycia list ACL. Ale tylko dla części grupy setgid działa dobrze (+1). Jeśli program ftp ustawi grupę ... cóż ... to nie ma nic innego do zrobienia, a następnie zmień jej konfigurację. Po prostu przetestowałem go z VSFTPD i dzięki temu działa. (Grupa nie jest ustawiona na grupę zdefiniowaną w vsftpd.conf, ale pobiera ją z katalogu nadrzędnego)
Rik

@Levans po uruchomieniu tej komendy Wydam 'find /var/www/travisingram.net/public_html -type d | xargs chmod g + s 'i uprawnienia nie są naruszone. Innym sposobem, o którym wiem, że się nie zmieniło, jest WordPress, za każdym razem, gdy aktualizuję / instaluję wtyczkę, będzie to wymagało FTP lub SFTP. Teraz, jeśli zostało to zapisane w apache: apache, nie powinienem tego robić. Czy nie wykonałem poprawnie polecenia? Używam vsftpd
Travis

@Travis uruchamiasz to polecenie z wystarczającymi prawami (jak root użytkownik)? Podczas wyświetlania uprawnień do pliku (za pomocą ls -l ), powinieneś zobaczyć S zamiast tego x dla uprawnień grupowych do katalogów.
Levans

0

Oto, co możesz zrobić z VSFTPD:

Możesz ustawić następujące 2 opcje w tobie vsftpd.conf:

guest_enable=YES
guest_username=apache

guest_enable, jeśli włączone, upewnia się wszystko pliki są przesyłane jako użytkownik / grupa apache.

Należy pamiętać, że będzie to działać tylko w przypadku plików przesyłanych przez FTP. Jeśli skopiujesz plik w Linuksie do swojego katalogu www, to nie dostosuje uprawnień .


Dlatego, jeśli masz dostęp do tego katalogu przez system plików, najlepiej jest użyć chmod g+s - zasugerował Levans.
(to znaczy.)

find /var/www/site/public_html -print0 | xargs -0 chown apache:apache
find /var/www/site/public_html -type d -print0 | xargs -0 chmod g+s

guest_enable
Jeśli ta opcja jest włączona, wszystkie nieanonimowe logowania są klasyfikowane jako logowania „gości”. Logowanie gościa jest ponownie mapowane na użytkownika określonego w ustawieniu nazwa_głównego gościa.

Domyślna: NIE

guest_username
Zobacz ustawienie boolowskie guest_enable, aby uzyskać opis logowania użytkownika. To ustawienie jest prawdziwą nazwą użytkownika, na którą są mapowani użytkownicy-goście.

Domyślna: ftp


Czy apache miałoby takie samo hasło jak root? Zgadnij, nie, postanowiłem zrobić to zanim zapytałem. Czy więc nie ma hasła otwartego do ogólnego użytku? To trochę zmieszane.
Travis

Nie powinieneś używać roota do logowania się do ftp. Jest dla niego konfiguracja ftp nazwy użytkownika. Ale nie ma znaczenia, z jakim użytkownikiem się logujesz (możesz skonfigurować użytkowników ftp w konfiguracji), musisz powiedzieć programowi ftp, aby zapisał pliki jako apache:apache ponieważ twój serwer wymaga dostępu. (Nawet jeśli apache użytkownika nie ma dostępu do hasła / ftp, pliki mogą być nadal zapisywane z tym użytkownikiem, o ile vsftpd przypisuje je do tego użytkownika. To tam są te linie)
Rik

I tylko po włączeniu anonimowości każdy może zalogować się bez hasła. Jeśli jest wyłączony, możesz zalogować się za pomocą użytkowników, dla których masz włączony dostęp do ftp. Może to być ze standardowego Linuksa używanego do prostego logowania.txt, w którym zdefiniowano użytkowników i hasła. To zależy od twojego pliku konfiguracyjnego. guest_enabled jest nieco mylące, ponieważ nie ma nic wspólnego z dostępem „gościa”, ale sprawia, że ​​vsftpd pisze innego użytkownika (remap) dla „zwykłych” użytkowników.
Rik

jak mogę wtedy ustawić hasła? Nie znam konkretnych poleceń dla vsftpd.
Travis

Widzisz, że publikujesz na inne pytanie, które zadałem wcześniej. Zapomniałem o zadaniu pytania wcześniej. Odkryłem, że miałem ten jeden po tym, jak go stworzyłem. W każdym razie po prostu go usunąłem.
Travis
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.