linux文件權限管理和用戶,組管理常用命令應用實例

用戶和組概念簡述

用戶一般指使用計算機的人,GNU/linux通過用戶和用戶組實現對計算機的文件訪問和設備使用控制。

用戶分類
1.管理員root(類似皇帝,權力最大)
2.普通用戶:分為系統用戶和普通登錄用戶。系統用戶不登錄,常用于發起一些進程提供服務,防止進程被劫持帶來的風險,所以盡量減少以root身份發起進程對外提供服務。
3.用戶標識UID。管理員的UID為0。
系統用戶UID為1-499(centos6),1-999(centos7)。
普通用戶UID500-6000(centos6),1000-60000(centos7)。

組:按標識分管理員組0,系統用戶組1-499(centos6),1-999(centos7)。
普通用戶組500-6000(centos6),1000-60000(centos7)。
還可以分基本組和附加組,一個用戶是可以屬于多個組,比如一個家庭和一個公司,你所在的家庭好比一個基本組,你所在的某個公司上班,就好比一個附加組。
用戶名和組名相同,叫私有組。一個組包含多么成員,也叫公共組。

1. 用戶信息庫文件/etc/passwd和用戶密碼文件/etc/shadow文件詳細說明

  • 用戶信息庫文件/etc/passwd:
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin

    QQ圖片20171002160107.png

    以:號分隔,共七列

1.name: 用戶名2.password:可以是加密的密碼,也可是占位符x;3.UID:用戶ID號4.GID:用戶所屬的主組的ID號;5.GECOS:注釋信息,可以加入用戶地址,家庭電話等6.directory:用戶的家目錄;7.shell:用戶的默認shell,登錄時默認shell程序;
  • 用戶密碼文件/etc/shadow

Image 2.png

以:號分隔,共9列

1.用戶名
2.加密的密碼
3.最近一次修改密碼的時間,以1970.1.1起累加的日期
4.最短使用期限,密碼需要經過幾天才可以被變動,是0,隨時可以改動
5.:最長使用期限,必須要在這個時間內改動密碼,否則賬號會過期,9999為永久
6:賬戶變更期限前警告期段,表示再過幾天你的密碼到期,要重新設定密碼提示天數。
7:過期寬限時間,也就是寬限期,這時候登入需要你必須改密碼。
8:賬戶失效日期
9.保留字段,看是否有新功能加入

第二列加密了密碼說明:
1.$6$表示使用的加密算法,這個是sha512。
2.第二個$到第三個$間的字符是隨機數,避免相同密碼加密后的得到相同密文。
3.第三個$后面字符到第二個冒號前的字符,不包括冒號,是用戶設定的密碼的密文。

加密算法簡述
linux對用戶密碼加密使用的是單向加密,不能解密的。
特性:定長輸出。雪崩效應,密碼微小的改變,加密后的密文也跟著一連串隨變化。
常用的加密算法有:

1.md5: message digest, 128bits
2.sha:secure hash algorithm(安全的哈希算法), 160bits
3.sha224
4.sha256
5.sha384
6.sha512

使用密碼策略
1、使用隨機密碼;
2、最短長度不要低于8位;
3、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;
4、定期更換;
密碼存儲格式:單向加密,并借助于salt(隨機數)完成

2.組信息庫文件/etc/group和組密碼文件/etc/gshadow文件詳細說明

  • 組信息庫文件/etc/group

mail:x:12:postfix 以:號分隔,共4列

group_name:password:GID:user_list 這個比較簡單,從左往右分別是:
組名:組密碼:組ID:用戶列表

  • 組的密碼庫文件/etc/gshadow:

[root@dxlcentOS ~]# cat /etc/gshadow
root:::
mail:::postfix 號分隔,共4列

從左往右分別是:
組名:組密碼(以!開頭,表示無合法密碼,無群組管理員):群組管理員賬號:用戶列表

用戶管理相關一些的命令

1.useradd添加用戶,不加任何選項則創建一個登錄用戶,和組名相同,

useradd [選項] 登錄名

