저는 OpenSuSE를 사용하고 있으며 내 컴퓨터에는 루트와 저라는 2개의 계정만 있습니다. 디렉토리가 있습니다 /srv/www/htdocs/abc
.
이 디렉터리에 새 폴더나 파일이 생성될 때 해당 권한이 777로 설정되도록 설정하고 싶습니다.
이 디렉토리에 새 파일을 생성할 때 쓰기 권한을 얻으려면 파일을 다시 777로 설정해야 합니다.
나는 루트를 사용하고 다음을 입력합니다.
chmod me /srv/www/htdocs
하지만 나는 일하지 않습니다. 어떻게 해야 하나요?
답변1
권한을 변경하는 데 사용합니다 chmod
. 이 명령은 chown
파일 및 디렉터리의 소유권을 변경하는 데 사용됩니다.
소유권
디렉터리의 소유권을 변경하려면 다음 명령을 사용할 수 있습니다.
$ sudo chown -R me /srv/www/htdocs
노트:우리는 이 sudo
도구를 사용하여 루트가 되지 않고도 이러한 명령의 권한을 루트와 동일한 수준으로 상승시킵니다.
권한
이 디렉터리의 권한을 변경하려면:
$ sudo chmod -R 777 /srv/www/htdocs
마스크
umask
파일과 디렉터리가 생성될 때 해당 권한이 어느 정도 영향을 받도록 터미널을 설정하려면 이 명령을 사용하십시오 . umask
어떤 경우에는 당신이 생각하는 것을 정확하게 부여하지 않을 수도 있으므로 사용할 때 주의하십시오 .
디렉토리에는 괜찮은 것 같습니다.
$ for i in `seq 1 7`;do echo "umask: 00$i"; umask 00$i; rm -fr blah; mkdir blah;ls -l|grep blah;done
umask: 001
drwxrwxrw- 2 saml saml 4096 Jul 29 14:39 blah
umask: 002
drwxrwxr-x 2 saml saml 4096 Jul 29 14:39 blah
umask: 003
drwxrwxr-- 2 saml saml 4096 Jul 29 14:39 blah
umask: 004
drwxrwx-wx 2 saml saml 4096 Jul 29 14:39 blah
umask: 005
drwxrwx-w- 2 saml saml 4096 Jul 29 14:39 blah
umask: 006
drwxrwx--x 2 saml saml 4096 Jul 29 14:39 blah
umask: 007
drwxrwx--- 2 saml saml 4096 Jul 29 14:39 blah
그러나 특정 umask와 동일한 파일을 가질 수는 없습니다. 아래 예를 참조하세요 umask 006
.
$ for i in `seq 1 7`;do echo "umask: 00$i"; umask 00$i; rm -fr blah; touch blah;ls -l|grep blah;done
umask: 001
-rw-rw-rw- 1 saml saml 0 Jul 29 14:40 blah
umask: 002
-rw-rw-r-- 1 saml saml 0 Jul 29 14:40 blah
umask: 003
-rw-rw-r-- 1 saml saml 0 Jul 29 14:40 blah
umask: 004
-rw-rw--w- 1 saml saml 0 Jul 29 14:40 blah
umask: 005
-rw-rw--w- 1 saml saml 0 Jul 29 14:40 blah
umask: 006
-rw-rw---- 1 saml saml 0 Jul 29 14:40 blah
umask: 007
-rw-rw---- 1 saml saml 0 Jul 29 14:40 blah
다른 것들도 있습니다. 이것은 단지 예를 강조하기 위한 것입니다!
그럼 어떻게 해야 할까요?
당신이 Apache 디렉토리( path 기반)를 다루고 있다고 가정하면 , 나는 당신의 사용자 와 Apache가 실행 중인 사용자 모두가 구성원으로 속한 /srv/www/htdocs
Unix 그룹을 찾을 것입니다 . me
다음 groups
명령을 사용하여 확인할 수 있습니다.
$ groups saml
saml : saml vboxusers jupiter newgrp
$ groups apache
apache : apache
id
다음 명령을 사용할 수도 있습니다 .
$ id saml
uid=500(saml) gid=501(saml) groups=501(saml),502(vboxusers),503(jupiter),10000(newgrp)
$ id apache
uid=48(apache) gid=48(apache) groups=48(apache)
내 시스템에서 Apache는 사용자가 실행합니다 apache
. 사용자를 보면 apache
그룹에도 속해 있음을 알 수 있습니다. 따라서 한 가지 방법은 사용자를 me
그룹에 추가하는 것입니다.
예를 들어 다음 그룹 me
에 추가합니다.apache
$ sudo usermod -a -G apache me
또 다른 방법은 다른 그룹을 만들고 해당 보조 그룹(예: apacheplus)에 apache
및를 추가한 me
후 다음 명령을 실행하는 것입니다 /srv/www/htdocs
.
$ sudo chgrp -R apacheplus /srv/www/htdocs