您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
linux sh -c是什麽?
发布时间:2022-02-12 22:07:47编辑:雪饮阅读()
首先sh -c是/bin/sh -c的簡寫
正常情況下如下命令能正常執行
echo “信息” >> test.csv
但是如果此時test.csv文件屬於root所有(chown root.root test.csv),且沒有給其它用戶或用戶組開放寫入權限
則此時若是非root用戶是無法寫入到該文件中的。
除非像是這樣:
sudo echo “hahah” >> test.csv
這樣就使用了root權限,但真的是這樣就可以嗎?其實這樣會返回
-bash: test.asc: Permission denied
除非你現在直接就是root身份,那麽這裏明明sudo了,爲什麽還是不行呢?
因爲這裏sudo只對其後面第一個命令授予root權限了,而像是">>"也是bash命令,該bash命令卻沒有得到root授權。
而/bin/sh -c可以將其後面的字符串作爲一個整個命令來處理。
所以像是這樣執行就ok了:
sudo /bin/sh -c 'echo "hahah" >> test.asc'
延伸思考:
echo “信息” >> test.csv相當於 /bin/sh echo “信息” >> test.csv,那麽
sudo /bin/sh -c 'echo "hahah" >> test.asc'這裏會不會只是對 /bin/sh授權了,的卻是的,但是'echo "hahah" >> test.asc'這個只是一個字符串,傳入到/bin/sh(通過-c),所以這裏看起來並不矛盾
延申思考是個人理解。
延申思考2:
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
sudo與so的區別:
su是申请切换root用户,所以交互時输入的是root用户密码
而sudo su是当前用户暂时申请root权限,所以交互時输入的是當前用户密码
关键字词:linux,sh,c
相关文章
- linux 隨機數shuf命令詳解
- 解決centos7二進制方式安裝docker啓動dockerd報錯中包
- centos7二进制安装docker及docker hello world项目运
- GatewayWorker-Linux系统快速开始(从一个精简的聊天dem
- webman-查詢構造器-orWhereColumn 的用法
- webman-查詢構造器-whereColumn 的用法
- webman-查詢構造器-join語句-交叉連接 cross join
- webman-配置數據庫-postgresql(9.4)允許遠程鏈接(linu
- lodash神奇妙用,實現前端數據分組按字段分組 js分組
- webman-控制器-控制器钩子 beforeAction() afterActio