通配符、用戶組管理與文件權限

一、文件通配符

通配符(wildcard pattern)才用特定的符號,表示特定的含義,此符號稱爲元 meta 字符linux

1.1 常見的通配符

*            匹配零個或多個字符,但不匹配 '.' 開頭的文件,即隱藏文件
?           匹配任何單個字符
~            當前用戶家目錄
~grain       用戶grain家目錄
~+和.        當前工做目錄
~-           前一個工做目錄
[0-9]        匹配數字範圍
[a-z]        小字母
[A-Z]        大字母
[grain]      匹配括號中的任何的一個字符
[^grain]     匹配括號中的全部字符之外的字符

1.2 其餘在linux系統中預約義的字符類

[:digit:]       任意數字,至關於0-9
[:lower:]       任意小寫字母,表示 a-z
[:upper:]       任意大寫字母,表示 A-Z
[:alpha:]       任意大小寫字母
[:alpnum:]      任意數字或字母
[:blank:]       水平空白字符
[:space:]       水平或垂直空白字符
[:print:]       可打印字符

1.3 通配符應用範例

  • 顯示/data目錄下以非字母開頭,後面跟了一個字母及其餘任意長度字符的文件或目錄列表
[root@CentOS8 data]#ll -d  /data/[^[:alpha:]][[:alpha:]]*
-rw-r--r--. 1 root root 0 Feb 22 19:16 /data/1abcT.txt
-rw-r--r--. 1 root root 0 Feb 22 19:16 /data/2leey.log
-rw-r--r--. 1 root root 0 Feb 22 19:16 /data/3g.cre
drwxr-xr-x. 2 root root 6 Feb 22 19:19 /data/4G
drwxr-xr-x. 2 root root 6 Feb 22 19:23 /data/5gkpi
  • 複製/etc目錄下全部以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
[root@CentOS8 etc]#cp -r /etc/p*[^0-9] /tmp/mytest1
[root@CentOS8 etc]#ls /tmp/mytest1/
pam.d   passwd-  plymouth  popt.d   prelink.conf.d  profile    protocols
passwd  pki      pm        postfix  printcap        profile.d
  • 將/etc/issue文件中的內容轉換爲大寫後保存至/tmp/issue.out文件中
[root@CentOS8 data]#cat /etc/issue
\S
Kernel \r on an \m

[root@CentOS8 data]#tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue.out
[root@CentOS8 data]#cat /tmp/issue.out 
\S
KERNEL \R ON AN \M

二、 用戶和組管理

2.1 用戶建立:useradd

格式:git

useradd [options] NAME

常見選項:shell

-u          UID
-o          配合-u,不檢查UID的惟一性
-g          GID 指明用戶基本組,可爲組名,也能夠GID
-c          用戶註釋信息
-d          指定家目錄路徑
-s          指明默認的shell
-G          指明附加組,組要事先存在
-r          建立系統用戶,centos6以前 ID<500, centos7之後 ID<1000
-m          建立家目錄,用於系統用戶
-M          不建立家目錄,用戶非系統用戶

範例:apache

[root@CentOS8 etc]#useradd -r -ou 666 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache 
useradd: group 'apache' does not exist
[root@CentOS8 etc]#groupadd apache
[root@CentOS8 etc]#useradd -r -ou 666 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache[root@CentOS8 etc]#

2.2 用戶屬性修改: usermod

格式centos

usermod [option] Name

常見選項:bash

-u          UID: 新UID
-g          GID: 新主組
-G          group1[,group2...]:新附加組,可多個,原來的附加組會被覆蓋,要保留同時使用-a選項
-s          shell:新的默認shell
-c          新的註釋信息
-d          新的家目錄,若要建立新家目錄並移動原目錄數據,同時使用-m選項
-l          新的名字 login_name
-L          密碼欄加鎖,!
-U          解鎖,去掉!
-e          指明用戶帳戶過時日期
-f          設定寬限期

2.3 刪除用戶:userdel

常見選項:ide

-f          強制
-r          刪除用戶家目錄和郵箱

2.4 查看用戶ID信息:id

