루트에 대한 액세스를 자동화하고 최소화하는 스크립트를 작성 중입니다. SSH를 통해 시도해보겠습니다. 현재 sed
UID 및 GID 0 셸을 /sbin/nologin
.
왜 이 일을 해야 합니까? 이렇게 하면 login
, gdm
, kdm
, su
, ssh
, scp
에 대한 루트 권한이 비활성화됩니다 sftp
. 루트 권한으로만 실행하려고 합니다 sudo
. 루트 액세스를 최소화하기 위한 제안 사항을 알고 있다면 그것도 제안해 주십시오.
이것이 현재 문제입니다:
grep :0:0: /etc/passwd | sudo sed 's_/bin/bash_/sbin/nologin_' /etc/passwd
내가 현재 하고 있는 일은 그것들을 /bin/bash
모두 /sbin/nologin
.
답변1
1. sudoer 계정을 만드세요
su -
echo '<YOU> ALL=(ALL:ALL) ALL'>>/etc/sudoers
exit
2. 루트 계정 비활성화
sudo usermod --expiredate 1 root
3. 테스트해 보세요
$ su -
Password: <correct password>
Your account is expired.
Debian GNU/Linux에서 테스트됨
답변2
무엇
grep :0:0: /etc/passwd | sudo sed 's_/bin/bash_/sbin/nologin_' /etc/passwd
하다?
grep :0:0: /etc/passwd
uid/gid가 0인 행을 검색하면 일반적으로 STDOUT(표준 출력)에 공급되는 루트가 있는 행을 제공합니다.|
grep의 출력은 sudo sed에 제공되며 명령줄에 지정된 파일로 인해 삭제됩니다.sed 's_/bin/bash_/sbin/nologin_' /etc/passwd
이는 /etc/passwd의 bash를 STDOUT에 대한 nologin으로 대체하고 /etc/passwd는 변경되지 않은 채로 둡니다.
해보셨나요..?
sudo sed -i '/:0:0:/s_/bin/bash_/sbin/nologin_' /etc/passwd