跳到主要內容

發表文章

目前顯示的是有「Linux」標籤的文章

OS Provision

  Kickstart - Common Issues HardDrive Issues - Side effects for the incomplete Intel RAID Metadata RHEL/CentOS 自動安裝中斷 - 顯示選擇網卡 Show NIC selection when setting the network command with the device option | dhcptimeout DHCP Timeout RHEL/CentOS6 RHEL/CentOS7 DriverDisk Apply DriverDisk on RHEL/CentOS6 Ubuntu-server Ubuntu/Debian本身所提供的自動安裝系統是透過preseed,而Kickstart compatibility project也打造了透過kickstart的方式讓你自動安裝系統。然而某些行為並無法單純使用kickstart完成,因此使用了preseed+kickstart的做法來完成我們需求。 Ubuntu-server的Provision已完成一段時日,待有閒會慢慢記錄一些技術細節。 Ubuntu-desktop無法使用kickstart部屬。 22.04已把pressed移除: link ,改用cloud.init。 Network Setting DHCP Timeout Setting VMWare ESXI About the Answer File About Boot.cfg Config syslog and firewall Debug常用指令 ESXi 8.0 因為安全性的提升,預設會禁止非安裝程式相關的執行檔執行。如果要關掉這個設定可以執行: localcli system settings advanced set -o / User / execInstalledOnly -i 0 # Query esxcli system settings advanced list -o / User / execInstalledOnly Reference: link , link Known Issues network command僅支援一個,如果不是透過script的方式,網卡只能設定一組。 ...

How to identify OS Type of the ISO image?

SLES 查看根目錄下的media.1/products,SLES12: / SLES12-SP1 12.1-0 而位元種類判別可以看是否有boot/x86_64資料夾。 Ubuntu server 查看根目錄下的.disk/info,Ubuntu-Server 14.04.3: Ubuntu-Server 14.04.3 LTS "Trusty Tahr" - Beta i386 (20150805) VMWare ESXI 可以查看根目錄的.DISCINFO,ESXI5.5 U2: ESXi Version: 5.5.0-2.33.2068190 ESXI6.0 U2: ESXi Version: 6.0.0-2.34.3620759 在某個版本後的VMWare ESXI只支援64位元版本,可參考 link 。 CentOS(EOL) 可查看根目錄的.treeinfo,CentOS6.7: [general] version = 6.7 arch = x86_64 family = CentOS packagedir = timestamp = 1438724250.79 discnum = 1 variant = totaldiscs = 1 CentOS7: [general] name = CentOS-7 family = CentOS timestamp = 1449700442.21 variant = version = 7 packagedir = arch = x86_64

如何使用root以外的使用者去執行service?

Problem 如果一個擁有root權限的App被攻破了,駭客就能為所欲為,對系統造成的危害肯定不小。所以怎麼樣的應用程式,就應該給予對應的存取權限,而不能因為方便直接給予最大權限。接下來就看看我Study結果吧! (本篇文章主要不是在教大家如何讓process變為service,而是著重於用怎樣的使用者去執行service的process) How to? 新增帳號與群組 | 修改目錄擁有者 | 移除帳號 如果沒有特殊需求,只需要透過以下指令就可以完成: # 新增群組 groupadd -r TonyApp # 新增系統使用者 useradd -r -d /opt/TonyApp -s /bin/bash -g TonyApp TonyApp # 將使用者設為daemon gpasswd -a TonyApp daemon 設定App目錄擁有者,原本如果是root,App可能會完全無法動: chown -R TonyApp:TonyApp /opt/TonyApp 強制移除root權限帳號: userdel -r -f TonyApp 更多權限的帳號 由於我的App會存取到硬體相關指令或裝置,如fdisk、/dev/mem,因此我必須給與對應的權限。我可以直接透過以下指令確認是否能執行: # 轉換使用者 su TonyApp # 測試指令 dmidecode fdisk /dev/sda 在賦與權限前,必然是不可行的。因此有以下幾個做法: 設定權限到system group 可以從/etc/group中得知有哪些對應的群組,也可以看 這篇文章 。如果要給予存取disk權限可以使用: gpasswd -a TonyApp disk 直接指定root並不代表它真的擁有存取所有東西的權限,最好也是根據你要什麼就設定什麼。測試到目前,就屬/dev/mem沒轍,因此才有其它的試驗。 指定uid為0 useradd -r -d /opt/TonyApp -s /bin/bash -ou 0 -g root TonyApp 如果使用ps aux去查service的process,會發現執行者是root。 setuid 如修改密碼的passwd一般,認何人都可以透過root權限去執行它。可以透過以下方是去做設定: chown 0:0 myprocess chmod +s mypr...

