터미널: login(1) 또는 su(1)?

터미널: login(1) 또는 su(1)?

나는 OSX를 사용하고 있습니다. 둘 다 사용할 수 있음로그인(1)또는수(1)임의의 사용자로 로그인합니다.

하지만 두 개의 바이너리가 동일한 작업을 수행합니까??

어느 쪽이 덜 소비하는가시스템 리소스?

어느 쪽이 덜 걸리기 쉬운지보안 위험?

어느후드 아래의 차이점?

[ 참고로, 루트 액세스 권한을 얻는 것은 괜찮습니다. 저는 다중 사용자, 네트워크로 연결된 *nix의 계정에 대한 액세스를 자동화할 계획입니다. ]

답변1

login현재 환경을 버리고 새로운 환경으로 쉘을 시작합니다.

su기존 환경을 사용하여 쉘을 시작하고 HOME, USER 및 SHELL 변수만 수정합니다.

예를 들어,

> export foo=bar
> su <username>
> echo $foo
bar

하지만:

> export foo=bar
> login <username>
> echo $foo

아무것도 인쇄하지 않습니다.

AFAIK su -llogin.

답변2

su(1)은 현재 환경으로 새 쉘을 생성하고, 하위 쉘을 종료하면 호출하는 쉘로 돌아갑니다.

login(1) 역시 새 쉘을 생성하지만 새로운 환경을 갖습니다.

답변3

완전히 똑같은 직업은 아닙니다. "su"는 현재 터미널을 소유한 사용자를 변경하고 "login"(이름에서 알 수 있듯이)은 새 세션을 만듭니다.

저는 OSX 전문가는 아니지만 모든 *NIX의 중요한 보안 고려 사항은 루트에 대한 원격 직접 로그인을 금지하는 것입니다. 일반 사용자로 로그인 후 "su"로만 하셔야 합니다.

관련 정보