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
-r:實現逆序顯示
-R:遞歸顯示
-i:inode號,index node
-h:文件大小以人類易讀格式顯示
tree:以樹狀顯示目錄;需自行安裝
名稱解析:name resolving
bash shell的特性之四:命令別名
clear:清屏
alias:顯示當前shell中定義的所有別名;
任何隨進程而生的屬性,會在進程結束,屬性消失
~]# alias ALIAS=‘COMMAND [options] [arguments] ‘
unalias ALIAS --取消定義的別名
在命令前加\使用命令本身,而不是別名
只能查看純文本文件的命令
file FILE..:查看文件內容的格式
-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:刪除前面的字符
? \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組的類別;
- 基本組:顯示在/etc/passwd中GID字段中,為用戶的基本組,主組
組名同用戶名,且僅包含一個用戶:私有組 - 額外組:附加組;/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
密碼的復雜性安全性策略
- 使用數字、大寫字母、小寫字母和特殊字符中的至少三種
- 足夠復雜、夠長、交叉
- 盡量避免使用易猜測的密碼;使用隨機密碼;
-
定期更換;不要使用最近曾經使用過的密碼;
組:用戶容器,角色 /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 GROUPchage:修改用戶的日期屬性
-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的文件類型及用戶管理