1. 程式人生 > >基礎命令及用戶管理

基礎命令及用戶管理

mail iss 功能 echo shadow 刪除文件 rwx 重要 con

linux系統登錄流程介紹

用戶名、密碼登錄 --> 權限的管理 --> 審計(日誌)
查看登錄日誌:/var/log/secure

Linux基礎命令

分為:內建命令和外部命令
(1)內建命令是shell的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程序識別並在shell程序內部完成運行,通常在linux系統加載運行shell時就被加載並駐留在系統內存中,其執行速度比外部命令要快,因為解析內部命令shell不需要創建子進程。
比如:exit、history、echo、cd
(2)外部命令是linux系統中的實用程序,因為實用程序功能比較強大,所以其包含的程序量也會很大,在系統加載時並不隨系統一起被加載到內存中,而是在需要時才將其調用到內存執行。
比如:ls、vim

type命令可以分辨內部命令和外部命令,執行type命令會有三種顯示形式:
file: 表示外部命令
alias:表示該指令為命令別名所設定的名稱;
builtin:表示該指令為bash內部命令

操作系統基礎命令:

關機命令:

            Halt
            Poweroff -f
            Init 0


重啟命令:

            Reboot
            Init 6
            Shutdown 
-r Whoami 顯示當前登錄用戶名 Who 顯示當前在線所有用戶 W 顯示當前所有登錄的用戶在做什麽

時間操作命令:

            date
            Date -s 修改時間
            Cal 查看日歷
            Ctrl + c 強制中斷
            Ctrl + d 正常中斷

新建、移動、復制、刪除文件

            touch
            mv
            cp
            rm
tree

查看歷史命令:

        history
            HISTCONTROL=ignoredups        # 默認,忽視重復且相同的命令
            HISTFILE=/root/.bash_history        歷史命令保存文件位置
            HISTFILESIZE=1000        歷史命令文件行數
            HISTSIZE=1000        歷史命令在shell中展示的行數
        
        -c:清空所有歷史命令
        n:顯示第n行命令
        
        history知識擴展:
            !: 上一個指令
            !!: 執行上一個指令

用戶和組

在linux中,用戶可以分為三大類:
超級用戶:root
虛擬用戶:在linux中,滿足文件和程序的運行所需而創建的,不能登錄,不能使用。
普通用戶:管理員root創建的用戶
組:具有相同特征用戶的集合,一個組可以包含多個用戶,每個用戶也可以屬於不同的組,組是為了管理員對用戶的集中管理,用戶組分為兩類:
系統組和用戶組
用戶和組的關系:
一對一:一個用戶存在一個組
一對多:一個用戶屬於多個組,只有一個主組,其余為附加組
多對一:多個用戶共存一個組
多對多:多個用戶可以存在多個組

用戶及用戶組配置文件介紹:
/etc/passwd

第一列:用戶名
第二列:密碼位
第三列:UID號 用戶
第四列:GID號 組
第五列:用戶名註釋
第六列:用戶的家目錄
第七列:用戶默認的shell類型

/etc/group:組及其屬性

第一列:組名
第二列:組密碼
第三列:GID
第四列:以該組為附加組的用戶列表

/etc/shadow 用戶密碼及其相關屬性

第一列:用戶名
第二列:密碼位
為空表示登錄不用密碼
$:為加密存放
*:為賬戶被鎖定
!!:表示密碼過期
第三列:最後一次修改時間(天數)
第四列:最小時間間隔:指的是兩次修改口令之間所需的最小天數
第五列:最大時間間隔:指的是兩次口令保持有效的最大天數
第六列:告警時間:從系統開始告警用戶到用戶密碼失效之間的天數
第七列:不活動時間:表示用戶沒有登錄活動但帳號有效的最大天數
第八列:失效天數:給出的絕對天數

/etc/gshadow 組密碼及其相關屬性

第一列:組名
第二列:組密碼第三列:管理員列表,可以更改組密碼和成員
第四列:將該組作為輔助組的成員列表

用戶和組管理命令

