用户及权限管理 (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.178linux.com/88240

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

相关推荐

  • LVM逻辑卷&RAID管理&磁盘配置详解

    LVM逻辑卷管理 应用场景:想象一下,你通过传统的硬盘分区方式为某些用户提供了一块磁盘,随着用户数据的不断增加,分区的容量告急。这时要增加容量,只能选择用另一块容量更大的硬盘或分区来替换,在这个过程中,你需要将数据先拷贝至新设备,拷贝完成之后,再用新设备替换容量告罄的设备。假设你很有耐心并且整个数据的拷贝过程是顺顺利利的,你也需要考虑靠背后文件的权限变化、替…

    Linux干货 2016-09-02
  • 马哥教育面授班22期:第一天课程练习

    Linux发展史:        1984年:Richard Stallman发起GNU项目和自由软件基金会创建开源的UNIX实用工具版本        创建通用公共许可证(GPL)        1991年:Linux Torvalds发…

    Linux干货 2017-05-16
  • 开班第一天

    我的一篇小日记

    Linux干货 2018-03-26
  • KVM虚拟化平台部署及管理

    前言 KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发。2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分。2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中。本文…

    Linux干货 2015-07-19
  • 程序包管理的前端工具YUM及案例一二

    程序包管理前端工具–YUM        yum:yellowdog update modifier        yum工具为CS架构 yum仓库(yum repository):yum repo   &n…

    Linux干货 2016-08-24
  • vim的总结、练习和周期性任务

    vim:VI的增强版,是一款可视化功能非常强大的文本编辑器,属于全屏编辑器。 vim:使用方法: 命令格式:    ~]#vim [options] [file ..]      选项:        +#:打开文件后,直接让光标处于第#行首;   …

    Linux干货 2017-08-14

评论列表(1条)

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

    总结的非常的好,从内容到格式看得出很用心的在做的。基本的掌握之后,可以深入了解一下另外三个特殊权限位,suid,sgid和sticky位,加油。