1. 程式人生 > >Linux(7):用戶管理

Linux(7):用戶管理

shells 正常 wall 自己 col sasl ubunt 軟鏈接 syslog

用戶管理

讓一個腳本或命令開機自啟動的方法:

# 方法一: 
    把腳本放到  /etc/rc.local  中
# 方法二: 
    把腳本或命令通過 chkconfig 管理
    
# 如何讓一個腳本被 chkconfig 管理 ?
# 1). 被 chkconfig 管理的腳本必須要放在 /etc/init.d 下面
[[email protected] ~]# vim /etc/init.d/oldgirld 
[[email protected] ~]# cat /etc/init.d/oldgirld 
echo oldgirl
[[email protected] 
~]# ll /etc/init.d/oldgirld -rw-r--r-- 1 root root 13 Apr 8 21:26 /etc/init.d/oldgirld # 2). 這個腳本要有執行權限 [[email protected] ~]# chmod +x /etc/init.d/oldgirld [[email protected] ~]# /etc/init.d/oldgirld oldgirl # 我們平時運行腳本是通過 sh 命令,但系統運行腳本是通過 絕對路徑 # 3). 這個腳本的開頭要有 chkconfig 指定的內容: # chkconfig: 2345 99 99 ---> #空格chkconfig:空格2345空格99空格99
[[email protected] ~]# vim /etc/init.d/oldgirld [[email protected] ~]# cat /etc/init.d/oldgirld # chkconfig: 2345 99 99 # 2345 表示這段腳本被 chkconfig 管理的時候 默認在哪些運行級別上開機啟動;第一個99表示這個腳本是第幾個開機啟動的(開機啟動順序;我們自己寫的腳本一般放到99開機順序;最大也是99);第二個99表示關機順序 echo oldgirl # 4). 讓 chkconfig 管理腳本: [[email protected] ~]#
[[email protected] ~]# chkconfig --add oldgirld # oldgirld 這個腳本不需要寫 絕對路徑,因為這個腳本必須放在 /etc/init.d/ 下面 [[email protected] ~]# chkconfig |grep girl oldgirld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [[email protected] ~]#

chkconfig 背後的原理

# chkconfig 也是命令,但卻能永久生效,是因為它改變了一些文件,拿 3運行級別來說,它影響的是 /etc/rc3.d/ 下面的文件
[[email protected] ~]# ls /etc/rc3.d/
K01smartd     K74ntpd         K92iptables      S10network     S22messagebus        S50kdump      S99local
K10psacct     K75ntpdate      K99rngd          S11auditd      S25blk-availability  S55sshd       S99oldgirld
K10saslauthd  K75quota_nld    S01sysstat       S12rsyslog     S25netfs             S82abrtd
K15svnserve   K87restorecond  S02lvm2-monitor  S13cpuspeed    S26acpid             S83abrt-ccpp
K30postfix    K89netconsole   S05rdma          S13irqbalance  S26haldaemon         S90crond
K61nfs-rdma   K89rdisc        S08ip6tables     S15mdmonitor   S26udev-post         S95atd            # 這些都是軟鏈接
[[email protected] ~]# chkconfig iptables on
[[email protected] ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:on    3:on    4:on    5:on    6:off
[[email protected] ~]# ll /etc/rc3.d/ |grep ipt
lrwxrwxrwx  1 root root 18 Apr  8 22:04 S08iptables -> ../init.d/iptables
[[email protected] ~]# chkconfig iptables off
[[email protected] ~]# ll /etc/rc3.d/ |grep ipt
lrwxrwxrwx  1 root root 18 Apr  8 22:06 K92iptables -> ../init.d/iptables
[[email protected] ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off
[[email protected] ~]# 

# 由上面可知,chkconfig iptables on/off 對 /etc/rc3.d/ 中的文件 產生了影響:
chkconfig iptables on ====> /etc/rc3.d/ 下面的 S08iptables -> ../init.d/iptables        # S ---> start
chkconfig iptables off  ====> /etc/rc3.d/ 下面的 K92iptables -> ../init.d/iptables        # K ---> kill

# 驗證 S 代表 start 和 K 代表 kill
[[email protected] ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off
[[email protected] ~]# mv /etc/rc3.d/K92iptables /tmp/        # 把這個軟鏈接移動到 /tmp/  , 不要刪除
[[email protected] ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off
[[email protected] ~]# ls -l /etc/rc3.d/ |grep ipt
[[email protected] ~]# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables        # 給 /etc/init.d/iptables 創建軟鏈接, S08iptables
[[email protected] ~]# ls -l /etc/rc3.d/ |grep ipt
lrwxrwxrwx  1 root root 20 Apr  8 23:18 S08iptables -> /etc/init.d/iptables
[[email protected] ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:on    4:off    5:off    6:off        # 此時在3級別上已經變成了 開機啟動
[[email protected] ~]# 


# 結論:在執行 chkconfig on/off 時,它會在3運行級別(不止3級別)上 創建一個 S 或 K 開頭的文件
# 08 和 92 的含義如下:
[[email protected] ~]# head -5 /etc/init.d/iptables 
#!/bin/sh
#
# iptables    Start iptables firewall
#
# chkconfig: 2345 08 92            

# 08 是開機時的順序, 92 是關機時的順序

用戶分類 與 用戶相關文件

# 用戶分類:
    1. root 皇帝  uid:0
    2. 虛擬用戶 傀儡  uid: 1-499    # 虛擬用戶無法被切換到
        2.1 每個程序、服務運行的時候都需要一個用戶
        2.2 傀儡用戶不需要用來登陸系統
        2.3 傀儡用戶的命令解釋器: /sbin/nologin    # 區分傀儡用戶最核發的標準;正常用戶的命令解釋器為: /bin/bash
    3. 普通用戶 uid: 500+

[[email protected] ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
[[email protected] ~]# grep nobody /etc/passwd    # nobody 為 虛擬用戶
nobody:x:99:99:Nobody:/:/sbin/nologin
[[email protected] ~]# su - nobody
This account is currently not available.    # 虛擬用戶無法登陸


# 用戶相關的配置文件:
# /etc/passwd   ---> 存放用戶的信息
# /etc/shadow     ---> 存放用戶密碼信息
# /etc/group     ---> 存放用戶、用戶組信息
# /etc/gshadow     ---> 存放用戶組密碼信息

[[email protected] ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[[email protected] ~]# tail -1 /etc/passwd
oldboy:x:500:500::/home/oldboy:/bin/bash

 root        :x                        :0        :0        :root                :/root            :/bin/bash
 oldboy        :x                        :500    :500    :                    :/home/oldboy    :/bin/bash
# 用戶名    原先存放密碼的地方        uid        gid        用戶的說明信息        用戶的家目錄    用戶的命令解釋器(shell;重要)
        (現在密碼存放在/etc/shadow)                (添加用戶時該列默認為空)            /bin/bash 是用戶默認的;/sbin/nologin 是虛擬用戶的; 判斷是否為虛擬用戶的標準
         把x刪掉後該用戶就沒有密碼了,可以隨便切換到該用戶

# 其它的命令解釋器:
[[email protected] ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash        # ubuntu 系統的命令解釋器
/bin/tcsh        # Unix系統的; tcsh 是 csh 的升級版
/bin/csh        # Unix系統的

-bash-4.1$ 故障分析

Linux(7):用戶管理