選項
-u 指定用戶的UID,后接數字,直接指定一個特定的UID給這個賬號
-g 后接組ID號或組名,為要創建的用戶指定所屬的基本組
-G 后接組ID號或組名,為要創建的用戶指定附加組,要是指定多個附加組時則用逗號隔開,組需要事先存在。
-c 指定注釋信息
-d 指定某個目錄為用戶家目錄,不使用默認值,必須要使用絕對路徑,
-s 指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中
-r 創建系統用戶,默認不為系統用戶創建家目錄
-e 設定用戶的失效日期,對應第八字段,接的日期格式為YYYY-MM-DD
-f 設定密碼是否會失效,對應第七字段,0為立即失效,-1為永久不失效
-m 強制,建立用戶家目錄,一般用戶默認
-M 強制,不建立用戶家目錄,系統用戶默認
-D 顯示創建用戶的默認配置

基本用戶創建時和useradd相關的文件:

1./etc/default/useradd 基本用戶創建的默認設定值

  1. /etc/login.defs UID/GID,密碼等參數等默認設定參考值
  2. /etc/ske 新建一個用戶的時候,/etc/skel 目錄下的文件,
    都會原封不動的復制到新建用戶的家目錄下
例如:創建用戶mandriva,其ID號為1006,基本組為distro。
[root@dxlcentOS ~]# useradd mandriva -g distro -u 1006
[root@dxlcentOS ~]# id mandriva
uid=1006(mandriva) gid=2016(distro) 組=2016(distro)
[root@dxlcentOS ~]# tail -1 /etc/passwd
mandriva:x:1006:2016::/home/mandriva:/bin/bash

創建用戶slackware,其ID號為2002,基本組為distro,附加組為peguin
[root@dxlcentOS ~]# useradd -u 2002 -g distro -G peguin slackware
[root@dxlcentOS ~]# id slackware
uid=2002(slackware) gid=2016(distro) 組=2016(distro),1101(peguin)

創建用戶mageia,其ID號為1100,指定其家目錄為/home/linux
[root@dxlcentOS ~]# useradd -u 1100 -d /home/linux mageia

創建用戶fedora,其注釋信息為"Fedora Core",默認shell為/bin/tcsh;
[root@dxlcentOS ~]# useradd -c "Fedora Core" -s /bin/tcsh fedora
[root@dxlcentOS ~]# tail -1 /etc/passwd
fedora:x:2004:2004:Fedora Core:/home/fedora:/bin/tcsh
創建系統用戶,沒有家目錄,命令行提示符會改變,
很多命令無法輸入執行。要是把某一普通用戶的家目錄刪了,也是如此
▽root@dxlcentOS ~]# useradd -r userr
[root@dxlcentOS ~]# su - userr
su: 警告:無法更改到 /home/userr 目錄: 沒有那個文件或目錄
-bash-4.2$ ls
ls: 無法打開目錄.: 權限不夠

2.userdel 刪除用戶

userdel [選項] 登錄名
-r 連同用戶家目錄一起刪除

 刪除用戶mandriva ,但保留其家目錄
[root@dxlcentOS ~]# userdel mandriva
[root@dxlcentOS ~]# ls /home/
centos  dxl  dxll2  linux  mandriva  test1  www

3.usermod 修改用戶屬性

usermod [選項] 登錄名
選項
-u 為用用戶指定新的ID號
-g 修改用戶所屬的基本組
-G 修改用戶所屬的附加組,原來的附加組會被覆蓋
-a 與-G一起使用。用于為用戶追加新的附加組
-c 修改注釋信息
-d 修改用戶的家目錄,原有的文件不會被轉移到新位置
-m 只能與-d一起使用,用于將原來的家目錄移動到新的家目錄
-l 修改用戶名
-s 修改用戶默認的shell
-L 鎖定用戶密碼,在用戶原來密碼字符串前加一個!號
-U 解鎖用戶密碼

例如:為用戶slackware新增root為附加組

[root@dxlcentOS ~]# usermod -a -G root slackware
[root@dxlcentOS ~]# id slackware                
uid=2002(slackware) gid=2016(distro) 組=2016(distro),0(root),2003(admins)

