모든 사용자가 프로그램에 접근할 수 있도록 올바른 폴더 권한을 설정하려면 어떻게 해야 합니까?

모든 사용자가 프로그램에 접근할 수 있도록 올바른 폴더 권한을 설정하려면 어떻게 해야 합니까?

내 컴퓨터의 모든 사용자가 액세스할 수 있는 프로그램 X가 있습니다. 그래서 홈 폴더에 넣을 수 없습니다. 그래서 내가 들었어/usr/local 올바른 장소입니다그리고 그것을 시도했다.

하지만 해당 폴더의 폴더 권한 /usr/local/bin/은 입니다 drwxr-xr-x.알아내다755. 그래서 저는 programsusing이라는 폴더를 만들고 sudo mkdir programs그 권한을 using을 사용하여 변경합니다. sudo chmod 775 programs홈 폴더의 폴더에 권한이 있고 775이것이 부여하는 것이 올바른 권한이라고 생각하기 때문입니다.

cd /usr/local/programs/이제 프로그램 X를 기본 폴더에서 이 programs폴더 로 복사하려고 하는데 mv ~/X/ .오류가 발생합니다 mv: cannot move '/home/nav/X/' to './X': Permission denied.

/usr/local/programs나는 이것이 사실인지 다시 확인했고 775실제로 그랬습니다. 이제는 그때를 사용 X하여 복사할 수 있다고 생각했지만programssudo명령을 사용하여 변환모든 파일을 넣었는데 programs전체 775과정에 뭔가 문제가 있는 것 같은 느낌이 듭니다.

그렇다면 어떻게 설치 X하고 모든 사용자가 액세스할 수 있게 만들까요? 이렇게 하려는 이유는 일단 에 넣으면 /usr/local/programs/아래와 같은 스크립트를 만들어서 애플리케이션 메뉴를 통해 접근할 수 있도록 하려고 하기 때문입니다.

스크립트:

스크립트 생성:
sudo -H gedit /usr/share/applications/X.desktop

이 파일에 다음을 붙여넣습니다.

[Desktop Entry]
Version=1.0
Name=X
Comment=Program X
GenericName=IDE
Keywords=SomeProgram, X
Exec=/usr/local/programs/X/xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/usr/local/programs/X/icons/icon.xpm
Categories=GNOME;GTK;
StartupNotify=true

답변1

/usr/local/bin 프로그램을 배치할 올바른 디렉토리입니다.그래서 그냥:

sudo cp ~/X/xyz /usr/local/bin

그리고움직이지 마세요이동하면 권한도 이동하므로 복사하는 동안 프로그램에 기본 권한이 부여됩니다 /usr/local/bin.

또한 /usr/local/bin이미 경로에 아이콘을 넣으면 /usr/share/pixmaps데스크탑 파일은 다음과 같이 됩니다.

[Desktop Entry]
Version=1.0
Name=xyz
Comment=Program xyz
GenericName=IDE
Keywords=SomeProgram, xyz
Exec=xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=icon.xpm
Categories=GNOME;GTK;Development;IDE
StartupNotify=true

홈 디렉토리에 아이콘 파일이 있는 xyz경로에 있는 프로그램 의 경우.Xicon.xpm

공식 카테고리 목록이봐

답변2

내 컴퓨터의 모든 사용자가 액세스할 수 있는 프로그램 X가 있습니다. 그래서 홈 폴더에 넣을 수 없습니다. 그래서 딱 맞는 곳이라는 말을 듣고 /usr/local한번 시도해 봤습니다.

예, /usr/local시스템 관리자는 컴퓨터의 모든 사용자가 사용할 수 있는 적절한 위치에 프로그램을 설치할 수 있습니다.

그러나 /usr/local일반적으로 하위 디렉토리 bin, lib, 로 나누어지며 바이너리 , 라이브러리, 기타 데이터 디렉토리 등과 같은 share하위 디렉토리에 프로그램을 설치해야 합니다 ./usr/local/bin/X/usr/local/lib/libX.so.1share

일반적으로 빌드한 Linux 프로그램은 /usr/local이 명령을 사용하여 make install설치할 수 있습니다. 더 정확하게 sudo make install는 루트만 이러한 하위 디렉터리에 쓸 수 있기 때문입니다. (적어도 이는 소스 코드로 구축된 소프트웨어에 대한 상당히 일반적인 규칙입니다.)

/opt또한 각 프로그램을 자체 하위 디렉터리에 유지하는 계층 구조도 있으므로 디렉터리에는 자체 , 등 하위 디렉터리가 /opt/X-1.0/있습니다 . 어쩌면 이것이 당신이 묘사하는 것에 더 가깝습니다.binlibshare

그런데 해당 폴더의 폴더 권한이 755 /usr/local/bin/drwxr-xr-x확인되었습니다.

권한이 정확합니다.

실제로 겪고 있는 문제는 권한과 관련이 없지만유일한 루트쓸 수 있다 /usr/local, 그게 바로 그것이다.

소스 설치 프로그램 사용에 대한 위의 요점을 참조하십시오 sudo make install(소스에서 빌드하고 소스가 이 기능을 지원하는 Makefile을 사용한다고 가정). 간단히 말해서 sudo예상대로 루트로 이러한 파일을 생성하고 루트 소유권을 가져야 합니다.

그래서 sudo mkdir 프로그램을 사용하여 프로그램이라는 폴더를 만들고 sudo chmod 775 프로그램을 사용하여 해당 권한을 변경했습니다. 왜냐하면 홈 폴더의 폴더에 권한 775가 있어서 올바른 권한이라고 생각했기 때문입니다.