2.5 切換用戶或以其餘用戶身份執行命令 : su

切換用戶的方式:post

  • su UserName:非登陸式切換,即不讀取用戶配置文件,不改變當前工做目錄,稱爲不徹底切換
  • su - UserName:登陸式切換,讀取用戶配置文件,切換到對應用戶本身家目錄,即徹底切換。

2.6 設置密碼 :passwd

常見選項:ui

-d          刪除指定用戶密碼
-l          鎖定指定用戶
-u          解鎖指定用戶
-e          強制用戶下次登錄修改密碼
-f          強制操做
-n          指定最短使用期限
-x          最大使用期限
-w          提早多少天開始警告
-i          指定寬限期
--stdin     從標準輸入接受用戶密碼

2.7 建立組 :groupadd

格式加密

grouadd [option]...groupname

常見選項:

-g          指明GID
-r          建立系統組
Exp : groupadd -g 666 -r apache

2.8 修改組:groupmod

2.9 刪除組:groupdel

2.10 更改組密碼: gpasswd

gpasswd命令,能夠更改組密碼,也能夠修改附加組成員關係

常見選項:

-a          將user添加至指定組中
-d          從指定組中移除用戶user
-A user1,user2,...  設置有管理員權限的用戶列表

2.11 更改和查看組成員:groupmems

groupmems 能夠管理附加組的成員關係

常見選項:

-g          更改成指定組,只有root能夠操做

-a          指定用戶加入組
-d          從組中刪除用戶
-p          從組中清除全部成員
-l          顯示組成員列表

groups 可查看用戶組關係

2.12 用戶和組管理實例

2.12.1 建立組distro,其GID爲2019

[root@CentOS8 data]#groupadd -g 2019 distro

2.12.2 建立用戶mandriva,其ID號爲1005,基本組爲distro

[root@CentOS8 data]#useradd -u 1005 -g distro mandriva
useradd: UID 1005 is not unique             # 提示 UID 1005不是惟一的
[root@CentOS8 data]#useradd -ou 1005 -g distro mandriva
[root@CentOS8 data]#id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)

2.12.3 建立用戶mageia,其ID爲1100,家目錄爲/home/linux

[root@CentOS8 data]#useradd -u 1100 -d /home/linux mageia
[root@CentOS8 data]#id mageia
uid=1100(mageia) gid=1100(mageia) groups=1100(mageia)
[root@CentOS8 data]#tree /home
/home
├── lee
├── linux

2.12.4 給用戶mageia添加密碼,密碼爲mageedu,並設置用戶密碼7天后過時

[root@CentOS8 data]#echo "mageedu" | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.
[root@CentOS8 data]#passwd -x 7 mageia
Adjusting aging data for user mageia.
passwd: Success
[root@CentOS8 data]#getent shadow | grep mageia
mageia:$6$FW0xrns/UKahsCit$.uQXxR01mm3IxvtsOCUjjatVc6HGHF65Xs6Js5NItZdblel0Btx.LMbXLC9T3l9xqbJwe6mFk7jfNmNQGEI9j0:18680:0:7:7:::

2.12.5 刪除用戶mandriva,但保留其家目錄

[root@CentOS8 data]#userdel mandriva
[root@CentOS8 data]#ls /home/
linux  mandriva         # 用戶mandriva家目錄仍存在

2.12.6 建立用戶slackware,其ID爲2002,基本組爲distro,附加組爲peguin

[root@CentOS8 data]#groupadd peguin
[root@CentOS8 data]#useradd -u 2002 -g 2019 -G peguin slackware
[root@CentOS8 data]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)
[root@CentOS8 data]#

2.12.7 修改slackware的默認shell爲/bin/tcsh

[root@CentOS8 data]#usermod -s /bin/tcsh slackware
[root@CentOS8 data]#getent passwd | grep slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh
[root@CentOS8 data]#

2.12.8 爲用戶slackware新增附加組admins,並設置不可登錄

[root@CentOS8 data]#groupadd admins
[root@CentOS8 data]#usermod -aG admins -L slackware
[root@CentOS8 data]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)
[root@CentOS8 data]#cat /etc/shadow | grep slackware
slackware:!!:18680:0:99999:7:::