4.passwd修改用戶密碼

  • 直接passwd則是修改用戶自己密碼
  • passwd 用戶名 修改指定用戶密碼,僅root有次權限。

常用選項
-l 鎖定指定用戶
-u 解鎖指定用戶
-d 清除用戶密碼串
-e 用戶密碼過期期限
-i 非活動期限
-n 密碼最短使用期限
-x 密碼使用最長使用期限
-w 警告期限
–stdin 從標準輸入來指定用戶密碼
echo “密碼” | passwd –stdin 用戶名

例如:給mageia指定密碼為mageedu123
[root@dxlcentOS ~]# echo "mageedu123" | passwd --stdin mageia
更改用戶 mageia 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

5.id命令 查看用戶信息

id 用戶名 (不用加選項基本把要顯示的用戶信息顯示出來了)
可以查看用戶的UID,GID,所在的主組,附加組等信息。
-u 僅顯示有效的UID
-g 僅顯示基本組ID
-G 顯示所屬所有組ID
-n 顯示名字而非ID,和上面選項組合使用

例如
[root@dxlcentOS ~]# id slackware
uid=2002(slackware) gid=2016(distro) 組=2016(distro),0(root),2003(admins)
[root@dxlcentOS ~]# id -u  slackware 
2002
[root@dxlcentOS ~]# id -g  slackware   
2016
[root@dxlcentOS ~]# id -G  slackware 
2016 0 2003
[root@dxlcentOS ~]# id -Gn  slackware 
distro root admins

6.su switch user切換用戶或者以其他用戶身份執行命令

登錄式切換:會讀取目標用戶的配置文件進行初始化
例如:su – 用戶名 或者 su – l 用戶名
非登錄式切換:不會讀取目標用戶的配置文件進行初始化: su 用戶名

組管理相關一些的命令

1.groupadd 添加組

-g 指定GID,默認是上一個組ID+1
-r 創建系統組

例如:創建組distro,其組ID為2016
[root@dxlcentOS ~]# groupadd -g 2016 distro
[root@dxlcentOS ~]# cat /etc/group | tail -1
distro:x:2016:

2.groupmod 要修改的

選項:
groupmod [選項] 組名
-g 修改GID
-n 修改組名

3.groupdel 刪除組

groupdel [選項] 組名

4.gpasswd 群組管理員功能

gpasswd -a 用戶名 組名 —> 向組中添加用戶
gpasswd -d 用戶名 組名 —> 向組中刪除加用戶
gpasswd -A 用戶名 組名 —> 給群組添加一個用戶做為該組的管理員。

例如: 添加用戶slackware作為組 ttgoup的管理員
[root@dxlcentOS ~]# groupadd ttgoup
[root@dxlcentOS ~]# gpasswd ttgoup
正在修改 ttgoup 組的密碼
新密碼:
請重新輸入新密碼:
[root@dxlcentOS ~]# gpasswd -A slackware ttgoup

5.newgrp 臨時切換的組為基本組

6.groupmems 主組成員管理命令

groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
options
-g 更改為指定組
actions
-a 指定用戶加入組
-d 從組中刪除用戶
-p 從組中清除所有成員
-l 顯示組成員列表
例如
[root@dxlcentOS tmp]# groupmems -g distro -l 列出組distro成員列表
[root@dxlcentOS tmp]# groupmems -a www -g distro 把用戶www加入distro組
[root@dxlcentOS tmp]# groupmems -g distro -l
dxl slackware www

總結:

在使用useradd命令創建用戶的時侯可以用-g 和-G 指定用戶所屬組和附屬組。
基本組:如果沒有指定用戶組,創建用戶的時候系統會默認同時創建一個和這個用戶名同名的組,這個組就是基本組,不可以把用戶從基本組中刪除。在創建文件時,文件的所屬組就是用戶的基本組。
附加組:除了基本組之外,用戶所在的其他組,都是附加組。用戶是可以從附加組中被刪除的。
用戶不論為與基本組中還是附加組中,就會擁有該組的權限。一個用戶可以屬于多個附加組。但是一個用戶只能有一個基本組。
用戶必須有且只能有一個主組,可以有0個、1個或多個附屬組,就如我們一定會有一個用來安家的房子(類同主組),還可以有n個用于投資或其他打算的房子(附屬組)。

