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

来源:https://www.cnblogs.com/gx22/archive/2018/11/26/10018385.html
-Advertisement-
Play Games

一、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 1、 文件查看類命令cat,tac, head, tail, more, less, ls ,file: -ls : list,列出指定目錄下的內容 使用語法:ls [option]… [file]… 參數:-a 顯示所 ...


一、 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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 日期:2018年11月24日 環境:Window 10,VS2015 一、利用VS2015自帶的工具生成DLL 步驟: 1.利用C#準備一個.cs文件; 2.開始菜單->Visual Studio 2015->VS2015 開發人員命令提示; 3.輸入csc /t:library /out:C:\U ...
  • 在我們很多的Web應用中會遇到需要從後端將指定的數據或消息實時推送到前端,通常的做法是前端寫個腳本定時到後端獲取,或者藉助WebSocket技術實現前後端實時通訊。因定時刷新的方法弊端很多(已不再採用),所以基於WebSocket技術實現的通訊方案正越來越受大家喜愛,於是在ASP.NET中就有了鼎鼎... ...
  • 1.什麼是docker-swarm 在公司網站流量爆髮式增長的時候,一臺伺服器往往不能滿足需求,之前我的解決辦法是通過nginx來實現負載均衡,有了docker-machine之後,解決方案會更加簡單。當流量增加時,我們按照需要往docker-swarm集群中添加主機就可以了。 2.原理 我們把一組 ...
  • ASP.NET -- WebForm -- 頁面生命周期事件在頁生命周期的每個階段中,頁將引發可運行您自己的代碼進行處理的事件。 1. PreInit: 使用該事件來執行下列操作: 檢查 IsPostBack 屬性來確定是不是第一次處理該頁。 創建或重新創建動態控制項。 動態設置主控頁。 動態設置 T ...
  • 1 使用插件名稱Epplus,多個Sheet頁數據應用,Demo為柱狀圖(Epplus支持多種圖表) 2 Epplus 的安裝和引用 新建一個工程文件或控制台應用程式 打開 Vs2017 Tools 的Nuget 包管理器,使用命令 install-package Epplus 3 開始在創建的工程 ...
  • 第一篇:把代碼連接到容器 第二篇:定製Docker鏡像 上一篇文章最後有個問題,定製的鏡像無法正常運行: 這可能是由於無法找到要運行的dll引起的問題。 之前的Dockerfile的文檔我是按照微軟的文檔操作的。 不過隨後我還是查看了Docker的文檔:https://docs.docker.com ...
  • 一、GFF簡介 GFF是仿QQ界面,通信基於SAEA.MessageSocket、SAEA.Http、SAEA.MVC實現包含客戶端和伺服器的程式,源碼完全公開,項目源碼地址:https://github.com/yswenli/GFF ,大家可以去我的github瞭解,歡迎follow,star與 ...
  • 運行環境: 一.安裝jenkins運行環境 1. 查看yum庫中的Java安裝包 2.yum -y list java* 3.選擇一個適合的版本進行安裝我們這裡選擇的是1.8.0的版本進行演示 4.查看jdk是否安裝成功 二.安裝JenKins 1.我們採用wget方式安裝jenkins 2.用如下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...