RHEL PowerButton預設行為

Problem 紀錄一下Power Button在RHEL上GUI mode與text mode的差異。測試系統為RHEL8.7。 GUI RHEL7使用手冊有描述到預設行為是Suspend。在RHEL8.7從Setting中打開電源設置可以發現預設值的確是Suspend: 在修改為PowerOff後,並且觸發電源鍵就會啟動倒數計時: Reference Changing Behavior when Pressing the Power Button in Graphical Target Mode Text 在Text mode中,是透過logind背景服務控制PowerButton行為。HandlePowerKey預設行為是poweroff,假如要測試可以直接把它改成其它數值,重開機後再觸發PowerButton即可確認。 Reference logind設定介紹

無法正常進入作業系統

大家多多少少都有作業系統突然無法正常使用的情形,我已經遇過不少情形。現在開始將遇到的一一記錄起來,好讓我之後可以更快速的回憶並解決。 RHEL6 hang on certmonger 這狀況發生在RHEL6.4,在無法進入桌面時我發現它會卡在certmonger service後。在我透過ssh連入執行dmesg出現了一堆type=1400 audit訊息,將selinux disabled之後就可以正常開機了。 Reference 出現大量的type=1400 audit SLES11 Could not find partitions

Could not find partitions on SLES

Problem 這狀況發生在將SLES11映象檔透過Clonezilla還原至不同顆硬碟時發生。發生問題畫面如下: 發生問題原因是SLES採用硬碟ID當掛載辨識名稱,導致image無法辨識新硬碟。 How to resolve? 我的解法是將資料分割/dev/sda1掛載到/tmp上,再透過sed去修改tmp中的/etc/fstab。會用sed去修改是由於vim與vi無法使用。一般如果純粹只是fstab設定錯誤而導致無法開機,可以直接透過single user mode去重新掛載並透過vi or vim修改fstab。 mount / dev / sda1 / tmp cd / tmp / etc # backup fstab cp fstab fstab.bak 我的fstab內容: 我們目標就是把disk/by-id/ata-KINGSTON_SV100264G_08AAC0043704-part1與part2分別取代為sda1與sda2。內容就根據你fstab的id是什麼就改為什麼。 sed -i 's/disk\/by-id\/ata-KINGSTON_SV100264G_08AAC0043704-part1/sda1/g' fstab sed -i 's/disk\/by-id\/ata-KINGSTON_SV100264G_08AAC0043704-part2/sda2/g' fstab 如果有改錯,再把先前備份的fstab.bak拿來還原即可。另外還有/boot/grub/menu.list也要做相同的修改。

Crontab

Crontab與Windows系統管理工具中的工作排程器有相同目的。 Ubuntu設定畫面 如果要從星期一到星期六的19:00執行,可以設為0 19 * * 1~6 crontab 開機自動執行指令 以下範例為開機30秒後執行腳本: @ reboot sleep 30 ; / opt / script.sh

Linux Shell Script