文件權限管理

概念:Linux一般將文件可存取訪問的身份分為3個類別:owner(文件所有者。也叫屬主)、group(文件屬組)、others(其他人),且3種身份各有read讀、write寫、execute可執行等權限。例如:

ww.png

ww.png

rwxr-xr-x:
左三位:定義user(owner)的權限
中三位:定義group的權限
右三位:定義others(其他人)

r:  readable  讀
w:  writable  寫
x:  excutable  可執行

不同權限位對文件和目錄所代表的含義

linux文件權限管理和用戶,組管理常用命令應用實例00

例如:上面的圖片tcsd.conf文件只要用戶tss自己有讀取和修改權限,組和其他人沒有任何權限。terminfo目錄,目錄擁有者root可以對里面文件進行增刪改的操作,組內的用戶其他人只能對其查看文件列表和屬性信息。

權限組合機制

01

總結:無權限表示為0,只要記住r=4,w=2,x=1,就可以在每一組的權限位相加,快速用數字表示表示權限。例如:rw-rw-r– =664:rw-=4+2+0,r–=4+0+0

進程對文件訪問權限應用模型

進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;
否則,則檢查進程的屬主是否屬于文件的屬組;如果是,則應用屬組權限;
否則,就只能應用other的權限;

權限管理命令

1.chmod 改變權限
有三類用戶權限:u文件所有者權限。g屬組權限 。 o其他人權限。a代表u,g,o所有

  • chmod [-R] xyz 文件名或目錄名
    直接用權限分數修改,例如要把文件abc權限改為 rwxr–r–,對應的權限分數為[4+2+1][4+0+0][4+0+0]=744
    ~]# chmod 744 abc
  • chmod [-R] u=權限位,g=權限位,o=權限位 文件名或目錄名
    賦權表示法,直接操作一類用戶的所有權限位rwx
    例如:把/tmp/functions 組權限改為rw-
    [root@dxlcentOS ~]# ll /tmp/functions
    -rw-r–r–. 1 root root 17500 9月 20 2015 /tmp/functions
    [root@dxlcentOS ~]# chmod g=rw- /tmp/functions
    [root@dxlcentOS ~]# ll /tmp/functions
    -rw-rw-r–. 1 root root 17500 9月 20 2015 /tmp/functions
    例如:把/tmp/functions 組和其他人權限改為r-x
    [root@dxlcentOS ~]# chmod go=r-x /tmp/functions
    [root@dxlcentOS ~]# [root@dxlcentOS ~]# ll /tmp/functions
    [root@dxlcentOS ~]# ll /tmp/functions
    -rw-r–r–. 1 root root 17500 9月 20 2015 /tmp/functions
    總結:u,g,o可以組合起來用。
  • chmod [ -R] (u,g,o,a)+(r,w,x) 文件名或目錄名.
    授權表示法,直接操作一個用戶的一個權限位
    例如:修改把文件my 組和其他人增加w權限

[root@dxlcentOS ~]# ll my
-rw-r–r–. 1 root root 0 10月 4 19:30 my
[root@dxlcentOS ~]# chmod go+wx my
[root@dxlcentOS ~]# ll my
-rw-rwxrwx. 1 root root 0 10月 4 19:30 my
為 /tmp/functions 文件都增加可執行權限
[root@dxlcentOS ~]# ll /tmp/functions
-rw-r–r–. 1 root root 17500 9月 20 2015 /tmp/functions
[root@dxlcentOS ~]# chmod a+x /tmp/functions
[root@dxlcentOS ~]# ll /tmp/functions
-rwxr-xr-x. 1 root root 17500 9月 20 2015 /tmp/functions
選項 : -R ,遞歸修改,用于把目里面的文件一起跟著修改。
普通用戶僅能修改屬主屬于自己的文件權限

2.chown改變文件擁有者,僅root用戶可改

