1. 程式人生 > >普通使用者sudo echo許可權依舊寫入不了檔案

普通使用者sudo echo許可權依舊寫入不了檔案

$sudo echo ‘1′ > ip_forward
bash: ip_forward: Permission denied

而以root身份就可以?

# echo ‘1′ > ip_forward

一開始沒有看出原因來,後來仔細一琢磨,其實原因很簡單,shell對‘>’解釋干擾了對這個命令含義的判斷。我們本想應該是這樣的意思:讓sudo執行後面的這些“echo ‘1′ > ip_forward”,而實際上是:sudo echo ‘1′,執行到這裡,shell再把它的執行結果重定向到ip_forward裡去!當然是無許可權,因為流本身不會隨echo那樣被sudo“感染”上suid許可權!

解決方法是什麼?也很簡單,就讓後面那一串東西擱一起執行:

$sudo sh -c ‘echo 1 > ip_forward’

等等,還有沒有更好的解決方法?有!劉洋同學認真思考了一下,覺得應該有這麼個東西XX: echo ‘1′ | sudo XX ip_forward。我擦亮眼睛一看,我靠,這不就是tee(1)麼!!沒錯,另一種解決方法就是:

$echo ‘1′ | sudo tee ip_forward

或者:

$echo ‘1′ | sudo tee ip_forward | cat > /dev/null

劉洋問tee(1)是不是和tea有關係?不是!tee其實取自大寫字母T的發音,而T不正是最後一個命令中流的流向麼?!多麼形象的名字啊!

#!/bin/bash
#for i in {77..77}
#do
        ip=10.162.148.77
        awk -v awk_ip="$ip" '{if($1==awk_ip) print $2}' ip > /tmp/ip.tmp
        for line in `cat /tmp/ip.tmp`
        do
                #ssh [email protected]$ip "echo unicomlabs | sudo -S cp /var/spool/cron/root /var/spool/cron/root.bak"
                #c=$(ssh

[email protected]$ip "echo unicomlabs | sudo -S echo \"59 23 * * * find /home/unicomlabs/${line}_bak5/done/datafiles -type f -mtime +15 -exec rm {} \;
                #ssh -t [email protected]$ip 'su - root -c "cp /var/spool/cron/root /var/spool/cron/root.bak"'
                #ssh -t [email protected]$ip 'su - root -c "rm -f /var/spool/cron/root"'
 sshpass -p unicomlabs_2017 ssh [email protected]$ip 'echo unicomlabs_2017|sudo -S sh -c "echo \"59 23 * * * echo unicomlabs_2017|sudo -S find /data/unicomlabs/'${line}'_bak5/done/datafiles -type f -mtime +15 -exec rm {} \;