用戶管理命令:

        Useradd
        -u: uid 創建用戶時指定的uid
        -g:gid 指明創建用戶所屬組
        -c:用戶的註釋信息
        -M:不創建家目錄
        -s:指定用戶的默認shell
        -e:用戶過期時間
        -G:為用戶指明附加組,組必須提前存在
    
    
    創建用戶時默認值設定存放與/etc/default/useradd
    GROUP=100
    HOME=/home            把用戶的家目錄創建在/home下
    INACTIVE=-1            是否啟用帳號過期停權,-1為不啟用
    EXPIRE=            帳號終止日期,不設置為不啟用
    SHELL=/bin/bash            默認shell
    SKEL=/etc/skel            配置新用戶家目錄的默認存放位置
    CREATE_MAIL_SPOOL=yes        創建mail文件

    /etc/login.defs
    
    Usermod
    
        -u: 新UID
        -g:新主組
        -G:新附加組
        -s:新的默認shell
        -c:新的註釋
        -d:HOME 新的家目錄;若要創建新的家目錄並移動原家目錄數據,使用-m選項
        -L:lock指定用戶,在/etc/shadow密碼增加!
        
        
    Userdel
        
        -r:刪除用戶時,連通家目錄,mail一同刪除

    Id
        -u:顯示UID
        -g:顯示GID
        -G:顯示用戶所屬組的id
        -n:顯示名稱


Su 切換用戶或以其他用戶身份執行命令
(1)su 非登錄式切換,不會讀取目標用戶的部分配置文件,不改變工作目錄
(2)su - 登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
(3)root使用su切換至其他用戶無須密碼,其他用戶之間切換或者切換到root需要密碼


passwd:修改指定用戶密碼,僅root用戶使用
-e:強制用戶下次登錄修改密碼
--stdin:從標準輸入接收用戶密碼

組帳號管理:
Groupadd
-g:創建指定gid組
-r:創建系統組

Groupmod
-n:修改組名
-g:修改gid

Groupdel
刪除組

Groups
查看用戶所屬組列表


文件權限:
普通文件

r: 可以讀取文件內容
w: 可以追加或者覆蓋文件內容
x: 可以執行文件,需要和r配合

目錄文件

r:可以查看目錄下有那些文件,不能查看文件的詳細信息
w:可以在目錄中創建刪除文件,需要x配合
x:可以cd進入該目錄

Linux特殊權限

Setuid

當s這個標誌出現在文件所有者的x權限上時,例如文件權限 "-rwSr--r--" 說明此文件具有suid特殊權限,SUID功能和限制:
(1)SUID權限僅對二進制程序有效,首先該二進制需有執行權限
(2)執行者對於該程序需要具有x的可執行權限;
(3)本權限僅在執行該程序的過程中有效;
(4)執行者將具有該程序所有者的權限
(5)s為小寫時,擁有者有x權限,S為大寫時,擁有者沒有x權限

常見命令,例如:/usr/bin/passwd

密碼文件通常只有root有強制寫功能,也就是說只有root才可以修改密碼,但是為什麽普通用戶也可以修改自己的密碼呢?

因為在/usr/bin/passwd 命令具有SUID權限,在執行時,執行者將具有所有者的權限,所有者是root,所以普通用戶也可以修改密碼。
舉例:netstat

SGID

當s標誌出現在文件所有者的x權限時稱為SUID,那麽s出現在用戶組的x權限時稱為SGID。(U表示user,G表示group)。SGID有如下功能:
(1)SGID對二進制和目錄都有用
(2)程序執行者對該程序具備x權限(3)執行者在執行過程中會獲得該程序用戶組的支持

舉個例子,/usr/bin/locate這個程序可以去查詢/var/lib/mlocate/mlocate.db這個文件的內容,mlocate.db的權限如下:

-rwx--s--x root  slocate /usr/bin/locate
-rw-r-----   root slocate /var/lib/mlocate/mlocate.db


若使用vbird這個賬號執行locate時,vbird就會獲得用戶組slocate支持,又由於用戶組slocate對mlocate.db具有r權限,所以vbird就可以讀取mlocate.db了。

除了二進制程序外,SGID也可以用在目錄上。當一個目錄設置了SGID權限後,它具有以下功能:
(1)用戶若對此目錄具有r和x權限,該用戶能夠進入該目錄
(2)用戶在此目錄下的有效用戶組將變成該目錄的用戶組
(3)若用戶在此目錄下擁有w權限,則用戶所創建的新文件的用戶組與該目錄的用戶組相同

SBIT

sbit目前只對目錄有效
sbit對目錄的作用是:
(1)當用戶對此目錄具有w和x權限時,即具有寫入權限時;
(2)當用戶在該目錄下創建新文件或目錄時,僅有自己和root才有權限刪除

SUID/SGID/SBIT權限設置

先將其轉換為數字:
SUID: 4
SGID: 2
SBIT: 1

Linux ACL權限劃分

ACL:access control list 主要是提供傳統 讀寫執行權限以外的具體權限設置,ACL可以針對單一用戶、單一文件或者目錄進行,對於需要特殊權限的使用狀況有一定的幫助。如:某一個文件,不讓單一的某個用戶訪問

