亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置

發布時間:2020-08-03 13:57:13 來源:網絡 閱讀:1084 作者:以安0622 欄目:開發技術

業務需求:收集項目需求信息,如操作系統日志、項目工程及項目工程日志、數據庫信息和數據。

環境:CentOS6.7   x86_64

程序流程:程序MyInfoCollector是一個信息采集程序,由另外一個進程MyMonitor守護執行,MyInfoCollector程序收集信息不定,為避免后期新需求導致更改代碼,所以加入配置文件MyInfoCollector.xml,該配置文件配置執行腳本路徑,程序運行自動調用腳本實現需求。


問題:My.sh:收集項目日志(MyInfoCollector.log),結果:成功!

System.sh:收集系統日志及數據庫日志(/var/log/messages*/var/log/mysqld.log),結果:無效。

用戶名:adz,普通用戶,adz用戶組,不考慮將adz賦予更高的權限。

 

思考:權限問題 (后面引發免密問題、切換root用戶問題、自啟終端問題、系統日志加入讀權限問題,sudo免加載終端問題)。

 

解決流程:

System.sh

#!/bin/bash

cp -fp /var/log/messages* ./
zip -r -j -p -m -8 System.zip ./messages*


執行:

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置



【思路1:權限問題,加入sudo來處理】


System_root.sh

#!/bin/bash

sudo cp -fp /var/log/messages* ./
sudo zip -r -j -p -m -8 System.zip ./messages*


執行:

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置


需要人機交互來輸入密碼,由于腳本是程序帶起,需要跳過輸入密碼的交互階段,需要解決免密問題

設置用戶部分工具sudo免密功能

切換為root,執行vim /etc/sudoers或者visudo,加入行(箭頭處)

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置


執行:

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置



成功!!!

此時,應該可以解決問題了。

悲劇的是,程序帶起時仍然沒有看到壓縮包!!??

 

【思路2:直接切換root用戶】

換個思路,切換root賬戶來處理

使用spawn expect轉換root用戶

需要安裝tcl+expect,安裝光盤中有

安裝:rpm -ivh tcl-8.5.7-6.el6.x86_64.rpm expect-5.44.1.15-5.el6_4.x86_64.rpm


SwitchRoot.exp

#!/usr/bin/expect

MyPassword=123456

spawn su root

expect "password:"

send "${MyPassword}\r"

send "./System.sh"

interact

System.sh

#!/bin/bash

cp -fp /var/log/messages* ./
zip -r -j -p -m -8 System.zip ./messages*



該腳本手動執行沒有問題,但是程序帶起時仍然無壓縮包生成。與上個思路最后的結果相同,不再附帶圖片

 

【思路3:自啟動終端】

既然手動執行可以,程序帶起有問題,難道是程序執行環境有問題?

不多說,手動執行MyInfoCollector : cat /proc/pid/environ > environ_self

MyMonitor帶起執行MyInfoCollector : cat proc/pid/environ > environ_auto

由于東西太多,暫不貼圖了,發現手動執行時有gnome相關環境,帶起執行時沒有這個gnome環境,自建一個shell來執行腳本?開干!

設置啟動終端功能

testShell.sh

#!/bin/bash

gnome-terminal -e 'bash -c "bash System_root.sh"'

System_root.sh

#!/bin/bash

sudo cp -fp /var/log/messages* ./
sudo zip -r -j -p -m -8 System.zip ./messages*

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置


手動執行沒問題! 自啟動直接顯示錯誤了,(此處后期加入了錯誤日志輸出,可以看到gnome-terminal執行結果日志為“無法處理參數:無法打開顯示,返回值為1”)

此路不通!

【思路4:無權限文件加讀權限】

系統默認情況下的messages*只有root用戶有讀寫權限,其他用戶沒有讀權限,需要設置一下,起初以為只要將/var/log文件夾設置為可讀即可,然而并不然,其本來就可讀。那就只能設置具體的日志權限了。

系統初始文件情況:

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置


設置文件日志可讀

Root賬戶打開/etc/logrotate.d/syslog:將紅色箭頭部分插入文件:

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置

刪除/var/log/messages*

重啟rsyslog服務:

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置


重啟后可以看到日志支持普通用戶讀取了

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置



結果可喜,當前需求解決,但是mysqld.log如何處理,如果后期有其他文件也需要怎么處理,顯然該方案只能解決一時之需。不可取。

 

【思路5sudo免加載終端問題】

思路4的局限性而不被采用。此時恍然大悟,求助于shell的輸出重定向功能,看看為何不能執行,將返回值也查看下。

采用腳本System_root.sh ,內部將標準錯誤也一同輸出到界面才發現問題:

sudo:抱歉,您必須擁有一個終端來執行 sudo

原來sudo執行時默認需要終端。

設置普通用戶adzsudo不使用默認值,在Default requiretty下再加一行Default:用戶名 !requiretty

CentOS普通用戶拷貝無權限訪問的文件的腳本實現及其配置


目前采用此方案,尚未發現其他異常情況,如果存在,稍后更新

【思路6:其他思路】

為何mysql用戶將mysqld.log寫入操作系統路徑,是否使用了sudo,它有沒有參考性?

采取思路5是否有其他安全性需要處理,是否是最好的解決方式?

還有其他方式么?shell關于權限的處理剛接觸,寫的有些low了,有問題請指正。


 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济宁市| 左云县| 德格县| 岳西县| 甘肃省| 绥棱县| 大余县| 锡林郭勒盟| 景东| 蕉岭县| 宁波市| 台湾省| 德庆县| 肇源县| 昭平县| 滦平县| 苍梧县| 万全县| 永丰县| 四会市| 米泉市| 塘沽区| 泰兴市| 遂川县| 巫山县| 黔江区| 苗栗县| 镇宁| 新绛县| 土默特右旗| 宜黄县| 屯昌县| 石家庄市| 安平县| 阜康市| 紫阳县| 台中市| 三亚市| 嘉荫县| 四会市| 伊金霍洛旗|