用户及用户组权限管理

   Linux是一个多任务多用户的系统,多用户可以同时登陆同一台主机。为了考虑到每个人的隐私权和工作空间,这时候文件所有者(owner)就是即用户的角色就变得尤为重要了,同时为了用户与用户之间方便合作,共享一些公共资源,这时,为了实现资源的快速分配,我们把多个用户放在一个公共的空间,分别赋予他们不同的读写执行等操作的权限,这些用户共同组成的一个整体,就是所谓的用户组(group)。

第一部分 Linux权限管理

用命令ls -l可以列出用户的权限。

  #ls -l

wKiom1bjzdiiJEDCAAAVHUdfkho671.png

这里我们以test文件为例,来详细说明。

第一类drwxr-xr-x

d:文件类型,常见的类型有d(目录)、-(一般文件)、c(字符设备)、b(块设备)、l(链接文件)、s(套接字文件)等,其余的九位数字即为文件权限。

linux权限采用UGO机制,U(user)表示所属主,G(group)表示所属组,O(other)表示除所属主和所属组之外的其他用户。其中r(readable)代表可读的,用数值4来表示;w(writable)代表可写的,用数字2来表示;x(excutable)代表可执行的,用数字1来表示。

权限的组合机制--以二进制的方式组合。

        ---     0000

        --x0011

        -w-0102

        -wx0113

        r--1004

        r-x1015

        rw-1106

        rwx 1117

本例中前三位rwx为所属主的权限:rwx对应的数值为7,中三位表示所属组的权限:r-x对应的数值为5,后三位表示其他人的权限:r-x对应的数值为5,则它们组合起来为755。

在系统创建目录与文件时会自动给它们添加一些属性,这就是umsk默认权限属性。我们可以通过umask来查看。

  #umask

wKioL1bj1QTTtz8jAAANcwsTj7w319.png

对于文件的默认权限是644,对于目录的默认权限是755。

权限的管理命令--chmod。

chomod:修改命令的权限位。

用法:  chmod [OPTION]... MODE[,MODE]... FILE...

常用的用法

1.赋权表示法:直接操作一类用户的所有权限位rwx。

wKiom1bj2WehV-7yAAAXfLYwGgs806.png

对于两类用户权限相同合并到一起ug=, go=来表示。

2.授权表示法:操作一类用户一位或多位权限。

wKiom1bj2objuUAMAAAY-JQSNcE385.png

对于两类用户权限机制相同:ug+, ug-, ...合并在一起。

3.数值表示法:用二进制数值来表示每一类用户的多位权限位

wKioL1bj29nTPyy_AAAYYxUYI9s893.png

第二部分 用户和用户组

     学习用户和用户组管理之前我们先学习他们的配置文件。

保存用户信息的文件:/etc/passwd。

#tail /etc/passwd

wKiom1bj3YOz8y0CAAAjAIQyi9k994.png

它们由“:”隔开的7个字段组成。

用户名:加密的用户密码:UID:GID:注释信息:用户的家目录:登陆的shell

保存用户组的信息:/etc/group。

#tail -1 /etc/group

wKioL1bj3_KxTyRGAAATp9IVxNc835.png

它们由“:”隔开的4个字段组成。

用户组名:加密的组密码:GID:组内用户。

#tail -1 /etc/shadow

wKioL1bj4MOxdWAYAAAcQJIg160857.png

它们是由““:”分开的九个字段。

登录名:密码:最近一次的修改时间:密码的最短使用期限:密码最长使用期限:提前警告的天数:非活动期限:账号的禁用日期:保留字段

用户的分类

用户可以分为管理用户和普通用户。普通用户可以分为系统用户和登陆用户。用户用UID来标识,管理用户的ID=0,普通用户的ID为1-60000,其中系统用户为1-499(centOS7为1-999),登陆用户为500-60000(centOS7为1000-60000)。用户通过/etc/passwd库的密码解析来验证用户的密码,并通过后授权登录。


用户管理命令

useradd命令:添加用户

 useradd  [选项]  登录名

常用选项:

        -c, --comment COMMENT:注释信息,一般为Full Name;

        #useradd -c "www.Fedora.com " fefora

       -d, --home  /PATH/TO/HOME_DIR:家目录路径;目标路径不能事先存在,否则会有警告,不会得利skel相关的文件给用户

        #useradd -d /tmp/test test

      -g, --gid GROUP:用户的基本组组名或GID;

         #useradd -g 1003 rex

       -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;

        #useradd -G fedora,gentoo centos

       -m, --create-home:强制创建家目录; 

       -M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes;

       -r, --system:创建一个系统账户

        #useradd -r apache

      -s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的SHELL 变量选择默认的登录shell;

        #useraddr -s /bin/sh rex

       -u, --uid UID:用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户 ID 最小值。

       #useradd -u 2000 slackware

       useradd -D  选项:设置某默认选项;-e,-f等默认选项。

 usermod命令:修改账号信息

   usermod [选项] 用户名

     -c, --comment  COMMENT用户密码文件中注释字段的新值。通常使用 chfn(1) 工具对其进行修改。

     -d, --home  HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中;

       #usermod -m -d /tem/test rex

     -g, --gid GROUP:用户的新初始登录组的组名或数字代号。此组必须存在。

      #usermod -g gentoo centos

     -G, --groups  GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组。

     -l, --login  NEW_LOGIN:修改当前用户的用户名。

     -L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”。  

     -U, --unlock 解锁用户的密码。这将移除加密的密码之前的“!”。

userdel命令:删除用户账号

  userdel [选项]  登录名

    -r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除。

用户组管理命令

  groupadd命令:添加用户组

  groupadd [选项] GROUP

         -g  GID:指明GID。

   #groupadd -g 1011 suse

         -r, --system:系统组。

   #groupadd -r httpd

  groupmod命令:修改组信息

  groupmod [选项] GROUP

            -g  GID 

            -n NEW_NAME:修改组名。

  groupdel命令:删除组

   groupdel [选项] GROUP