Linux 명령에 내가 뭘 잘못하고 있는 걸까요? [복사]

Linux 명령에 내가 뭘 잘못하고 있는 걸까요? [복사]

다른 사람이 실행 권한을 갖지 않고 나만 가질 수 있도록 내 그룹에서 새 파일을 각각 상속하고 싶지만 새 파일을 만들려고 하면 664 권한이 부여됩니다. 이 문제를 어떻게 해결합니까?

sudo adduser $USER cyber_espionage  
sudo chown $USER:cyber_espionage ~/Documents/tool
sudo chmod 775 ~/Documents/tool
sudo chown $USER:cyber_espionage -R ~/Documents/tool
sudo chmod 2700 -R ~/Documents/tool
sudo find ~/Documents/tool -type d -exec chmod 775 "{}" \;
sudo find ~/Documents/tool -type f -name "*.py,*.sh" -exec chmod +x "{}" \;
sudo find ~/Documents/tool -type f -name "*.sh" -exec chmod +x "{}" \;

답변1

배경

이 명령을 사용하여 파일 권한 모드 마스크를 설정해야 합니다 umask. 이 작업을 수행하면 해당 디렉터리에 복사된 모든 새 파일에 권한이 설정되어 활성화된 권한 비트만 umask새로 복사된 파일에 전파됩니다.

$ umask
0022

# -or- symbolically

$ umask -S
u=rwx,g=rx,o=rx

위에 언급된 권한은 생략 g=w될 수 o=w있습니다(해제, 유효). 다음 제목의 U&L Q&A를 참조하세요.비트를 실행하고 읽습니다. Linux에서 디렉토리 권한은 어떻게 작동합니까?확실하지 않은 경우 권한에 대한 자세한 내용을 참조하세요.

노트Unix는 umask마스크이기 때문에 다소 혼란스러운 주제일 수 있으므로 권한 비트를 마스크하고 사용할 비트를 지정하는 대신 원하지 않는 비트를 알려줍니다.

더 간결하게:

생성되는 파일의 권한 비트 에만 umask추가 마스크를 적용합니다 . 파일의 권한 비트는 주로 파일을 생성한 프로그램, 특히 다음에 의해 결정됩니다.모드 매개변수creat()또는 시스템 호출 open(). 이것실행 비트일반적으로 이유가 없는 경우(예: 실행 파일 생성) 설정되지 않습니다. 어떤 값도 umask작성자가 지정하지 않은 비트를 추가할 수 없습니다.umask비트 재설정.

너의 문제

이제 질문으로 돌아가서 다음을 수행해 보겠습니다 touch afile.

$ touch afile

$ ls -l afile
-rw-r--r-- 1 vagrant vagrant 0 Jul  8 11:45 afile

지정된 그룹 에 대해 위에 umask설정된 권한은 비트가 꺼진 상태(예: 쓰기)가 되고 다른 권한은 비트가 꺼진 상태(예: 쓰기)가 됩니다.002222

umask으로 설정 0007하고 삭제하고 다시 터치하면 다음과 같습니다 afile.

$ umask 0007; rm -f afile; touch afile; ls -l
total 0
-rw-r----- 1 vagrant vagrant 0 Jul  8 11:56 afile

이제 다른 사용자가 파일에 액세스할 수 없도록 권한이 부여되었습니다(0007). 이는 다른 구성 요소에 대한 권한의 모든 비트(rwx)를 켜고 설정을 통해 umask설정되지 않도록 "보호"했기 때문입니다.

Unix 권한을 통해 다른 사용자의 디렉터리 액세스를 제한하려면 umask 0007"기타" 사용자 그룹을 제한하도록 권한을 설정하십시오.

노트:다른 사람들은 자신이 속한 Unix 그룹으로 설정된 경우 파일에 계속 액세스할 수 있습니다. 이를 제한하려면 umask로 설정하십시오 umask 0077.

인용하다

답변2

이렇게 하면 나에게는 실행 권한이 있고 다른 사람은 없습니다.

...
chmod 2700 -R ~/Documents/tool

그만하면 충분 해. 이 명령을 따르면 귀하의 사용자(및 슈퍼유저)만이 그 안에 있는 파일 root에 액세스할 수 있습니다 .~/Documents/tool/

내부 파일을 액세스 모드로 변경할 필요가 없습니다 700. 따라서 여기서는 -R옵션을 사용할 필요가 없습니다 chmod. 그리고 당신은 당신의 것을 조작할 필요가 없습니다 umask.

첫째, 현재 사용 중인 제품은 이미 범용 용도에 적합합니다 umask.0002

둘째, 만약 당신이의지하다어떤 경우에는 GNOME 파일, 텍스트 편집기 등이 재설정되는 것을 umask발견하면 기분 좋게 놀라게 될 것입니다 umask(예: GDM으로 시작하는 Fedora 28의 Gnome 3 내부). 이러한 애플리케이션은 systemd --user서비스 내부에서 실행되므로(startup을 통해 시작됨 dbus.service) 다음 시스템 문제의 영향을 받습니다.https://github.com/systemd/systemd/issues/6077 불행하게도 이를 안정적으로 재구성할 수 있는 방법은 없습니다.

특정 다른 사용자를 해당 그룹에 추가하여 액세스 권한을 부여하려는 경우가 아니면 새 그룹을 만들 필요가 없습니다.

그룹에 다른 사용자를 추가하고 이를 사용하여 읽기(및 실행) 또는 읽기+쓰기 액세스 권한을 부여하려는 경우 몇 가지 다른 단계가 필요합니다. 로 끝나는 패턴은 700소유 사용자에게만 액세스를 허용하므로 사용하지 않습니다 .

그룹 쓰기 액세스의 경우 GNOME처럼 작동하는 응용 프로그램을 사용하여 이러한 파일을 생성하려면 시스템 문제에 대한 해결 방법도 구현해야 합니다. 시스템 사용자 서비스의 문제점은 umask를 0022반대로 재설정한다는 것입니다. 반복합니다. 안정적으로 재구성할 수 있는 방법은 없습니다.

관련 정보