1.用戶信息文件: /etc/passwdnode
1)root :x: 0 :0: root :/root :/bin/bashlinux
用戶名 密碼位 UID GID初始組ID 用戶說明(無關緊要) 家目錄 用戶登陸以後的權限apache
用戶ID 緩存
0 管理員 bash
1-499 系統用戶(僞用戶)服務器
>500 普通用戶多線程
若是普通用戶最後的登錄權限變爲/sbin/nologin/則該用戶就沒法登錄->可暫時禁止用戶登tcp
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,初始組,和附加組
[user1@CentOS6 ~]$ id
uid=504(user1) gid=504(user1) 組=504(user1),0(root)
9.su - 用戶名 切換用戶身份 (- 連帶環境變量一塊兒切換 建議使用完整切換!)
env
[root@CentOS6 machong]# gpasswd -a user1 84 把user1加入附加組84
[root@CentOS6 machong]# gpasswd -a user2 84 把user12附加組84
[root@CentOS6 machong]# mkdir /www 建立www
[root@CentOS6 machong]# chown root:84 /www/ 更改www的所屬主和所屬組
[root@CentOS6 machong]# chmod 770 /www/ 更改所屬主和所屬組權限
[root@CentOS6 machong]#
root@CentOS6 machong]# chmod 1770 /www/ 更改所屬主和所屬組權限
1-隱藏權限 sbit用戶上傳的東西只能夠本用戶刪除
[root@CentOS6 machong]# ll -d /www/
drwxrwx--T. 2 root 84 4096 7月 2 10:13 /www/
[root@CentOS6 machong]#
設置特殊用戶權限 wr
[root@CentOS6 machong]# setfacl -m u:bnz:rx /www
[root@CentOS6 machong]# ll -d /www
drwxrwx---+ 2 root 84 4096 7月 2 10:13 /www
[root@CentOS6 machong]#
查看文件權限
root@CentOS6 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默認權限。注意:默認權限只能賦予目錄
[root@CentOS6 www]# touch test1
[root@CentOS6 www]# touch test2
[root@CentOS6 www]# setfacl -m u:bnz:rx -R /www(有可能會形成權限溢出,儘可能不用)
[root@CentOS6 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
[root@CentOS6 www]# setfacl -b -R /www 遞歸刪除權限
11.把命令寫入文件裏面:
1)ls > aa 覆蓋到aa
2)ls >> aa 追加到aa
3)ls gdlslga 2>>aa 錯誤信息輸出到aa 強調:錯誤輸出,不能有空格
2 錯誤信息
[root@CentOS6 www]# ls cjsakj 2>> test2
[root@CentOS6 www]# cat test2
ls: 沒法訪問cjsakj: 沒有那個文件或目錄
掌握
ls >> aa 2>&1 錯誤和正確都輸入到aa,能夠追加
2>&1 把標準錯誤重定向到標準正確輸出
[root@CentOS6 www]# ll >> test3 2>&1
[root@CentOS6 www]# ll cfdsmlksmd >>test3 2>&1
[root@CentOS6 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: 沒有那個文件或目錄
[root@CentOS6 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)進程管理 終止進程
root@CentOS6 ~]# 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 判斷登陸用戶
root@CentOS6 ~]# w
12:36:45 up 1 day, 3:26, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ 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
[root@CentOS6 ~]#
pkill -9 -t 終端號 把某個終端登陸的用戶踢出
pkill -9 -t tty1 把本地登陸終端1登陸用戶踢出
[root@CentOS6 ~]# pkill -9 -t pts/1
[root@CentOS6 ~]#
13.系統運行級別
1) dmesg 查看系統啓動信息
cat /var/log/dmesg 系統啓動信息日誌
dmesg | grep eth0 查看eth0信息
dmesg | grep CPU 查看cpu信息
[root@CentOS6 ~]# 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
[root@CentOS6 ~]#
[root@CentOS6 ~]# dmesg | grep eth0
eth0: registered as PCnet/PCI II 79C970A
eth0: link up
eth0: no IPv6 routers present
[root@CentOS6 ~]#
2)系統運行級別
0 關機
1 單用戶
2 不徹底多用戶,不含NFS
3 徹底多用戶
4 保留
5 圖形界面
6 重啓
A)runlevel 查詢系統運行級別
[root@CentOS6 ~]# runlevel
N 5 (N(none) 空格 5) N表明上一個級別 5當前級別
[root@CentOS6 ~]#
B)init 運行級別 改變運行級別
[root@CentOS6 ~]# init 3
[root@CentOS6 ~]# 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(紅帽專有命令)
[root@CentOS6 ~]# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/
[root@CentOS6 ~]# netstat -tlun | grep 80
tcp 0 0 :::80 :::* LISTEN
[root@CentOS6 ~]#
刪除(源碼包經過紅帽專有命令啓動 只需複製文件apache2/bin/apachectl)
[root@CentOS6 ~]# rm -rf /etc/rc.d/init.d/apachectl
[root@CentOS6 ~]# service apachectl start
apachectl: 未被識別的服務
[root@CentOS6 ~]#
b) /etc/rc.d/init.d/httpd start(常規命令)
自啓動
a) chkconfig --level 2345 httpd on|off
[root@CentOS6 ~]# chkconfig --list | grep httpd
httpd 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
[root@CentOS6 ~]# chkconfig --level 2345 httpd on
[root@CentOS6 ~]# chkconfig --list | grep httpd
httpd 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
[root@CentOS6 ~]#
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肯定服務必須啓動
[root@CentOS6 ~]# 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
[root@CentOS6 ~]#
[root@CentOS6 ~]# chkconfig --list | grep crond
crond 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
[root@CentOS6 ~]#
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) [root@CentOS6 ~]# date -s 04:59:58
D)[root@CentOS6 tmp]# cat testwrite
這是一個定時測試