그러지 마세요. /usr/local실제로 이런 식으로 사용되어서는 안 됩니다. (그렇다고 사람들이 비슷한 방식으로 남용하지 않는다는 의미는 아니지만 올바르게 사용하는 방법을 배우거나 더 적절한 장소를 찾는 것이 좋습니다.)

이제 CD로 이동하여 /usr/local/programs/다음 명령을 사용하여 프로그램 X를 홈 폴더에서 프로그램 폴더로 복사하려고 시도했지만 mv ~/X/ .오류가 발생했습니다.mv: cannot move '/home/nav/X/' to './X': Permission denied.

문제는 루트가 필요하다는 것입니다. 를 사용하면 sudo도움이 되지만 아래 파일은 X/여전히 ​​사용자 소유입니다. (이렇게 하면 시스템의 다른 사용자가 해당 파일을 사용하는 것을 반드시 막을 수는 없지만 일반적으로 이러한 파일을 /usr/local루트가 소유하게 되기를 원합니다.)

권한에는 문제가 없습니다. 일반적으로 루트의 경우 0755가 맞습니다. 필요한 것은 사용자가 이러한 바이너리를 실행할 수 있도록 "다른" 비트를 읽고 실행하는 것뿐입니다.

앞서 언급했듯이 프로그램을 자체 하위 디렉터리에 보관하려면 /opt해당 위치가 더 적합할 수 있습니다. 하지만 이 경우에도 일반적으로 이러한 파일의 루트 소유권을 갖고 싶어합니다. 또한 /opt인기가 줄어들면서 이는 다소 특이한 선택이 될 수 있습니다...

이를 올바르게 수행하는 방법

불행하게도 Linux에서 소프트웨어를 올바르게 설치하는 것은 설치하려는 소프트웨어에 따라 크게 달라집니다. 설치 방법은 일반적으로 빌드 방법과 사용하는 프로그래밍 언어에 따라 다릅니다.

나는 다음을 추천합니다:

  1. 먼저, Linux 배포판에 해당 소프트웨어 패키지가 함께 제공되는지 확인하세요. 이 경우 해당 패키지 관리자( , 등)를 사용하여 apt-get패키지 yumdnf설치하세요. 기본 저장소에 패키지가 없는 경우 패키지를 가져올 수 있는 확장 저장소가 있는지 확인하세요.

  2. 웹사이트에서 이 소프트웨어를 다운로드한 경우 바이너리가 포함된 타르볼() 이 아닌 배포용 바이너리 패키지( .deb또는 등) 로 제공되는지 확인하세요 ..rpm.tar

패키지 설치는 시스템에 제대로 통합되므로 항상 선호됩니다. Linux 배포판의 패키지(사용 가능하고 배포판에서 제공하는 버전을 수락할 수 있다고 가정)는 시스템에서 올바르게 작동할 가능성이 더 높습니다.

  1. 소스에서 빌드한 경우 에 설치해 보십시오 /usr/local. 이는 일반적으로 autoconf/automake를 사용하는 패키지의 경우 기본값입니다. ./configure.sh빌드가 시작될 때 실행하려는 스크립트가 있는 경우 일반적 --prefix으로 매개변수(예: ./configure.sh --prefix=/usr/local)를 전달하여 이를 사용자 정의할 수 있습니다. 소프트웨어를 빌드한 후 sudo다음을 사용하여 설치하십시오 sudo make install.

  2. 소프트웨어가 다른 빌드 시스템 및/또는 프로그래밍 언어를 사용하는 경우 동일한 작업을 수행하기 위해 동등한 지침을 찾을 수 있는지 확인하십시오. 소스 패키지는 일반적으로 INSTALL소스 트리 상단에 이름이 대문자로 표시된 파일을 제공하며 해당 파일을 빌드/설치하고 사용을 시작하는 방법에 대한 지침을 포함합니다. README읽어보세요.

불행히도 거기에는 많은 변화가 있습니다. 몇 가지 표준이 있지만 실제로는 너무 많습니다. Linux/Unix에서 소프트웨어를 구축/설치하는 데는 혼란스러운 오류 메시지를 해독하고, 지침을 찾아 읽고, 기대한 대로 작동하는지 확인하는 등 시행착오가 수반되는 경우가 많습니다. 하세요... 정기적으로 시작하면 일이 더 쉬워지지만, 해결해야 할 특이한 점은 항상 있을 것입니다.

그렇기 때문에 배포판의 패키지를 사용하는 것이 훨씬 더 좋습니다. 적어도 표준이 있고 패키지를 설치하고 관리하기 위한 표준 도구 세트가 있으며 빌드 세부 사항이 모두 처리됩니다.

  1. 웹사이트에서 바이너리 타르볼을 얻은 경우 타르볼의 압축을 풀고 사용하는 방법에 대한 지침을 검토하세요. 추측할 수도 있지만 실수를 할 수도 있고, 최소한 깔끔하지 않을 수도 있습니다. 루트로 직접 tarball의 압축을 푸는 것을 고려하십시오( 사용 sudo). tarball이 프로그램 이름을 딴 하위 디렉토리와 함께 제공되는 경우 해당 하위 디렉토리를 /opt기본 디렉토리로 사용하는 것을 고려하십시오. 사용자가 명령줄에서 호출하는 바이너리에 대해 위치 중 하나에 심볼릭 링크를 생성하는 것을 고려해보세요 $PATH( 괜찮지 /usr/local/bin/opt/bin이미 파일에 있는 경우에만 가능 ).$PATH

사전 빌드된 바이너리 세트를 압축 해제하는 것이 가장 어려운 경우가 많습니다. 이와 같은 것이 있으면 패키지를 올바르게 여는 방법에 대한 지침을 찾으십시오.

이 정보가 귀하가 보유한 특정 패키지를 관리하는 방법을 결정하는 데 도움이 되기를 바랍니다!

관련 정보