sudo 명령 상황 분석
6024 단어 Linux 명령
Linux 에서 사용
sudo
명령, 일반 사용자 도 일부 또는 모든 루트 명령 을 실행 할 수 있 습 니 다.본 고 는 우리 가 자주 사용 하 는 sudo 작업 상황 에 대해 간단 한 분석 을 하고 예 를 들 어 sudo 명령 과 관련 된 기 교 를 파악 한다.상황 1: 사용자 가 루트 명령 을 실행 할 수 있 는 권한 이 없습니다.
일반 사용자 가 셸 에 로그 인 한 후, 자신 이 어떤 파일 에 접근 하거나 명령 을 실행 할 수 있 는 권한 이 없 을 때, 이 사용자 가 루트 권한 을 얻 으 면 실행 할 명령 전에 sudo 를 추가 하여 루트 사용자 의 권한 으로 임시 전환 하여 관련 작업 을 완성 할 수 있 습 니 다.sudo 가 1980 년 전후 에 쓰기 전에 일반 사용자 관리 시스템 의 방식 은 su 를 이용 하여 슈퍼 사용자 로 전환 하 는 것 이다.그러나 su 를 사용 하 는 단점 중 하 나 는 슈퍼 사용자 의 비밀 번 호 를 먼저 알려 야 하 는 것 이 고, sudo 는 일반 사용자 가 슈퍼 사용자 의 비밀 번 호 를 알 지 않 아 도 권한 을 얻 을 수 있 도록 하 는 것 이다.
그러면 어떤 사용자 가 임시로 루트 권한 을 얻 을 수 있 습 니까?이것 은 / etc / sudoers 파일 에서 설정 해 야 합 니 다:
단일 사용자 에 게 권한 부여:
# User privilege specification
guohl ALL=(ALL) ALL
위의 이 예 에서:
guohl: sudo 사용자 이름 사용 허용 ALL: 모든 터미널 (모든 기기) 에서 sudo 를 사용 할 수 있 습 니 다.
(ALL): 모든 사용자 가 sudo 명령 을 실행 할 수 있 도록 합 니 다 ALL: sudo 권한 으로 모든 명령 을 실행 할 수 있 습 니 다 사용자 test 가 이 호스트 (호스트 이름 guohl - pc) 에서 루트 계 정 으로 만 / bin / chown, / bin / chmod 두 명령 을 실행 할 수 있 도록 하려 면 이렇게 설정 해 야 합 니 다.
# User privilege specification
test guohl-pc=(root) /bin/chown,/bin/chmod
test 로그 인 후 sudo 명령 을 실행 하면 위의 세 가지 조건 을 만족 시 키 지 못 하면 명령 이 실 패 했 습 니 다.
사용자 그룹 에 권한 부여:
# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move it further down)
%sudo ALL=(ALL) ALL
한 사용자 에 게 권한 을 부여 하 는 것 과 유사 합 니 다. 사용자 이름 을 여기 서
%
로 바 꿀 뿐 이 그룹 에 있 는 모든 사용 자 는 이 규칙 에 따라 권한 을 부여 합 니 다.이 경우 sudo 그룹 에 있 는 모든 사용 자 는 터미널 (첫 번 째 ALL), 모든 사용자 (두 번 째 ALL), 모든 명령 (세 번 째 ALL) 을 실행 할 수 있 는 권한 이 있 습 니 다. / etc / group 파일 을 보면 어떤 사용자 가 sudo 그룹 에 속 하 는 지 알 수 있 습 니 다.예:
현재 계 정 이 / etc / sudoers 파일 에서 sudo 권한 을 부여 한다 면 루트 명령 을 sudo 명령 의 매개 변수 로 루트 권한 을 사용 하여 명령 을 수행 할 수 있 습 니 다.예 를 들 어 파일 시스템 을 마 운 트 하 는 것 은 루트 에서 만 실행 할 수 있 지만 일반 사용자 도 sudo 로 마 운 트 할 수 있 습 니 다.
$sudo mount /dev/sda7 /mnt
[sudo] password for guohailin:
첫 번 째 사용 은 현재 사용자 의 암 호 를 입력 하 라 고 요구 합 니 다. 시스템 은 루트 권한 으로 mount 명령 을 실행 하 는 것 이 확실 합 니 다. 다음 시간 (기본 값 5 분) 에 sudo 명령 을 다시 사용 하면 암 호 를 잃 을 필요 가 없습니다.
상황 2: vim 편집 후 sudo 사용 을 잊 어 버 린 것 을 발견
우 리 는 항상 이런 곤경 에 처 한다. vim 을 사용 하여 특정한 파일 을 편집 하고 편집 한 후에 누른다.
ESC
그리고 일반 모드 로 돌아 가서 눌 러 요. :wq
종료 저장 을 준비 할 때 이 파일 을 수정 할 수 있 는 권한 이 없 음 을 발 견 했 습 니 다. vim 명령 을 사용 할 때 앞에서 sudo 를 추가 하 는 것 을 잊 었 습 니 다.저 는 이런 문제 가 자주 발생 했 습 니 다. 예전 의 방법 은 강 퇴 를 저장 하지 않 고 sudo 를 다시 편집 하 는 것 이 었 습 니 다.그러나 앞으로 우 리 는 더 이상 이렇게 어 리 석 은 방법 을 사용 할 필요 가 없다. 우 리 는 vim 의 일반적인 모델 에서 누 를 수 있다.
:w !sudo tee %
,이렇게 하면 루트 권한 으로 파일 을 저장 할 수 있 습 니 다. sudo 를 추가 하 는 것 을 잠시 잊 었 다 고 실망 할 필요 가 없습니다!상황 3: 루트 명령 실행 중 sudo 추가 잊 어 버 리 기
우 리 는 또 이렇게 약간 좋 은 상황 을 만 날 수 있다. 긴 명령 을 입력 하고 누 르 면
Enter
그 후에 권한 이 없 는 작업 이 발생 했 습 니 다. 왜냐하면 우 리 는 sudo 를 추가 하 는 것 을 잊 었 기 때 문 입 니 다.대부분의 사람들의 방법 은 ↑
이전 명령 으로 돌아 가 이 명령 전에 sudo 를 추가 하고 이 명령 을 수행 합 니 다.앞으로 우 리 는 이렇게 할 필요 가 없다. 입력 만 하면 된다.
sudo !!
됐어, 여기!!지난 명령 을 대표 합 니 다.예:$ head -n 4 /etc/sudoers
head: cannot open `/etc/sudoers' for reading: Permission denied
$ sudo !!
sudo head -n 4 /etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
상황 4: 셸 내 장 된 명령 은 sudo 를 어떻게 사용 합 니까?
셸 은 대화 형 프로그램 입 니 다. 외부 명령 을 수행 할 때 fork 를 통 해 키 프로 세 스 를 만 들 고 exec 를 통 해 외부 명령 을 불 러 오 는 프로그램 을 통 해 실 행 됩 니 다. 그러나 명령 이 셸 내 장 된 명령 이 라면 셸 에서 만 실 행 될 수 있 습 니 다.sudo 는 다른 사용자 (예 를 들 어 root) 의 권한 으로 프로 세 스 를 fork 하고 프로그램 을 불 러 오고 실행 하기 때문에 sudo 뒤에 셸 의 내 장 된 명령 을 사용 할 수 없습니다. 예 를 들 어:
$ sudo cd /sys/kernel/debugfs
sudo: cd: command not found
이런 상황 에서 우 리 는 루트 계 정의 비밀번호 도 없 는데, 우 리 는 어떻게 이 명령 을 실행 합 니까?sudo 를 사용 하여 루트 셸 의 권한 을 얻 고 루트 셸 에서 이 명령 을 수행 하 는 방법 이 있 습 니 다.루트 셸 에 들 어 가 는 것 은 간단 합 니 다. 입력
sudo bash
이 사용자 의 비밀 번 호 를 확인 하면 됩 니 다. 명령 프롬프트 가 현재 루트 임 을 표시 합 니 다.루트 셸 을 얻 으 면 모든 명령 전에 sudo 를 입력 하지 않 고 모든 명령 을 수행 할 수 있 습 니 다.또한, 자주 사용 하 는 셸 내장 명령 은 여기에 있 습 니 다. 간단 한 설명 이 있 습 니 다. type 명령 을 사용 하여 명령 의 종 류 를 볼 수 있 습 니 다. 예 를 들 어:
$ type ls
ls is /bin/ls
$ type umask
umask is a shell builtin
상황 5: sudo 조작 기록 로그
리 눅 스 시스템 의 관리자 로 서 지정 한 사용자 나 사용자 그룹 을 루트 사용자 나 다른 사용자 로 하여 금 일부 명령 을 실행 하 게 할 뿐만 아니 라 지정 한 사용자 가 입력 한 명령 과 파 라 메 터 를 상세 하 게 기록 할 수 있 습 니 다.한편, sudo 의 로그 기능 은 사용자 가 입력 한 명령 을 추적 할 수 있 습 니 다. 이것 은 시스템 의 안전성 을 증진 시 킬 뿐만 아니 라 고장 점검 수리 에 도 사용 할 수 있 습 니 다.하지만 sudo 로 그 를 기록 하려 면 간단 한 설정 이 필요 합 니 다.
sudo 로그 파일 을 만 듭 니 다. sudo 로그 파일 을 두 겠 습 니 다.
/var/log/sudo.log
파일 중: $ sudo touch /var/log/sudo.log
수정 하 다. /etc/rsyslog.conf
프로필 은 Ubuntu 13.04 를 이름 변경 으로 사용 하지만, 일부 시스템 이름 은 /etc/syslog.conf
입 니 다. 발행 판 간 의 차 이 를 주의 하 십시오. 이 파일 에 다음 줄 을 추가 하 십시오. local2.debug /var/log/sudo.log # , tab
수정 하 다. /etc/sudoers
설정 파일 은 인터넷 에 sudo 로그 파일 설정 이 부족 합 니 다!이 파일 에 다음 줄 을 추가 합 니 다: Defaults logfile=/var/log/sudo.log
syslog 서비스 다시 시작: $ sudo service rsyslog restart
sudo 로그 기록 보기: 위의 설정 을 통 해 sudo 의 모든 성공 과 성공 하지 못 한 sudo 명령 은 파일 / var / log / sudo. log 에 기록 되 어 있 습 니 다. 예 를 들 어 제 가 sudo 명령 을 몇 개 실행 한 후에 이 파일 의 기록 은 다음 과 같 습 니 다. $ cat sudo.log
Sep 20 22:10:51 : guohailin : TTY=pts/1 ; PWD=/var/log ; USER=root ;
COMMAND=/bin/cat /etc/sudoers
Sep 20 22:11:36 : guohailin : TTY=pts/1 ; PWD=/var/log ; USER=root ;
COMMAND=/usr/sbin/service rsyslog restart
Sep 20 22:11:45 : guohailin : TTY=pts/1 ; PWD=/var/log ; USER=root ;
COMMAND=/bin/ls
Sep 20 22:12:08 : guohailin : TTY=pts/1 ; PWD=/var/log ; USER=root ;
COMMAND=/bin/ls /root/
참고 자료:sudo mannual
7 Linux sudo Command Tips and Tricks
sudo 로그 설정
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Raspberry Pi 4에서 IP 주소를 고정하면 외부 네트워크에 연결되지 않았습니다. 해결책 비망록Raspberry Pi 4 4GB IP 주소 고정에 따라 dhcpcd.conf를 다음과 같이 변경했습니다. VNC를 사용하여 Raspberry Pi에서 작업하고 있지만 연결되지 않았습니다. Raspberry Pi -...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.