Capistranoï¼ã«ãã¹ãã©ã¼ãï¼ã§ sudo ã使ããªãåé¡
CapistranoのGetting Startedãè¡ãªã£ã¦ãã¦ãsudo ãå©ç¨ã§ããªãåé¡ã«ç´é¢ãã¾ããã
å®è¡ç°å¢
Capisranoãå®è¡ãããµã¼ã
OS | CentOS6 | ||
OpenSSH | OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 | ||
Ruby | ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux] | ||
rubygems | 1.3.7 | ||
Capistrano | 2.9.0 | ||
net-scp | 1.0.4 | ||
net-sftp | 2.0.5 | ||
net-ssh | 2.2.1 | ||
net-ssh-gateway | 1.1.0 | ||
highline | 1.6.2 |
ãããã¤å¯¾è±¡ãµã¼ãï¼IP ã 192.168.100.200 ã¨ãã¾ããï¼
OS | CentOS6 | ||
OpenSSH | OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 | ||
Ruby | ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux] | ||
rubygems | 1.3.7 |
åç¾
% cap invoke COMMAND="df -h" HOSTS[email protected] SUDO=1 * executing `invoke' * executing "sudo -p 'sudo password: ' df -h" servers: ["192.168.100.200"] [[email protected]] executing command *** [err :: [email protected]] sudo *** [err :: [email protected]] : *** [err :: [email protected]] no tty present and no askpass program specified *** [err :: [email protected]] command finished in 53ms failed: "sh -c 'sudo -p '\\''sudo password: '\\'' df -h'" on [email protected]
SUDO=1 ãå¤ãã°å®è¡å¯è½ã§ãã
% cap invoke COMMAND="df -h" HOSTS[email protected] * executing `invoke' * executing "df -h" servers: ["192.168.100.200"] [[email protected]] executing command ** [out :: [email protected]] Filesystem Size Used Avail Use% ãã¦ã³ãä½ç½® ** [out :: [email protected]] /dev/mapper/vg_testbudgearycontrol-lv_root ** [out :: [email protected]] 50G 3.3G 44G 8% / ** [out :: [email protected]] tmpfs 2.0G 0 2.0G 0% /dev/shm ** [out :: [email protected]] /dev/sda1 485M 33M 427M 8% /boot ** [out :: [email protected]] /dev/mapper/vg_testbudgearycontrol-lv_home ** [out :: [email protected]] 92G 1.5G 86G 2% /home command finished in 48ms
ã¤ã¾ããä¸è¨ãã§ããªãã¨ãããã¨ãä»®æ³ç«¯æ«ãå²ãå½ã¦ãããªãããã ã
% ssh [email protected] 'sudo df -h' sudo: no tty present and no askpass program specified
è§£æ±ºæ¹æ³1 : ä»®æ³ç«¯æ«ãå²ãå½ã¦ããã¦ããªãã®ã§ ssh -t ãã¤ãã
æ®éã®shell
ssh ã® -t ãªãã·ã§ã³ã¯å¼·å¶çã«ä»®æ³ç«¯æ«ãå²ãå½ã¦ããä¸è¨ã¯ãå®è¡çµæãsudo ãã¤ãã¦å®è¡ãå¯è½ã
ssh
% ssh -t [email protected] 'sudo df -h' [sudo] password for hoge: Sorry, try again. [sudo] password for hoge: Filesystem Size Used Avail Use% ãã¦ã³ãä½ç½® /dev/mapper/vg_testbudgearycontrol-lv_root 50G 3.3G 44G 8% / tmpfs 2.0G 0 2.0G 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/mapper/vg_testbudgearycontrol-lv_home 92G 1.5G 86G 2% /home Connection to 192.168.100.200 closed.
capistrano
ã¾ããdefault_run_options[:pty]=true ãæ¸ããã capfile ãç¨æãã¾ãã
default_run_options[:pty]=true
capfileãæå®ãã¦å®è¡ãã¾ãã
% cap -f capfile invoke COMMAND="df -h" [email protected] SUDO=1 * executing `invoke' * executing "sudo -p 'sudo password: ' df -h" servers: ["192.168.100.200"] [[email protected]] executing command ** [out :: [email protected]] Filesystem Size Used Avail Use% ãã¦ã³ãä½ç½® ** [out :: [email protected]] /dev/mapper/vg_testbudgearycontrol-lv_root ** [out :: [email protected]] 50G 3.4G 44G 8% / ** [out :: [email protected]] tmpfs 2.0G 0 2.0G 0% /dev/shm ** [out :: [email protected]] /dev/sda1 485M 33M 427M 8% /boot ** [out :: [email protected]] /dev/mapper/vg_testbudgearycontrol-lv_home ** [out :: [email protected]] 92G 1.9G 85G 3% /home command finished in 70ms
è§£æ±ºæ¹æ³2 : Defaults visiblepw
sshd ã« Defaults visiblepw ãè¨å®ããã° ä»®æ³ç«¯æ«ãªãã§ã sudo ã許å¯ããã¾ãããããã¤ãããå´ã®ãµã¼ãã§ visudo ãã¦ãä¸è¨ã®ããã«å ãã¦ãssh ãåèµ·åãã¾ãã
# # Disable "ssh hostname sudo <cmd>", because it will show the password in clear. # You have to run "ssh -t hostname sudo <cmd>". # # Defaults requiretty Defaults visiblepw
ä¸è¨ã®ã¨ããã« ãã¹ã¯ã¼ããè¦ããã®ã§ ssh -t 使ã£ã¦ãã ããã¨æ¸ãã¦ããã¾ããã©ãã»ã»ã»ã
ssh
% ssh [email protected] 'sudo df -h' [sudo] password for hoge: xxxxxxx ##âãã¹ã¯ã¼ã丸ã¿ã Filesystem Size Used Avail Use% ãã¦ã³ãä½ç½® /dev/mapper/vg_testbudgearycontrol-lv_root 50G 3.3G 44G 8% / tmpfs 2.0G 0 2.0G 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/mapper/vg_testbudgearycontrol-lv_home 92G 1.5G 86G 2% /home
capistrano
Capistranoã®å ´åã¯ããã¹ã¯ã¼ãã¯è¦ãã¾ãããã»ã»ã
% cap invoke COMMAND="df -h" HOSTS[email protected] SUDO=1 * executing `invoke' * executing "sudo -p 'sudo password: ' df -h" servers: ["192.168.100.200"] [[email protected]] executing command Password: ** [out :: [email protected]] Filesystem Size Used Avail Use% ãã¦ã³ãä½ç½® ** [out :: [email protected]] /dev/mapper/vg_testbudgearycontrol-lv_root ** [out :: [email protected]] 50G 3.3G 44G 8% / ** [out :: [email protected]] tmpfs 2.0G 0 2.0G 0% /dev/shm ** [out :: [email protected]] /dev/sda1 485M 33M 427M 8% /boot ** [out :: [email protected]] /dev/mapper/vg_testbudgearycontrol-lv_home ** [out :: [email protected]] 92G 1.5G 86G 2% /home command finished in 4008ms
ãã¾ã1 : sudoã§ç¹å®ã®ã³ãã³ãããã¹ã¯ã¼ããªãã§å®è¡ã§ããããã«ãã
ä¾ãã°ãvisudo ã§ä¸è¨ã®ããã«è¨å®ãã¦ãsshd ã restart ã¾ãã
%wheel ALL=(ALL) NOPASSWD: /bin/df
ä¸è¨ã ã¨ã/bin/df ã³ãã³ã㯠wheelã°ã«ã¼ãã¦ã¼ã¶ã«æå±ãã¦ããã° ãã¹ã¯ã¼ããªãã§ sudo å®è¡ã§ãã¾ããsudo ã§å®è¡ãããã³ãã³ããããããããå ´åã¯ä¸åãã§ããã
ãã¾ã2 : sudo æã® path
visudo ã§è¨å®ãè¦ã㨠Defaults secure_path ã¨ããã®ãããã¾ããããã¯ãsudo æã«ä¸è¨ã®ãã¹ãè¨å®ããã¾ãããä¾ãã°ãgem ã³ãã³ãã /usr/local/bin ã«ãã£ãå ´åã¯ãsudo æã« gem ã³ãã³ãã使ããªãã¨ãããã¨ã«ãªã£ã¦ãã¾ãã¾ãããã®ãããDefault secure_pathã« pathãå ãããã¨ã§å¯¾å¿ãã¾ãã
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
â
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin