1. 程式人生 > >Linux權限管理(用戶、組、文件管理)

Linux權限管理(用戶、組、文件管理)

參數 id號 逗號 獨立 gpasswd pip who 結束 目錄

一、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。

1、 文件查看類命令cat,tac, head, tail, more, less, ls ,file:

-ls : list,列出指定目錄下的內容

使用語法:ls [option]… [file]…

參數:-a 顯示所有文件,包括隱藏文件;

-A 顯示除.和..之外的所有文件;

-l –long,長葛市列表,即顯示文件的詳細屬性信息;

例:-rw-r--r--. 1 root root 8957 10月 14 19:34 boot.log

l:文件類型,-:常規文件;即f;

d: directory,目錄文件;

b: block device,塊設備文件,支持以“block”為單位進行隨機訪問

c:character device,字符設備文件,支持以“character”為單位進行線性訪問

major number:主設備號,用於標識設備類型,進而確定要加載的驅動程序

minor number:次設備號,用於標識同一類型中的不同的設備;

8位二進制:0-255

l:symbolic link,符號鏈接文件;

p: pipe,命名管道;

s: socket,套接字文件;

rw-r--r--

rw-:文件屬主的權限;

r--:文件屬組的權限;

r--:其它用戶(非屬主、屬組)的權限;

1:數字表示文件被硬鏈接的次數;

root:文件的屬主;

root:文件的屬組;

8957:數字表示文件的大小,單位是字節;

10月 14 19:34 :文件最近一次被修改的時間;

boot.log:文件名

-h, --human-readable:對文件大小單位換算;換算後結構可能會非精確值。

-d 查看目錄自身而非其內部的文件列表;

-r reverse,逆序顯示;

-R recursive,遞歸顯示;

-cat: 正向查看文件內容

使用語法:cat [option]… [file]…

參數:-n 給顯示的文本行編號;

-E 顯示行結束符$;

例:cat -n /etc/passwd

cat –E /etc/shadow

-tac:逆向查看文件內容

使用語法:tac [OPTION]... [FILE]...

參數:-n 給顯示的文本行編號;

-E 顯示行結束符$;

例:tac -n /etc/passwd

tac –E /etc/shadow

-file:查看文件內容類型

使用語法:file [file]…

例:

[root@localhost ~]# file /etc/passwd

/etc/passwd: ASCII text

分屏查看文件內容命令:more , less

-more命令:分屏顯示文本內容,每次顯示一屏顯示完停止;

語法:more [option] file

Space鍵:顯示文本下一屏內容;

Enter鍵:顯示文本下一行內容;

b鍵:顯示文本上一屏內容;

q鍵:退出;

特點:翻屏至文件尾部自動退出

-less命令:分屏顯示文本內容,不主動退出

語法:less [option] file

Space鍵:顯示文本下一屏內容;

Enter鍵:顯示文本下一行內容;

b鍵:顯示文本上一屏內容;

q鍵:退出;

-head命令:查看文件的前n行;(默認顯示前10行)

語法:head [option] file

參數:-n 查看文件的前n行

-tail命令:查看文件的後n行:(默認顯示後10行)

語法:tail [option] file

參數:-n查看文件的後n行

-f 查看文件尾部內容結束後不退出,跟隨顯示新增的行。

2、 創建目錄、文件:

-mkdir :創建目錄;

語法:mkdir [option]… directory…

參數:-p 自動按需創建父目錄;

-m 創建目錄是給定權限;

-v verbose,顯示詳細過程;

註意:路徑基名方為命令的作用對象;基名之前的路徑必須得存在;

例:[root@localhost ~]# mkdir -p -m 755 /tmp/mktest/test1/test

-touch : 一、用於把已存在文件的時間標簽更新為系統當前的時間(默認方式),它們的數據將原封不動地保留下來;

二、是用來創建新的空文件。

語法:touch [option]… [file]

參數:-c 制定的文件路徑不存在時不予創建

-a 僅修改access time

-m:僅修改modify time;

-t:使用指定的日期時間,格式[[CC]YY]MMDDhhmm[.ss](access time和modify time為指定時間,change time為當前系統時間)

-rmdir :刪除空目錄

語法:rmdir [option]… [directory]

參數:-p 刪除目錄後,如果其父目錄為空,則一並刪除;

-v 顯示過程

例1:如何創建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b?

[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}/

mkdir: created directory ‘/tmp/x’

