2017年12月29日 星期五
bash netstat
#!/bin/bash cat /proc/net/tcp /proc/net/tcp|grep -v local_address | while read t l f t;do lp=${l#*:};lp=$((16#${lp})); fp=${f#*:};fp=$((16#${fp})); lip=${l%:*}; fip=${f%:*}; ipl=$((16#${lip:6:2})).$((16#${lip:4:2})).$((16#${lip:2:2})).$((16#${lip:0:2})); ipf=$((16#${fip:6:2})).$((16#${fip:4:2})).$((16#${fip:2:2})).$((16#${fip:0:2})); echo $ipl:$lp $ipf:$fp done ;socket 使用情形 /proc/net/sockstat router 資訊 /proc/net/route
Linux FTP mirrot 工具
lftp -u user,pwd -e "mirror --parallel=3 --verbose /$REMOTE_DIR /$LOCAL_DIR" $REMOTE_HOST
刪除 Opendedup volume1
1.umount /mnt/volume1
2.rm -rf /opt/sdfs/volumes/volume1
3.rm /var/log/sdfs/volume1*
4.rm /etc/sdfs/volume1*
2.rm -rf /opt/sdfs/volumes/volume1
3.rm /var/log/sdfs/volume1*
4.rm /etc/sdfs/volume1*
2017年12月25日 星期一
megacli 修復 不能自動 rebuild 的硬碟
1.檢視損毀的 raid 資訊
MegaCli64 -PdGetMissing -a0
2.替換硬碟 (內接卡第三顆硬碟)
MegaCli64 -PdReplaceMissing -PhysDrv[252:2] -array1,row0 -a0
3.設定強制 rebuild
MegaCli64 -PDRbld -Start -PhysDrv [252:2] -a0
4.檢查是否在 rebuild
MegaCli64 -PDRbld -ShowProg -PhysDrv [252:2] -a0
5.檢視硬碟的簡易狀態
MegaCli64 -ShowSummary -a0
6.檢查狀態(可取得 Enclosure Device ID:)
MegaCli64 -PDList -aALL
其他注意事項
更換新硬碟狀態改成“Unconfigured Good”後,再改成“Offline”狀態,便可手動 rebuild
MegaCli64 -PdGetMissing -a0
2.替換硬碟 (內接卡第三顆硬碟)
MegaCli64 -PdReplaceMissing -PhysDrv[252:2] -array1,row0 -a0
3.設定強制 rebuild
MegaCli64 -PDRbld -Start -PhysDrv [252:2] -a0
4.檢查是否在 rebuild
MegaCli64 -PDRbld -ShowProg -PhysDrv [252:2] -a0
5.檢視硬碟的簡易狀態
MegaCli64 -ShowSummary -a0
6.檢查狀態(可取得 Enclosure Device ID:)
MegaCli64 -PDList -aALL
其他注意事項
更換新硬碟狀態改成“Unconfigured Good”後,再改成“Offline”狀態,便可手動 rebuild
2017年11月24日 星期五
SMB mount error(112): Host is down 設定摘要
mount -t cifs -o user=username,vers=1.0 //server/share /mnt/mountpoint
mount -t cifs -o user=username,vers=2.0 //server/share /mnt/mountpoint
mount -t cifs -o user=username,vers=2.0 //server/share /mnt/mountpoint
PROXMOX PVE (4.x,5.x) 重新設定 HTTPS Certificate
1.刪除以下檔案
rm /etc/pve/pve-root-ca.pem
rm /etc/pve/priv/pve-root-ca.key
rm /etc/pve/nodes//pve-ssl.pem
rm /etc/pve/nodes//pve-ssl.key
2.重新產生相關檔案
pvecm updatecerts -f
rm /etc/pve/pve-root-ca.pem
rm /etc/pve/priv/pve-root-ca.key
rm /etc/pve/nodes/
rm /etc/pve/nodes/
2.重新產生相關檔案
pvecm updatecerts -f
2017年11月21日 星期二
accel-ppp 固定 client ip
1.編輯 /etc/accel-ppp.conf
加入 module chap-secrets,注意載入順序
[modules]
chap-secrets
ippool
2.編輯 chap 帳號密碼檔案
chap-secrets=/etc/ppp/chap-secrets
user * password 192.168.2.101
加入 module chap-secrets,注意載入順序
[modules]
chap-secrets
ippool
2.編輯 chap 帳號密碼檔案
chap-secrets=/etc/ppp/chap-secrets
user * password 192.168.2.101
2017年11月2日 星期四
PROXMOX VE 5.1 Infiniband IPoIB 設定摘要
1.安裝相關軟體
apt-get install opensm
apt-get install infiniband-diags
2.載入相關 module
modprobe ib_umad ib_ipoib
3.設定網路
ip addr add 10.0.0.1/24 dev ib0
ip link set ib0 up
4.infiniband network 必須要有 subnet manager
/etc/init.d/opensm start
5.其他
出現 ib0 NO-CARRIER 可能是缺少 subnet manager
apt-get install opensm
apt-get install infiniband-diags
2.載入相關 module
modprobe ib_umad ib_ipoib
3.設定網路
ip addr add 10.0.0.1/24 dev ib0
ip link set ib0 up
4.infiniband network 必須要有 subnet manager
/etc/init.d/opensm start
5.其他
出現 ib0 NO-CARRIER 可能是缺少 subnet manager
2017年10月5日 星期四
LEAF 5.x mount CIFS 摘要
載入模組
cifs
hmac
md4
arc4
使用 mount 掛載,必須同時輸入密碼
mount -t cifs -o username=user,password=pass //server/share /mnt
cifs
hmac
md4
arc4
使用 mount 掛載,必須同時輸入密碼
mount -t cifs -o username=user,password=pass //server/share /mnt
2017年10月3日 星期二
Samba SWAT安裝
/etc/services 加入
swat 901/tcp
/etc/inited.conf 加入
swat stream tcp nowait.400 root /usr/sbin/swat swat
連線測試
http://localhost:901
swat 901/tcp
/etc/inited.conf 加入
swat stream tcp nowait.400 root /usr/sbin/swat swat
連線測試
http://localhost:901
移除軟體RAID
umount /dev/md2
1.RAID 狀態
# mdadm --detail /dev/md2
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdd1
2.停用 RAID
mdadm --stop /dev/md2
3.移除 RAID
mdadm --remove /dev/md2
4.移除 superblocks
# mdadm --zero-superblock /dev/sdb1 /dev/sdd1
修改相關設定
/etc/mdadm/mdadm.conf
1.RAID 狀態
# mdadm --detail /dev/md2
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdd1
2.停用 RAID
mdadm --stop /dev/md2
3.移除 RAID
mdadm --remove /dev/md2
4.移除 superblocks
# mdadm --zero-superblock /dev/sdb1 /dev/sdd1
修改相關設定
/etc/mdadm/mdadm.conf
2017年10月2日 星期一
openvz cifs 摘要
不支援 container 掛載,必須先掛載至 host,再 bind 至 container
mount -t cifs //cifs-server/share-name /mnt-cifs -o username=username
/bin/mount -n --bind /mnt-cifs /var/lib/vz/root/${VEID}/mnt
mount -t cifs //cifs-server/share-name /mnt-cifs -o username=username
/bin/mount -n --bind /mnt-cifs /var/lib/vz/root/${VEID}/mnt
2017年9月29日 星期五
booting ipxe from pxelinux 設定摘要
/tftpboot 目錄下內容
/tftpboot/ipxe.lkrn
/tftpboot/pxelinux.0
/tftpboot/ldlinux.c32
/tftpboot/pxelinux.cfg/default 內容
DEFAULT ipxe
LABEL ipxe
menu default
kernel ipxe.lkrn :a cpair -b 0 -f 0 0 && dhcp || goto a && chain menu.ipxe
/tftpboot/menu.ipxe 內容
#!ipxe
shell
/etc/dnsmasq.conf 相關設定
dhcp-boot=pxelinux.0
/tftpboot/ipxe.lkrn
/tftpboot/pxelinux.0
/tftpboot/ldlinux.c32
/tftpboot/pxelinux.cfg/default 內容
DEFAULT ipxe
LABEL ipxe
menu default
kernel ipxe.lkrn :a cpair -b 0 -f 0 0 && dhcp || goto a && chain menu.ipxe
/tftpboot/menu.ipxe 內容
#!ipxe
shell
/etc/dnsmasq.conf 相關設定
dhcp-boot=pxelinux.0
2017年9月28日 星期四
ipxe chainload with dnsmasq 設定範例
dhcp-match=set:ipxe,175 # iPXE sends a 175 option.
dhcp-boot=tag:!ipxe,undionly.kpxe
dhcp-boot=http://192.168.10.1/menu.ipxe
# dhcp-boot=menu.ipxe
dhcp-boot=tag:!ipxe,undionly.kpxe
dhcp-boot=http://192.168.10.1/menu.ipxe
# dhcp-boot=menu.ipxe
2017年9月22日 星期五
Linux ext2 image 加大空間
dd if=/dev/zero bs=1024 count=220000 >> fs.ext2
e2fsck -f fs.ext2
resize2fs fs.ext2
e2fsck -f fs.ext2
resize2fs fs.ext2
2017年9月20日 星期三
tftp timeout
1.查看 /var/log/ademon.log
connection refused from ...
tftpd: read(ack): Connection refused
2.檢查 /etc/hosts.*
/etc/hosts.deny
/etc/hosts.allow
3.檢查 iptables 相關模組
kernel 2.4.x
ip_conntrack_tftp
ip_nat_tftp
kernel 2.6.x
nf_nat_tftp
nf_conntrack_tftp
nf_conntrack
connection refused from ...
tftpd: read(ack): Connection refused
2.檢查 /etc/hosts.*
/etc/hosts.deny
/etc/hosts.allow
3.檢查 iptables 相關模組
kernel 2.4.x
ip_conntrack_tftp
ip_nat_tftp
kernel 2.6.x
nf_nat_tftp
nf_conntrack_tftp
nf_conntrack
簡易 uClibc 開發環境
1.下載 https://www.uclibc.org/downloads/binaries/0.9.30.1/system-image-x86_64.tar.bz2
2.解開 system-image-x86_64.tar.bz2
3.mount -o loop image-x86_64.ext2 /mnt2
4.mount --bind src /mnt2/src
5.chroot /mnt2 /bin/sh
2.解開 system-image-x86_64.tar.bz2
3.mount -o loop image-x86_64.ext2 /mnt2
4.mount --bind src /mnt2/src
5.chroot /mnt2 /bin/sh
Bering-uClibc_6.0.5-x86_64 新增 fusion模組
0.下載 Bering-uClibc_6.0.5_src.tgz,安裝開發環境(https://bering-uclibc.zetam.org/wiki/Main_Page)
1. ./buildtool.pl -t x86_64-unknown-linux-uclibc source kernel
2../buildtool.pl -t x86_64-unknown-linux-uclibc build toolchain
3.解開initrd.lrp,編輯 ./source/x86_64-unknown-linux-uclibc/linux/Bering-4.4.config 加入
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LOGGING=y
4.建立 fusion modules
./buildtool.pl -t x86_64-unknown-linux-uclibc build kernel
5.修改 init 尋找 VERSION="`cat $LRPKG/initrd.version`" 加入
insmod /lib/modules/scsi_transport_spi.ko.gz
insmod /lib/modules/scsi_transport_sas.gz
insmod /lib/modules/mptbase.ko.gz
insmod /lib/modules/mptctl.ko.gz
insmod /lib/modules/mptscsih.ko.gz
insmod /lib/modules/mptspi.ko.gz
複製 上述 module 至 lib/modules中
6.封裝 initrd.lrp
1. ./buildtool.pl -t x86_64-unknown-linux-uclibc source kernel
2../buildtool.pl -t x86_64-unknown-linux-uclibc build toolchain
3.解開initrd.lrp,編輯 ./source/x86_64-unknown-linux-uclibc/linux/Bering-4.4.config 加入
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LOGGING=y
4.建立 fusion modules
./buildtool.pl -t x86_64-unknown-linux-uclibc build kernel
5.修改 init 尋找 VERSION="`cat $LRPKG/initrd.version`" 加入
insmod /lib/modules/scsi_transport_spi.ko.gz
insmod /lib/modules/scsi_transport_sas.gz
insmod /lib/modules/mptbase.ko.gz
insmod /lib/modules/mptctl.ko.gz
insmod /lib/modules/mptscsih.ko.gz
insmod /lib/modules/mptspi.ko.gz
複製 上述 module 至 lib/modules中
6.封裝 initrd.lrp
2017年9月7日 星期四
Arch Linux 安裝摘要
0.光碟片開機
1.建立檔案系統
fdisk /dev/sda
mkfs.ext3 /dev/sda2
2.選定安裝的 mirror site
/etc/pacman.d/mirrorlist
3.建立基本系統
mount /dev/sda2 /mnt
pacstrap /mnt base
4.建立 fstab
genfstab -p /mnt >> /mnt/etc/fstab
5.設定系統組態(configuration)
arch-chroot /mnt
6.設定域名
echo 域名 > /etc/hostname
7.設定時區
ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
8.產生語系設定檔及設定語系
echo en_US.UTF-8 >> /etc/locale.conf
locale-gen
9.產生kernel image
mkinitcio -p linux
10.安裝 grub
pacman -S grub
11.找尋已安裝的作業系統
pacman -S os-prober
12.產生 grub 設定檔
grub-mkconfig -o /boot/grub/grub.cfg
13.安裝 grub 開機檔案
BIOS 方式
grub-install /dev/sda
UEFI 方式
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
1.建立檔案系統
fdisk /dev/sda
mkfs.ext3 /dev/sda2
2.選定安裝的 mirror site
/etc/pacman.d/mirrorlist
3.建立基本系統
mount /dev/sda2 /mnt
pacstrap /mnt base
4.建立 fstab
genfstab -p /mnt >> /mnt/etc/fstab
5.設定系統組態(configuration)
arch-chroot /mnt
6.設定域名
echo 域名 > /etc/hostname
7.設定時區
ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
8.產生語系設定檔及設定語系
echo en_US.UTF-8 >> /etc/locale.conf
locale-gen
9.產生kernel image
mkinitcio -p linux
10.安裝 grub
pacman -S grub
11.找尋已安裝的作業系統
pacman -S os-prober
12.產生 grub 設定檔
grub-mkconfig -o /boot/grub/grub.cfg
13.安裝 grub 開機檔案
BIOS 方式
grub-install /dev/sda
UEFI 方式
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
2017年8月30日 星期三
bash中()及{}差別
1. {}中設定的變數會影響全域變數
2. { 必須有空白字元,}前必須有;字元
測試
c=a;echo c=$c;
{ echo "{} $c set {}"; c="set {}";};
(echo "() $c set ()"; c="set ()");
echo c=$c;
c=a;echo c=$c;
(echo "() $c set ()"; c="set ()");
{ echo "{} $c set {}"; c="set {}";};
echo c=$c;
2. { 必須有空白字元,}前必須有;字元
測試
c=a;echo c=$c;
{ echo "{} $c set {}"; c="set {}";};
(echo "() $c set ()"; c="set ()");
echo c=$c;
c=a;echo c=$c;
(echo "() $c set ()"; c="set ()");
{ echo "{} $c set {}"; c="set {}";};
echo c=$c;
2017年8月23日 星期三
2017年8月8日 星期二
Squid 存取控制設定摘要
1.Squid 使用存取控制清單 (ACL)依順序處理存取規則。
2.在使用 ACL 前必須先進行定義。
3.預設的 ACL all 與 localhost 。
4.定義 ACL 並不代表會套用,當存在對應的 http_access 規則時才會套用。
squid.conf存取控制選項
acl 的語法
acl ACL_NAME TYPE DATA
ACL_NAME 可以隨意選擇。
TYPE,/etc/squid/squid.conf 檔案的 ACCESS CONTROLS 區段中提供不同選項。
DATA 視個別的 ACL 類型而定,例如主機名稱、IP 位址或 URL。 也可從檔案讀取。
http_access allow ACL 名稱
定義哪些人可使用代理,以及哪些人可存取網際網路的哪些內容。
url_rewrite_program 路徑
指定 URL 重寫器。
auth_param basic program 路徑
設定在代理上對使用者進行驗證的對應的程式
ident_lookup_access allow ACL 名稱
設定可以執行 ident 要求,為類型為 src 的 ACL 定義的所有用戶端確定每個使用者的身分。
2.在使用 ACL 前必須先進行定義。
3.預設的 ACL all 與 localhost 。
4.定義 ACL 並不代表會套用,當存在對應的 http_access 規則時才會套用。
squid.conf存取控制選項
acl 的語法
acl ACL_NAME TYPE DATA
ACL_NAME 可以隨意選擇。
TYPE,/etc/squid/squid.conf 檔案的 ACCESS CONTROLS 區段中提供不同選項。
DATA 視個別的 ACL 類型而定,例如主機名稱、IP 位址或 URL。 也可從檔案讀取。
http_access allow ACL 名稱
定義哪些人可使用代理,以及哪些人可存取網際網路的哪些內容。
url_rewrite_program 路徑
指定 URL 重寫器。
auth_param basic program 路徑
設定在代理上對使用者進行驗證的對應的程式
ident_lookup_access allow ACL 名稱
設定可以執行 ident 要求,為類型為 src 的 ACL 定義的所有用戶端確定每個使用者的身分。
2017年8月3日 星期四
LEAF Bering-uClibc 6.0.4 設定 squid 摘要
建立檔案系統
mkfs.vfat -F 32 -I /dev/sda1
編輯 leaf.cfg 設定載入以下 LRP
root license local dnsmasq dropbear mhttpd webconf squid ntpd
執行
syslinux /dev/sda1
dd if=/usr/share/syslinux/mbr.bin of=/dev/sda bds=440 count=1
echo "CST-8" > /etc/TZ
echo "/root/squid.sh" >> /etc/default/local.start
編輯 /root/squid.sh 內容如下
#!/bin/sh
while read i j;
do mkdir -p -m 777 $i&&mount tmpfs -t tmpfs $i -o size=$j,mode=1777;
done<<REM
/dev/shm 128m
/var/cache/squid 256m
REM
squid=/etc/init.d/squid&&$squid restart||$squid start;
mkfs.vfat -F 32 -I /dev/sda1
編輯 leaf.cfg 設定載入以下 LRP
root license local dnsmasq dropbear mhttpd webconf squid ntpd
執行
syslinux /dev/sda1
dd if=/usr/share/syslinux/mbr.bin of=/dev/sda bds=440 count=1
echo "CST-8" > /etc/TZ
echo "/root/squid.sh" >> /etc/default/local.start
編輯 /root/squid.sh 內容如下
#!/bin/sh
while read i j;
do mkdir -p -m 777 $i&&mount tmpfs -t tmpfs $i -o size=$j,mode=1777;
done<<REM
/var/cache/squid 256m
REM
squid=/etc/init.d/squid&&$squid restart||$squid start;
2017年7月25日 星期二
/squid-cf__metadata.shm): (13) Permission denied 錯誤訊息
Squid Cache: Version 3.5.26 錯誤訊息
ATAL: Ipc::Mem::Segment::create failed to shm_open(/squid-cf__metadata.shm): (13) Permission denied
原因:
缺少 /dev/shm
解決方法:
建立 /dev/shm mode=1777
mkdir -p /dev/shm && mount tmpfs -t tmpfs /dev/shm-o size=128,,mode=1777
其他相關錯誤
缺少 /var/cache/squid 或權限不符
ATAL: Ipc::Mem::Segment::create failed to shm_open(/squid-cf__metadata.shm): (13) Permission denied
原因:
缺少 /dev/shm
解決方法:
建立 /dev/shm mode=1777
mkdir -p /dev/shm && mount tmpfs -t tmpfs /dev/shm-o size=128,,mode=1777
其他相關錯誤
缺少 /var/cache/squid 或權限不符
Squid 一般組態選項摘要
http_port 連接埠
Squid 用的連接埠,預設 3128
cache_peer 主機名稱 類型 代理連接埠 ICP 連接埠
設定建立協同工作的快取網路。
cache_mem 大小
設定常用回覆的記憶體容量。預設值 8 MB。
cache_dir 儲存類型 快取目錄 快取大小 層級 1 目錄 層級 2 目錄
定義磁碟快取的目錄。
cache_access_log 記錄檔案 , cache_log 記錄檔案 , cache_store_log 記錄檔案
設定記錄檔
client_netmask 網路遮罩
透過套用子網路遮罩在記錄檔案中遮罩用戶端的 IP 位址。
ftp_user 電子郵件
設定 Squid 用於匿名 FTP 登入的密碼。
cache_mgr 電子郵件
Squid 當機時傳送郵件地址。
logfile_rotate 值
設定 Squid 輪替記錄檔案。預設值為 10,表示輪替編號為 0 到 9 的記錄檔案。
append_domain 網域
指定當未指定網域時自動附加的網域。
forwarded_for 狀態
選項設定為 on/off
negative_ttl 時間 , negative_dns_ttl 時間
never_direct allow ACL 名稱
Squid 用的連接埠,預設 3128
cache_peer 主機名稱 類型 代理連接埠 ICP 連接埠
設定建立協同工作的快取網路。
cache_mem 大小
設定常用回覆的記憶體容量。預設值 8 MB。
cache_dir 儲存類型 快取目錄 快取大小 層級 1 目錄 層級 2 目錄
定義磁碟快取的目錄。
cache_access_log 記錄檔案 , cache_log 記錄檔案 , cache_store_log 記錄檔案
設定記錄檔
client_netmask 網路遮罩
透過套用子網路遮罩在記錄檔案中遮罩用戶端的 IP 位址。
ftp_user 電子郵件
設定 Squid 用於匿名 FTP 登入的密碼。
cache_mgr 電子郵件
Squid 當機時傳送郵件地址。
logfile_rotate 值
設定 Squid 輪替記錄檔案。預設值為 10,表示輪替編號為 0 到 9 的記錄檔案。
append_domain 網域
指定當未指定網域時自動附加的網域。
forwarded_for 狀態
選項設定為 on/off
negative_ttl 時間 , negative_dns_ttl 時間
never_direct allow ACL 名稱
Linux capabilities
1.kernel 2.2 以後支援
2.使用 extended attributes 中的 security方式支援
3.支援的檔案系統 Ext2, Ext3, Ext4, Btrfs, JFS, XFS, Reiserfs
4.常用指令 getcap,setcap
Capabilities list
CAP_AUDIT_CONTROL (since Linux 2.6.11)
CAP_AUDIT_WRITE (since Linux 2.6.11)
CAP_BLOCK_SUSPEND (since Linux 3.5)
CAP_CHOWN
CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
CAP_FOWNER
CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
CAP_FSETID
CAP_IPC_LOCK
CAP_IPC_OWNER
CAP_KILL
CAP_LEASE (since Linux 2.4)
CAP_LINUX_IMMUTABLE
CAP_MAC_ADMIN (since Linux 2.6.25)
CAP_MAC_OVERRIDE (since Linux 2.6.25)
CAP_MKNOD (since Linux 2.4)
CAP_NET_ADMIN
CAP_NET_BIND_SERVICE
CAP_NET_BROADCAST
CAP_NET_RAW
CAP_SETGID
CAP_SETFCAP (since Linux 2.6.24)
CAP_SETPCAP
CAP_SETUID
CAP_SYS_ADMIN
CAP_SYS_BOOT
CAP_SYS_CHROOT
CAP_SYS_MODULE
CAP_SYS_NICE
CAP_SYS_PACCT
CAP_SYS_PTRACE
CAP_SYS_RAWIO
CAP_SYS_RESOURCE
CAP_SYS_TIME
CAP_SYS_TTY_CONFIG
CAP_SYSLOG (since Linux 2.6.37)
CAP_WAKE_ALARM (since Linux 3.0)
modes:
e: Effective This means the capability is “activated”.
p: Permitted This means the capability can be used/is allowed.
i: Inherited The capability is kept by child/subprocesses upon execve() for example.
使用範例
getfattr -d -m "security\\." /bin/ping
getcap /bin/ping
setcap -r /bin/ping
setcap 'cap_net_admin,cap_net_raw+ep' /bin/ping
複製 capabilities 參數
cp -a $src $dst
rsync -X $src $dst
tar -s, --preserve-order, --same-order
sort names to extract to match archive
--selinux Save the SELinux context to the archive
--xattrs
2.使用 extended attributes 中的 security方式支援
3.支援的檔案系統 Ext2, Ext3, Ext4, Btrfs, JFS, XFS, Reiserfs
4.常用指令 getcap,setcap
Capabilities list
CAP_AUDIT_CONTROL (since Linux 2.6.11)
CAP_AUDIT_WRITE (since Linux 2.6.11)
CAP_BLOCK_SUSPEND (since Linux 3.5)
CAP_CHOWN
CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
CAP_FOWNER
CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
CAP_FSETID
CAP_IPC_LOCK
CAP_IPC_OWNER
CAP_KILL
CAP_LEASE (since Linux 2.4)
CAP_LINUX_IMMUTABLE
CAP_MAC_ADMIN (since Linux 2.6.25)
CAP_MAC_OVERRIDE (since Linux 2.6.25)
CAP_MKNOD (since Linux 2.4)
CAP_NET_ADMIN
CAP_NET_BIND_SERVICE
CAP_NET_BROADCAST
CAP_NET_RAW
CAP_SETGID
CAP_SETFCAP (since Linux 2.6.24)
CAP_SETPCAP
CAP_SETUID
CAP_SYS_ADMIN
CAP_SYS_BOOT
CAP_SYS_CHROOT
CAP_SYS_MODULE
CAP_SYS_NICE
CAP_SYS_PACCT
CAP_SYS_PTRACE
CAP_SYS_RAWIO
CAP_SYS_RESOURCE
CAP_SYS_TIME
CAP_SYS_TTY_CONFIG
CAP_SYSLOG (since Linux 2.6.37)
CAP_WAKE_ALARM (since Linux 3.0)
modes:
e: Effective This means the capability is “activated”.
p: Permitted This means the capability can be used/is allowed.
i: Inherited The capability is kept by child/subprocesses upon execve() for example.
使用範例
getfattr -d -m "security\\." /bin/ping
getcap /bin/ping
setcap -r /bin/ping
setcap 'cap_net_admin,cap_net_raw+ep' /bin/ping
複製 capabilities 參數
cp -a $src $dst
rsync -X $src $dst
tar -s, --preserve-order, --same-order
sort names to extract to match archive
--selinux Save the SELinux context to the archive
--xattrs
losetup 使用摘要
dd if=/dev/zero of=example.img bs=10240 count=512
mkfs.ext3 -F -q -m0 example.img
losetup /dev/loop0 example.img
mount /dev/loop0 /mnt
mount -o mand example.img /mnt
umount /mnt
losetup -d /dev/loop0
mkfs.ext3 -F -q -m0 example.img
losetup /dev/loop0 example.img
mount /dev/loop0 /mnt
mount -o mand example.img /mnt
umount /mnt
losetup -d /dev/loop0
Bash 比較Linux 版本
func_uname_gt(){ v=0;
read v</proc/sys/kernel/osrelease&&v=${v%%-*}||return 1;
A=$(echo $v|$exe_awk 'BEGIN {FS="."};{print($1=="")?0:$1}').$(echo $v|$exe_awk 'BEGIN {FS="."};{print($2=="")?0:$2}')$(echo $v|$exe_awk 'BEGIN {FS="."};{print($3=="")?0:$3}');
B=$(echo $1|$exe_awk 'BEGIN {FS="."};{print($1=="")?0:$1}').$(echo $1|$exe_awk 'BEGIN {FS="."};{print($2=="")?0:$2}')$(echo $1|$exe_awk 'BEGIN {FS="."};{print($3=="")?0:$3}');
echo $A $B|$exe_awk '{print($1>$2)?0:1}'&&return 0;return 1;};
func_uname_gt 2.1.7;
read v</proc/sys/kernel/osrelease&&v=${v%%-*}||return 1;
A=$(echo $v|$exe_awk 'BEGIN {FS="."};{print($1=="")?0:$1}').$(echo $v|$exe_awk 'BEGIN {FS="."};{print($2=="")?0:$2}')$(echo $v|$exe_awk 'BEGIN {FS="."};{print($3=="")?0:$3}');
B=$(echo $1|$exe_awk 'BEGIN {FS="."};{print($1=="")?0:$1}').$(echo $1|$exe_awk 'BEGIN {FS="."};{print($2=="")?0:$2}')$(echo $1|$exe_awk 'BEGIN {FS="."};{print($3=="")?0:$3}');
echo $A $B|$exe_awk '{print($1>$2)?0:1}'&&return 0;return 1;};
func_uname_gt 2.1.7;
2017年6月21日 星期三
[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
可能是 查詢 SQL 太長,或是連線逾時
1.修改 MySQL 設定檔
/etc/my.cnf
/etc/my.cnf.d/server.cnf
[mysqld]
max_allowed_packet=16M
2.連線時加入
SET SESSION wait_timeout=65535
1.修改 MySQL 設定檔
/etc/my.cnf
/etc/my.cnf.d/server.cnf
[mysqld]
max_allowed_packet=16M
2.連線時加入
SET SESSION wait_timeout=65535
2017年5月22日 星期一
增加 PHP 上傳檔案大小
修改 /etc/php.ini
; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 16M
; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
;post_max_size = 8M
post_max_size = 16M
; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 16M
; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
;post_max_size = 8M
post_max_size = 16M
Linux bash 查詢網路卡網路速度
netspeed.sh 內容
#!/bin/sh
ns(){A=$(grep $1 /proc/net/dev | while read a1 r1 c c c c c c c s1 c;do echo $r1-$s1; done;)
sleep 1;
B=$(grep $1 /proc/net/dev | while read a1 r1 c c c c c c c s1 c;do echo $r1-$s1; done;)
echo Receive: $(( ${B%-*} - ${A%-*} ));
echo Transmit: $(( ${B#*-} - ${A#*-} ));
};
[ -z "$1" ]&&exit 1||ns $1;
使用方法
sh netspeed.sh eth0
CentOS 5.11 使用 yum 更新
修改 /etc/yum.repos.d/CentOS-Base.repo
加入 baseurl=http://vault.centos.org/5.11/os/x86_64
加入 baseurl=http://vault.centos.org/5.11/os/x86_64
Proxmox 使用 VNC Client 連線 VM
1.登入 Web VM Monitor 選項
2.使用 VNC Port 6000 連線
輸入
change vnc 0.0.0.0:100
3.使用 VNC Port 6000 連線 + 密碼保護 (password0)
輸入
change vnc 0.0.0.0:100,password
set_password vnc password0
2.使用 VNC Port 6000 連線
輸入
change vnc 0.0.0.0:100
3.使用 VNC Port 6000 連線 + 密碼保護 (password0)
輸入
change vnc 0.0.0.0:100,password
set_password vnc password0
2017年4月27日 星期四
disable ssh know_hosts
方法一
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host /usr/bin/hostname -s
方法二
編輯 ~/.ssh/config
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel QUIET
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host /usr/bin/hostname -s
方法二
編輯 ~/.ssh/config
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel QUIET
2017年4月19日 星期三
openvz centos7 安裝 opendedep
安裝
vzctl set 100 --devices c:10:229:rw --save
vzctl exec 100 mknod /dev/fuse c 10 229
vzctl exec 100 wget http://www.opendedup.org/downloads/sdfs-latest.rpm
vzctl exec 100 yum install sdfs-latest.rpm
vzctl exec 100 echo "* hardnofile 65535" >> /etc/security/limits.conf
vzctl exec 100 echo "* soft nofile 65535" >> /etc/security/limits.conf
建立及掛載
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
sudo mkdir /media/pool0
sudo mount.sdfs pool0 /media/pool0/
vzctl set 100 --devices c:10:229:rw --save
vzctl exec 100 mknod /dev/fuse c 10 229
vzctl exec 100 wget http://www.opendedup.org/downloads/sdfs-latest.rpm
vzctl exec 100 yum install sdfs-latest.rpm
vzctl exec 100 echo "* hardnofile 65535" >> /etc/security/limits.conf
vzctl exec 100 echo "* soft nofile 65535" >> /etc/security/limits.conf
建立及掛載
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
sudo mkdir /media/pool0
sudo mount.sdfs pool0 /media/pool0/
2017年4月11日 星期二
2017年3月27日 星期一
2017年3月23日 星期四
PageX連接 windows 7 出現 Android ADB Interface裝置更改為 MTP USB裝置
電腦管理->
裝置管理員->
PageX->
更新驅動程式軟體->
瀏覽電腦上的驅動程式軟體->
讓我從電腦上的裝置驅動程式清單挑選->
MTP USB裝置
裝置管理員->
PageX->
更新驅動程式軟體->
瀏覽電腦上的驅動程式軟體->
讓我從電腦上的裝置驅動程式清單挑選->
MTP USB裝置
2017年3月22日 星期三
bash type 摘要
#!/bin/bash
function fdisk(){ :; }
echo "type";type fdisk
echo;echo "type -a";type -a fdisk
echo;echo "type -t";type -t fdisk
echo;echo "type -f";type -f fdisk
echo;echo "type -P";type -P fdisk
輸出結果:
function fdisk(){ :; }
echo "type";type fdisk
echo;echo "type -a";type -a fdisk
echo;echo "type -t";type -t fdisk
echo;echo "type -f";type -f fdisk
echo;echo "type -P";type -P fdisk
輸出結果:
type fdisk is a function fdisk () { : } type -a fdisk is a function fdisk () { : } fdisk is /sbin/fdisk type -t function type -f fdisk is /sbin/fdisk type -P /sbin/fdisk
2017年3月21日 星期二
列出系統連線前10名
# List Top 10 ip_conntrack
#Linux kernel 2.4.x
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10
#Linux kernel 2.6.x-
cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10
#Linux kernel 2.4.x
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10
#Linux kernel 2.6.x-
cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10
2017年3月20日 星期一
讀取 /proc/{pid}/cmdline
cut -d $'\0' --output-delimiter=" " c1 -f 1-
===================================================
while read -d $'\0'; do echo $REPLY; done < cmdline;
===================================================
i=1
while t=$(cut -d $'\0' -f $i /proc/1/cmdline)
do
echo $t
i=$(($i+1))
[ "$t" == "" ] && break;
done
====================================================
function func_strings { :;
_return='';
i=1;
while t=$(cut -d $'\0' -f $i $1 2>/dev/null);
do :;
[ "$t" == "" ] && break;
i=$(($i+1));
_return=$(echo -n $_return $t)
done;
echo $_return;
}
===================================================
while read -d $'\0'; do echo $REPLY; done < cmdline;
===================================================
i=1
while t=$(cut -d $'\0' -f $i /proc/1/cmdline)
do
echo $t
i=$(($i+1))
[ "$t" == "" ] && break;
done
====================================================
function func_strings { :;
_return='';
i=1;
while t=$(cut -d $'\0' -f $i $1 2>/dev/null);
do :;
[ "$t" == "" ] && break;
i=$(($i+1));
_return=$(echo -n $_return $t)
done;
echo $_return;
}
2017年3月15日 星期三
2017年3月14日 星期二
2017年2月21日 星期二
read 從變數中讀取資料
A=a;
read r1 <<<$A;
B=b
r2=$(echo $B |while IFS= read -r r2;do :;echo $r2;done;);
echo = $r1 = $r2 =
A=$(echo -e "a1\nb1\n");
read r1 r2 <<<$A;
echo = $r1 = $r2 =
x1="1.2.3"
read a1 a2 a3<<<${x1//./ }
echo =$a1 =$a2 =$a3
x="1 2 3 4 5 6";
i=1;
while read -d " "; do :; eval "xx${i}=$REPLY";i=$(($i+1)); done <<<$x;
echo $xx1 $xx2 $xx3 $xx4;
read r1 <<<$A;
B=b
r2=$(echo $B |while IFS= read -r r2;do :;echo $r2;done;);
echo = $r1 = $r2 =
A=$(echo -e "a1\nb1\n");
read r1 r2 <<<$A;
echo = $r1 = $r2 =
x1="1.2.3"
read a1 a2 a3<<<${x1//./ }
echo =$a1 =$a2 =$a3
x="1 2 3 4 5 6";
i=1;
while read -d " "; do :; eval "xx${i}=$REPLY";i=$(($i+1)); done <<<$x;
echo $xx1 $xx2 $xx3 $xx4;
Linux share library path 筆記
相關設定檔
/etc/ld.so.cache
/etc/ld.so.conf
/etc/ld.so.conf.d/
ldconfig (用來產生 /etc/ld.so.cache)
ldconfig -p 列出所有的share library
環境變數
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/lib
/etc/ld.so.cache
/etc/ld.so.conf
/etc/ld.so.conf.d/
ldconfig (用來產生 /etc/ld.so.cache)
ldconfig -p 列出所有的share library
環境變數
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/lib
Linux S.M.A.R.T 摘要
查硬碟資訊
smartctl -i /dev/sda
開啟 S.M.A.R.T
smartctl -s on /dev/sda
查看健康狀態
smartctl -H /dev/sda
查看健康狀態(細項)
smartctl -A /dev/sda
進行一次自我檢測(在背景執行)
smartctl -t short /dev/sda
查看自我檢測執行進度
smartctl -a /dev/sda
smartctl -i /dev/sda
開啟 S.M.A.R.T
smartctl -s on /dev/sda
查看健康狀態
smartctl -H /dev/sda
查看健康狀態(細項)
smartctl -A /dev/sda
進行一次自我檢測(在背景執行)
smartctl -t short /dev/sda
查看自我檢測執行進度
smartctl -a /dev/sda
Bash 檢查 kernel 版本
function kernelv(){
[ -f /proc/version ] && read _1 _2 v _3 < /proc/version || return 5;
v=${v%%-*};v=${v//./ };
read v1 v2 v3 <<<$v;
v1=${v1:-0};v2=${v2:-0};v3=${v3:-0};
[ "$1" == "" ] && { echo $v1.$v2.$v3; return 4; };
_v=${1//./ };
read _v1 _v2 _v3 <<<$_v;
_v1=${_v1:-0};_v2=${_v2:-0};_v3=${_v3:-0};
[ "$_v1" -gt "$v1" ] && { echo "gt"; return 1; };
[ "$_v1" -lt "$v1" ] && { echo "lt"; return 2; };
[ "$_v2" -gt "$v2" ] && { echo "gt"; return 1; };
[ "$_v2" -lt "$v2" ] && { echo "lt"; return 2; };
[ "$_v3" -gt "$v3" ] && { echo "gt"; return 1; };
[ "$_v3" -lt "$v3" ] && { echo "lt"; return 2; };
echo "eq"; return 0;
}
grub重新安裝摘要
grub-install --boot-directory=DIR /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
相關檔案
/etc/default/grub
/etc/grub.d/40_custom
/etc/fstab
grub-mkconfig -o /boot/grub/grub.cfg
相關檔案
/etc/default/grub
/etc/grub.d/40_custom
/etc/fstab
2017年2月13日 星期一
2017年1月25日 星期三
2017年1月6日 星期五
2017年1月5日 星期四
訂閱:
文章 (Atom)