1. 程式人生 > >Linux的文件類型及用戶管理

Linux的文件類型及用戶管理

用戶管理

Linux的文件類型
-,f:普通文件
d:目錄文件,路徑映射
l:鏈接文件(符號鏈接)軟連接
設備文件:
c:字符設備,一次存取一個字符
b:塊設備
p:管道文件
fi,fo
s:套接字文件,socket

    文件系統:
    格式化:創建文件系統

Linux文件時間戳
訪問時間:
修改時間:寫數據
改變時間:元數據改變的時間
ls:使用默認選擇當前目錄
-a:顯示所有文件,包含隱藏文件
-A:不現實.和..常見的通用路徑
--color:顯示顏色
-l:長格式顯示
文件類型 權限 硬鏈接數 屬主 屬組 最近一次的修改時間 文件名->原始文件
-rw-r--r--. 1 root root 1612 May 16 04:30 /etc/passwd

-d:顯示目錄自身的屬性,通常與-l同時使用
-r:實現逆序顯示
-R:遞歸顯示
-i:inode號,index node
-h:文件大小以人類易讀格式顯示
tree:以樹狀顯示目錄;需自行安裝
名稱解析:name resolving
bash shell的特性之四:命令別名
clear:清屏
alias:顯示當前shell中定義的所有別名;
任何隨進程而生的屬性,會在進程結束,屬性消失
~]# alias ALIAS=‘COMMAND [options] [arguments] ‘
unalias ALIAS --取消定義的別名
在命令前加\使用命令本身,而不是別名
只能查看純文本文件的命令
file FILE..:查看文件內容的格式
cat:將文本連接起來顯示在標準輸出上
-E, --show-ends 顯示行尾結束符$
-e:等於-vE
-v:顯示非打印符
-n:顯示每行按順序編號
-s:將多個連續的空白行合並顯示一個空白行
tac:逆序顯示文件
分屏顯示
more:只支持向後翻(到文件尾部後退出)
less:支持前後翻
head:
-n #:顯示前#行
tail
-n # 顯示後#行
-f:在文件數據增長時,實時顯示追加數據 output appended data as the file grows;
echo命令的用法:
-e:啟用轉義符 enable interpretation of backslash escapes
? \b:刪除前面的字符
? \t:制表符
? \v:垂直制表符
? \n:換行符
? \0NNN():八進制值 byte with octal value NNN
o 開始 \033[##;##;#mString
? 第一個#:3前景色
? 分號後第一個#:4背景色
? 第二個#:顏色(1-7)
? 分號隔開加第二組控制顏色
? PS1="\033[34;42m[\u@\h \W]\033[0m\$ "
o 結束 \033[0m
-n:關閉自動換行功能
bash特性五:globbing,文件名通配
通配符:
*:匹配任意長度的任意字符
?:匹配任意單個字符
[ ]:匹配指定字符範圍內的任意單個字符,不區分大小寫
[[:upper:]]:大寫字母
[[:lower:]]:小寫字母
[[:alpha:]]:所有字母 [a-Z]
[[:digit:]]:所有數字
[[:alnum:]]:字母+數字
[[:blank:]]:水平制表符;
[[:space:]]:水平和垂直空白符;空格,tab,回車
[[:punct:]]:標點符號;特殊字符
[^STRING]:匹配指定字符範圍外的任意單個字符
命令總結:cat, tac, ls, more,less, tail, head, echo, tree

文件操作:touch,cp,mv,rm
cp copy
cp SRC DEST
假如SRC是一個文件:
如果目標是一個文件且目標存在:覆蓋
如果目標文件不存在:創建新文件
如果目標存在,且是個目錄:復制源至目標目錄中,並保持原名
cp SRC... DEST
假如SRC有多個文件:
如果目標存在,且是一個文件:復制無法進行
如果目標存在,且是一個目錄:復制各文件至目標目錄中,並保持原名
如果目標不存在:復制無法進行
如果SRC只有一個且是目錄:使用 -r 遞歸復制源目錄至目標目錄中
如果目標是一個文件且目標存在:失敗
如果目標文件不存在:創建新目錄
如果目標存在,且是個目錄:復制源目錄到目標目錄中,並保持原名
cp 命令的常用選項:
-r:遞歸
-i:提示,交互
-f:強制覆蓋
-a: same as -dR --preserve=all 保留所有的文件信息
-d:當源為連接文件時,復制鏈接文件本身,而非指向的源文件
-p:保持原有屬性
-u:只覆蓋源比目標文件新的文件
--backup-numbered:覆蓋前,先將舊文件改名為 文件名.~數字~
mv:移動,剪切,與cp相近
可以直接移動目錄,不需要-r選項
rm:移除;刪除非空目錄 rm -rf
touch:用來修改時間戳,創建空文件
-c:不創建空文件,只修改時間戳
-t:指定時間戳
-a:僅修改訪問時間
-m:僅修改修改時間
先加-m,在加-t 後跟時間
access time atime
modify time mtime
change time ctime
stat:顯示文件源數據信息,詳細信息
~]# stat FILE
Linux編輯器
行編輯器:sed
全屏編輯器:nano,vi,vim

用戶和權限管理:
? 用戶是什麽?
? 沒用用戶,可否 yes
? 用戶:資源獲取標識符,資源分配,安全權限模型的核心要素之一
? 密碼:來實現用戶認證的
? Linux是多用戶的操作系統
? 信息庫:用戶 密碼
? 名稱解析:User IDentifier UID
? 容器:能夠容納很多用戶的容器,可以分配權限:組(group),角色(role)
? 組名:Group IDentifier GID
? 解析:在數據庫中按搜索碼查找到對應的條目,並找到與之對應額外其他數據的過程
數據庫有以下內容
? 文本文件:
? SQL數據庫
? ldap數據庫

Linux用戶類別
管理員:0
普通用戶:1-65535
系統用戶:1-499(centos6),1-999(centos7)
對守護進程獲取資源進行權限分配;
登陸用戶:500+(centos6),1000+(centos7)
交互式登錄;

Linux用戶組
管理員組:root,0
普通組:
系統組:1-499(centos6),1-999(centos7)
普通組:500+(centos6),1000+(centos7)

Linux安全上下文:
運行中的程序:進程(process)
以進程發起者的身份運行;
root:cat
tom:cat
進程所能夠訪問的所有資源的權限,取決於進程的發起者的身份
運行中的進程有其屬主和屬組,取決於進程的屬組和屬主

Linux組的類別;

  1. 基本組:顯示在/etc/passwd中GID字段中,為用戶的基本組,主組
    組名同用戶名,且僅包含一個用戶:私有組
  2. 額外組:附加組;/etc/group

命令總結
useradd,usedel,groupadd,passwd,gpasswd,chsh,chfn,usermod,getent,groupmod,groupdel,chage,id,who,whoami,su
文件總結
/etc/passwd:用戶信息
/etc/group:組名:密碼占位符:GID:用戶列表(附加組)
/etc/skel:默認復制文件地址
/etc/default/useradd:配置文件,按默認值創建用戶

創建用戶 useradd<-->adduser
useradd UserName
-u UID:指定UID
-g GID:指定GID,即用戶的基本組,但GID要事先存在
-G GID:指定用戶的額外組,但GID要事先存在
-d DIR: 指定家目錄位置;若創建系統用戶則與-m配合使用,要求系統用戶在指定的目錄下不存在以其同名的目錄;若同名則不復制/etc/skel/中的內容至指定家目錄;
-c NOTE:備註
-s /bin/SHELL:指定默認shell,應該指定使用/etc/shells文件中出現的shell
-m:創建用戶時,強制給用戶創建家目錄
-M:創建用戶時,但不創建家目錄
-r:創建系統用戶
Centos 6:ID<500
Centos 7:ID<1000
特點:id 1-499 不會為用戶創建家目錄,默認shell為/sbin/nologin(自行設置-s /sbin/nologin)
默認值設定:/etc/default/useradd文件中
-D -options arguments
[root@www ~]# useradd -D -e 999 修改默認過期時間
[root@www ~]# useradd -D 查看默認值
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=999
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
添加用戶練習

userdel UserName        --刪除用戶,默認會保留家目錄
    -r:同時刪除家目錄

groupadd GroupName
    -g GID:創建組,並為其指定GID
    -r:創建系統組
            Centos 6:ID<500
            Centos 7:ID<1000     

Linux用戶和組相關的配置文件
/etc/passwd:用戶及其屬性信息(名稱、UID、基本組ID等)
name:password:UID:GID:GECOS:directory:shell
用戶名:密碼占位符:UID:GUID(基本組ID):用戶備註信息(多個以,隔開):家目錄:默認shell
/etc/group:組的屬性信息
group_name:passwd:GID:user_list
組名:組密碼占位符:GID:以當前組為附加組的用戶列表(分隔符為逗號)
組密碼在用戶完成基本組切換時使用
/etc/shadow:
用戶名:加密了的密碼:最近一次更改密碼的時間(距離1970-1-1的時間):密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期(登陸就要修改密碼):賬號的過期日期:保留字段

/etc/shells:當前系統的安全shell列表

加密機制:
    加密:明文--> 密文
    解密:密文--> 明文   
    對稱加密:如果加密、解密使用相同的密碼稱之為對稱加密    DES,3DES,AES
    非對稱加密:DSA,RSA
    單向加密:提取數據指紋
        MD5:message digest,128bits;信息摘要 128bit定長輸出16個字符
        SHA1:160bits;secure hash algorithm 安全的哈希算法 
        SHA224:224bits
        SHA256:256bits
        SHA384:384bits
        SHA512:512bits
        CRC32:循環冗余校驗碼
        雪崩效應:初始的條件的微小改變,將會引起結果的巨大改變;
        定長輸出,不可逆
    密碼數據庫:/etc/shadow
~]# useradd tom
~]# useradd jerry
~]# echo "redhat" | passwd --stdin tom    --生產密碼時加入雜質,防止密碼一樣
~]# echo "redhat" | passwd --stdin jerry

