1. 程式人生 > >使用者管理和服務管理

使用者管理和服務管理

1.使用者資訊檔案: /etc/passwd

1)root :x: 0 :0:    root     :/root :/bin/bash

  使用者名稱     密碼位   UID    GID初始組ID 使用者說明(可有可無)     家目錄  使用者登入之後的許可權

     

使用者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 程序idPID 1  init  系統啟動的第一個程序

%CPUcpu佔用百分比

%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

   這是一個定時測試