mkdir: created directory ‘/tmp/x/y1’

mkdir: created directory ‘/tmp/x/y1/a/’

mkdir: created directory ‘/tmp/x/y1/b/’

mkdir: created directory ‘/tmp/x/y2/’

例2:如何創建a_c, a_d, b_c, b_d;

[root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d}

mkdir: created directory ‘/tmp/a_c’

mkdir: created directory ‘/tmp/a_d’

mkdir: created directory ‘/tmp/b_c’

mkdir: created directory ‘/tmp/b_d’

例3:如何刪除例2中創建的目錄;

[root@localhost ~]# cd /tmp

[root@localhost tmp]# rmdir -pv {a,b}_{c,d}

rmdir: removing directory, ‘a_c’

rmdir: removing directory, ‘a_d’

rmdir: removing directory, ‘b_c’

rmdir: removing directory, ‘b_d’

3、 文件管理工具:cp 、mv 、rm

-cp 命令:復制copy

語法:單源復制:cp [OPTION]... [-T] SOURCE DEST

多源復制:cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

單源復制:cp [OPTION]... [-T] SOURCE DEST

如果DEST不存在:則事先創建此文件,並復制源文件的數據流至DEST中;

如果DEST存在:

如果DEST是非目錄文件:則覆蓋目標文件;

如果DEST是目錄文件:則先在DEST目錄下創建一個與源文件同名的文件,並復制其數據流;

多源復制:cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

如果DEST不存在:錯誤;

如果DEST存在:

如果DEST是非目錄文件:錯誤;

如果DEST是目錄文件:分別復制每個文件至目標目錄中,並保持原名;

常用選項:

-i:交互式復制,即覆蓋之前提醒用戶確認;

-f:強制覆蓋目標文件;

-r, -R:遞歸復制目錄;

-d:復制符號鏈接文件本身,而非其指向的源文件;

-a:-dR --preserve=all, archive,用於實現歸檔;

--preserv=

mode:權限

ownership:屬主和屬組

timestamps: 時間戳

context:安全標簽

xattr:擴展屬性

links:符號鏈接

all:上述所有屬性

-mv 命令:移動或重命名

語法:單源復制:mv [OPTION]... [-T] SOURCE DEST(如果DEST不存在則創建,存在則覆蓋)
   多源復制:mv [OPTION]... SOURCE... DIRECTORY(DEST必須為directory)

參數:-i:交互式復制,即覆蓋前提醒用戶確認
   -f:強制覆蓋目標文件

例:mv -i /data/[1-3].txt /practice #把/data目錄下三個txt文件剪切到/practice下

-rm 命令:刪除

語法:rm [option]… [file]…

參數:-i交互式刪除,即刪除前提醒用戶確認
-f 強制刪除目標文件

-r -R:遞歸處理,將制定目錄下的所有文件包括目錄一並刪除

例:rm -rf /PATH/TO/DIR