ShellScript有多強大我不必贅述。我所撰寫的文章都是以前遇到問題所想到的解決方法,也許不是每個做法都很完美,畢竟都是遇到的東西越多,才越能學習到更多更精闢的語法。 如何透過Shellscript去開啟與關閉你的VM?   如何給予一個關鍵字去砍掉對應的Process? 找尋被佔用的Port 替換檔案 量測Process Execution Time Linux AutoLogin 字串取代 如何由PID去找它所佔用的port? Rebind所有的SCSI hard drive nc - netcat to wait for the notification 取得IP Address included ipv4, ipv6 and cable status Bypass invalid options of getopts Mount Https Iso at local 暫存區 grep space 並非所有系統grep都支援\s去偵測空白,可以使用[:space:]或[:blank:]當替代方案。(實測SLES11 grep 2.5.1不支援\s寫法) how-to-find-a-space-in-a-text-using-grep? 確認行數 代表有15行。 > lspci | awk '{ print NR }' 1 2 .. 15 Assign指令結果至變數 使用`號去包起來,以下範例會顯示123。 VAR = ` echo 123 ` echo $VAR 假如指令有問題也要一併導至VAR,可以透過將stderr導向stdout: VAR = ` ff 2 >& 1 ` echo $VAR 抓mac ifconfig | grep -o -E '([[:xdigit:]]{2})(:[[:xdigit:]]{2}){5}' 設DNS Ubuntu很搞怪,不能直接改resolve.conf: systemd-resolve --set-dns=10.146.125.97 --interface enp3s0f0

Linux文章列表

Introduction 在Linux上軟體的安裝千奇百怪,我把它紀錄下來,好讓自己以後或讓其他人可以方便利用,以減少重複學習的時間。 Sub Category DRBL Shell Script Software Repository 在RHEL/CentOS/RockyLinux上掛載硬碟為Repository SLES - Zypper Command Network Setup DHCP Server IP Ethernet Connection X722 can't up on CentOS7.2 Support old ciphers in SSHD Test IPv6 functions on Linux ping ipv6在CentOS7.3上的問題 How to ping a IPv6 address on Linux? Package Installation RHEL8安裝policycoreutils-python Remote Desktop hal-device: command not found Kernel 如何取得CentOS6.0 kernel完整source code? Trace KConfig - Plug and Play support選項不能選 How to confirm the support list for i2c-i801? Mix How to login to OS automatically? Crontab 如何快速打開某路徑的檔案瀏覽器? 無法正常進入作業系統 RHEL PowerButton預設行為 如何使用root以外的使用者去執行service? Backup linux files to windows cifs Resource Timeline & Lifecycle Novell Suse(SLES) lifesyscle CentOS RHEL Ubuntu release-cycle Kernel Kernel Parameters Kernel modules Linux的物理記憶體 Network flush dns cache nmcli 設定網卡 nmcli guide

在RHEL/CentOS/RockyLinux上掛載硬碟為Repository

RHEL5 至Applications>Add/Remove Software>Edit>Repositories。 mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom -t iso9660 -o loop,ro 點擊Add,輸入file:/mnt/cdrom/Server到Location中,並填入Name。 RHEL6 #掛載 RHEL6 光碟 mkdir / mnt / cdrom mount / dev / cdrom / mnt / cdrom -t iso9660 -o loop,ro   # 將光碟內的 media.repo 檔案內容複製到 /etc/yum.repos.d/media.repo cat / mnt / cdrom / media.repo > / etc / yum.repos.d / media.repo   # 加入 yum 使用安裝光碟路徑到 /etc/media.repo # 編輯 /etc/yum.repos.d/media.repo 新增 baseurl=file:///mnt/cdrom/ echo baseurl =file: /// mnt / cdrom / >> / etc / yum.repos.d / media.repo   # 完成   # 測試: yum repolist CentOS7 與RHEL6方法只有些許差異,首先將iso mount到某個資料夾下: mkdir / mnt / cdrom mount / dev / cdrom / mnt / cdrom -t iso9660 -o loop,ro CentOS光碟中沒有media.repo,但/etc/yum.repos.d中有類似檔案,名字叫CentOS-Media.repo。如下圖,你需要在baseurl中加入光碟資料夾路徑,並將enabled設為1: 假如你是無法連網的狀態,請記得修改CentOS-Base.repo,將用到網路區塊的enabled設為0。最後執行以下指令確認repolist後,就可以開始安裝軟體了: yum repolist