sudo 명령어는 유닉스 및 유닉스 계열 운영 체제에서 다른 사용자의 보안권한과 관련된 프로그램을 구동할 수 있게 해주는 프로그램이다. 이것은 substitute user do (다른 사용자의 권한으로 명령을 이행하라, 는 뜻이다.) 의 줄임말이다. 기본적으로 Sudo는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수 도 있고, 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없다.[2] Sudo는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며, 주로 우분투 리눅스와 애플의 맥 오에스 텐 에서 볼 수 있다.[3][4]
이 프로그램을 처음 쓴 사람은 Bob Coggeshall 과 Cliff Spencer 이며, 그들은 이 프로그램을 뉴욕의 버팔로 대학의 컴퓨터과학부에서 "1980년 근처에" 썼다. 현재 버전은 활발히 개발중이며 OpenBSD의 개발자 Todd C Miller가 유지하고 있고 BSD 라이선스로 배포되고 있다. [5]
2009년에 난감하게도 MS가 sudo 명령어를 특허로 등록했다는 것이 밝혀져 큰 파장을 일으켰으나 [6], 그 청구항들은 sudo의 개념이라기보다는 특정한 GUI에 대해 좁게 고안된 것이었다 [7].
예제[편집]
sudo 명령어를 실행하기 전에, 사용자들은 비밀번호를 입력한다. 한 번 승인되고 만약 /etc/sudoers 설정 파일이 그 유저를 승인한다면, 명령은 실행된다. kdesu, kdesudo, gksu, gksudo[8]와 같이 GUI환경에서 사용할 수 있는 몇몇 명령어 들이 있다.[9] 다음은 접근이 거부된 예이다.
snorri@rimu:~$ sudo emacs /etc/resolv.conf We assume you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Password: snorri is not in the sudoers file. This incident will be reported.
아래의 로그는 실패한 시도와, snorri를 /ect/sudoers: 에 추가한 뒤에 성공한 시도이다.
Aug 5 06:00:28 localhost sudo: snorri : user NOT in sudoers ; TTY=pts/1 ; PWD =/home/snorri ; USER=root ; COMMAND=/usr/bin/emacs /etc/resolv.conf
Aug 5 06:01:15 localhost su[15573]: (pam_unix) session opened for user root by snorri(uid=1000)
Aug 5 06:02:09 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/emacs /etc/resolv.conf
Aug 5 06:02:49 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
runas, su, 그리고 sudo[편집]
윈도는 runas라고 불리는 명령어를 가지고 있다. 이것의 기능은 비슷하나, runas도 아니고 UAC(사용자 계정 컨트롤)도 아닌 것이 sudo이다. - 그들은 권한을 추가하기 보다는 다른 사용자를 가장한다.
runas와 su:
- 권한이 부여된 유저가 그들 고유의 글을 이용하여 높은 권한의 프로세스를 실행하는 것을 허락치 않는다.
- 사용자의 프로파일과 객체의 소유권을 보존하지 않는다.
runas명령어는 sudo가 아니라 유닉스의 su와 더 동등하다. sudo가 su에 비해 더 우수한 이유는 su는 사용자의 고유 신분에 기반해 권한이동을 엑세스 하고, 가장 중요한 것은 sudo는 비밀번호 공유가 필요 없기 때문이다. runas나 su를 특권 계정을 엑세스하기 위해 사용하는 것은 관리자-가능 계정의 비밀번호를 유포하는것이 필요하기 때문에, sudo에는 없는 보안상의 약점을 가지고 있다.
주석[편집]
- ↑ Sudo License
- ↑ Manpage for sudo. 2007년 11월 4일에 확인.
- ↑ RootSudo - Community Ubuntu Documentation
- ↑ MacDevCenter.com - Top Ten Mac OS X Tips for Unix Geeks
- ↑ Miller, Todd C. A Brief History of Sudo. 2007년 3월 5일에 확인.
- ↑ Lilly, Paul. Microsoft has Patented "sudo." Yes, the Command. 2009년 11월 13일에 확인.
- ↑ http://blog.seattlepi.com/microsoft/2009/11/12/did-microsoft-just-sneakily-patent-an-open-source-tool/
- ↑ 맥 오에스 텐 역시 권한부여 서비스가 있다.
- ↑ Introduction to Authorization Services Programming Guide
읽을거리[편집]
- visudo,
/etc/sudoers
파일을 수정하여 사용하는 vi기반 프로그램.
바깥 고리[편집]
[숨기기] 유닉스 명령 줄 인터페이스 프로그램과 내부 명령어 | |
---|---|
파일 시스템 | cat · cd · chmod · chown · chgrp · cksum · cmp · cp · du · df · fsck · fuser · ln · ls · lsattr · lsof · mkdir · mount · mv · pwd · rm · rmdir · split · touch · umask |
프로세스 | at · chroot · cron · exit · kill · killall · nice · pgrep · pidof · pkill · ps · pstree · sleep · time · top · wait |
유저 환경 | env · finger · id · logname · mesg · passwd · su · sudo · uptime · w · wall · who · whoami · write |
텍스트 처리 | awk · Comm · cut · ed · ex · fmt · head · iconv · join · less · more · paste · sed · sort · strings · talk · tac · tail · tr · uniq · vi · wc · xargs |
셸 프로그램 | alias · basename · dirname · echo · expr · false · printf · test · true · unset |
네트워크 | inetd · host · netstat · nslookup · ping · rlogin · netcat · traceroute |
검색 | find · grep · locate · whereis · which |
그외 | apropos · banner · bc · cal · clear · date · dd · file · help · history · info · lp · lpr · man · pax · size · tee · tput · type · uname · whatis · yes |
출처 - http://ko.wikipedia.org/wiki/Sudo
리눅스 sudo 패스워드 없이 사용
- Linux sudo 패스워드 없이 사용
- sudo 패스워드 입력 없이 사용
- 패스워드 물어보지 않고 sudo 실행
방법
- /etc/sudoers 파일에 다음 형식으로 내용 추가
사용자명 ALL=NOPASSWD: ALL
- → 여기서
NOPASSWD:
를 빼면 sudo 실행시 자신의 패스워드를 입력해야만 함
사용자명 ALL=NOPASSWD: 명령어1, 명령어2
- → 지정한 명령어들만 sudo 사용가능
실습 1: 모든 명령어 사용가능
- 신규 계정 testuser1 생성
[root@localhost ~]# useradd testuser1 [root@localhost ~]# echo 'P@ssw0rd1' | passwd --stdin testuser1 Changing password for user testuser1. passwd: all authentication tokens updated successfully. [root@localhost ~]# cat /etc/passwd | grep testuser1 testuser1:x:500:500::/home/testuser1:/bin/bash
- testuser1 sudo 권한 추가(+NOPASSWD)
[root@localhost ~]# echo 'testuser1 ALL=NOPASSWD: ALL' >> /etc/sudoers [root@localhost ~]# cat /etc/sudoers | tail -2 #includedir /etc/sudoers.d testuser1 ALL=NOPASSWD: ALL
- testuser1 계정으로 sudo 실행
[root@localhost ~]# su - testuser1 [testuser1@localhost ~]$ reboot reboot: Need to be root [testuser1@localhost ~]$ sudo reboot The system is going down for reboot NOW!
- → 패스워드 입력 없이 sudo reboot 가능
실습 2: 지정한 명령어만 사용가능
[root@localhost ~]# visudo
- 변경 전
... (생략) #includedir /etc/sudoers.d testuser1 ALL=NOPASSWD: ALL
- 변경 후
... (생략) #includedir /etc/sudoers.d testuser1 ALL=NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
[root@localhost ~]# cat /etc/sudoers | tail -2 #includedir /etc/sudoers.d testuser1 ALL=NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
- testuser1 계정으로 sudo 실행 테스트
[root@localhost ~]# su - testuser1 [testuser1@localhost ~]$ sudo reboot [sudo] password for testuser1: Sorry, user testuser1 is not allowed to execute '/sbin/reboot' as root on localhost.localdomain.
- → sudo reboot에 대해서는 패스워드 물어본다.
- → 자신의 패스워드(P@ssw0rd1)를 정확히 입력해도 권한없어 실행불가
[testuser1@localhost ~]$ sudo useradd mallory [testuser1@localhost ~]$ cat /etc/passwd | grep mallory mallory:x:501:501::/home/mallory:/bin/bash
- → sudo useradd에 대해서는 패스워드 입력 없이 실행가능
같이 보기
출처 - http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_sudo_%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C_%EC%97%86%EC%9D%B4_%EC%82%AC%EC%9A%A9
'System > Linux' 카테고리의 다른 글
linux - cgroups (control groups) (0) | 2014.03.02 |
---|---|
linux - rc.local (0) | 2014.03.02 |
linux - /var (0) | 2014.02.23 |
linux - install problem wine in fedora 17 (0) | 2014.02.16 |
linux - grub2 config (0) | 2014.02.15 |