chown [-R] 用戶名 文件或目錄名
chown [-R] 用戶名:組名 文件或目錄名
例如:把/tmp/functions 屬主改為www
[root@dxlcentOS ~]# ll /tmp/functions
-rwxr-xr-x. 1 root root 17500 9月 20 2015 /tmp/functions
[root@dxlcentOS ~]# chown www /tmp/functions
[root@dxlcentOS ~]# ll /tmp/functions
-rwxr-xr-x. 1 www root 17500 9月 20 2015 /tmp/functions
[root@dxlcentOS ~]# chown dxl:distro /tmp/functions #把/tmp/functions 屬主改為dxl,屬組改為distro
[root@dxlcentOS ~]# ll /tmp/functions
-rwxr-xr-x. 1 dxl distro 17500 9月 20 2015 /tmp/functions
-R ,遞歸修改,用于把目里面的文件一起跟著修改。

3.chgrp 改變所屬群組,僅root用戶可改

chown [-R] 組名 文件或目錄名
-R ,遞歸修改,用于把目里面的文件一起跟著修改。
例如:把/tmp/mylinux目錄屬組改為distro
[root@dxlcentOS tmp]# ll -d mylinux
drwxr-xr-x. 2 root root 6 10月 2 15:17 mylinux
[root@dxlcentOS tmp]# chgrp distro mylinux
[root@dxlcentOS tmp]# ll -d mylinux
drwxr-xr-x. 2 root distro 6 10月 2 15:17 mylinux

總結:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,不能改此文件內容,但是可以刪除此文件。目錄就好像你的抽屜,別人給你一份不能打開包裝的文件,你可以放進抽屜,也可以扔到垃圾桶去,就這個道理。

umask:文件的權限反向掩碼,遮罩碼
umask MASK: 設置umask
[root@dxlcentOS tmp]# umask
0022 #第一個0是特殊權限位,后面再說
創建文件和目錄時默認的權限:
文件:666-umask(022)=644(rw-r–r–)
目錄:777-umask(022)=755(rwxr-xr-x)
例如

[root@dxlcentOS tmp]# touch uuu
[root@dxlcentOS tmp]# mkdir duu
[root@dxlcentOS tmp]# ll -d uuu duu
drwxr-xr-x. 2 root root 6 10月 4 20:12 duu
-rw-r–r–. 1 root root 0 10月 4 20:12 uuu

install命令
install命令的作用是安裝或升級軟件或備份數據,它的使用權限是所有用戶。install命令和cp命令類似,都可以將文件/目錄拷貝到指定的地點。但是,install允許你控制目標文件的屬性。install通常用于程序的makefile,使用它來將程序拷貝到目標(安裝)目錄。

用法:
用法:install [選項]… [-T] 源文件 目標文件
或:install [選項]… 源文件… 目錄
或:install [選項]… -t 目錄 源文件…
或:install [選項]… -d 目錄…
選項:
-b 類似–backup 但不接受參數
-c (忽略)
-C, –compare 比較每組源文件和目標文件,在一些情況下不修改目標文件
-d, –directory 將所有參數視為目錄名稱;為指定的目錄創建所有組件
-D 創建目標目錄的所有必要的父目錄,然后將源文件復制至該目錄
-g, –group=組 自行設置所屬組,而不是進程目前的所屬組
-m, –mode=模式 自行設置權限模式(像chmod),而不是rwxr-xr-x
-o, –owner=所有者 自行設置所有者(只適用于超級用戶)
-p, –preserve-timestamps 修改源文件的訪問/修改時間以與目標文件保持一致
-s, –strip 拆解符號表
–strip-program=程序 指定拆解二進制文件的程序
-S, –suffix=后綴 覆蓋常用備份文件后綴
-t, –target-directory=目錄 將源文件所有參數復制到指定目錄
-T, –no-target-directory 將目標文件視為普通文件
-v, –verbose 創建目錄時顯示其名稱
–preserve-context 保持SELinux 的安全環境
-Z, –context=CONTEXT 設置文件和目錄的SELinux 安全環境
–help 顯示此幫助信息并退出
–version 顯示版本信息并退出

