使用者管理和服務管理
1.使用者資訊檔案: /etc/passwd
1)root :x: 0 :0: root :/root :/bin/bash
使用者名稱 密碼位 UID GID初始組ID 使用者說明(可有可無) 家目錄 使用者登入之後的許可權
0 管理員
1-499 系統使用者(偽使用者)
>500 普通使用者
如果普通使用者最後的登陸許可權變為/sbin/nologin/則該使用者就無法登陸->可暫時禁止使用者登
2)影子檔案: /etc/shadow 加密後的密碼在此檔案裡面
99999為密碼的 有效期!!!!後面的7天為給提示讓使用者改密碼!!
初始組:每個使用者初始組只能有一個,初始組只能有一個,一般都是和使用者名稱相同的組作為初始組
附加組:每個使用者可以屬於多個附加組。要把使用者加入組,都是加入附加組
3)組資訊檔案: /etc/group
想要知道一個使用者屬於呢個初始組先/etc/passwd查詢組ID 再通過組ID/etc/group查出屬於哪個組
結構---組名:組密碼位:組ID:組中附加使用者!!
如何把使用者變為附加使用者:把machongtest1 作為machongtest的附加使用者
Machongtest1為附加組 不會影響Machongtest1初始組的建立(此種方式Machongtest1必須不存在)--大寫G
小寫g-->注意 使用小寫g是不會建立自身的初始組的!!
2.useradd 使用者名稱 useradd 選項 使用者名稱
選項:
-g 組名 指定初始組 不要手工指定
-G 組名 指定附加組,把使用者加入組,使用附加組
-c 說明 新增說明
-d 目錄 手工指定家目錄,目錄不需要事先建立
-s /bin/bash 手工指定使用者登入之後的許可權
useradd -g aa bb 新增bb使用者,同時指定初始組為aa
useradd -G user1 aa 新增使用者aa,指定附加組為user1
3.設定密碼 passwd 使用者名稱 ->管理員修改密碼
passwd 改變當前使用者密碼
4.刪除使用者 userdel -r 使用者名稱(-r 連帶家目錄一起刪除)
5.新增組 groupadd 組名
-g->新增使用者user5的時候給定初始組為1
-G->新增使用者user6的時候給定其附加組為1
User5離開了自身的1組不會存活 所以1組不能刪 要想刪除1組必須先刪除user5
User6離開了附加組還是可以存活的 所以只需刪除user5就可刪除組1
6.刪除組 groupdel 組名 注意:組中沒有初始使用者。
7.把已經存在的使用者加入組
gpasswd -a 使用者名稱 組名 使用者加入附加組(使用者名稱必須存在)
root:x:0:user1,user2 或者直接在後面加入附加組
gpasswd -d 使用者名稱 組名 把使用者從附加組中刪除(使用者名稱必須存在)
8.id 使用者名稱 顯示使用者的UID,初始組,和附加組
[[email protected] ~]$ id
uid=504(user1) gid=504(user1) 組=504(user1),0(root)
9.su - 使用者名稱 切換使用者身份 (- 連帶環境變數一起切換 建議使用完整切換!)
env
[[email protected] machong]# gpasswd -a user1 84 把user1加入附加組84
[[email protected] machong]# gpasswd -a user2 84 把user12附加組84
[[email protected] machong]# mkdir /www 建立www
[[email protected] machong]# chown root:84 /www/ 更改www的所屬主和所屬組
[[email protected] machong]# chmod 770 /www/ 更改所屬主和所屬組許可權
[[email protected] machong]#
[email protected] machong]# chmod 1770 /www/ 更改所屬主和所屬組許可權
1-隱藏許可權 sbit使用者上傳的東西只可以本使用者刪除
[[email protected] machong]# ll -d /www/
drwxrwx--T. 2 root 84 4096 7月 2 10:13 /www/
[[email protected] machong]#
設定特殊使用者許可權 wr
[[email protected] machong]# setfacl -m u:bnz:rx /www
[[email protected] machong]# ll -d /www
drwxrwx---+ 2 root 84 4096 7月 2 10:13 /www
[[email protected] machong]#
檢視檔案許可權
[email protected] machong]# getfacl /www
getfacl: Removing leading '/' from absolute path names-->只有相對路徑不會報錯
# file: www
# owner: root
# group: 84
user::rwx
user:bnz:r-x
group::rwx
mask::rwx
other::---
10.ACL許可權 用來解決許可權身份不足的問題的 單獨給予使用者許可權
1) getfacl 檔名 查詢檔案的acl許可權
2) setfacl 選項 檔名 設定acl許可權
-m 設定許可權
-b 刪除許可權
setfacl -m u:使用者名稱:許可權 檔名
setfacl -m g:組名:許可權 檔名
setfacl -m u:aa:rwx /test 給test目錄賦予aa使用者是讀寫執行的acl許可權
setfacl -m u:cc:rx -R soft/ 賦予遞迴acl許可權,只能賦予目錄
-R 遞迴
setfacl -b /test 刪除acl許可權
3) setfacl -m d:u:aa:rwx -R /test acl預設許可權。注意:預設許可權只能賦予目錄
[[email protected] www]# touch test1
[[email protected] www]# touch test2
[[email protected] www]# setfacl -m u:bnz:rx -R /www(有可能會造成許可權溢位,儘量不用)
[[email protected] www]# ll
總用量 8
-rw-r-xr--+ 1 root root 0 7月 2 10:53 test1
-rw-r-xr--+ 1 root root 0 7月 2 10:53 test2
注意:如果給目錄賦予acl許可權,兩條命令都要輸入
-R 遞迴
-m u:使用者名稱:-R 許可權 只對已經存在的檔案生效
-m d:u:使用者名稱:-R 許可權 只對未來要新建的檔案生效 d
[[email protected] www]# setfacl -b -R /www 遞迴刪除許可權
11.把命令寫入檔案裡面:
1)ls > aa 覆蓋到aa
2)ls >> aa 追加到aa
3)ls gdlslga 2>>aa 錯誤資訊輸出到aa 強調:錯誤輸出,不能有空格
2 錯誤資訊
[[email protected] www]# ls cjsakj 2>> test2
[[email protected] www]# cat test2
ls: 無法訪問cjsakj: 沒有那個檔案或目錄
掌握
ls >> aa 2>&1 錯誤和正確都輸入到aa,可以追加
2>&1 把標準錯誤重定向到標準正確輸出
[[email protected] www]# ll >> test3 2>&1
[[email protected] www]# ll cfdsmlksmd >>test3 2>&1
[[email protected] www]# cat test3
總用量 12
-rw-r--r--. 1 root root 330 7月 2 11:18 test1
-rw-r--r--. 1 root root 52 7月 2 11:19 test2
-rw-r--r--. 1 root root 18 7月 2 11:22 test3
ls: 無法訪問cfdsmlksmd: 沒有那個檔案或目錄
[[email protected] www]#
ls >> aa 2>>/tmp/bb 正確資訊輸入aa,錯誤資訊輸入bb
12.服務和程序管理
1)程序管理三個主要任務:
判斷伺服器健康狀態
檢視所有正在執行的程序
強制終止程序
2)程序檢視 ps aux 檢視當前系統所有執行的程序(-a 顯示前臺程序/-u 顯示使用者名稱、-x顯示後臺程序)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 2872 1384 ? Ss Jul01 0:03 /sbin/init
user:使用者名稱
pid: 程序id。PID 1 init 系統啟動的第一個程序
%CPU:cpu佔用百分比
%MEM:記憶體佔用百分比
VSZ: 虛擬記憶體佔用量 KB
RSS: 固定記憶體佔有量
Tty: 登入終端 tty1-7 本地終端 1-6 字元 7圖形
pts/0-255
alt+F1-F7
stat 狀態 S:睡眠 D:不可喚醒 R:執行 T:停止 Z:僵死 W:進入記憶體 交換 X:死掉的程序 <:高優先順序 N:低優先順序 L:被鎖進記憶體 s:含子程序 +:位於後臺 l:多執行緒
start 程序觸發時間
time 佔用cpu時間
command 程序本身
3)pstree 檢視程序樹
4)top 每三秒鐘重新整理一次( M 記憶體排序/ P CPU排序/ q 退出)
top - 12:18:17 up 1 day, 3:07, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 144 total, 1 running, 143 sleeping, 0 stopped, 0 zombie程序
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st空閒
Mem: 629444k total, 600520k used, 28924k free, 108592k buffers
Swap: 2047992k total, 8k used, 2047984k free, 241448k cached
第一行: 系統當前時間 系統持續時間 登入使用者 1,5,15分鐘之前的平均負載(越小越好)
第二行:程序總數
第三行:CPU佔用率 %id 空閒百分比
第四行:記憶體使用: 總共 使用 空閒 快取
第五行:swap使用
5)程序管理 終止程序
[email protected] ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
A)kill 訊號(-9) PID(程序id號) 結束單個程序
-9 強制
B)killall -9 程序名 結束一類程序
pkill -9 程序名
C)w 判斷登入使用者
[email protected] ~]# w
12:36:45 up 1 day, 3:26, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root tty1 :0 09:15 3:25m 15.65s 15.65s /usr/bin/Xorg :0
-nr -verbose -audit 4 -auth /var/run/gdm/a
root pts/0 192.168.140.22 12:28 0.00s 0.15s 0.08s w
user1 pts/1 192.168.140.22 12:36 6.00s 0.04s 0.04s -bash
[[email protected] ~]#
pkill -9 -t 終端號 把某個終端登入的使用者踢出
pkill -9 -t tty1 把本地登入終端1登入使用者踢出
[[email protected] ~]# pkill -9 -t pts/1
[[email protected] ~]#
13.系統執行級別
1) dmesg 檢視系統啟動資訊
cat /var/log/dmesg 系統啟動資訊日誌
dmesg | grep eth0 檢視eth0資訊
dmesg | grep CPU 檢視cpu資訊
[[email protected] ~]# dmesg | grep CPU
Transmeta TransmetaCPU
PAT not supported by CPU.
SMP: Allowing 1 CPUs, 0 hotplug CPUs
NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
PERCPU: Embedded 14 pages/cpu @c1a00000 s35928 r0 d21416 u2097152
Initializing CPU#0
mce: CPU supports 0 MCE banks
CPU0: Intel(R) Core(TM) Duo CPU T2400 @ 1.83GHz stepping 0c
Brought up 1 CPUs
microcode: CPU0 sig=0x6ec, pf=0x1, revision=0x54
[[email protected] ~]#
[[email protected] ~]# dmesg | grep eth0
eth0: registered as PCnet/PCI II 79C970A
eth0: link up
eth0: no IPv6 routers present
[[email protected] ~]#
2)系統執行級別
0 關機
1 單使用者
2 不完全多使用者,不含NFS
3 完全多使用者
4 保留
5 圖形介面
6 重啟
A)runlevel 查詢系統執行級別
[[email protected] ~]# runlevel
N 5 (N(none) 空格 5) N代表上一個級別 5當前級別
[[email protected] ~]#
B)init 執行級別 改變執行級別
[[email protected] ~]# init 3
[[email protected] ~]# init 5
關機init 0 重啟init 6
C)修改系統預設執行級別(是否進入圖形介面3,5)
vi /etc/inittab init配置檔案
#
id:5:initdefault:(系統預設執行級別,可修改!!!注意0和6不能夠設為預設!!!)
~
14.linux服務管理
1)Rpm包安裝的服務
A)獨立的服務(快,佔記憶體)
啟動
a) service httpd start(紅帽專有命令)
[[email protected] ~]# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/
[[email protected] ~]# netstat -tlun | grep 80
tcp 0 0 :::80 :::* LISTEN
[[email protected] ~]#
刪除(原始碼包通過紅帽專有命令啟動 只需複製檔案apache2/bin/apachectl)
[[email protected] ~]# rm -rf /etc/rc.d/init.d/apachectl
[[email protected] ~]# service apachectl start
apachectl: 未被識別的服務
[[email protected] ~]#
b) /etc/rc.d/init.d/httpd start(常規命令)
自啟動
a) chkconfig --level 2345 httpd on|off
[[email protected] ~]# chkconfig --list | grep httpd
httpd 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
[[email protected] ~]# chkconfig --level 2345 httpd on
[[email protected] ~]# chkconfig --list | grep httpd
httpd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
[[email protected] ~]#
b) vi /etc/rc.local(修改配置檔案 把apache標準啟動命令寫入,系統啟動之後在輸入使用者名稱密碼之前最後呼叫的檔案,檢測touch /var/lock/subsys/local該檔案的最後修改時間就知道計算機是什麼時候最後啟動的)
/etc/rc.d/init.d/httpd start(a和b只能有一個啟動 建議使用此方法,系統預設第一個)
B)基於xinetd的服務(慢,佔記憶體小)
檢視是否安裝:rpm -q xinetd
A.掛載
B.Yum -y install xinetd
C.檢視 chkconfig --list(!!!只能檢視rpm包的自啟動狀態!!!)
D.ntsysv rpm包安裝服務,自啟動管理工具
2)原始碼包安裝的服務
1) 啟動
/usr/local/apache2/bin/apachectl start
2) vi /etc/rc.local
/usr/local/apache2/bin/apachectl start
15.計劃任務
1)ps aux | grep crond / chkconfig --list | grep crond確定服務必須啟動
[[email protected] ~]# ps aux | grep crond
root 1649 0.0 0.2 7064 1260 ? Ss Jul01 0:02 crond
root 16975 0.0 0.1 5964 748 pts/0 S+ 19:15 0:00 grep crond
[[email protected] ~]#
[[email protected] ~]# chkconfig --list | grep crond
crond 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
[[email protected] ~]#
2)crontab -e 編輯定時任務(備份etc目錄)
分鐘 小時 天 月 周
* * * * * 命令
10 * 31 * * 命令 每個月中31號中的每個小時中第10分鐘執行一次
10 * * * * 命令 每個小時中第10分鐘執行一次
5 4 * 5-10 * 命令 5-10月每天的凌晨4點五分執行一次
*/10 * * * * 命令 每10分鐘執行一次
5 4 1,15 * * 命令 1號和15號4點五分執行日期和星期不要同時指定,會超出預期
5 4 10 * 5 命令 每個月10號的4點五分執行 && 每週五4點五分執行
*/20 4 * 5 2 命令 五月每週二 凌晨四點 每隔20分鐘執行一次
0 4 10-15 7,9,10 * 命令 七九十月中10-15號的四點整執行 第一位不可是*(任意)
第一個*:一小時中第幾分鐘 0-59
第二個:一天中第幾個小時 0-23
第三個:一個月中第幾天 1-31
第四個:一年第幾個月 1-12
第五個:一週中星期幾 0-6 (其中0就是星期日7)
3)注意事項:
A)選項都不能為空,必須填入,不知道的值使用萬用字元*表示任何時間
B)每個時間欄位都可以指定多個值,不連續的值用,間隔,連續的值用-間隔
C)間隔固定時間執行書寫為*/n格式
D)命令應該給出絕對路徑
E)星期幾何第幾天不能同時出現
F)最小時間範圍是分鐘,最大時間範圍是月
4)注意:
crontab -l 檢視系統定時任務
crontab -r 刪除定時任務
5)定時測試
A)crontab -e
B) 0 5 * * * echo 這是一個定時測試 >> /tmp/testwrite
C) [[email protected] ~]# date -s 04:59:58
D)[[email protected] tmp]# cat testwrite
這是一個定時測試