useradd -o -u userXXX
@jlliagre가 권장 하는 옵션을 제외하고 세 번째 제안 된 전략과 관련 하여 동일한 UID로 여러 사용자를 실행하는 데 익숙하지 않습니다. (따라서 계속 진행하면 발생하는 문제 (또는 성공)로 게시물을 업데이트 할 수 있다면 관심이있을 것입니다 ...)
첫 번째 옵션 인 "모든 사람의 SSH 공개 키는 ~ root / .ssh / authorized_keys2"에 대한 첫 번째 관찰은 다른 시스템에서는 절대로 작업하지 않는 한입니다.
- 최소한 시간 이 지나면 사용자 계정으로 작업해야합니다.
sudo
두 번째 관찰은 HIPAA, PCI-DSS 준수 또는 CAPP 및 EAL과 같은 것을 목표로하는 시스템에서 작업하는 경우 sudo 문제를 해결해야한다는 것입니다.
- 루트가 아닌 개별 사용자 계정을 제공 하는 업계 표준 으로, 일반적으로 일부 중앙 사용자 데이터베이스를 사용하여 감사, 비활성화, 만료 등을 수행 할 수 있습니다.
그래서; 개인 계정 및 sudo 사용
불행히도 sysadmin으로서 원격 시스템에서 수행해야 할 거의 모든 것이 약간의 권한이 필요하지만 대부분의 SSH 기반 도구 및 유틸리티가 사용 중일 때 성가신 것은 성가신 일입니다 sudo
따라서 나는 sudo
당신이 언급 한 성가신을 피하기 위해 사용하는 몇 가지 트릭을 전달할 수 있습니다 . 첫 번째 문제는 루트 로그인을 사용하여 루트 로그인이 차단 PermitRootLogin=no
되었거나 ssh 키를 사용하여 루트가없는 경우 SCP 파일을 PITA로 만드는 것입니다.
문제 1 : 원격에서 파일을 scp하려고하지만 루트 액세스가 필요하지만 원격 상자에 루트로 직접 로그인 할 수 없습니다.
지루한 해결책 : 파일을 홈 디렉토리, chown 및 scp로 복사하십시오.
ssh userXXX@remotesystem
, sudo su -
등, cp /etc/somefiles
하는 /home/userXXX/somefiles
, chown -R userXXX /home/userXXX/somefiles
사용 scp를 원격에서 파일을 검색 할 수 있습니다.
정말 지루합니다.
덜 지루한 해결책 : sftp는 -s sftp_server
플래그를 지원 하므로 다음과 같은 작업을 수행 할 수 있습니다 (암호없는 sudo를 구성한 경우 /etc/sudoers
).
sftp -s '/usr/bin/sudo /usr/libexec/openssh/sftp-server' \
userXXX@remotehost:/etc/resolv.conf
(이 hack-around를 sshfs와 함께 사용할 수도 있지만 권장 사항은 확실하지 않습니다 ... ;-)
암호가없는 sudo 권한이 없거나 위의 방법이 깨진 구성 이유로 인해 원격 루트 파일에 액세스하기 위해 지루한 파일 전송 방법을 하나 더 제안 할 수 있습니다.
포트 포워드 닌자 방법 :
원격 호스트에 로그인하되, 원격 포트 3022 (무엇이든 사용 가능하고 관리자를 위해 예약되지 않은 것 (즉,> 1024))가 로컬 측의 포트 22로 다시 전달되도록 지정하십시오.
[localuser@localmachine ~]$ ssh userXXX@remotehost -R 3022:localhost:22
Last login: Mon May 21 05:46:07 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
정상적인 방식으로 뿌리 내리십시오 ...
-bash-3.2$ sudo su -
[root@remotehost ~]#
이제 파일의 중간 복사본을 만드는 지루한 보링 단계를 피하면서 파일을 다른 방향으로 scp 할 수 있습니다.
[root@remotehost ~]# scp -o NoHostAuthenticationForLocalhost=yes \
-P3022 /etc/resolv.conf localuser@localhost:~
localuser@localhost's password:
resolv.conf 100%
[root@remotehost ~]#
문제 2 : SSH 에이전트 전달 : 로그인 쉘을 지정하여 루트 프로파일을로드하면 SSH 에이전트 전달에 필요한 환경 변수 (예 : SSH 에이전트 전달) SSH_AUTH_SOCK
가 재설정되므로 SSH 에이전트 전달이 아래에서 "깨졌습니다" sudo su -
.
반 구운 답변 :
제대로 루트 쉘을로드하도록 뭐든지, 정당 환경을 재설정 할 것입니다, 그러나 약간의 작업은 주위가 귀하의 캔을 사용하면, BOTH 루트 권한과 SSH 에이전트를 사용하는 능력을 필요로 할 때 동시에 AT
이것은 일종의 키메라 프로파일을 얻습니다. 그것은 실제로 사용해서는 안됩니다 . 불쾌한 해킹이기 때문에 원격 호스트에서 루트로 다른 SCP 파일에 대해 SCP 파일을 필요로 할 때 유용합니다.
어쨌든 sudoers에서 다음을 설정하여 사용자가 ENV 변수를 보존 할 수 있습니다.
Defaults:userXXX !env_reset
이를 통해 불쾌한 하이브리드 로그인 환경을 만들 수 있습니다.
정상적으로 로그인하십시오.
[localuser@localmachine ~]$ ssh userXXX@remotehost
Last login: Mon May 21 12:33:12 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
-bash-3.2$ env | grep SSH_AUTH
SSH_AUTH_SOCK=/tmp/ssh-qwO715/agent.1971
그 실행을 bash 쉘을 생성 /root/.profile
하고 /root/.bashrc
. 그러나 보존SSH_AUTH_SOCK
-bash-3.2$ sudo -E bash -l
따라서이 쉘에는 루트 권한과 루트가 있습니다 $PATH
(그러나 borked 홈 디렉토리 ...)
bash-3.2# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t
bash-3.2# echo $PATH
/usr/kerberos/sbin:/usr/local/sbin:/usr/sbin:/sbin:/home/xtrabm/xtrabackup-manager:/usr/kerberos/bin:/opt/admin/bin:/usr/local/bin:/bin:/usr/bin:/opt/mx/bin
그러나이 호출을 사용하여 원격 sudo 루트가 필요한 작업뿐만 아니라 SSH 에이전트 액세스도 수행 할 수 있습니다.
bash-3.2# scp /root/.ssh/authorized_keys ssh-agent-user@some-other-remote-host:~
/root/.ssh/authorized_keys 100% 126 0.1KB/s 00:00
bash-3.2#
-o
에서 플래그를 살펴보십시오useradd
. 이 플래그는 여러 사용자가 동일한 uid를 공유 할 수 있도록합니다.