三、文件權限管理

3.1 設置文件的全部者 chown

chown命令能夠修改文件的屬主,也能夠修改文件屬組

格式

chown [OPTION]... [OWNER][:[GROUP]] FILE...
 chown [OPTION]... --reference=RFILE FILE...

用法說明:

OWNER           #只修改全部者
OWNER:GROUP      #同時修改全部者和屬組
:GROUP          #只修改屬組,冒號能夠用 . 替換
-R              #遞歸
--reference=RFILE   #參考指定的屬性來修改

3.2 修改文件權限 chmod

格式

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

說明:

MODE: who opt permission
who: u,g,o,a
opt: +,-,=
per: r,w,x
修改指定一類用戶的全部權限
u=  g=   o=  ug=  a=  u=,g=

修改指定一類用戶某個或某個權限
u+  u-  g+  g-  o+  o-  a+  a-

-R: 遞歸修改權限

3.3 文件特殊屬性 chattr

設置文件特殊屬性,能夠防止 root 用戶誤操做或修改文件

不能刪除,更名,更改

chattr +i

只能追加內容,不能刪除,更名

chattr +a

顯示特殊屬性

lsattr

3.4 ACL訪問控制列表

Centos7 默認建立的xfs和ext4文件系統具備ACL功能

Centos7 以前版本,默認手工建立的ext4文件系統無ACL功能,需手動增長

tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test

ACL生效順序:

全部者,自定義用戶,所屬組|自定義組,其餘人

ACL相關命令:

setfacl 能夠設置ACL權限
getfacl 能夠查看設置的ACL權限

3.5 特殊權限Sticky

具備寫權限的目錄一般用戶能夠刪除改目錄中的任何文件,不管該文件的權限或擁有權

在目錄設置Sticky位,只有文件的全部者或root能夠刪除該文件

sticky設置在文件上無心義

Sticky權限設定

chmod o+t DIR...
chmod o-t Dir...
chmod 1xxx DIr...

3.6 文件權限實例

建立用戶user一、user二、user3。在/data下建立目錄test

  • 目錄/data/test屬主、屬組爲user1
[root@CentOS8 data]#NAME=user;for i in {1..3};do useradd $NAME$i;done
[root@CentOS8 data]#mkdir -pv /data/test
mkdir: created directory '/data/test'
[root@CentOS8 data]#chown user1.user1 /data/test
  • 在目錄屬主、屬組不變的狀況下,user2對文件有讀寫權限
[root@CentOS8 data]#setfacl -m u:user2:rw /data/test
[root@CentOS8 data]#getfacl /data/test/
getfacl: Removing leading '/' from absolute path names
# file: data/test/
# owner: user1
# group: user1
user::rwx
user:user2:rw-
group::r-x
mask::rwx
other::r-x
  • user1在/data/test目錄下建立a1.sh,a2.sh,a3.sh,a4.sh,設置全部用戶都不能刪除a1.sh,a2.sh文件、除了user1及root外,全部用戶都不可刪除a3.sh,a4.sh。
[root@CentOS8 data]#touch /data/test/a{1..4}.sh
[root@CentOS8 data]#chattr +i /data/test/a1.sh /data/test/a2.sh
[root@CentOS8 data]#chmod o+x /data/test/a3.sh /data/test/a4.sh
[root@CentOS8 data]#chmod o+t /data/test/a3.sh /data/test/a4.sh
  • user3增長附加組user1,同時要求user1不能訪問/data/test目錄及其下全部文件
[root@CentOS8 data]#usermod -aG user1 user3
[root@CentOS8 data]#setfacl -m u:user1:- /data/test
[root@CentOS8 data]#getfacl /data/test/
getfacl: Removing leading '/' from absolute path names
# file: data/test/
# owner: user1
# group: user1
user::rwx
user:user1:---
user:user2:rw-
group::r-x
mask::rwx
other::r-x
  • 清理/data/test目錄及其下全部文件的acl權限
[root@CentOS8 data]#setfacl -R -b /data/test
相關文章
相關標籤/搜索