59 23 * * * echo unicomlabs_2017|sudo -S find /data/unicomlabs/'${line}'_bak5/done/bads -type f -mtime +15 -exec rm {} \;
59 23 * * * echo unicomlabs_2017|sudo -S find /data/unicomlabs/'${line}'_bak5/done/logs -type f -mtime +15 -exec rm {} \;
59 23 * * * echo unicomlabs_2017|sudo -S find /data/unicomlabs/'${line}'_bak5/log -type f -mtime +30 -exec rm {} \;
59 23 * * * echo unicomlabs_2017|sudo -S find /data/unicomlabs/'${line}'_bak5/log_ast -type f -mtime +30 -exec rm {} \;
10 0 1 * * echo unicomlabs_2017|sudo -S ls -rt /data/unicomlabs/'${line}'/run/*.out | tail -1 | xargs -i cp /dev/null {}
10 0 1 * * echo unicomlabs_2017|sudo -S ls -rt /data/unicomlabs/'${line}'_ast/run/*.out | tail -1 | xargs -i cp /dev/null {}
10 0 * * 1 echo unicomlabs_2017|sudo -S find /data/'${line}'_bak -name "*.error" | xargs rm -f {}\" >>/var/spool/cron/root"'
                echo $ip '|' $line:
                #echo $c
                echo "================================================================="
        done
#done

分類:

問題:

普通使用者echo寫入檔案,提示許可權不夠。

指令碼內容為:

echo "$pjname,$versioncode">>$nginxroot/$pjname/version.txt

增加 sudo後依然提示許可權不夠

解決方法:

sudo tee version.txt <<< "要插入內容" 

相關推薦

普通使用者sudo echo許可權依舊寫入檔案

$sudo echo ‘1′ > ip_forward bash: ip_forward: Permission denied 而以root身份就可以? # echo ‘1′ > ip_forward 一開始沒有看出原因來,後來仔細一琢磨,其實原因很簡單,shell對‘>’解釋干擾了對這個

賦予普通使用者sudo執行許可權

切換到root使用者vi /etc/sudoers找到## Allow root to run any commands anywhereroot    ALL=(ALL)       ALLpace

解決Mac下使用root 許可權依舊無法讀寫檔案的問題

當時在學習selenium的時候,需要配合使用chromedriver 和phantomjs 進行瀏覽器的自動化測試..  chromedriver下載結束後。無法移動到/user/bin下面 會提示許可權不夠,可明明是root,使用者,居然也許可權不夠??? 提示Operation not

作為root使用者,用chmod為什麼改檔案許可權

chattr可以防止關鍵檔案被修改 在linux下,有些配置檔案是不允許任何人包括root修改的,為了防止被誤刪除或修改, 可以設定該檔案的"不可修改位(immutable)"。 例如: chattr +i /etc/fstab 如果需要修改檔案則: chatt

對於EDIUS打開檔案的解決辦法

我想大夥應該都知道,不是所有的視訊格式在EDIUS中都能開啟的。但是我們可以利用其它的軟體,把我們需要的視訊轉化成EDIUS支援的視訊格式就可以了。然而好多初學EDIUS的小夥伴都是不瞭解的,發現視訊打不開後就會非常的煩躁,好多小夥伴也會來問小編該如何解決。 因此,小編決定

svn重新命名提交檔案的解決方法

重新命名之後svn會預設你改名後的檔案是新增檔案,然後提交的時候會出現問題,提交不上去。1.兩個檔案一塊提交,這樣就可以正常提交了(必須要同時)2.去svn上刪除原始檔,本地備份還原一下,然後新建一個檔案,把備份的內容拷貝進去就可以提交成功啦。(方法不多,是我自己實驗成功的,

sudo普通使用者使用root許可權執行命令

修改/etc/sudoers 裡面有一行 ## Allow root to run any commands anywhere  root    ALL=(ALL)       ALL 用cat /etc/sudoers命令檢視

Linux環境中使用“sudo echo....”提示許可權不夠的解決辦法

問題描述:            在使用Ubuntu系統的時候,遇到這樣的一個問題:我使用普通使用者登入系統,然後執行sudo echo "hello" >> /etc/rc.local命令的時候,提示許可權不夠。       雖然知道echo命令是屬於root

centos7系列-給普通使用者sudo許可權

對於linux使用者來講,普通使用者的許可權是有一定限制的,所以在有些操作的時候,是需要sudo許可權的,那麼如何在linux下賦予普通使用者sudo許可權呢?此處將講解一下方法。 在login我們的系統後,如果是普通使用者,我們可以使用su - root來切換到root使

SUSE 11 SP2下給普通使用者加上sudo命令許可權

第一次寫部落格. 怎麼給suse11下的普通使用者執行sudo而不需要root密碼. linux給使用者新增sudo許可權: 按照修改/etc/sudoers檔案方法執行了,但是使用者還是需要root密碼才能執行sudo. 於是乎使用了suse下的yast介面配置

授權普通使用者 sudo -i 使其具有root的許可權

將此程式碼片更名為  adduser.sh 放在linux的 /root 目錄下 #!/bin/sh echo 'ssh-key:' $1 echo 'username:' $2 useradd -m $2 usermod -G wheel $2 passwd -d $2

Linux 賦予普通使用者執行特定許可權sudo

sudo: switch user do something 可以讓 某個user(WHO)以特定使用者的身份許可權(HOW),在什麼機器上(Where),執行什麼命令(What) 配置檔案: /etc/sudoers 為保障語法的正確性,不建議vim直接編輯該配置檔案;

修改Ubuntu下的/usr目錄許可權,導致能使用sudo命令的修復

剛開始執行sudo時,報了下面這個錯誤 sudo: must be setuid root,於是上網找解決方法,搜尋出來的都是這樣解決的     ls -l  /usr/bin/sudochown root:root /usr/bin/sudochmod 4755 /u

使用sudo來賦予普通使用者root的許可權

常規來說,root的許可權是不可隨意分割的,所以很難既給某個使用者完成一件任務的權力,比如說備份,而又不給這個人自由執行系統的權力。如果把root給多個人去使用,顯然是個不安全的做法。 針對這個問題,現在廣泛的採用SUDO的方式來解決。 所謂的SUDO就是以普通使用者的身份登

linux中,一個目錄的許可權是777,普通使用者為什麼刪除它呢?

unix 下檔案的許可權只控制對檔案內容的訪問,對檔案本身的控制是由父目錄的許可權決定的。當然linux也一樣 簡單來說就是,目錄許可權顯示的使 “目錄內檔案內容的”的操作許可權,而不是檔案目錄的操作許可權。 比方說,

普通使用者echo許可權不夠問題

問題: 普通使用者echo寫入檔案,提示許可權不夠。 指令碼內容為: echo "$pjname,$versioncode">>$nginxroot/$pjname/version.txt 增加 sudo後依然提示許可權不夠 解決方法: sudo tee ve

Linux下如何讓普通使用者具備sudo執行許可權

我這裡的普通使用者是hadoop第一步:切換到root下:su,並輸入密碼第二步:輸入  vi /etc/sudoers,加入一行即可找到  root   ALL=(ALL)   ALL加入一行即可:將該普通使用者加入許可權:hadoop   ALL=(ALL)    ALL

sudo cd為什麽能夠執行?

但是 權限 參考 bsp docke ubun exit shell foo 1.問題描述 我想要cd到/etc/docker,但是它給我一個權限不夠的錯誤,然後,我想到使用sudo cd /etc/docker時,它告訴我sudo: cd:找不到命令。 2.問題分析

Linux中新建用戶用sudo命令問題:rootr is not in the sudoers file.This incident will be reported解決

c-c++ 進入 去掉註釋 去掉 sudo命令 wheel gpasswd sdn 通用 參考:https://blog.csdn.net/lichangzai/article/details/39501025 如果執行sudo命令的用戶沒有執行sudo的權限,執行su

ubuntu 系統adduser 的時候新增sudo許可權

ubuntu下直接執行sudo命令,會提示類似:  xxxis not in the sudoers file.  This incident will be reported.  這裡,xxx是使用者名稱稱,然後導致無法執行sudo命令,這時候