jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          在腳本里輸入root密碼[轉]

          Posted on 2010-12-28 17:02 幻海藍夢 閱讀(2638) 評論(0)  編輯  收藏 所屬分類: Linux版本管理
          轉自:
          http://bbs2.chinaunix.net/thread-1734534-1-1.html

          賴半仙注:
          其實最好的辦法還是,用root用戶編寫腳本,最后在設置腳本權限的時候給這個腳本加上suid,命令很簡單chmod 4755  ooxx.sh 或者是chmod +s也行
          設置了suid后,切換回普通用戶就可以執行這個腳本了,但切記有一點的是,腳本中調用root用戶特權命令一定要像下面那樣寫可執行文件的絕對路徑,不然普通用戶找不到。
          #!/bin/sh
          qqid=$(/sbin/pidof qq)
          echo "qq_pid=$qqid"

          http://dingwenming.javaeye.com/blog/629808

          suid/guid是什么?
          suid意味著如果A用戶對屬于他自己的 shell腳本文件設置了這種權限,那么其他用戶在執行這個腳本的時候就擁有了A用戶的權限。所以,如果 root用戶對某一腳本設置了這一權限的話則其他用戶執行該腳本的時候則擁有了root用戶權限。同理,guid意味著執行相應腳本的用戶則擁有了該文件 所屬用戶組中用戶的權限。

          舉個例子:要對數據庫系統進行備份需要有系統管理權限,那么我可以寫幾個腳本,并設置了它們的guid,這樣我指定的一些用戶只要執行這些腳本就能 夠完成相應的工作,而無須以數據庫管理員的身份登錄,以免不小心破壞了數據庫服務器。通過執行這些腳本,他們可以完成數據庫備份及其他管理任務,但是在這 些腳本運行結束之后,他們就又回復到他們作為普通用戶的權限。



          mysql 的select into 一個表的時候

          發現mysql -uroot -proot odb -e"select *f rom t into 'a.txt'"
          他總是保存文件在 /var/lib/mysql/odb下

          當前用戶是aa  目錄 在 /home/aa

          我寫了一些腳本
          現在在腳本里需要從aa用戶切換到 root用戶 之后強制刪除a.txt(在 /var/lib/mysql/odb下)

          在腳本里如何切換用戶到root  ,如何在腳本里輸入密碼 ??

          印象中是 sudo su -... 這樣的命令


          如何用expect實現在sudo的時候自動輸入密碼?
          http://bbs.chinaunix.net/thread-1733075-1-1.html

          如何實現sudo命令不需要密碼?
          http://bbs.chinaunix.net/thread-940013-1-1.html


          昨天一個網友問如何能夠將輸入密碼的工作在shell里面自動完成,研究了一下,發現這種交互式的工作,普通的shell實現不了,據說可以借助 expect來搞定,所以初步學習了一下expect,成果和大家分享一下:

          應用一:
          實現從普通用戶“test”切換到root用戶,自動輸入root的密碼,不用在終端提示符下執行密碼輸入操作。
          步驟:
          (1)vi autosu.sh
          (2)#!    /usr/bin/expect      -f         //指定expect工具的路徑,如果不清楚具體路徑,可以用"which expect"命令來查看。
          spawn    su   -                    //  在expect 中用"spawn"關鍵字來調用命令“su - ”
          expect     ":"                        //在執行了su   -  命令之后,提示輸入密碼的提示符。例如你在執行了su - 命令之后,終端里面會出現提示“口令:”,那么你就可以在這里寫expect    ":",或者expect    -exact    "口令:"
          send     "rootpasswd\r"    //這里expect用send將你的root密碼自動輸入到上面的提示符之后。
          interact                            //操作完成。

          注意:這里強調一下執行腳本時要注意的地方,不能按照習慣來用sh ***.sh來這行expect的程序,會提示找不到命令,因為expect用的不是bash所以會報錯。執行的時候直接./***.sh就可以了。~切 記!





          應用二:
          從普通用戶切換到root之后,執行“ls”操作,調用執行aaa.sh,返回執行結果,間隔10S。
          #/usr/bin/expect    -f
          spawn  su  -                        //  在expect 中用"spawn"關鍵字來調用命令“su - ”
          expect  ":"                           //在執行了su   -  命令之后,提示輸入密碼的提示符。例如你在執行了su - 命令之后,終端里面會出現提示“口令:”,那么你就可以在這里寫expect    ":",或者expect    -exact    "口令:"
          send    "rootpasswd\r"      //這里expect用send將你的root密碼自動輸入到上面的提示符之后。
          expect   "#"                      //當遇到提示符以#結尾時,即為root權限時;
          send      "ls\r"                 //expect  用spend方法調用ls 命令,并且回車(“\r”)
          expect   "#"
          send   "sh  aaa.sh\r"         //調用sh aaa.sh,即執行一個腳本文件aaa.sh。
          expect    "#"
          send   "echo  $?\r"
          sleep 10
          interact

          http://download.chinaunix.net/download/0003000/2845.shtml
          主站蜘蛛池模板: 诸暨市| 唐山市| 石台县| 乐山市| 来安县| 卢湾区| 耒阳市| 从江县| 拉萨市| 股票| 肇庆市| 双桥区| 兖州市| 额尔古纳市| 应用必备| 无棣县| 万荣县| 汶川县| 定西市| 林周县| 泾阳县| 琼海市| 临澧县| 中阳县| 江北区| 伽师县| 浑源县| 海伦市| 罗源县| 永州市| 岐山县| 吕梁市| 仙游县| 宁海县| 武汉市| 永州市| 炉霍县| 当阳市| 鸡西市| 昭平县| 佛教|