shell腳本sudo
❶ shell腳本中怎麼實現:暫停,按鍵繼續
1、其中 yum install tomcat 執行過程中需要用鍵盤輸入兩次字元」y」以便確認選項,Dockerfile 腳本命令如下。

❷ shell執行sudo命令時,自動輸入密碼
輸入該命令後還需要用戶輸入sudo密碼
自動輸入密碼方式1:
自動輸入密碼方式2:
其中123就是用戶密碼。
比如可以在shell腳本中輸入用戶密碼,就可以自動執行sudo相關命令了。
❸ jenkins執行shell腳本,使用scp免密傳輸失敗問題
問題:Jenkins默認使用jenkins用戶去啟動,jenkins用戶並沒有許可權去執行ssh免密登陸,所以導致執行失敗
註:配置linux雙機互信後,jenkins也需要將公鑰加入到目標機器,才能達到shell腳本中scp免密傳輸的條件
一、驗證登錄
1、切換jenkins用戶
# su jenkins
切換後還是root賬號
2、分析解決:
2.1 應該是/etc/passwd文件中的/bin/bash被yum安裝的時候變成了/bin/false
# vim /etc/passwd
jenkins:x:990:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false( bash)
將bin/false改為/bin/bash
再次執行切換
# su jenkins
bash-4.1$
2.2 結果命令提示符的用戶名不是jenkins而變成了 bash-4.1$,原因是在安裝jenkins時,jenkins只是創建了jenkins用戶,並沒有為其創建home目錄
# vim ~/.bash_profile
在文件的最後添加 export PS1='[\u@\h \W]\$',執行文件使修改項起作用
# source ~/.bash_profile
驗證是否成功 # su jenkins
二、為jenkins系統用戶開啟免密登錄
1、在Jenkins的使用過程中,如果在腳本中使用到sudo命令,有可能出現如下所示的錯誤:
sudo: no tty present and no askpass program specified
這是因為Jenkins伺服器在執行sudo命令時的上下文有誤,導致這個命令執行的異常。
2.1 解決方法:
# sudo visudo
在文件末尾加上jenkins ALL=(ALL) NOPASSWD: ALL
2.2 重啟jenkins,測試
# su jenkins
# sudo su -s /bin/bash jenkins
測試成功,jenkins免密登錄成功。
PS:如果誤操作修改了/etc/sudoers的許可權來修改上述文件,則會導致如下所示的錯誤:
sudo :/etc/sudoers is world writable
sudo : no valid sudoers source found, quitting
sudo : unable to initialize poling plugin
這是Linux的一種保護機制。因此,如果出現上述誤操作,則需要執行如下命令來解決:
$ pkexec chmod 0440 /etc/sudoers
三、jenkins用戶開通ssh免密登錄
1、安裝ssh
# yum install ssh
1.1 將ssh服務設置開機自啟
# sudo systemctl enable sshd
1.2 啟動ssh
# sudo systemctl start sshd
2、生成jenkins用戶秘鑰證書
# su jenkins
# ssh-keygen -t rsa
2.1 查看是否生成成功
# /var/lib/jenkins/.ssh/
# ls
3、將公鑰傳輸到目標linux系統
ssh--id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目標ip:path
------------------------------------------------------------------------------------------
參考:https://blog.csdn.net/weixin_43840640/article/details/90371472
❹ 怎樣通過shell腳本判斷一個用戶是否具有sudo許可權
可是使用id命令來判斷,supper許可權的用戶id貌似為0,那麼你就判斷一下子這個用戶的id是否為0
id -u xxx
❺ ubuntu shell腳本的指令問題
如果說是 declare 命令不能用,那原因是由於你用的不是bash.如果是其他命令(你最好列出來具體的命令名字),要麼是由於你沒有使用和《鳥哥》里所使用的同樣的shell,要麼就是你的系統里沒有安裝對應的軟體。
比方說,有的命令是shell自帶的命令,如declare, let 等,如果你發現不能用,那是由於使用的shell 不同或者版本不同。
有的命令不是shell自帶命令,而是系統中裝的一些工具軟體, 比如 find, tar, grep 等等,這種類型的命令數量遠大於shell自帶命令,在ubuntu默認安裝中,很可能有一些沒有安裝,需要你自己去裝。
所以具體你缺什麼命令,不一定是shell的問題,也可能是你沒有安裝對應軟體包。
最後,建議你還是用bash,畢竟是最流行的shell,大多數人,大多數教程,都講得是它,所以不建議你初學時用其他shell,等對linux shell有一定了解後,再換到自己喜歡用的shell會比較合適。
❻ 在Ubuntu下編寫shell腳本讀取文件
需求功能:
創建測試用例文件 text :
創建shell腳本:
運行結果:
利用 awk 'END{print NR}' [文件名] 來輸出行數:
在shell腳本中添加該功能:
運行結果:
上面的shell文件只是把文件名寫死在腳本中,並沒有實際使用意義,所以需要編寫一個指令來指定需要讀取的文件,就像 vim [文件名] 一樣
「$1」 代表第1個參數,也就是在 read 之後緊跟的參數,將其作為文件名傳入:
將腳本移動至環境變數對應的目錄中:(可以自己更改 /bin/xxx 來決定運行命令的名稱,但注意不能重復)
sudo mv read /bin/read
然後添加運行許可權:
sudo chmod 755 /bin/read
打開終端的目錄可以是任何位置,通過以下命令即可運行shell腳本:
sudo read [文件路徑]
同理,我們還可以自己為復雜指令編寫shell腳本,來提高命令的使用效率,例如開關ss服務,打開銳捷客戶端認證等等。
❼ shell編程中,如何將編寫的腳本把其腳本名當做shell命令來使用
首先確保你的shell腳本正確,且有執行許可權。
然後sudo cp 目錄/你的腳本文件名 /bin/你的腳本文件名
然後就可以了。
直接用
你的腳本文件名當作shell命令了。
看我的例子
sudocp/home/blue/mvmv.sh/bin/mvmv.sh
mvmv
然後我的桌面上的stop文件就變成了STOP了。(因為我的shell腳本如下)
#!/bin/bash
cd/home/blue/Desktop/
mvstopSTOP
說明這種方法成功。
❽ 編寫的shell程序運行前必須賦予該腳本文件什麼許可權
程序要運行,就必須有執行許可權。用代碼表示為:chmod +x script.sh
有三種許可權更改方式:chmod/acl/sudo
前兩者用來更改文件許可權,sudo用來更改應用程序或者是命令的執行許可權
chmod的局限是無法實現多種許可權分配(用戶群體只有三種),面對多許可權時需要用ACL進行設置
第一種:Chmod
chmod (agou)(+-)(rwx) filename
agou 表示文件許可權更改影響的范圍,分別代表all, group, others, user
+-表示增加或者刪除許可權
rwx表示具體的許可權類型
chmod a+x test.txt 表示給test.txt的所有使用者增加執行許可權
chmod a-x,a-w test.txt 表示去除所有人執行和更改test.txt的許可權
chmod XXX filename
三類用戶一起設置,第一個X代表所有者,第二個X代表所屬組,第三個X代表其他
r(4) w(2) x(1): chmod 755 test.txt 給test.txt的owner設置rwx的許可權,給其他所有用戶設置rx許可權因為要計算每一種用戶的許可權,多用於批量處理許可權。對用戶單獨設置許可權多用英文,而非數字
許可權細化的問題,chmod最多隻有三個許可權組,當有多個用戶,並且每個用戶的許可權都不一樣時,chmod有局限性。
第二種:ACL(setfacl/getfacl)
文件和文件夾的許可權:
如果有多個用戶組,許可權設置是很復雜的事情,需要仔細規劃(ACL和Chmod混合使用容易產生一些許可權問題,建議單獨使用)
文件夾的讀許可權:可以列出目錄下內容
文件夾執行許可權:可以進入到文件夾中,執行切換目錄等操作
文件夾的寫許可權:可以在文件夾中增刪文件
用戶對某個文件有了rwx許可權,不代表用戶有權刪除該文件,只代表對文件內容有了刪除許可權,要能對文件級別進行操作,需要設置相應的文件夾的w許可權。
getfacl filename/filedirectory
查看文件/文件夾 許可權:結果會展示user,group和other的整體許可權,以及特殊用戶的許可權
setfacl -m u:username:rwx filename
給某個用戶添加對某個文件或者文件夾的特殊許可權
給普通用戶添加完相應許可權以後,root也會有相應的許可權(理論上root擁有最多的許可權)
setfacl -x u:username filename
刪除用戶對某個文件或者是文件夾的特殊許可權
第三種:SUDO
不同於chmod/acl 設置某個文件的許可權,sudo主要是為非root用戶增加系統的處理和執行許可權。比如只有root有useradd許可權,通過sudo,可以為普通用戶增加useradd許可權。
為普通用戶增加許可權有兩種方式:帶密碼驗證和不帶密碼驗證,並且可以指定sudo可運行的機器。
使用sudo有兩個步驟:1. visudo編輯許可權 2. 普通用戶在使用命令前添加sudo
創建無密碼sudo(執行腳本時通常採用無密碼sudo)
編輯visudo: 運行visudo, 採用Vim編輯器編輯添加 sr localhost=NOPASSWD:/usr/sbin/useradd,給用戶sr添加「添加用戶」的超級許可權
切換到sr用戶
sudo useradd testadd,在sr模式下添加新的用戶
創建有密碼sudo(可以確保有密碼用戶才使用此命令)
編輯visudo: 運行visudo, 採用Vim編輯器編輯添加 sr localhost=/usr/sbin/useradd,給用戶sr添加「添加用戶」的超級許可權
切換到sr用戶
sudo useradd testadd,系統會彈出命令提示,驗證完命令以後sr可以成功添加用戶
