用戶及權限管理 (Blog 1)

用戶、權限相關概念及用戶管理類命令

用戶

計算機的使用者;實現資源隔離;

1964年,Multics項目出現多用戶、多任務的操作系統;當時Multics主機價格很昂貴,通常是多個終端連入一個主機,實現多個用戶共用一個主機;多個用戶共同使用一個主機上資源就會存在一些問題;互相之間是否可能刪除對方的數據及查看對方的數據;為了避免這些問題:就必須資源隔離;

計算機如何識別用戶是聲稱的用戶?

認證:通過識別機制與某用戶建立關聯關系;

識別機制:暗號、密碼、指紋、虹膜 …

  • 暗號:天王蓋地虎,寶塔震…
  • 密碼:將密碼存儲在文件中,用戶輸入密碼后,將輸入的密碼與文件中存儲的密碼比對;相同時則通過認證;

計算機易識別的是數字,我們鍵入的用戶名是字符,計算機如何將用戶名轉換為可識別的數字?

計算機用16位二進制數唯一標識每個用戶;0-65535

名稱解析:將用戶名轉換為計算機標識用戶的唯一數字的過程,此數字叫UID:Username –> UID

  • 解析過程:根據用戶輸入用戶名為標準,去查找存儲密碼的解析庫,找出名稱對應的值;
  • 解析庫:/etc/passwd
  • 解析庫可存儲位置:文本文件、mysql、nosql、ldap

密碼存儲在文本文件中,是明文存放,其他用戶了可以查看;需要加密后存放;

加密:明文轉換為密文

加密算法

  • 對稱加密:加密和解密同一個密鑰;
  • 非對稱加密:加密和解密是一對兒密鑰;
  • 單向加密:提取指紋;只能加密不能解密常與salt連用,避免相同密碼顯示相同字串;

授權:? ?owner:用戶對資源的使用級別;

審計:用戶使用資源的合理性;

用戶組

一種角色、容器;用戶選擇了一種角色,就代表此用戶就擁了角色所擁有的權限、責任;

權限

用戶對資源操作方式通過權限定義;

用戶訪問文件通過進程:進程的身份是進程的發起者;

進程對文件的訪問權限:

  • 進程的發起者同文件屬主應用屬主的權限;
  • 進程的發起者屬于文件屬組應用屬組的權限
  • 否則應用其他用戶的權限

權限:mode:r,w,x

文件:

  • r: 查看內容
  • w: 修改內容
  • x:運行為一個進程

目錄:

  • r: ls
  • w: 目錄中可刪除和創建文件
  • x:可cd進目錄,ls -l查看目錄;

用戶的類型:

  • 管理員:0
  • 普通用戶:
    • 系統用戶:CentOS6: 1-499, CentOS7: 1-999 系統用戶:為后臺進程或服務提供的運行身份;
    • 登陸用戶:c6: 500-60000, c7: 1000-60000

組的類型:

  • 普通組(系統用戶組、登陸用戶組)、管理組;
  • 私有組、公共組:組內用戶數 私有組:組內只有一個與用戶名同名的組;
  • 基本組、附加組:用戶

用戶管理類命令:groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, chage, chsh, chfn, finger, su, id

groupadd 添加組

groupadd [options] group
    -g, --gidGID 自定義GID;默認是上一個組的GID+1;
    -r, --system 創建系統組;
添加組:    
    [root@localhost ~]# groupadd mageedu
    [root@localhost ~]# tail -1 /etc/group
    mageedu:x:500:
添加系統組:
    [root@localhost ~]# groupadd -r mygrp
    [root@localhost ~]# tail -1 /etc/group
    mygrp:x:499:
添加GID為5200的elastic組:
    [root@localhost ~]# groupadd -g 5200 elastic
    [root@localhost ~]# tail -1 /etc/group
    elastic:x:5200:
默認:
    [root@localhost ~]# groupadd kibana
    [root@localhost ~]# tail -1 /etc/group
    kibana:x:5201:

groupmod 修改組屬性

groupmod [選項] GROUP
    -g, --gidGID 修改GID
    -n, --new-nameNEW_GROUP 改變組名
