Linux用戶及權(quán)限管理功能

linux系統(tǒng)是多用戶(multi-users)和多任務(wù)(multi-tasks)的,這樣的目的是為了一臺linux主機(jī)可以給很多用戶提供服務(wù)同時運(yùn)行多種服務(wù),但是我們是怎么區(qū)分每個用戶呢?作為一個管理員我對linux系統(tǒng)權(quán)限有哪些?作為一個普通的用戶又可以對linux系統(tǒng)有哪些操作呢?這里就牽扯到了linux的用戶類別和權(quán)限管理。本次博客就用戶和權(quán)限管理作出詳細(xì)的解釋。

用戶和組類型

在linux系統(tǒng)中,有著用戶和組著兩個概念,用戶是被包含在組里面的。

用戶可以分為以下2中類別:

管理員:也就是我們常說的root

普通用戶:分為系統(tǒng)用戶(為了能夠讓有些后臺進(jìn)程或服務(wù)類進(jìn)程以非管理員的身份運(yùn)行,通常需要為此創(chuàng)建多個普通用戶,這類用戶從不用登錄系統(tǒng))和登錄用戶

作為合法居民都應(yīng)該有自己的ID號,在linux中,用戶也有自己的用戶標(biāo)識的UID,是由16bits的二進(jìn)制數(shù)字來標(biāo)識的,所以取值范圍為0-65535.不同類型的用戶取值范圍如下:
管理員:0

普通用戶:

? ? 系統(tǒng)用戶:1-499(centos6),1-999(centos7)

? ??登錄用戶:500-60000(centos6),1000-60000(centos7)

組按不同的分類可以分為以下3中類型的組:

1.按管理員組合普通用戶組

管理員組:對系統(tǒng)有著管理權(quán)限的組

普通用戶組:和普通用戶對應(yīng)也有著系統(tǒng)組和登錄組

組也有著自己的GID,不同組的取值范圍如下(和用戶取值范圍相同)

管理員組:0
普通用戶組:
? ??系統(tǒng)用戶組:1-499(CentOS6), 1-999(CentOS7)
? ??登錄用戶組:500-60000(CentOS6), 1000-60000(CentOS7)

?

2.按基本組和附加組

基本組:用戶在創(chuàng)建的時候,都會默認(rèn)創(chuàng)建一個與其名字相同的基本組

附加組:一個用戶可以屬于一個基本組后,也可以添加其他的組中,這個其他組就稱為這個用戶的附加組

?

3.按用戶數(shù)目

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

公用組:組內(nèi)包含著多個用戶

?

下面我們來說一下系統(tǒng)是怎么識別這個用戶是合法用戶的,用戶在登錄的時候,必須要鍵入用戶名和密碼,系統(tǒng)會把用戶提供密碼與系統(tǒng)中配置文件中的密碼對比(當(dāng)然這里不是簡簡單單的明文對比),如果相同則允許登入,否則不允許。管理員在定義用戶密碼的時候后最好要遵循以下定義標(biāo)準(zhǔn)(雖然linux允許用戶設(shè)置弱類型密碼):

1.使用隨機(jī)的密碼

2.最短長度不要低于8位

3.應(yīng)該使用大寫字母、小寫字母、數(shù)字和標(biāo)點(diǎn)符號四類字符中至少三類

4.定期更換

我們都知道,定義的密碼都是明文的,那么保存在配置文件中是以明文的嗎?那肯定不是的,密碼一般都會被算法加密,在centos中有以下加密算法,密碼被加密成的bit位也不一樣,越長說明安全性越高,加密等級為(1-6),在加密前還會添加上一段隨機(jī)數(shù)進(jìn)行加密,centos默認(rèn)以sha512加密:

1 ? ?md5:128bits
2 ? ?sha:160bits
3 ? ?sha224:224bits
4 ? ?sha256:256bits
5 ? ?sha384:384bits
6 ? ?sha512:512bits

可以使用命令對一段明文加密:

[root@localhost ~]# echo "Frank" | sha512sum   d373aa36ac1061fab63c4a8ee098102476de1ff1bdff11be3629c54ccb14a35d27f658a4745a61ec183fbbd1077561a5bfcba5ead0fa4b32e2e63492e8fed3ea  -

?

用戶和組的相關(guān)配置文件

/etc/passwd

我們先看一下這個文件:

[root@localhost ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bash  bin:x:1:1:bin:/bin:/sbin/nologin  daemon:x:2:2:daemon:/sbin:/sbin/nologin  adm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown  halt:x:7:0:halt:/sbin:/sbin/halt  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin  operator:x:11:0:operator:/root:/sbin/nologin  ......(省略)  tcpdump:x:72:72::/:/sbin/nologin  claire:x:1001:1001::/home/claire:/bin/bash

會看到一行從左到右被冒號分割成了7個部分,下面就這七個部分作出解釋,我們以最后一行為例:

1.claire,也就是用戶名啦

2.x,密碼占位符,密碼不是沒有保存在這個文件下,后面會講

3.1001,UID,也就是用戶ID

4.1001,GID,也就是組ID

5.空的,這里一般是注釋信息,可能是用戶的全稱

6./home/claire,用戶的家目錄

7./bin/bash,用戶登錄的默認(rèn)shell

我們可以看到前面為UID為0的為管理員root,那些UID小于等于999的,如bin為1,是系統(tǒng)用戶,他的默認(rèn)shell為/nologin,也就是不允許登錄的。

?

/etc/shadow

我們先來看一下這個文件:

[root@localhost ~]# cat /etc/shadow  root:$6$0CIKvP15hvSin5V5$oc.amWyL11jfB1pYxYiaGNfyN8HVq2s0iaVW0KiUd5RrS2SwKmWhTTqUzJ5uNnHi7.pc3OEqO/BMeLIFPOnpJ.::0:99999:7:::  bin:*:17110:0:99999:7:::  daemon:*:17110:0:99999:7:::  adm:*:17110:0:99999:7:::lp:*:17110:0:99999:7:::sync:*:17110:0:99999:7:::  .....(省略)  tcpdump:!!:17348::::::  claire:$6$ZZ5ZKnr4$UI7/gW2z6rtmZygBpH81V8MawY7oLgPTaU65w.zmNyi8Bd9rWVgLQPuZtB1.Q6p6T5KOcd9wnCEJapqcAKCLj.:17357:0:99999:7:::

會看到一行被冒號分為了9個部分,我們還是以claire為例子來說明:

1.claire,用戶名

2.用戶被加密后的密碼,第一個$和$之間的為加密等級,”6″為sha512(前面說過咯),第二個$和第三個$之間為隨機(jī)數(shù)(也被稱為加salt),之后為加密后的密文,當(dāng)密碼前有”!”或者”*”代表這個用戶被禁用了

3.用戶最近修改密碼的日期,用天數(shù)表示,表示從1970年1月1日到被修改那天之間的天數(shù),可以通過以下方法將天數(shù)換算成具體的日期:

[root@localhost ~]# date -u -d "1970-01-01 UTC $((17357 * 86400 )) seconds"Mon Jul 10 00:00:00 UTC 2017

4.密碼最短使用天數(shù),”0″表示可以隨時修改密碼,如果為”3″,那么表示用戶只有在最近一次修改的三天之后才能修改改密碼

5.密碼最長使用天數(shù),”99999″就不需要修改了,對你來說也就是永久的了

6.密碼告警時間,也就是你密碼最長使用天數(shù)的,前多少天提醒你,如果的你的密碼最長使用天數(shù)為100天,密碼告警時間為7,那么在 ? ? ?94天的時候,就會提示用戶改修改密碼了

7.密碼過期的恕限時間,如果這里的值為2,當(dāng)你在告警時間結(jié)束之后,仍然沒有修改密碼,那么在2天內(nèi),你還可以使用這個密碼登錄

8.賬號失效時間,也是基于1970年1月1日的天數(shù),當(dāng)用戶到了這個時間的時候,就無法在使用了,這一項(xiàng)一般會被使用在收費(fèi)服務(wù)的系統(tǒng)中,當(dāng)超過這個時間的時候,賬戶就不能使用了。

9.保留位,未來有可能會使用

?

/etc/group

我們還是先看一下這配置文件下有什么

[root@localhost ~]# cat /etc/group  root:x:0:  bin:x:1:  daemon:x:2:  sys:x:3:  adm:x:4:  ......(省略)  slocate:x:21:  tcpdump:x:72:  claire:x:1001:

每一行被冒號從左至右分割成了4個部分,還是以最后一行來說明:

1.claire:默認(rèn)創(chuàng)建一個用戶,就會自己創(chuàng)建一個與其同名的組

2.x,組密碼占位符,密碼也不是放在這里的哦

3.1001,GID,組ID

4.是一個以逗號分隔的用戶列表,以此組為附加組的用戶的用戶列表

?

/etc/gshadow

先打開文件看一下:

[root@localhost ~]# cat /etc/gshadow  root:::  bin:::  daemon:::  sys:::  ......  avahi:!::  slocate:!::  tcpdump:!::  claire:!::

每一行被冒號從左至右分割成了4個部分,還是以最后一行來說明:

1.claire:默認(rèn)創(chuàng)建一個用戶,就會自己創(chuàng)建一個與其同名的組

2.如果為”!”或者是”*”,那么其他用戶就不需要密碼就可以加入到這個組中,如果組是設(shè)置的密碼,則為一串密文,如果是空,則表示只有該組的成員可以獲得組的權(quán)限

3.用戶組管理員,是一個以逗號分隔的用戶列表,用戶組管理員可以修改密碼和組成員,也很組里其他成員擁有相同的權(quán)限

4.成員,是一個以逗號分隔的用戶列表,以此組為附加組的用戶的用戶列表,應(yīng)該要和/etc/group下的用戶列表一樣

?

用戶和組管理常用命令

?作為一個管理員,我們可以增刪用戶、增刪組、修改用戶和組屬性,下面我們就來介紹常用的用戶和組管理命令。

?groupadd

NAME:創(chuàng)建一個新的組

SYNOPSIS:groupadd [options] group

常用選項(xiàng):

-g GID:指定GID,默認(rèn)是上一個組的GID+1

-r:創(chuàng)建系統(tǒng)組

舉例如下:

[root@localhost ~]# groupadd my_group  [root@localhost ~]# tail -2 /etc/group  claire:x:1001:  my_group:x:1002:    #默認(rèn)上一個組號加一,注意必須是同類型的組,這里都位登錄用戶組  [root@localhost ~]# groupadd -g 1500 cloud    #指定GID為1500  [root@localhost ~]# tail -2 /etc/group  my_group:x:1002:  cloud:x:1500:    #GID被指定為1500  [root@localhost ~]# groupadd -r my_sys    #創(chuàng)建系統(tǒng)用戶組 my_sys  [root@localhost ~]# tail -2 /etc/group  cloud:x:1500:  my_sys:x:983:    #系統(tǒng)用戶組的GID為983

?

?groupmod

NAME:修改組的屬性

SYNOPSIS:groupmod [options] GROUP

常用選項(xiàng):

-g GID:修改GID

-n new_name:修改組名

舉例如下:

[root@localhost ~]# tail -3 /etc/group  my_group:x:1002:  cloud:x:1500:  my_sys:x:983:  [root@localhost ~]# groupmod -g 1003 cloud    #修改GID為1003  [root@localhost ~]# tail -3 /etc/group  my_group:x:1002:  cloud:x:1003:  my_sys:x:983:  [root@localhost ~]# groupmod -n  my_system my_sys    #將組名my_sys修改為my_system  [root@localhost ~]# tail -3 /etc/group  my_group:x:1002:  cloud:x:1003:  my_system:x:983:

?

groupdel

NAME:刪除一個組

SYNOPSIS:groupdel [options] GROUP

舉例如下:

[root@localhost ~]# tail -3 /etc/group  my_group:x:1002:  cloud:x:1003:  my_system:x:983:  [root@localhost ~]# groupdel my_system   #刪除系統(tǒng)組my_system  [root@localhost ~]# tail -3 /etc/group  claire:x:1001:  my_group:x:1002:  cloud:x:1003:

?

useradd

NAME:創(chuàng)建一個用戶或者更新用戶的信息

SYNOPSIS:useradd [options] LOGIN

? ? ? ? ? ? ? ? ? ? ? ?useradd -D

? ? ? ? ? ? ? ? ? ? ? ?useradd -D [options]

常用選項(xiàng):

-u:–uid UID:指定UID

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

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

-c:–comment COMMENT:指明注釋信息

-d:–home HOME_DIR:指定的路徑為用戶的家目錄:通過復(fù)制/etc/skel此目錄并重命名實(shí)現(xiàn),指定的家目錄路徑如果事先存在,則不? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??會為用戶復(fù)制環(huán)境配置文件

-s:–shell SHELL:指定用戶的默認(rèn)shell,可用所有的shell存放在/etc/shells下

-r:–system:創(chuàng)建系統(tǒng)用戶

舉個例子

創(chuàng)建一個組ID為1200,基本組為cloud(已存在),附加組為”my_group”,注釋信息為”my_test”,家目錄為”/home/my_home”,shell為csh,用戶名為my_test的用戶

[root@localhost ~]# useradd -u 1200 -g cloud -G my_group -c "my_test" -d /home/my_home  -s /bin/csh my_test   [root@localhost home]# id my_test    id命令后面會講到  uid=1200(my_test) gid=1003(cloud) groups=1003(cloud),1002(my_group)  [root@localhost home]#   [root@localhost home]# tail -1 /etc/passwdmy_test:x:1200:1003:my_test:/home/my_home:/bin/csh  [root@localhost home]# tail -3 /etc/group  claire:x:1001:  my_group:x:1002:my_test  cloud:x:1003:  [root@localhost home]# ll -a  /home/my_home/total 12drwx------. 3 my_test cloud  78 Jul 10 06:23 .  drwxr-xr-x. 5 root    root   48 Jul 10 06:23 ..-rw-r--r--. 1 my_test cloud  18 Aug  2  2016 .bash_logout-rw-r--r--. 1 my_test cloud 193 Aug  2  2016 .bash_profile-rw-r--r--. 1 my_test cloud 231 Aug  2  2016 .bashrc  drwxr-xr-x. 4 my_test cloud  39 Jul  1 07:56 .mozilla

?注意:創(chuàng)建用戶時的默認(rèn)設(shè)定配置文件為/etc/login.defs如:

PASS_MAX_DAYS    99999PASS_MIN_DAYS    0PASS_MIN_LEN    5PASS_WARN_AGE    7#  # Min/max values for automatic uid selection in useradd  #  UID_MIN                  1000UID_MAX                 60000# System accounts  SYS_UID_MIN               201SYS_UID_MAX               999#  # Min/max values for automatic gid selection in groupadd  #  GID_MIN                  1000GID_MAX                 60000# System accounts  SYS_GID_MIN               201SYS_GID_MAX               999.....  CREATE_HOME    yes  UMASK           077ENCRYPT_METHOD SHA512

?也可使用useradd -D顯示創(chuàng)建用戶的默認(rèn)配置

[root@localhost home]# useradd -D  GROUP=100HOME=/home  INACTIVE=-1EXPIRE=SHELL=/bin/bash  SKEL=/etc/skel  CREATE_MAIL_SPOOL=yes

修改默認(rèn)的屬性

useradd -D?

選項(xiàng):

-b,–base-dir:家目錄

-e,–expiredate:賬號失效時間

-f,–inactive:密碼過期的恕限時間

-g,–gid:在創(chuàng)建新的用戶的時候,一般都會自動創(chuàng)建與其同命的組,當(dāng)在創(chuàng)建用戶的時候使用了-N/–no-user-group,也就是不創(chuàng)建組或者在/etc/login.defs里的USERGROUPS_ENAB變量被設(shè)置成了no,就會將默認(rèn)指定的組(默認(rèn)為組100,user)指定改用戶的組。

[root@localhost ~]# useradd -N no_group  [root@localhost ~]# id no_group  uid=1201(no_group) gid=100(users) groups=100(users)

?-s,–shell:用戶登錄的shell

?

?usermod

NAME:修改一個用戶的屬性

SYNOPSIS:usermod [options] LOGIN

常用選項(xiàng):

-u, –uid UID:修改用戶的ID為此處指定的新UID;
-g, –gid GROUP:修改用戶所屬的基本組;
-G, –groups GROUP1[,GROUP2,…[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-a, –append:與-G一同使用,用于為用戶追加新的附加組;
-c, –comment COMMENT:修改注釋信息;
-d, –home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉(zhuǎn)移至新位置;
-m, –move-home:只能與-d選項(xiàng)一同使用,用于將原來的家目錄移動為新的家目錄;
-l, –login NEW_LOGIN:修改用戶名;
-s, –shell SHELL:修改用戶的默認(rèn)shell;
-L, –lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個”!”;
-U, –unlock:解鎖用戶的密碼;

與useradd類型,這里就不在多說了

?

?userdel

NAME:刪除一個用戶和其相關(guān)的文件

SYNOPSIS:userdel [options] LOGIN

常用選項(xiàng):

-r:刪除用戶時一并刪除其家目錄,默認(rèn)不刪除

[root@localhost home]# userdel no_group  [root@localhost home]# ll /home/total 0drwx------. 3 claire  claire 78 Jul 10 03:35 claire  drwx------. 2 frank   frank  62 Jun 30 10:17 frank  drwx------. 3 my_test cloud  78 Jul 10 06:23 my_home  drwx------. 3    1201 users  78 Jul 10 06:49 no_group

?

passwd

NAME:修改用戶的認(rèn)證信息

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

僅適用passwd,修改用戶自己的密碼,要輸入2次,輸入密碼的密碼為隱藏狀態(tài)

[root@localhost home]# passwdChanging password for user root.  New password:   Retype new password:   passwd: all authentication tokens updated successfully.

passwd ?USERNAME:修改指定用戶的密碼,一般只用管理員root才可以修改

常用選項(xiàng):

-l,-u:鎖定和解鎖用戶

-d:清除用戶密碼

-e DATE:賬戶失效時間,日期,也可以使用1970年1月1日到現(xiàn)在的天數(shù),試過不可用,如果兄弟試了可用,麻煩告知,可以通過設(shè)置/etc/default/useradd的EXPIRE的day數(shù),默認(rèn)不設(shè)置,當(dāng)設(shè)置為”99999″時,創(chuàng)建賬戶Never_user默認(rèn)賬戶失效時間就被設(shè)為了”99999″,也可以使用后面的命令chage,后面再說!

[root@localhost home]# cat /etc/default/useradd   # useradd defaults fileGROUP=100HOME=/home  INACTIVE=-1EXPIRE=99999SHELL=/bin/bash  SKEL=/etc/skel  CREATE_MAIL_SPOOL=yes  [root@localhost home]# useradd Never_user  [root@localhost home]# tail -1 /etc/shadow   #用戶失效時間被設(shè)置為了99999  Never_user:!!:0:0:99999:7::99999:

-i DAYS:密碼過期的恕限時間

-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;

以上親測(除-e之外)均可設(shè)置,

–stdin:標(biāo)準(zhǔn)輸入,避免重復(fù)輸入2次密碼

使用方法:

[root@localhost home]# echo "Never_user" | passwd --stdin Never_user  Changing password for user Never_user.passwd: all authentication tokens updated successfully.  [root@localhost home]# tail -1 /etc/shadow  Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::99999:

?

gpasswd

NAME:可以設(shè)置組密碼

SYNOPSIS:gpasswd [option] group

常用選項(xiàng):

-a USERNAME:向組中添加用戶

-d USERNAME:從組中移除用戶

比如我們將用戶”Never_user”添加到組”cloud”中

[root@localhost home]# gpasswd -a Never_user cloud  Adding user Never_user to group cloud  [root@localhost home]# tail -3 /etc/group  my_group:x:1002:my_test  cloud:x:1003:Never_user  Never_user:x:1201:  [root@localhost home]#

?

newgrp

NAME:臨時切換基本組

SYNOPSIS:newgrp [-] [group]

常用選項(xiàng):

-:會模擬用戶重新登錄以實(shí)現(xiàn)初始化其工作環(huán)境,返回以前的狀態(tài),是用exit退出

#我們切換到Never_user下,Never_user基本組為Never_user和cloud  [Never_user@localhost ~]$ iduid=1201(Never_user) gid=1201(Never_user) groups=1201(Never_user),1003(cloud) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023  [Never_user@localhost ~]$ touch test.txt  [Never_user@localhost ~]$ ll     #我們可以看見創(chuàng)建的文件的組為Never  total 0-rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt  [Never_user@localhost ~]$ newgrp - cloud   #切換為組cloud  [Never_user@localhost ~]$   [Never_user@localhost ~]$ touch test1.txt   #test1文件的用戶組為cloud  [Never_user@localhost ~]$ ll  total 0-rw-r--r--. 1 Never_user cloud      0 Jul 10 08:07 test1.txt-rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt

?

chage

NAME:修改用戶密碼的過期信息

SYNOPSIS:chage [options] LOGIN

常用選項(xiàng):

-d:修改最后一次修改密碼時間

-E:修改用戶失效時間

-I:修改密碼過期怒限時間

-W:修改告警天數(shù)

-m:修改密碼最小使用天數(shù)

-M:修改密碼最長使用天數(shù)

舉個例子:修改Never_user賬戶失效的時間為2017年07月30日

[root@localhost home]# chage  -E  2017-07-30 Never_user  [root@localhost home]# tail -1 /etc/shadow   #2017年07月30日,自動轉(zhuǎn)換為了從1970年1月1日到2017年07月30日的天數(shù)  Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::17377:

?

id

NAME:顯示真的和有效的用戶和組ID

SYNOPSIS:id [OPTION]… [USER]

常用選項(xiàng):

-u: 僅顯示有效的UID

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

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

[root@localhost home]# id frank  uid=1000(frank) gid=1000(frank) groups=1000(frank)  [root@localhost home]# id -u frank1000[root@localhost home]# id -g frank1000[root@localhost home]# id -G frank1000

?

?su

NAME:切換用戶

SYNOPSIS:su [options…] [-] [user [args…]]

登錄式時切換,會通過讀取目標(biāo)用戶的配置文件來重新初始化

su – USERNAME

非登錄式時切換,不會讀取目的用戶的配置文件進(jìn)行初始化

su USERNAME

管理員可以無密碼切換至其他任何用戶

-c ?‘COMMADN’:僅以指定用戶的身份運(yùn)行此處制定的命令

[root@localhost home]# su -c "whoami" Never_user  Never_user

?

權(quán)限的定義

?我們先任意看一下目錄下的文件:

[root@localhost ~]# ll /etc/default/total 12-rw-r--r--. 1 root root  254 Jun 30 10:19 grub-rw-r--r--. 1 root root 1756 Nov  4  2016 nss-rw-r--r--. 1 root root  124 Jul 10 07:20 useradd

每一行的最左位為文件的類型,-代表普通文件,那么接下來的9為又是什么呢?

左三位:定義了owner(屬主)的權(quán)限,也就是user的

中三位:定義了group(屬組)的權(quán)限

右三位:定義了others(其他人)的權(quán)限

?Linux用戶及權(quán)限管理功能

進(jìn)程以其發(fā)起者的身份運(yùn)行,進(jìn)程對文件的訪問權(quán)限,取決于發(fā)起此進(jìn)程的用戶的權(quán)限;當(dāng)使用一個進(jìn)程對一個文件進(jìn)行操作的時候,會對比進(jìn)行的發(fā)起者是不是和文件的屬主一致,如果一致,則應(yīng)用屬主的權(quán)限,如果不一致,則對比進(jìn)程的發(fā)起者是不是屬于文件的屬組,如果屬于則執(zhí)行屬組的權(quán)限,如果都不是,則只能應(yīng)用其他人的權(quán)限。用戶也只能修改那些屬主是自己的那些文件。

那么rwx分別代表什么呢?

r:readable,可讀

w:writable,可寫

x:excutable,可執(zhí)行

rwx對文件和目錄的操作是不同的:

對文件:

r:可獲取該文件的數(shù)據(jù)

w:可修改文件的數(shù)據(jù)

x:該文件可以執(zhí)行

對目錄:

r:可以使用ls命令回去其下的所有文件的列表,如果只有r,則只能看到目錄下的文件名列表

w:可修改此文件目錄下的文件列表,就是可以刪除和創(chuàng)建文件,前提必須有x的權(quán)限,如果只有w,不能干任何事

x:且可使用ls -l來獲取所有文件的詳細(xì)屬性信息,前提必須是有r的權(quán)限,如果只有x,只能cd到目錄下

?
權(quán)限與二進(jìn)制和八進(jìn)制的對應(yīng)關(guān)系表

?Linux用戶及權(quán)限管理功能

?

?權(quán)限的管理命令

?chmod

NAME:change file mode bits,修改文件的權(quán)限

SYNOPSYS:

? ? ? 1. chmod [OPTION]… MODE[,MODE]… FILE…
? ? ? ?2.chmod [OPTION]… OCTAL-MODE FILE…
? ? ? ?3.chmod [OPTION]… –reference=RFILE FILE…
下面來介紹一下這三種方式,每種方式適合不同的場景
1. chmod [OPTION]… MODE[,MODE]… FILE…

首先我們來了解一下,在命令中使用以下字母代表相應(yīng)用戶類型

u:屬主

g:屬組

o:其他人

a:所有

(1)可以直接將rwx直接賦值給相應(yīng)的用戶類型,比如:u=rwx,g=x,o= ,空代表該位沒有權(quán)限

舉個例子:

[root@localhost ~]# cd /tmp/read/[root@localhost read]# ll  total 4-rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt  [root@localhost read]# chmod u=rwx,g=rw,o= /tmp/read/read.txt   [root@localhost read]# ll  total 4-rwxrw----. 1 root root 4 Jul 10 09:49 read.txt

(2)直接操作一類用戶的一個權(quán)限位

舉個例子:
[root@localhost read]# ll  total 4-rwxrw----. 1 root root 4 Jul 10 09:49 read.txt  [root@localhost read]# chmod u-x /tmp/read/read.txt  [root@localhost read]# ll  total 4-rw-rw----. 1 root root 4 Jul 10 09:49 read.txt

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

直接指定八進(jìn)制

舉個例子:

[root@localhost read]# chmod 777 /tmp/read/read.txt   [root@localhost read]# ll  total 4-rwxrwxrwx. 1 root root 4 Jul 10 09:49 read.txt

3.chmod [OPTION]… –reference=RFILE FILE…

參考其他文件的權(quán)限

[root@localhost read]# chmod --reference=/etc/passwd  /tmp/read/read.txt   [root@localhost read]# ll  total 4-rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt

常用選項(xiàng):

-R:–recursive:遞歸修改

?

?chown

只有管理員可以修改文件的屬主和屬組

NAME:修改文件的屬主和屬組

SYNOPSIS:

? ? ? ?chown [OPTION]… [OWNER][:[GROUP]] FILE…
? ? ? ?chown [OPTION]… –reference=RFILE FILE…

舉個例子:

[root@localhost read]# ll  total 4-rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt  [root@localhost read]# chown frank:frank ./read.txt   [root@localhost read]# ll  total 4-rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt

常用選項(xiàng):

-R:如果修改目錄,也想遞歸修改下面的文件,則是用該參數(shù)

?

chgrp

NAME:修改屬組
SYNOPSIS:
? ? ? ?chgrp [OPTION]… GROUP FILE…
? ? ? ?chgrp [OPTION]… –reference=RFILE FILE…

其實(shí)直接使用chown就可以了
這里補(bǔ)充一個內(nèi)容就是umask,當(dāng)我們創(chuàng)建一個普通文件或者目錄文件的時候,都會有默認(rèn)的權(quán)限,那么這個默認(rèn)權(quán)限是怎么定義的呢?
默認(rèn)umask(只看后三位):
[root@localhost read]# umask0022

對于新建文件的權(quán)限為666-umask=644=rw-r–r–

[root@localhost read]# touch test.txt  [root@localhost read]# ll  total 4-rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt  drwxr-xr-x. 2 root  root  6 Jul 10 10:36 test-rw-r--r--. 1 root  root  0 Jul 10 10:37 test.txt

對于新建目錄的權(quán)限為777-umask=755=rwxr-xr-x

[root@localhost read]# mkdir ./test  [root@localhost read]# ll  total 4-rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt  drwxr-xr-x. 2 root  root  6 Jul 10 10:36 test

可以使用umask MASK來設(shè)置umask,當(dāng)然只對當(dāng)前Shell進(jìn)程有效

?

補(bǔ)充命令:

install

NAME:復(fù)制文件并設(shè)置屬性,也可以創(chuàng)建目錄,不能復(fù)制目錄和遞歸復(fù)制

SYNOPSYS:

? ? ? ?install [OPTION]… [-T] SOURCE DEST
? ? ? ?install [OPTION]… SOURCE… DIRECTORY
? ? ? ?install [OPTION]… -t DIRECTORY SOURCE…
? ? ? ?install [OPTION]… -d DIRECTORY…

和cp的用法類似,這里不再敖述,新的用法是install -d 可以創(chuàng)建目錄

常用選項(xiàng):

-m:設(shè)置目標(biāo)文件的屬性,默認(rèn)屬性為755

-o:設(shè)置目標(biāo)文件的屬主

-g:設(shè)置目標(biāo)文件的屬組

[root@localhost read]# install -o frank -g frank /etc/fstab /tmp/[root@localhost read]# ll /tmp/total 48drwxr-xr-x. 2 root  root      6 Jul  7 02:44 07070244drwxr-xr-x. 2 root  root      6 Jul  7 02:45 07070245drwxr-xr-x. 2 root  root      6 Jul  7 02:53 07070253drwxr-xr-x. 2 root  root      6 Jul  7 01:18 a_c  drwxr-xr-x. 2 root  root      6 Jul  7 01:18 a_d  drwxr-xr-x. 2 root  root      6 Jul  7 01:18 b_c  drwxr-xr-x. 2 root  root      6 Jul  7 01:18 b_d  drwxr-xr-x. 2 root  root    279 Jul  9 00:57 conf.d-rwxr-xr-x. 1 frank frank     5 Jul 10 10:44 fstab-rw-r--r--. 1 root  root    126 Jul  9 01:22 fstab1.out

?

mktemp

NAME:創(chuàng)建臨時的文件或者目錄文件,會直接返回文件名稱

SYNOPSIS:?mktemp [OPTION]… [TEMPLATE]

TEMPLATE為:name.XXXX ?name可以自定義,XXXX必須為大寫的X且最少三位

[root@localhost tmp]# mktemp case.XXXcase.rMB  [root@localhost tmp]# mktemp case.XXXXXcase.HeqBH  [root@localhost tmp]# mktemp case.XXXXXcase.MatKC

常用選項(xiàng):

-d:創(chuàng)建臨時目錄

[root@localhost tmp]# mktemp -d case.XXXXXcase.TGRtu

Linux用戶及權(quán)限管理功能

?那今天就寫到這里了,如果有誤之處,還望各位大佬多多指教。

?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享