“/ var / www”에 파일을 편집하고 추가하는 가장 간단한 방법은 무엇입니까?


145

웹 서버를 설치하면 그래픽 인터페이스를 사용하여 파일과 디렉토리를 로컬 웹 서버 / var / www에 복사 할 수있는 간단한 방법이 있습니다.

우분투에서 관리자 권한을 부여했지만 여전히 사본을 허용하지 않습니다.




나는 Marcos Roriz Junior가 말한 것을하려고했습니다. Marcos가 사용자 이름을 쓰고 내 사용자 이름으로 변경했을 때 복사하여 붙여 넣었습니다. 그러나 해당 폴더에 저장할 수 없으므로 / etc / apache2 / sites-available에 저장할 수 없습니다. ???

답변:


222

그룹이 / var / www를 쓰기 가능하게하고 사용자를 그룹에 추가하면 해당 사용자는 sudo를 사용할 필요가 없습니다. 이 시도:

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

그러면 사용자는 번거 로움없이 / var / www / 파일을 편집 할 수 있어야합니다.

첫 번째 줄은 사용자를 www-data 그룹에 추가하고 두 번째 줄은 엉망인 소유권이있는 파일을 지우고 세 번째 줄은 www-data 그룹의 구성원 인 모든 사용자가 모든 파일을 읽고 쓸 수 있도록합니다. / var / www.

로그인 한 상태에서 <username>그룹 멤버쉽을 적용하려면 로그 아웃했다가 다시 로그인해야합니다.


37
이 작업과 몇 가지 비틀기 : sudo adduser <username> www-data; sudo chgrp -R www-data /var/www; sudo chmod -R g+rw /var/www; find /var/www -type d -print0 | sudo xargs -0 chmod g+s 로그 아웃 및 다시 로그인하여 새 그룹을 선택하십시오. 나는 그렇게 chmod g+s내 권한이 전파를 변경할 수 있는지 확인하고, 그룹 소유자 (WWW-데이터)를 데리러 새로운 파일과 디렉토리를 강제로.
Don Faulkner