install和cp命令區別:
1、最重要的一點,如果目標文件存在,cp會先清空文件后往里寫入新文件,而install則會先刪除掉原先的文件然后寫入新文件。這是因為往正在 使用的文件中寫入內容可能會導致一些問題,比如說寫入正在執行的文件可能會失敗,比如說往已經在持續寫入的文件句柄中寫入新文件會產生錯誤的文件。而使用 install先刪除后寫入(會生成新的文件句柄)的方式去安裝就能避免這些問題了;
2、install命令會恰當地處理文件權限的問題。比如說,install -c會把目標文件的權限設置為rwxr-xr-x;
3、install命令可以打印出更多更合適的debug信息,還會自動處理SElinux上下文的問題。
mktemp命令,用來創建臨時文件供shell腳本使用。
用法:mktemp [OPTION]… [TEMPLATE]

選項
-q:執行時若發生錯誤,不會顯示任何信息;
-u:暫存文件會在mktemp結束前先行刪除;
-d:創建一個目錄而非文件。
例如:不加-d,默認是創建臨時文件
[root@dxlcentOS ~]# mktemp /tmp/tmpd..XXX
/tmp/tmpd..268
[root@dxlcentOS ~]# mktemp -d /tmp/tmpd..XXX
/tmp/tmpd..Hd6 創建臨時目錄

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87650

(1)
N27_dxldengN27_dxldeng
上一篇 2017-10-05 19:04
下一篇 2017-10-05 21:56

相關推薦

  • Linux 文本編輯器三劍客之 sed

    參考手冊: http://www.gnu.org/software/sed/manual/sed.html 轉載請注明:馬哥教育!!

    Linux干貨 2017-01-12
  • 文件目錄介紹

    對于操作系統的目錄感覺總是記不住,今天結合上課筆記和自己的理解總結一下:/——-執行操作時總是要跳轉到不同的目錄,根是一個樹狀結構,下面介紹都是根下的目錄以及相關介紹├── bin 存放用戶使用的基本命令(可執行程序,二進制文件)、分區的時候不會單獨給它分區├── boot  跟內核有關的文件├── cgroup &nbsp…

    Linux干貨 2017-04-10
  • DHCP使用幫助

    bootp 想要通過tcp/ip模型進行網絡通信需要有一個ip地址,IP地址是屬于操作系統的,所以沒有操作系統就沒有ip 為了解決這種問題,有一種網卡可以不需要操作系統就能獲取到ip bootp:只有第一次是動態獲得,以后ip地址就是和mac地址綁定的,不能分配給其他主機 DHCP:DHCP是bootp的改進版,主要引入了租約的定義 DHCP也可以根據mac…

    Linux干貨 2016-11-11
  • 第一周作業

    1. 描述計算機的組成及其功能 CPU:CPU包括運算器和控制器,并采用大規模集成電路工藝制成的芯片,又稱微處理器芯片。 運算器又稱算術邏輯單元(Arithmetic Logic Unit簡稱ALU)。它是計算機對數據進行加工處理的部件,包括算術運算(加、減、乘、除等)和邏輯運算(與、或、非、異或、比較等)。 控制器負責從存儲器中取出指令,并對指令進行譯碼;…

    Linux干貨 2017-01-04
  • 第三周學習總結之簡單文本處理

    寫在最前 通過前面的學習,我們已經知道Linux是一個一切皆文件的系統,因此對文件的處理就顯得尤為重要,到目前為止,對于新手來說可能連鼎鼎大名的三劍客也未必聽過,不過在這之前我們也可以使用一些非常好用的文本處理工具來完成一些簡單文件的處理。本次內容就是講講如何使用幾個簡單文本處理工具的組合完成一些實用的功能。 文本處理工具 文本處理工具,用我的理解就是能夠對…

    2017-12-19
  • Tomcat 全系列發現嚴重安全漏洞

    據 Tomcat 安全組確認,Tomcat 全系列產品均被發現嚴重安全漏洞:CVE-2014-0227 請求夾帶漏洞。 級別:嚴重 受影響版本: Apache Tomcat 8.0.0-RC1 to 8.0.8 Apache Tomcat 7.0.0 to 7.0.54 Apache Tomcat 6.0.0 to 6.0.41 描述:可以通過構造一個截斷請…

    Linux干貨 2015-02-11
欧美性久久久久