用户及权限管理 (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

相关推荐

  • Linux文件类型及颜色标识整理

    Linux系统上的文件类型 -:f; 常规文件 , d:directory, 目录文件; b;block device,块设备文件,支持以'block'为单位进行随机访问; c:character device,字符设备文件,支持以'character'为单位进行线性访问;    &nbs…

    Linux干货 2016-10-16
  • 一起学WINS系列(三)界面、概览

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159542 上节我们讨论了有关WINS服务器的安装,本节将开始讨论WINS配置等内容。 一般情况下,我们可以在控制面板的管理工具中找到WINS,或者在【运行】内…

    Linux干货 2015-03-25
  • 关于大型网站技术演进的思考(十四)–网站静态化处理—前后端分离—上(6)

    原文出处: 夏天的森林  前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端 分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站 静态化技术的角度回过头来…

    Linux干货 2015-02-26
  • iptables 补充本

    浅谈iptables一 什么是iptablesiptables 是工作在内核之上的netfilter框架的前端工具(iptables是netfilter的管理工具这样说也不为过)Firewall:隔离工具,工作于主机或网络的边缘处,对经由的报文根据预先定义的规则(识别标准)进行检测,对于能够被规则匹配到的报文实行某种预定义的处理机制的一套组件; 硬…

    Linux干货 2017-05-15
  • 浅谈用户名和权限

        小编已经写了两篇博客了,却忘了自我介绍,咳咳咳(隆zhuang重qiang介zuo绍shi)一下:翠衣薄纱如花艳,柳眉凤眼俏佳人说的就是我!不扯了其实,小编拥有一个四口之家,那么小编今天就借家献佛给你们讲讲用户组和权限。     所属主(me):一般为文件的创建者,谁创建了该文件,就天然的成…

    Linux干货 2017-07-30
  • mysql主从复制

    MySQL主从复制        主从复制原理: mysql主从同步其实是一个异步复制的过程,要实现复制首先在master上开启bin-log日志功能。整个过程需要开启3个线程, 分别是master开启IO线程,slave开启IO线程和SQL线程. (1) 在slave服务器执行start…

    Linux干货 2016-06-26

评论列表(1条)

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

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