危險操作:rm -rf /*

2、使用命令行展開功能,創建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目錄下創建目錄:x_y, x_z, q_y, q_z

[root@localhost tmp]# mkdir -vp /tmp/{a1/{a,b},a2}

mkdir: created directory ‘/tmp/a1’

mkdir: created directory ‘/tmp/a1/a’

mkdir: created directory ‘/tmp/a1/b’

[root@localhost tmp]# mkdir -vp /tmp/{x,y}_{q,z}

mkdir: created directory ‘/tmp/x_q’

mkdir: created directory ‘/tmp/x_z’

mkdir: created directory ‘/tmp/y_q’

mkdir: created directory ‘/tmp/y_z’

二、文件的元數據信息有哪些,分別表示什麽含義,如何查看?如何修改文件的時間戳信息。

1、Linux文件的數據分為兩類,一類為數據,即文件的實際內容(數據);一類為元數據,用來描述文件的特征(描述數據的屬性);

2、查看文件的元數據命令:stat,如下圖例:

[root@localhost tmp]# stat /etc/shadow

File: ‘/etc/shadow’

Size: 1341 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 1195163 Links: 1

Access: (0000/----------) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:shadow_t:s0

Access: 2018-11-26 00:11:03.342000329 +0800

Modify: 2018-11-19 00:21:57.403464776 +0800

Change: 2018-11-19 00:21:57.406464776 +0800

Birth: -

解釋:文件的元數據包括:文件名(File)、大小(Size)、數據塊(Blocks)、IO塊(IO Block)、設備(Device)、節點號(Inode)、硬鏈接(Links)、權限(Access)、文件所屬主(Uid)、文件所屬組(Gid)、最近訪問時間(Access Time)、最近文件修改時間(Modify Time)、最近文件屬性更改時間(Change Time);

3、 修改文件的時間戳可使用-touch 命令

-touch : 一、用於把已存在文件的時間標簽更新為系統當前的時間(默認方式),它們的數據將原封不動地保留下來;

二、是用來創建新的空文件。

語法:touch [option]… [file]

參數:-c 指定的文件路徑不存在時不予創建

-a 僅修改access time

-m:僅修改modify time;

-t:使用指定的日期時間,格式[[CC]YY]MMDDhhmm[.ss](access time和modify time為指定時間,change time為當前系統時間)

例1、通過添加用戶,系統自動修改了passwd的Access Time、Modify Time、Change Time

[root@localhost tmp]# stat /etc/passwd

File: ‘/etc/passwd’

Size: 2333 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 1195160 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:passwd_file_t:s0

Access: 2018-11-25 11:06:28.278012816 +0800

Modify: 2018-11-19 00:21:57.399464775 +0800

Change: 2018-11-19 00:21:57.402464776 +0800

Birth: -

[root@localhost tmp]# useradd magedu

[root@localhost tmp]# stat /etc/passwd

File: ‘/etc/passwd’

Size: 2376 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 1195159 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:passwd_file_t:s0

Access: 2018-11-26 03:47:33.715883162 +0800

Modify: 2018-11-26 03:47:33.128883122 +0800

Change: 2018-11-26 03:47:33.131883123 +0800

Birth: -

例2、使用touch命令修改文件時間戳

[root@localhost tmp]# stat /tmp/x #修改前查看文件時間戳

File: ‘/tmp/x’

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 802h/2050d Inode: 786463 Links: 4

Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2018-11-26 01:04:55.450219985 +0800

Modify: 2018-11-26 01:04:55.451219985 +0800

Change: 2018-11-26 01:04:55.451219985 +0800

Birth: -

[root@localhost tmp]# touch -a -c /tmp/x #修改文件的的最近一次訪問時間、修改時間戳

[root@localhost tmp]# stat /tmp/x #查看修改文件後的時間戳

File: ‘/tmp/x’

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 802h/2050d Inode: 786463 Links: 4

Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2018-11-26 03:57:39.565924336 +0800

Modify: 2018-11-26 01:04:55.451219985 +0800

Change: 2018-11-26 03:57:39.565924336 +0800

Birth: -

[root@localhost tmp]# touch -t 1811250333.00 /tmp/x #修改文件的的最近一次修改文件屬性的時間戳

[root@localhost tmp]# stat /tmp/x #查看修改文件後的時間戳

File: ‘/tmp/x’

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 802h/2050d Inode: 786463 Links: 4

Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2018-11-25 03:33:00.000000000 +0800

Modify: 2018-11-25 03:33:00.000000000 +0800

Change: 2018-11-26 04:01:37.965940538 +0800

Birth: -

例、在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

[root@localhost tmp]# touch /tmp/tfile-$(date ‘+%Y-%m-%d-%H-%M-%S‘)

例、 復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

[root@localhost tmp]# mkdir /tmp/mytest1

[root@localhost tmp]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1

例、 創建用戶tom,指定UID為5001,指定家目錄為/tmp/tom, 指定shell為/bin/zsh, 指定基本組為tom,附加組為jack

[root@localhost tmp]# groupadd tom

[root@localhost tmp]# groupadd jack

[root@localhost tmp]# useradd -u 5001 -d /tmp/tom -s /bin/zsh -g tom -G jack tom

註意:當創建用戶時,指定家目錄時報“useradd: cannot set SELinux context for home directory /tmp/test”錯,可使用以下方案解決:

如何關閉linux裏的selinux

[root@localhost ~]# setenforce 0

[root@localhost ~]# useradd -d /tmp/moonne moonne

setenforce是Linux的selinux防火墻配置命令 執行setenforce 0 表示關閉selinux防火墻。

setenforce命令是單詞set(設置)和enforce(執行)連寫,另一個命令getenforce可查看selinux的狀態。

三、 常用的用戶以及文件管理命令有哪些,並演示命令以及用法。

用戶管理:

Linux中的用戶分為兩類:管理員和普通用戶,普通用戶又分為系統用戶和登錄用戶

每個用戶都有唯一的用戶標識符UserID即UID,由16bits二進制的數字組成:0-65535

管理員的UID為:0

普通用戶的UID為:1-65535

系統用戶的UID:1-499(CentOS6),1-999(CentOS7)

登錄用戶的UID:500-60000(CentOS6),1000-60000(CentOS7)

用戶名userName與UID一一對應

用戶的相關信息可在/etc/passwd文件中查看

/etc/passwd :用戶的信息庫

[root@localhost /]# tail -3 /etc/passwd

hadoop:x:4006:4006::/home/hadoop:/bin/bash

magedu:x:4007:4007::/home/magedu:/bin/bash

tom:x:5001:5007::/tmp/tom:/bin/zsh

解釋:

name:password:UID:GID:GECOS:directory:shell

name: 用戶名

password:可以是加密的密碼,也可是占位符x;

UID:

GID:用戶所屬的主組的ID號;

GECOS:註釋信息

directory:用戶的家目錄;

shell:用戶的默認shell,登錄時默認shell程序;

/etc/shadow:用戶密碼

[root@localhost /]# tail -3 /etc/shadow

hadoop:!!:17853:0:99999:7:::

magedu:!!:17860:0:99999:7:::

tom:!!:17860:0:99999:7:::

用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過期期限:保留字段

組管理:

組:在linux 中的每個用戶都必須有一個組,不能獨立與組外。在Linux中每個文件有所有者、所在組、其他組的概念。

文件所在組:當某個用創建了文件後,這個文件的所在組就是該用戶的所在組

查看文件所在組命令:ls –ahl file_Name

修改文件所有組命令:chgrp group_Name file_Name

其他組:除文件的所有者和所在組的用戶外,系統的其他用戶都是文件的其他組;

組的類別1:

管理員組和普通用戶組

普通用戶組又分為系統組和登錄組。

組的類別2:

用戶的基本組、用戶的附加組

租的類別3:

私有組:組名同用戶名,且只包含一個用戶

共有組:組內包含了多個用戶

每個組都有唯一的組標識符GroupID即GID,由16bits二進制的數字組成:0-65635

管理員組的GID為:0

普通用戶組的ID為:1-65535

系統組的GID:1-499(CentOS6),1-999(CentOS7)

登錄組的GID:500-60000(CentOS6),1000-60000(CentOS7)

組名groupName與GID一一對應;

組的相關信息可在/etc/group文件中查看

/etc/group:組的信息庫

[root@localhost /]# tail -3 /etc/group

magedu:x:4007:

tom:x:5007:

jack:x:5008:tom

group_name:password:GID:user_list

user_list:該組的用戶成員;以此組為附加組的用戶的用戶列表;

Linux用戶和組管理命令:

組管理命令:

-groupadd 命令:添加組

語法:groupadd [option]… group_Name

選項:-g GID :指定GID;默認是上一個組的GID+1;

-r :創建系統組;

-groupmod 命令:修改組屬性

語法:groupmod [option] group_Name

選項:-g GID:修改GID

-n new_name:修改組名;groupmod –n new_name old_name

-groupdel 命令:刪除組

語法:groupdel [option] group

用戶管理命令:

-useradd 命令:創建命令

語法:useradd [option] userName

選項:-u, --uid UID:指定UID;

-g, --gid GROUP:指定基本組ID,此組得事先存在;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;

-c, --comment COMMENT:指明註釋信息;

-d, --home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;

-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;

-r, --system:創建系統用戶;

l useradd -s /sbin/nologin:該用戶不能登錄,還記得我們上面說到的系統用戶不能登錄吧?我們可以看到系統用戶的 shell 字段也是 /sbin/nologin

l echo $SHELL :查看當前用戶的 shell 類型

l useradd -M USERNAME:創建用戶但不創建家目錄

l useradd -mk USERNAME:創建用戶的同時創建家目錄,並復制 /etc/skel 中的內容到家目錄中。關於 /etc/skel 目錄會在下一篇 Linux 權限管理中再次講解。

l 如果用戶沒有家目錄,那麽不能切換到該用戶

註意:創建用戶時的諸多默認設定配置文件為 etc/longin.defs

Useradd –D:顯示創建用戶的默認配置

Useradd –D 選項:修改默認選項的值;

修改的結果保存於/etc/default/useradd 文件中;

-usermod 命令:修改用戶屬性

語法:usermod [option]… userName

選項:-u, --uid UID:修改用戶的ID為此處指定的新UID;

-g, --gid GROUP:修改用戶所屬的基本組;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;

-a, --append:與-G一同使用,用於為用戶追加新的附加組;

-c, --comment COMMENT:修改註釋信息;

-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;

-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;

例:Usermod –d /tmp/newhome –m user_name

-l, --login NEW_LOGIN:修改用戶名;

-s, --shell SHELL:修改用戶的默認shell;

-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";

-U, --unlock:解鎖用戶的密碼;

l usermod -G -a GROUPS USERNAME:在原有附加組的基礎上追加附加組

l usermod -d PATH USERNAME:修改家目錄。修改後原先家目錄中的文件不能訪問了,因為在當前的家目錄中並不存在這些文件。

-userdel命令:刪除用戶

語法:userdel [option] userName

選項:-r:刪除用戶時一並刪除其家目錄;

例1:創建用戶gentoo,UID為4001,基本組為gentoo,附加組為distro(GID為5000)和peguin(GID為5001);

[root@localhost ~]# useradd -u 4001 -g 1001 -G distro,peguin gentoo

[root@localhost ~]# id gentoo

uid=4001(gentoo) gid=1001(gentoo) groups=1001(gentoo),5002(distro),5001(peguin)

例2:創建用戶fedora,其註釋信息為"Fedora Core",默認shell為/bin/tcsh;

[root@localhost ~]# useradd -c "Fedora Core" -s /bin/tcsh fedora

[root@localhost ~]# id fedora

uid=4002(fedora) gid=4002(fedora) groups=4002(fedora)

例3:修改gentoo用戶的家目錄為/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;

[root@localhost ~]# usermod -d /var/tmp/gentoo Gentoo

例4:為gentoo新增附加組netadmin;

[root@localhost ~]# usermod -aG netadmin gentoo

用戶密碼管理:

-passwd 命令:修改用戶的密碼

語法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1)、passwd :修改用戶自己的密碼

(2)、passwd USERNAME :修改指定用戶的密碼,但僅root由此權限

選項:-l, -u:鎖定和解鎖用戶;

-d:清除用戶密碼串;

-e DATE: 過期期限,日期;

-i DAYS:非活動期限;

-n DAYS:密碼的最短使用期限;

-x DAYS:密碼的最長使用期限;

-w DAYS:警告期限;

--stdin:設定用戶密碼為用戶名

echo "PASSWORD" | passwd --stdin USERNAME

組密碼管理:

-gpasswd 命令:修改組密碼:

組密碼文件為:/etc/gpasswd

語法:gpasswd [option] groupName

選項:-a USERNAME:向組中添加用戶

-d USERNAME:從組中移除用戶

其他命令newgrp、chage、id、su:

-newgrp 命令:臨時切換指定的組為基本組

語法:newgrp [-] [groupName]

-:會模擬用戶重新登錄以實現重新初始化其環境

-chage 命令:更改用戶密碼過期信息

語法:chage [option] userName

選項:-d:上一次更改日期

-E:賬號到期的日期,過了這天,此賬號將不可用

-W:用戶密碼到期前,提前收到警告信息的天數

-m:密碼可更改的最小天數,為0代表任何時間都可以修改密碼

-M: 密碼保持有效的最大天數

-id命令:顯示用戶的真和有效ID;

語法:id [OPTION]... [USER]

選項:-u: 僅顯示有效的UID;

-g: 僅顯示用戶的基本組ID;

-G:僅顯示用戶所屬的所有組的ID;

-n: 顯示名字而非ID;

-su命令:登錄式切換用戶:會通過讀取目標用戶的配置文件來重新初始化

語法:su - USERNAME

su -l USERNAME

非登錄式切換:不會讀取目標用戶的配置文件進行初始化

su USERNAME

註意:管理員可無密碼切換至其它任何用戶;

-c ‘COMMAND‘:僅以指定用戶的身份運行此處指定的命令;

文件權限管理命令

-chmod用來變更文件或目錄的權限。在UNIX系統家族裏,文件或目錄權限的控制分別以讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可供運用。用戶可以使用chmod指令去變更文件與目錄的權限,設置方式采用文字或數字代號皆可。符號連接的權限無法變更,如果用戶對符號連接修改權限,其改變會作用在被連接的原始文件

語法:chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

chmod [OPTION]... --reference=RFILE FILE...

文件的三類用戶:u :屬主

g :屬組

o :其他

a :所有

(1) chmod [OPTION]... MODE[,MODE]... FILE...

MODE表示法:

賦權表示法:直接操作一類用戶的所有權限位rwx;

u= chmod u=rwx,g=rw,o=r f01

g=

o=

a=

授權表示法:直接操作一類用戶的一個權限位r,w,x;

u+, u- chmod u+x,g+w f01

g+, g-

o+, o-

a+, a-

(2) chmod [OPTION]... OCTAL-MODE FILE..

chmod 764 f01.

(3) chmod [OPTION]... --reference=RFILE FILE...

選項:-R, --recursive:遞歸修改

註意:用戶僅能修改屬主為自己的那些文件的權限;

從屬關系管理命令:chown,chgrp

-chown 命令: 改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。用戶可以是用戶或者是用戶D,用戶組可以是組名或組id。文件名可以使由空格分開的文件列表,在文件名中可以包含通配符。

語法:chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

選項:-R:遞歸修改

例:chown -R liu /usr/meng #將/usr/meng下的目錄及其子目錄、文件的所有者改為liu

chown user:market f01 #把文件f01給user,添加到market組

chown :market f01 #把文件f01給user,添加到market組

-chgrp 命令:用來改變文件或目錄所屬的用戶組。該命令用來改變指定文件所屬的用戶組。其中,組名可以是用戶組的id,也可以是用戶組的組名。文件名可以 是由空格分開的要改變屬組的文件列表,也可以是由通配符描述的文件集合。如果用戶不是該文件的文件主或超級用戶(root),則不能改變該文件的組。

語法:chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

註意:僅管理員可修改文件的屬主和屬組

參數:-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一並處理;

-v或——verbose:顯示指令執行過程;

--reference=<參考文件或目錄>:把指定文件或目錄的所屬群組全部設成和參考文件或目錄的所屬群組相同;

例:chgrp –R market /usr/meng #將/usr/meng及其子目錄下的文件的組修改為market

思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,能否修改此文件內容?能否刪除此文件?

回答:不能修改此文件,但能刪除此文件

反向掩碼:

-umask 命令:文件的權限反向掩碼,遮罩碼;

文件的權限反向掩碼默認為:666-umask

目錄的權限反向掩碼默認為:777-umask

註意:之所以文件用666去減,表示文件默認不能擁有執行權限;如果減得的結果中有執行權限,則需要將其加1;

例:若反向掩碼umask為: 023

則創建的文件的權限默認為:666-023=644

創建的目錄的權限默認為:777-023=754

umask:查看當前umask

[root@localhost /]# umask

0022

umask MASK: 設置umask

root@localhost /]# umask 0020

[root@localhost /]# touch f01

[root@localhost /]# ls –l

-rw-r--rw-. 1 root root 0 Nov 26 06:05 f01

註意:此類設定僅對當前shell進程有效;

練習示例:

1、新建系統組mariadb, 新建系統用戶mariadb, 屬於mariadb組,要求其沒有家目錄,且shell為/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;

[root@localhost /]# groupadd -g 5004 mariadb

[root@localhost /]# useradd -g 5004 -s /sbin/nologin -M mariadb

2、新建GID為5005的組mageedu,新建用戶gentoo,要求其家目錄為/users/gentoo,密碼同用戶名;

[root@localhost /]# useradd user3

[root@localhost /]# echo “user3” | passwd --stdin user3

3、新建用戶fedora,其家目錄為/users/fedora,密碼同用戶名;

[root@localhost /]# useradd –d /users/fedora fedora

[root@localhost /]# echo “fedora” | passwd --stdin fedora

4、新建用戶www, 其家目錄為/users/www;刪除www用戶,但保留其家目錄;

[root@localhost /]# useradd -d /users/www www

[root@localhost /]# userdel -r www

5、為用戶gentoo和fedora新增附加組mageedu;

[root@localhost home]# usermod -G mageedu gentoo

[root@localhost home]# usermod -G mageedu fedora

6、復制目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的所有文件的屬組為mageedu,並讓屬組對目錄本身擁有寫權限;

[root@localhost home]# chgrp -R mageedu /tmp/log

[root@localhost home]# chmod g+x /tmp/log

Linux權限管理(用戶、組、文件管理)