답변:
마찬가지로 안전한 또 다른 옵션은 sudo
의 -i
스위치를 사용 하여 루트로 로그인하는 것입니다.
$ sudo -i
# echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock'
루트 계정이 실제로 활성화되어 있지는 않지만 루트로 안전하게 작업 할 수 있기 때문에 여전히 모범 사례 규칙을 따릅니다. 보낸 사람 man sudo
:
The -i (simulate initial login) option runs the shell
specified by the password database entry of the target user
as a login shell. This means that login-specific resource
files such as .profile or .login will be read by the shell.
If a command is specified, it is passed to the shell for
execution via the shell's -c option. If no command is
specified, an interactive shell is executed.
sudo bash
작은 따옴표없이 명령을 표현하면 작은 따옴표 안에 넣고 중간 쉘을 통해 실행할 수 있습니다.
이것을 루트로 실행하려면 :
echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
사용하지 않는 다른 방법으로 명령을 작성하십시오 '
.
echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock
그런 다음 다음을 호출하십시오 sudo sh -c …
.
sudo sh -c 'echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock'
또는 루트 만 쓸 수있는 파일에 출력을 쓰려면을 호출하십시오 sudo tee
. 패스 -a
하는 옵션 tee
대상 파일에 추가 할, 그렇지 않으면 파일이 잘립니다합니다.
echo 'clock_hctosys="YES"' | sudo tee -a /etc/conf.d/hwclock >/dev/null
더 복잡한 파일 수정의 경우 호출 할 수 있습니다 sudo sed
, sudo ed
, sudo perl
, ...
또는 괜찮은 편집기를 사용하여 sudo라고 부릅니다. Emacs에서을 엽니 다 /sudo:/etc/conf.d/hwclock
. Vim에서 호출 :w !sudo tee %
하여 열린 파일에 루트로 쓰거나 sudo.vim 플러그인을 사용하십시오 . 또는 sudo 끝에서 전화를 겁니다 sudoedit /etc/conf.d/hwclock
.
또는 어두운면에 굴려서 껍질을 루트로 실행할 수 있습니다.
$ sudo -i
# echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
리디렉션 된 파일에 대한 권한으로 인해 명령이 실패합니다. sudo
명령이 호출 되기 전에도 리디렉션이 발생합니다 .
실제로 쓰기 위해 파일을 여는 것이 루트인지 확인해야합니다.
가장 간단한 방법은 다음과 같습니다.
echo 'clock_hctosys="YES"' | sudo tee -a /etc/conf.d/hwclock >/dev/null
는 echo
그냥 텍스트 문자열을 생산으로 일반 사용자 사용자로 실행 할 수있다. 이 tee
유틸리티는 루트로 실행해야하며 tee -a
데이터를 추가합니다. 기본적으로 표시된 파일에 쓰는 것 외에도 입력 데이터를 표준 출력에 복제 하기 /dev/null
때문에 출력을 리디렉션 tee
합니다.
로 bash
또는 "여기-문자열을"이해하고 어떤 쉘 :
sudo tee -a /etc/conf.d/hwclock >/dev/null <<<'clock_hctosys="YES"'
위와 동일합니다. 문자열을 생성하는 방식 만 변경됩니다.
또 다른 약간 우회하는 방법 :
sudo sh -c 'echo clock_hctosys=\"YES\" >>/etc/conf.d/hwclock'
여기서 리디렉션 sh -c
은 루트로 실행 되는 자식 셸 내에서 발생 합니다.
sudo dd of=
원하는대로 추가하려면 :
echo inbytes | sudo dd of=outfile oflag=append conv=notrunc
또는 처음부터 파일을 다시 작성하려면 다음을 수행하십시오.
echo inbytes | sudo dd of=outfile
장점 :
tee
없기 때문에/dev/null
sh
서브 쉘 이 없기 때문에dd
status=progress
전송 진행 상황을 볼 수있는 많은 강력한 옵션이 있습니다.sudo가 stdin을 명령으로 전달하기 때문에 작동합니다.
tee
복잡하고 오해하기 쉬운 기본 명령이 아닌 명령 만 루트로 실행 하기 때문에 더 안전 합니다. (의 경우는echo
아님)