$6$E5f7SSVVLcp8oq.R$DD0oqUOWqRSlogbOd12VtHVlAgrS8EEx4UmoluV3OP5u4s3pT0xEKRgPIxNL9m8BPhzbQ6dPxAVqAo7YJ0txO
$加密算法$雜質$亂碼 $:分隔符,6:sha512,1:MD5

密碼的復雜性安全性策略
  1. 使用數字、大寫字母、小寫字母和特殊字符中的至少三種
  2. 足夠復雜、夠長、交叉
  3. 盡量避免使用易猜測的密碼;使用隨機密碼;
  4. 定期更換;不要使用最近曾經使用過的密碼;

    組:用戶容器,角色 /etc/group
    密碼:/etc/gshadow
    groupname:encrypted password:administraters:menbers
    設定用戶密碼
    普通用戶:passwd
    管理員
    ? 改自己密碼:passwd
    ? 改其他用戶密碼:passwd UserName
    -l:鎖用戶 用戶密碼前加驚嘆號!!
    -u:解鎖
    -e:強制用戶下次登錄修改密碼
    ? echo "hello" | passwd --stdin UserName 給UserName設定一個密碼

    gpasswd GroupName --設定組密碼
    用戶屬性修改
    chsh:修改默認的shell
    chfn:修改用戶註釋
    usermod:跟useradd命令使用方法類似
    -u UID
    -g GID
    -G GID:默認會覆蓋原有的附加組,如果要是添加,可以同時使用-a選項
    -c COMMENT
    -d new home 默認不會遷移用戶的家目錄,如果要遷移,同時使用-m選項
    -m, --move-home
    -s SHELL
    -l New_Login_Name 修改用戶登錄名稱
    -e 過期期限
    -f 非活動期限
    -L 鎖定用戶賬號
    -U 解鎖

    getent passwd UserName 查看passwd中指定用戶的信息

    groupmod:修改組屬性定義
    -g GID
    -n New Group 修改用戶的屬組
    groupdel
    gpasswd root都能用;普通用戶組管理員能用
    -a, --add USER add USER to GROUP
    -d, --delete USER remove USER from GROUP
    -Q, --root CHROOT_DIR directory to chroot into
    -r, --delete-password remove the GROUP‘s password
    -R, --restrict restrict access to GROUP to its members
    -M, --members USER,... set the list of members of GROUP
    -A, --administrators ADMIN,... set the list of administrators for GROUP

    chage:修改用戶的日期屬性
    -E:距離1970-1-1號的時間天數,過了這個時間,賬號不可訪問
    -I:設置活動天數
    -m:修改密碼最小使用時間
    -M:修改密碼最長使用時間
    -W:警告時間
    查看用戶的相關信息:
    id
    -n 顯示名稱
    -u 顯示UID
    -g 顯示基本組ID
    -G 顯示所有組ID
    who 顯示當前登錄用戶
    whoami 顯示當前終端登錄的用戶
    su Swith User 切換用戶或以其他用戶身份執行命令
    su [options...] [-] [user [args...]]
    切換用戶的方式:
    su UserName:非登錄式切換,即不會讀取目標用戶的配置文件;
    su - UserName:登錄式切換,會讀取目標用戶的配置文件;完全切換;
    root su至其他用戶無需密碼,非root用戶切換時需要密碼;
    換個身份執行命令:
    -c 不切換用戶,直接執行命令
    su [-] UserName -c ‘COMMAD‘
    -l 登錄式切換
    "su -l UserName"相當於"su - UserName"

Linux的文件類型及用戶管理