15
@DonFaulkner 보안상의 이유로 /var/wwwroot : root가 계속 소유하는 sudo chgrp -R www-data /var/www것이 좋습니다 sudo chgrp -R www-data /var/www/*.
Desmond Hume

2
이상하게도이 3 개의 명령을 실행 한 후 이진 아이콘을 사용하여 일부 하위 폴더 및 파일 ( composer.json및 같은 LICENSE)이 표시됩니다. composer.json텍스트 편집기에서를 열면 빈 파일이 표시되고 최악의 경우 하위 폴더 중 일부를 탐색 할 수 없다는 것입니다. @ DonFaulkner가 제안한 추가 명령을 시도했지만 여전히 운이 없습니다. 터미널을 루트로 사용하면 모든 것이 그대로 있어야합니다. 왜 이런 일이 일어나는지 아는 사람이 있습니까?
Alix Axel

5
@itsols 로그 아웃 한 다음 로그인해야 작동합니다.
jini

1
@ DonFaulkner-루트가 소유 한 파일이 공격 벡터가 될 수있는 방법에 대해 자세히 설명 하시겠습니까? (이 모든 것을 처음 접했고 일부는 보안에 대한 의심의 여지가 있고 루트에 의한 접근 방식을 옹호하는 반면 다른 사람들은 루트가 아니라고 주장하기 때문에 혼란스러워합니다. )
Andrew Cheong

25

당신은 수 chown, 즉 ch플랜지 own해당 폴더의 어. 그러면 폴더의 사용자 및 그룹을 변경하여 사용자가 폴더에 파일을 추가 / 제거 할 수 있습니다. 그렇게하려면 yourusername이름으로 바꾸고 다음 을 실행하십시오.

sudo chown yourusername.users /var/www

그리고 그게 다야.


그러나 홈 폴더에 가상 호스트를 만드는 것이 훨씬 쉽습니다.

기본적으로 모든 폴더를 아파치 서빙 폴더로 사용할 수 있습니다. 간단한 방법을 보여주기 위해 사용자 이름이 username 이고 제공하려는 폴더가 / home / username / www라고 가정합니다.

mywebprojects/ etc / apache2 / sistes-available에 다음 파일을 작성하십시오 . 사용자 이름과 폴더 경로를 바꾸십시오 (기본적으로 #CHANGE HERE에서 복사하여 붙여 넣기 및 바꾸기).

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    # CHANGE HERE
    DocumentRoot /home/username/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    # CHANGE HERE
    <Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

이제 www폴더를 만들고 간단한 hello world를 추가하고 기본 웹 사이트 ( /var/www)를 비활성화하고 웹 사이트 를 활성화하고 mywebprojects아파치를 다시 시작할 수 있습니다.

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart

그리고 이제는 갈 필요가 없으므로 /var/www파일을 www다른 (또는 다른 이름으로) 추가하면 이미 있습니다 :).


정확히 내가 한 일. 이것의 장점 중 하나는 Windows / OSX에서 부팅 할 때 모든 파일을 사용할 수 있도록 디렉토리를 공유 드라이브로 변경할 수 있다는 것입니다.
Jason

9

방법 1 :

  • 보도 ALT+ F2및 노틸러스 gksudo 입력 한 다음 실행을 클릭합니다.

    대체 텍스트

  • 루트 권한으로 노틸러스가 열립니다.
  • 파일 시스템 var www로 이동하면 파일을 추가 / 복사 / 붙여 넣기 할 수 있습니다.

방법 2 :

  • nautilus-gksu 설치 nautilus-gksu 설치
  • nautilus -q터미널에 입력 한 후 마우스 오른쪽 버튼 클릭 메뉴를 새로 고칩니다.
  • 이제 노틸러스 오른쪽 클릭 메뉴에 '관리자 권한으로 열기'항목이 있습니다.
  • 루트 권한으로 파일을 열어야하는 경우 해당 파일 / 폴더를 마우스 오른쪽 버튼으로 클릭하고 '관리자로 열기'를 선택하면됩니다.
  • 루트 권한으로 해당 파일 / 폴더가 열립니다.

    대체 텍스트


1
이것은 확실히 올바른 길입니다! 왜 이것이 선택된 답변이 아닌지 궁금합니다. 다른 방법은 권한을 망쳐 놓는 것과 관련이 있으며 그렇게하면 시스템이 위험하지 않습니다. 답변을 +1하십시오.
itsols

5
@itsols : 나는 완전히 동의하지 않습니다.-파일 시스템에 대한 액세스 권한을 올바르게 구성하는 대신 파일 시스템에 대한 루트 권한을 Nautilus에 부여하여 시스템에 위험을 초래할 수 있습니다 /var/www. 실수로 [delete]키 를 한 번 누르면 부팅 할 수없는 시스템이 생길 수 있습니다.
Nathan Osman

@GeorgeEdison 그러나 이것은이다 에만 권한을 설정할 수 있습니다. 이 작업이 끝나면 노틸러스를 닫고 평소대로 작동합니다. 이게 정말 나쁜가요? 내 무지 때문에 실례합니다. 5.x 버전부터 우분투 사용자 인에도 불구하고, 나는 여전히 매우 도전적인 개발 시스템 설정 찾아서 (나를 위해 그 일의 더 명확한 방법이없는 것 같다, 적어도 ...
itsols

@itsols : 이 답변 의 두 번째 부분은 선호되는 방법이며 내가 사용하는 방법입니다.
Nathan Osman

6

sudo usermod -a -G developers $usernameACL 을 사용 하는 것만 큼 간단 할 수 있습니다 .

그러나 시작하려면 약간의 노력이 필요합니다. 이것은 우분투 10.10 이상입니다. 먼저 / etc / fstab에서 acl 옵션을 사용하여 파일 시스템을 마운트하십시오.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 기본값, acl 0 1

sudo mount -o remount,acl /

그런 다음이 목적을 위해 사용자가 속한 그룹을 만드십시오.

sudo groupadd developers
sudo usermod -a -G developers $username

개발자 그룹의 구성원이 되려면 사용자가 로그 아웃했다가 다시 로그인해야합니다.

물론 / var / www 디렉토리에 원하는 컨텐츠가있는 경우 시작하지 않도록 설정하는 방법 만 설명하면됩니다.

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

그런 다음 구성 파일에서 "/ var / www"에 대한 참조를 "/ var / www / public"으로 바꾸고 다시로드하십시오.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

파일을 만든 사용자를 제외한 모든 사용자의 삭제 및 이름 바꾸기를 제한하려는 경우 :

sudo chmod +t /var/www/public

이런 식으로 Apache 문서 루트 외부에 존재하는 프레임 워크 용 디렉토리를 만들거나 서버 쓰기 가능 디렉토리를 만들려면 여전히 쉽습니다.

Apache 쓰기 가능 로그 디렉토리 :

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

아파치가 읽을 수있는 라이브러리 디렉토리 :

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-line 의 문제점 을 설명해 주 시겠습니까? 문자 그대로 추가되거나 사용자가 행을 찾아 옵션을 편집하기를 원합니까?
MadMike

sudo rm -rf /var/www-step 을 건너 뛰지 않겠습니까? 실제로 필요하지 않은 것 같습니다.
MadMike

@MadMike 16 진 숫자로 제출되어야합니다. 다양한 파티션에 레이블이 지정되어 있는지 확인하려면sudo blkid
Azendale

1
@Azendale 댓글을 작성했을 때 답변을 개선하는 방법에 대한 제안이었습니다. 오늘 나는 이것을 훨씬 더 직접적으로 제안해야한다는 것을 안다. 마찬가지로 다음을 작성하는 방법에 대한 추가하세요 UUID=xxxxA를 같이 part의를 sudo blkid.
MadMike

0

가장 쉬운 방법은 아래 단계를 따르는 것입니다.

  1. 를 눌러 Alt+ Ctrl+ T단자 열고 타입 것 sudo -s와 비밀번호로 로그인.
  2. 이제로 로그인했습니다 root.
  3. 이제 입력 nautilus하면 루트로 홈 폴더가 열립니다. 이제 파일을 쉽게 편집하고 원하는 작업을 수행 할 수 있습니다.

도움이 되었기를 바랍니다. :)


1
노틸러스 같은 그래픽 응용 프로그램을 실행하기에 적합한 루트 쉘을 얻기 위해 sudo -i하는 것이 바람직하다 sudo -s같은 이유가 sudo -H에 바람직하다 sudo단일 그래픽 응용 프로그램을 실행합니다. ( sudo -s재설정하지 않습니다 HOME사용자가, 그래서 그들에게 속한 것이 아니라 뿌리 속해야 자신의 홈 디렉토리에 구성 파일을 얻을 수 있습니다 .)
엘리야 케이건에게

특히 서버 에서 루트 계정을 사용하지 않는 것이 좋습니다 . sudo는 적절한 액세스 제어 이상을 제공하는 한편 sysadmin은 개발자와 디자이너가 자신의 (및 회사에서) 발사 할 수있는 권총을 제공하지 않도록하는 정책을 만들 수 있습니다.
Shayne

0

/var/www folder이 폴더의 파일을 수정하려면 소유권을 자신의 사용자 이름으로 변경해야합니다. 이를 위해 다음 명령을 시도 할 수 있습니다.

sudo -i // 루트 콘솔로 변경

sudo chown -R <username> <path> // for eg. sudo chown -R scott /var/www/html (scott is the username, -R indicates recrusive)

이제 폴더의 소유권이 /var/www/html will사용자에게 할당됩니다 scott. 이제 scott은이 폴더의 파일을 복사 / 이동할 수 있습니다.


-1

서버 버전을 사용중인 경우 webmin을 사용해보십시오. 훌륭한 웹 UI와 파일 관리자가 있습니다. 그 또는 Filezilla


4
"서버 버전을 사용하는 경우"를 설명 할 수 있습니까? Ubuntu 서버에 설치할 수있는 모든 패키지는 데스크탑 버전의 Ubuntu에 설치할 수 있습니다.
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.