將elastic組GID修改為7777:
    [root@localhost ~]# groupmod -g 7777 elastic
    [root@localhost ~]# tail -3 /etc/group
    elastic:x:7777:
    ...
將elastic組名修改為fedora:
    [root@localhost ~]# groupmod -n fedora elastic
    [root@localhost ~]# tail -3 /etc/group
    fedora:x:7777:
    ...

groupdel 刪除組

groupdel GROUP        
刪除fedora組:
    [root@localhost ~]# groupdel fedora
    [root@localhost ~]# tail -3 /etc/group

useradd 添加用戶或更新默認用戶信息;/usr/sbin/adduser: symbolic link to `useradd’

useradd [選項] 登錄名
    -u, --uid UID 指定UID號;默認UID+1;
    -g, --gid GROUP 指定基本組ID,此組得事先存在;
    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 用戶的附加組,多個間用逗號分隔;
    -c, --comment COMMENT 注釋信息;
    -d, --home-dir HOME_DIR 創建以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄并重命名實現;指定的家目錄路徑如果事先存在,則不會復制文件;
    -s, --shell SHELL 默認shell,可用的所有常規shell列表存儲在/etc/shells文件當中;
    -r, --system 系統用戶;
    -m, --create-home
    -M, --no-create-home 不為用戶創建主目錄 CREATE_HOME    yes 自動創建
    -f, --inactive INACTIVE 
    注意:創建用戶時的諸多默認設定配置文件為/etc/login.defs;

useradd -D [OPTION]... 操作/etc/default/useradd文件;
    # useradd -D 顯示創建用戶的默認配置;
        GROUP=100 添加同名私有組
        HOME=/home 非系統組時,家目錄位置
        INACTIVE=-1 非活動期,禁用;
        EXPIRE= 過期期限:永不過期;
        SHELL=/bin/bash 默認SHELL
        SKEL=/etc/skel  復制用戶骨架信息
        CREATE_MAIL_SPOOL=yes  是否為用戶創建郵筒;/var/spool/mail/USERNAME 為用戶創建郵筒

    -s, --shellSHELL        

添加gentoo用戶:
    [root@localhost ~]# useradd gentoo
    [root@localhost ~]# tail -1 /etc/passwd
    gentoo:x:500:5202::/home/gentoo:/bin/bash
添加UID為5200的redhat用戶:
    [root@localhost ~]# useradd -u 5200 redhat
    [root@localhost ~]# tail -1 /etc/passwd
    redhat:x:5200:5200::/home/redhat:/bin/bash
添加以gentoo為基本組的centos用戶:
    [root@localhost ~]# useradd -g gentoo centos
    [root@localhost ~]# tail -1 /etc/passwd
    centos:x:5201:5202::/home/centos:/bin/bash
    [root@localhost ~]# id centos
    uid=5201(centos) gid=5202(gentoo) groups=5202(gentoo)
添加以gentoo為附加組的debian用戶:
    [root@localhost ~]# useradd -G gentoo debian
    [root@localhost ~]# id debian
    uid=5202(debian) gid=5203(debian) groups=5203(debian),5202(gentoo)
添加以"SUSE Linux Enterprise System"為注釋信息的sles用戶:
    [root@localhost ~]# useradd -c "SUSE Linux Enterprise System" sles
    [root@localhost ~]# tail -1 /etc/passwd
    sles:x:5203:5204:SUSE Linux Enterprise System:/home/sles:/bin/bash                                                                            
創建以/var/tmp/knopix為家目錄的knopix用戶:
    [root@localhost ~]# useradd -d /var/tmp/knopix knopix
    [root@localhost ~]# tail -1 /etc/passwd
    knopix:x:5204:5205::/var/tmp/knopix:/bin/bash
創建默認shell為/bin/csh的ubuntu用戶:
    [root@localhost ~]# useradd -s /bin/csh ubuntu
    [root@localhost ~]# tail -1 /etc/passwd
    ubuntu:x:5205:5206::/home/ubuntu:/bin/csh
創建系統用戶mint:
    [root@localhost ~]# useradd -r mint
    [root@localhost ~]# tail -1 /etc/passwd
    mint:x:498:498::/home/mint:/bin/bash
創建opensuse用戶不為其創建家目錄:
    [root@localhost ~]# useradd -M opensuse
    [root@localhost ~]# tail -1 /etc/passwd
    opensuse:x:5206:5207::/home/opensuse:/bin/bash
    [root@localhost ~]# ls /home
    centos  debian  gentoo  lost+found  redhat  sles  ubuntu
查看默認配置:
    [root@localhost ~]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
修改默認SHELL為/bin/csh:
    [root@localhost ~]# useradd -D -s /bin/csh
    [root@localhost ~]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/csh
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes

usermod 修改默認屬性

usermod [選項] 登錄
    -u, --uid UID  修改用戶的ID為此處指定的新UID;
    -g, --gid GROUP 修改用戶所屬的基本組為此處所指的GROUP;
    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 修改用戶所屬的附加組,原來的附加組會被覆蓋;以逗號分隔的列表;
    -a, --append 與-G一同使用,用于為用戶追加新的附加組;
    -c, --comment COMMENT 修改注釋信息;
    -d, --home-dir HOME_DIR 修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
    -m, --move-home 與-d一同使用,用于將原來的家目錄移動為新的家目錄;
    -l, --login NEW_LOGIN 修改用戶名;
    -s, --shell SHELL 修改用戶的默認shell為此處指定的SHELL;
    -L, --lock 鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";
    -U, --unlock 解鎖用戶的密碼;
修改gentoo用戶的UID為5202:
    [root@localhost ~]# id gentoo
    uid=500(gentoo) gid=5202(gentoo) groups=5202(gentoo)
    [root@localhost ~]# usermod -u 5202 gentoo
    [root@localhost ~]# id gentoo
    uid=5202(gentoo) gid=5202(gentoo) groups=5202(gentoo)
修改gentoo用戶的基本組為mageedu:
    [root@localhost ~]# usermod -g mageedu gentoo
    [root@localhost ~]# id gentoo
    uid=5202(gentoo) gid=500(mageedu) groups=500(mageedu)
為gentoo用戶添加附加組為gentoo和knopix:
    [root@localhost ~]# usermod -a -G gentoo,knopix gentoo
    [root@localhost ~]# id gentoo
    uid=5202(gentoo) gid=500(mageedu) groups=500(mageedu),5202(gentoo),5205(knopix)
修改gentoo的注釋為"...":
    [root@localhost ~]# usermod -c '...' gentoo
    [root@localhost ~]# tail  /etc/passwd
    gentoo:x:5202:500:...:/home/gentoo:/bin/bash
    ...
修改gentoo用戶的家目錄為/var/tmp/gentoo:
    [root@localhost ~]# usermod -d /var/tmp/gentoo gentoo
    [root@localhost ~]# tail /etc/passwd
    gentoo:x:5202:500:...:/var/tmp/gentoo:/bin/bash
    ...
    [root@localhost ~]# su - gentoo
    su: warning: cannot change directory to /var/tmp/gentoo: No such file or directory
    -bash-4.1$ 
修改gentoo用戶的家目錄,原家目錄中的文件一并移動;
    [root@localhost ~]# usermod -m -d /home/gentoo gentoo
    [root@localhost ~]# usermod -m -d /var/tmp/gentoo gentoo
    [root@localhost ~]# su - gentoo
    [gentoo@localhost ~]$ 
修改gentoo用戶名為archlinux:
    [root@localhost ~]# usermod -l archlinux gentoo
    [root@localhost ~]# tail -1 /etc/passwd
    archlinux:x:5202:500:...:/var/tmp/gentoo:/bin/bash
修改archlinux默認shell為/bin/csh:
    [root@localhost ~]# usermod -s /bin/csh archlinux
    [root@localhost ~]# tail -1 /etc/passwd
    archlinux:x:5202:500:...:/var/tmp/gentoo:/bin/csh
鎖定archlinux用戶:
    [root@localhost ~]# echo "mageedu" | passwd --stdin archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:17446:0:99999:7:::
    [root@localhost ~]# usermod -L archlinux
    [root@localhost ~]# tail -1 /etc/shadow 
    archlinux:!$6$aKSNkmc.$Q/nA8K/79vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:17446:0:99999:7:::
    注意:在第二個字段前多了一個"!"。
解鎖archlinux用戶:
    [root@localhost ~]# usermod -U archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:17446:0:99999:7:::

userdel 刪除用戶

userdel [選項] 登錄 
    -r, --remove 刪除用戶時一并刪除其家目錄;默認不會刪除;
刪除debian用戶保留家目錄:
    [root@localhost ~]# userdel  debian
    [root@localhost ~]# ls /home
    centos  debian  gentoo  lost+found  redhat  sles  ubuntu
    [root@localhost ~]# id debian
    id: debian: No such user
刪除ubuntu用戶不保留其家目錄:
    [root@localhost ~]# userdel -r ubuntu
    [root@localhost ~]# ls /home
    centos  debian  gentoo  lost+found  redhat  sles

passwd 更新用戶密碼

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

     passwd 修改用戶自己的密碼
     passwd USERNAME 修改指定用戶的密碼,但僅root有此權限;

     -l,-u 鎖定和解鎖用戶;!! ;同usermod -L,-U !
     -d 清除用戶密碼串;
     -e 立即過期
     -i DAYS: 非活動期限,天;
     -w DAYS: 警告期限;
     -x DAYS: 密碼的最長使用期限;
     -n DAYS: 密碼的最短使用期限;
     --stdin:從標準輸入獲取密碼;
         # echo "magedu" | passwd --stdin docker &> /dev/null
         # echo $? 執行狀態結果為0成功;
 為centos用戶添加mageedu密碼:
    [root@localhost ~]# passwd centos
    Changing password for user centos.
    New password: 
    BAD PASSWORD: it is based on a dictionary word
    BAD PASSWORD: is too simple
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# tail -1 /etc/shadow
    centos:$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:0:99999:7:::
    ...
鎖定centos用戶:
    [root@localhost ~]# passwd -l centos
    [root@localhost ~]# tail /etc/shadow
    centos:!!$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:0:99999:7:::
    ...
    注意:在第二個字段是"!!",比usermod -L鎖定多了一個!;                
解鎖centos用戶:
    [root@localhost ~]# passwd -u centos
    [root@localhost ~]# tail /etc/shadow
    centos:$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:0:99999:7:::
    ...
修改centos用戶最短密碼使用期限為25天:
    [root@localhost ~]# passwd -n 25 centos
    [root@localhost ~]# tail /etc/shadow
    centos:$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:25:99999:7:::
    ...
修改centos用戶最長密碼使用期限為520天:
    [root@localhost ~]# passwd -x 520 centos
    [root@localhost ~]# tail /etc/shadow                
    centos:$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:25:520:7:::
    ...
修改centos警告期為10天;
    [root@localhost ~]# passwd -w 10 centos
    [root@localhost ~]# tail /etc/shadow            
    centos:$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:25:520:10:::
    ...
修改centos非活動期限77天:
    [root@localhost ~]# passwd -i 77 centos
    [root@localhost ~]# tail /etc/shadow    
    centos:$6$.Vk1LX6r$zhLaN7.VOOO33MwxOLVKfWDr8gONZn5wvAxteVvSfaSRgnAPQuX6BCakiBQLDpEl9y2Ff3SLxMT5uE9I0dxkE/:17446:25:520:10:77::
    ...
修改centos立即過期:
    [root@localhost ~]# passwd -e centos

newgrp 臨時切換指定組為基本組;

newgrp [-] [group]
    - 會模擬用戶重新登錄以實現重新初始化其工作環境;        
臨時切換mygrp為基本組:
    [root@localhost ~]# newgrp mygrp
    [root@localhost ~]# id
    uid=0(root) gid=499(mygrp) groups=499(mygrp),0(root)

chage 更改用戶密碼過期信息

chage [選項] 登錄名
    -d,最近修改密碼時間
    -m,min
    -M, max
    -W, warn
    -I, inactive
    -E, expire
修改archlinux用戶最近修改密碼時間:
    [root@localhost ~]# chage -d 1 archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:1:0:99999:7:::                        
修改archlinux用戶最短密碼使用期限為12天:
    [root@localhost ~]# chage -m 12 archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:1:12:99999:7:::
修改archlinux用戶最長密碼使用期限為5200天:
    [root@localhost ~]# chage -M 5200 archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:1:12:5200:7:::
修改archlinux警告期為13天;
    [root@localhost ~]# chage -W 13 archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:1:12:5200:13:::
修改archlinux非活動期限90天:
    [root@localhost ~]# chage -I 90 archlinux
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:1:12:5200:13:90:::
修改archlinux過期時間20500101:
    [root@localhost ~]# tail -1 /etc/shadow
    archlinux:$6$aKSNkmc.$Q/nA8K/80vUx9bF4duP3X1w7PEjDl6QMH.FWclqGAno81Ez6.qyrt4WyFB6OePvzpldPa6tls7OhbqxOcpHVQ1:1:12:5200:13:90:20500101:

id 顯示用戶的實際或有效ID

id [OPTION]... [USER]
    id 顯示自己
    -u, --user 僅顯示有效的UID;
    -g, --group 僅顯示用戶的基本組ID;
    -G, --groups 僅顯示用戶所屬的所有組ID;
    -n, --name 顯示名字而非ID;與以上選項連用;
顯示archlinux用戶ID:
    [root@localhost ~]# id archlinux
    uid=5202(archlinux) gid=500(mageedu) groups=500(mageedu),5202(gentoo),5205(knopix)
顯示archlinux用戶UID及用戶名:
    [root@localhost ~]# id -u archlinux
    5202
    [root@localhost ~]# id -un archlinux
    archlinux
顯示archlinux用戶GID及私有組名:
    [root@localhost ~]# id -g archlinux
    500
    [root@localhost ~]# id -gn archlinux
    mageedu
顯示archlinux用戶所有組及組名:
    [root@localhost ~]# id -G archlinux
    500 5202 5205
    [root@localhost ~]# id -Gn archlinux
    mageedu gentoo knopix

su switch user

登陸式切換:會通過讀取目標用戶shell環境的配置文件來重新初始化;
    su - USERNAME
    su -l USERNAME
非登陸式切換:不會讀取目標用戶shell環境的配置文件來重新初始化;
     su USERNAME

注意:管理員可無密碼切換至其它任何用戶;非管理員必須給出密碼切換至其它用戶;

-c 'COMMAND' 僅以指定用戶的身份運行此處指定的COMMAND;

登陸切換至archlinux:
    [root@localhost ~]# su - archlinux
    [archlinux@localhost ~]$ pwd
    /var/tmp/gentoo
非登陸切換至archlinux:
    [root@localhost ~]# su  archlinux
    [archlinux@localhost /root]$ pwd
    /root

finger 用戶信息查詢工具

Login: docker                     Name: 
Directory: /home/docker                 Shell: /bin/bash
Last login 五 10月  6 21:41 (EDT) on pts/5
No mail.
No Plan.

chfn 修改用戶注釋信息;

chfn [user]
[root@localhost ~]# chfn archlinux
Changing finger information for archlinux.
Name [...]: ArchLinux
Office []: 96168
Office Phone []: 96168
Home Phone []: 96168

Finger information changed.
[root@localhost ~]# tail -1 /etc/passwd
archlinux:x:5202:500:ArchLinux,96168,96168,96168:/var/tmp/gentoo:/bin/csh

chsh 修改用戶shell;

chsh [OPTION] [user]
    -s, --shell shell
[root@localhost ~]# chsh archlinux
Changing shell for archlinux.
New shell [/bin/csh]: /bin/bash
Shell changed.
[root@localhost ~]# tail -1 /etc/passwd
archlinux:x:5202:500:ArchLinux,96168,96168,96168:/var/tmp/gentoo:/bin/bash

whoami 當前有效用戶

[root@localhost ~]# whoami
root

pwck 檢查密碼文件異常

[root@localhost ~]# pwck
user 'adm': directory '/var/adm' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'gopher': directory '/var/gopher' does not exist
user 'ftp': directory '/var/ftp' does not exist
user 'saslauth': directory '/var/empty/saslauth' does not exist
user 'mint': directory '/home/mint' does not exist
pwck: no changes

grpck 檢查組文件異常

權限命令: chmod
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
    -R, --recursive 遞歸修改目錄及目錄下所有文件的權限;常用于授權表示法及賦權表示法;

三類用戶:

  • u:屬主
  • g:屬組
  • o:其它
  • a:所有

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

MODE表示法:
    賦權表示法:修改一類或多類用戶的“所有”權限位:同時指定多類用戶時需要用逗號分隔;
        u=
        g=
        o=
        u=,g=
        u=,g=,o=
        ug=
        go=
        ...
修改當前目錄下所有文件屬主權限為空;屬組權限為空;
    [root@localhost ~]# chmod u=,g= ./*
    [root@localhost ~]# ll
    total 32
    ----------. 1 root root  2248 Oct  7 08:12 anaconda-ks.cfg
    -------r--. 1 root root 16910 Oct  7 08:12 install.log
    -------r--. 1 root root  5820 Oct  7 08:10 install.log.syslog

    授權表示法:修改一類或多類用戶的“一位”權限位;
        u+
        u-
        g+
        g-
        o+
        o-
        a+ 或 +
        a- 或 -
        u+,g+
        ...

        +w:僅對屬主有效;
修改當前目錄下所有文件:屬主權限給予讀寫權限;屬組權限給予讀權限:
    [root@localhost ~]# chmod u+rw,g+r ./*
    [root@localhost ~]# ll
    total 32
    -rw-r-----. 1 root root  2248 Oct  7 08:12 anaconda-ks.cfg
    -rw-r--r--. 1 root root 16910 Oct  7 08:12 install.log
    -rw-r--r--. 1 root root  5820 Oct  7 08:10 install.log.syslog 
給當前目錄下所有文件所有權限位附加寫權限;
    [root@localhost ~]# chmod +w ./*
    [root@localhost ~]# ll
    total 32
    -rw-r-----. 1 root root  2248 Oct  7 08:12 anaconda-ks.cfg
    -rw-r--r--. 1 root root 16910 Oct  7 08:12 install.log
    -rw-r--r--. 1 root root  5820 Oct  7 08:10 install.log.syslog

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

OCTAL-MODE:八進制權限位;
[root@localhost ~]# chmod 600 ./*
[root@localhost ~]# ll
total 32
-rw-------. 1 root root  2248 Oct  7 08:12 anaconda-ks.cfg
-rw-------. 1 root root 16910 Oct  7 08:12 install.log
-rw-------. 1 root root  5820 Oct  7 08:10 install.log.syslog

(3) chmod [OPTION]… –reference=RFILE FILE…

參考一個文件的權限修改當前文件;        
[root@localhost ~]# chmod --reference=/var/log/wtmp ./*
[root@localhost ~]# ll
total 32
-rw-rw-r--. 1 root root  2248 Oct  7 08:12 anaconda-ks.cfg
-rw-rw-r--. 1 root root 16910 Oct  7 08:12 install.log
-rw-rw-r--. 1 root root  5820 Oct  7 08:10 install.log.syslog

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

chown:

chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
    -R, --recursive 遞歸修改目錄及目錄下所有文件的屬主、屬組;

注意:OWNER:GROUP 和 OWNER.GROUP都可使用;

修改當前目錄下所有文件的屬主為archlinux:
    [root@localhost ~]# chown archlinux ./*
    [root@localhost ~]# ll
    total 32
    -rw-rw-r--. 1 archlinux root  2248 Oct  7 08:12 anaconda-ks.cfg
    -rw-rw-r--. 1 archlinux root 16910 Oct  7 08:12 install.log
    -rw-rw-r--. 1 archlinux root  5820 Oct  7 08:10 install.log.syslog
修改當前目錄下所有文件的屬主為root,屬組為knopix:
    [root@localhost ~]# chown root:knopix ./*
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root knopix 1260 Oct  6 16:03 anaconda-ks.cfg
    -rw-r--r--. 1 root knopix    0 Oct  6 19:47 install.log
    -rw-r--r--. 1 root knopix    0 Oct  6 19:47 install.log.syslog
修改當前目錄下所有文件的屬組為archlinux:
    [root@localhost ~]# chown .archlinux ./*
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root archlinux 1260 Oct  6 16:03 anaconda-ks.cfg
    -rw-r--r--. 1 root archlinux    0 Oct  6 19:47 install.log
    -rw-r--r--. 1 root archlinux    0 Oct  6 19:47 install.log.syslog
參考/var/log/yum.log屬主和屬組修改當前目錄下所有文件的屬主和屬組:
    [root@localhost ~]# chown --reference=/var/log/yum.log ./*
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root root 1260 Oct  6 16:03 anaconda-ks.cfg
    -rw-r--r--. 1 root root    0 Oct  6 19:47 install.log
    -rw-r--r--. 1 root root    0 Oct  6 19:47 install.log.syslog

chgrp:

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

修改當前目錄下所有文件的屬組為archlinux:
    [root@localhost ~]# chgrp archlinux ./*
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root archlinux 1260 Oct  6 16:03 anaconda-ks.cfg
    -rw-r--r--. 1 root archlinux    0 Oct  6 19:47 install.log
    -rw-r--r--. 1 root archlinux    0 Oct  6 19:47 install.log.syslog
參考/var/log/yum.log屬組修改當前目錄下install.log文件:
    [root@localhost ~]# chgrp --reference=/var/log/yum.log install.log
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root archlinux 1260 Oct  6 16:03 anaconda-ks.cfg
    -rw-r--r--. 1 root root         0 Oct  6 19:47 install.log
    -rw-r--r--. 1 root archlinux    0 Oct  6 19:47 install.log.syslog

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

(3)
逆神陽逆神陽
上一篇 2017-11-06
下一篇 2017-11-06

相關推薦

  • 招聘Linux運維工程師

    崗位職責: 公司集群硬件的日常維護及管理 負責公司內網的服務器安裝,部署和維護 監控服務器狀態,發現問題并及時維護 負責產品發布上線 承擔mangoDB的日常巡檢 集群數據服務器的備份 編寫服務器維護腳本,減少工作量,提高工作效率 任職要求: 1年以上Linux系統管理經驗,精通Linux的管理和維護 能夠熟練編排查運維過程中出現的服務故障,系統故障,網絡故…

    Linux干貨 2017-12-04
  • CentOS7下編譯安裝Apache

    在Linux中通過編譯源代碼進行安裝軟件,需要GCC(GNU Compiler Collection,GNU編譯器套件)的支持。通過yum安裝GCC [root@localhost ~]# yum install gcc C程序源碼編譯安裝三個步驟: 第一步:./configure  (1)通過選項傳遞參數,…

    Linux干貨 2016-09-05
  • N21 第八周 總有刁民想害朕

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋將兩個相似的網絡連接起來,并對網絡數據的流通進行管理。它工作于數據鏈路層,不但能擴展網絡的距離或范圍,而且可提高網絡的性能、可靠性和安全性。 集線器的英文稱為“Hub”。主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。它…

    Linux干貨 2016-09-15
  • N26-第一周博客作業

    1、計算機的組成及功能     CPU: Central Processing Unit 運算與管理控制功能        包括:          &nbsp…

    Linux干貨 2017-01-10
  • 在Centos系統上安裝EPEL擴展源以及安裝htop工具

        Htop是一個強大的進程管理前端工具,但這是一個擴展工具,一般在Centos系統源中并沒有,所有我們需要到fedora-epel源中下載。         EPEL即Extra Packages for Enterprise Lin…

    Linux干貨 2016-02-14
  • 由Linux中一個小問題引發的思考

    一、一個小問題 1、在學習Linux中我們經常會遇到很多有趣的小問題,今天筆者就遇到了一個很有意思的小問題,現在分享給大家:      “如何在本機字符終端登陸時,除顯示原有信息外,再顯示當前終端號,時間和主機名?” 2、實現方法如下:      輸入vim /etc/…

    2017-07-16

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-11-08 21:08

    總結的非常的好,從內容到格式看得出很用心的在做的?;镜恼莆罩螅梢陨钊肓私庖幌铝硗馊齻€特殊權限位,suid,sgid和sticky位,加油。

欧美性久久久久