ACL使用兩個命令來對其進行控制:
getfacl:獲取某個文件、目錄的ACL設置項目
setfacl:設置某個文件、目錄的ACL設置項目

setfacl 參數
-m:設置後續acl參數
-x:刪除後續acl參數
-b:刪除全部的acl參數
-k:刪除默認的acl參數
-R:遞歸設置acl,包括子目錄
-d:設置默認acl

例:創建一文件test,將其權限修改為777,並查看其默認ACL權限配置

    [root@ localhost ~]# touch /test
    [root@ localhost ~]# chmod 777 /test
    [root@ localhost~]# getfacl /test            //獲得文件的ACL權限
    getfacl: Removing leading / from absolute path names
    # file: test                                //文件名
    # owner: root                            //文件所屬者
    # group: root                            //文件所屬組
    user::rwx                                //文件所屬者權限
    group::rwx                              //同組用戶權限
    other::rwx                              //其它者權限

可以看到其它者的權限也是可讀可寫可執行,可以自行測試,現在我們修改其ACL策略,使用用戶test只有讀取的權限

[root@zabbix tmp]# setfacl -m u:test:r test
[root@zabbix tmp]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:test:r--        # 可以看到 test 單獨的權限為 r--
group::rwx
mask::rwx
other::rwx

註:test權限並不是只根據ACL配置來決定的,它是由test用戶基本權限和ACL權限的交集決定的。

other:rwx
acl: r--

所以 test用戶只具有 r 權限

[test@zabbix tmp]$ echo abc > test
-bash: test: Permission denied
[test@zabbix tmp]$ rm -rf test
rm: cannot remove ‘test’: Operation not permitted

[root@zabbix tmp]# ll
-rwxrwxrwx+ 1 root root 0 Jan 18 07:10 test        # 可以看見,如果文件具有ACL權限後面會多一個加號

取消ACL

[root@zabbix tmp]# setfacl -x u:test test        # 取消test用戶acl權限
[root@zabbix tmp]# setfacl -x m test        # 恢復有效權限
[root@zabbix tmp]# ll
total 0
-rwxrwxrwx 1 root root 0 Jan 18 07:10 test

linxu隱藏權限

chattr (配置文件隱藏屬性)

選項與參數:
+ :添加某一個特殊參數,其他原本存在參數則不動.
- :移除某一個特殊參數,其他原本存在參數則不動.
= :配置一定,且僅有後面接的參數

A :當配置了 A 這個屬性時,若你有存取此文件(或目錄)時,他的存取時間 atime將不會被修改,可避免I/O較慢的機器過度的存取磁碟.這對速度較慢的計算機有幫助
S :一般文件是非同步寫入磁碟的(原理請參考第五章sync的說明),如果加上 S 這個屬性時,當你進行任何文件的修改,該更動會『同步』寫入磁碟中.
a :當配置 a 之後,這個文件將只能添加數據,而不能刪除也不能修改數據,只有root 才能配置這個屬性.
c :這個屬性配置之後,將會自動的將此文件『壓縮』,在讀取的時候將會自動解壓縮,但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大文件似乎蠻有用的!)
d :當 dump 程序被運行的時候,配置 d 屬性將可使該文件(或目錄)不會被 dump 備份
i :這個 i 可就很厲害了!他可以讓一個文件『不能被刪除、改名、配置連結也無法寫入或新增數據!』對於系統安全性有相當大的助益!只有 root 能配置此屬性
s :當文件配置了 s 屬性時,如果這個文件被刪除,他將會被完全的移除出這個硬盤空間,所以如果誤刪了,完全無法救回來了喔!
u :與 s 相反的,當使用 u 來配置文件時,如果該文件被刪除了,則數據內容其實還存在磁碟中,可以使用來救援該文件喔!
註意:屬性配置常見的是 a 與 i 的配置值,而且很多配置值必須要身為 root 才能配置

例:

[root@localhost ~]# cd /tmp/
[root@localhost tmp]# touch test
[root@localhost tmp]# lsattr test 
---------------- test
[root@localhost tmp]# chattr +i test 
[root@localhost tmp]# lsattr test 
----i----------- test
[root@localhost tmp]# rm -rf test 
rm: cannot remove ‘test’: Operation not permitted
[root@localhost tmp]# echo hello test > test 
-bash: test: Permission denied

-i選項很重要,在系統數據安全方面,由於是隱藏屬性,只能lsattr才能查看。

lsattr (顯示文件隱藏屬性)

    [root@www ~]# lsattr [-adR] 文件或目錄
    
    選項與參數:
    -a :將隱藏檔的屬性也秀出來;
    -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
    -R :連同子目錄的數據也一並列出來!

基礎命令及用戶管理