프로그래밍 방식으로 생성 된 폴더가 속한 소유자 / 그룹을 지정하는 방법


0

먼저 약간의 배경 설명 : Windows 7 컴퓨터에서 Drupal 사이트 구축을하고 있습니다. 드루팔 (Drupal은 간단히 이미지 캐싱을 허용하는 이미지 모듈을 가지고 있습니다. 이미지 스타일을 만들 때 모듈은 디렉토리를 만듭니다. 예를 들어 스타일을 만들면 my_image_style자동으로 폴더가 만들어 sites/default/files/img/styles/my_image_style/and/some/other/folders/beneath집니다. 그러나 생성 된 디렉토리에는 Administrators:System권한 이있는 owner : group 이 d--------+있습니다. 그 밖의 모든 것, 뿌리까지 줄곧가는 것입니다 chrisrockwell:None. 아파치 (이것은 WAMP5 설정이다)도있다 chrisrockwell:None.

Drupal 모듈은이 디렉토리에 파일을 생성해야하지만 권한 문제로 인해 만들 수 없습니다.

그래서이 설정에서 생성 된 디렉토리가 속한 그룹 : 사용자를 지정하는 방법은 무엇입니까?

효과가 있는지 나는 잘 모르겠지만 cygwin에서 거의 모든 일을한다.

추가 정보가 필요하거나 다른 사이트에서 더 적합한 지 알려주십시오.

업데이트 : 전체 사이트 디렉토리를 chmod 777이라면, 권한이 거부 된 유일한 폴더는 Drupal의 스크립트에 의해 생성 된 image_style 폴더입니다.


참고로, d---------+권한이 없다는 의미는 아닙니다. +수단 간단한 권한으로 표시 할 수없는 디렉토리와 연관된 액세스 목록이 있음.
— Darth Android

@DarthAndroid 나는 Windows ACL과 관련이 있다고 생각하고 있습니다. chmod -R 777 전체 디렉토리를 관리자로 실행하는 경우에도 권한은 여전히 ​​-rw-r-r--입니다. 나는 ACL에 대해 많이 모른다. 그래서 문제를 해결하고있다.
— Chris Rockwell

나는 모든 사용자, 모든 그룹,이 특정 디렉토리에 대한 모든 권한을 제공하는 데까지 아무런 소용이 없었다.
— Chris Rockwell

답변:


0

Cygwin 발언

이는 답변이 아닌 해결 방법입니다.

최근에 Cygwin에서 비슷한 문제가 발생했습니다. 원인은 Windows 사용자 및 그룹이 cygwin 사용자 및 그룹에 매핑되는 방식이 잘못 설정된 것 같습니다. 특히 "파일 속성"대화 상자의 "보안"탭에 OWNER 및 GROUP과 같은 "그룹 또는 사용자 이름"항목이 포함되어 있습니다. 나는 이것들이 윈도우에 의해 지원되지 않는다고 가정한다.

이 mkpasswd문제를 해결하기 위해 유틸리티를 살펴보고 Windows ACL을 읽는 것이 좋습니다. 그러나 지금까지 Windows ACL을 기본값으로 재설정하여 모든 파일 사용 권한 오류를 없앨 수있었습니다.

wraptor: ~/tmp/su/find-xargs
$ icacls.exe . /reset /t
processed file: .
processed file: .\.search-dirs
processed file: .\.test
processed file: .\dirz
processed file: .\foo
processed file: .\moo
processed file: .\sensors
processed file: .\.test\test.java
processed file: .\dirz\3.java
processed file: .\foo\2.java
processed file: .\moo\1.java
processed file: .\sensors\light.java
Successfully processed 12 files; Failed processing 0 files

그 후에는 계층 구조를 탐색하고 권한 비트를 재설정해야 할 때가 있습니다.

find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +

이 단계가 끝나면 windows-me 또는 Administrator 사용자가 파일을 올바르게 "소유"하며 기본 Windows 프로그램은 평소와 같이이 파일을 읽고 쓸 수 있습니다.


답변 시도

그 외에도 umask 를 언급해야합니다. 사용자 환경 (또는 프로그램의 pocess)에 설정되며 이후에 생성되는 파일 및 폴더의 권한을 제어합니다.

eg (bash)

umask 0022

이렇게하면 644 및 755 권한으로 모든 파일과 폴더가 만들어집니다.

예 (파이썬)

$ cat moo.py
import os
for _ in ('0022', '0002', '0077'):
        os.umask(int(_, 8))
        with open('moo.f-%s' % _, 'w') as f:
                f.writelines("moo\nfoo")

$ python moo.py; ll moo.f-*
-rw-rw-r-- 1 1K 2013-07-24 07:46 moo.f-0002
-rw-r--r-- 1 1K 2013-07-24 07:46 moo.f-0022
-rw------- 1 1K 2013-07-24 07:46 moo.f-0077

PHP는 "동일한" umask 함수를 가지고 있습니다.

더 많은 정보는 여기 : man 3p umask


감사합니다. 감사합니다. 귀하의 해결 방법은 현재의 문제를 해결했으며이 모듈로 돌아갈 수있게 해줍니다. Cygwin 대신 cmd에서 .exe를 실행해야 효과가 나타납니다. 감사합니다!
— 크리스 로크웰

언급하지 마라. Cygwin이 Windows 사용 권한을 파괴하게 만드는 원인을 파악했다면, 나는 주석을 주셔서 감사하겠습니다.
— Ярослав Рахматуллин

1

Windows에서 다른 응용 프로그램과 비슷한 문제가 발생하여 관리자 권한으로 실행 중일 때 그룹을 잘못 설정했습니다. 원래 디렉토리 생성 문제를 해결하는 방법을 모르지만 Cygwin의 모든 디렉토리에 대해 소유자와 그룹을 재 할당 할 수 있습니다 chown.

chown -R chrisrockwell:none my_image_style

고마워, 나는 이미 디렉토리를 chown'd했다. chrisrockwell : None이 현재 owner : 그룹이더라도 Drupal 모듈은 여전히 ​​읽기 / 쓰기가 불가능합니다.
— Chris Rockwell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.