Linux/CentOS用户和用户组及权限管理

一:基本概念
linux是一个多任务(multi-task)多用户(multi-user)的操作系统,每个用户和用户组都有自己的ID号UID GID,每个用户都有自己的家目录不能随意访问其他用户的家目录,管理员root除外。

  用户的分类:(以centos7.x为例)

    管理员或root:0

    普通用户:1-6000

      系统用户:1-999(centos7) 1-499(centos6)

      登录用户:1000-65535(centos7) 500-65535(centos6)

  组的分类:

    私有组:组名同用户名,而且只包含一个用户,用useadd命令创建用户是会默认创建一个私有组

    公共组:组中包含了多个用户

  linux系统用户安全机制:3A机制

    authentication  认证—>比对/etc/shdow中的单向加密过的密码确定用户身份

    authorization 授权—>通过权限管理控制不同用户的权限

    audition      审计—>通过selinux

  加密方法:

    对称加密:加密和解密使用同一个密钥

    非对称加密:加密使用私钥解密使用公钥

    单向加密:只能加密不能解密,而且定长输出 作用于提取文件的特征码

       算法 md5 sda sha224 sha256 sha384 sha512

示例使用md5sum命令提取 iso镜像文件的特征码和使用sha224sum 加密字符串“123456”

[root@localhost zxs]# md5sum CentOS-6.8-x86_64-bin-DVD1.iso
f73c2c4dd333c202ca85ea66120cacdf  CentOS-6.8-x86_64-bin-DVD1.iso
[root@localhost zxs]# echo "123456" | sha224sum 
ec5abd86603445ecc6f37e2632724f7823cc5f81342060fecc39836d 

  进程的安全上下文

    进程是以用户的身份运行的,当进程访问文件是,先检查发起进程的用户和用户所属的组,在检查文件的的属主和属组,如果文件的属组就是发起进程的用户则引用前三位的权限,如果文件的属组和发起进程的用户的属组相同则应用中三位的权限,都不是的话及应用右三位的权限

    查看文件的权限命令 ls-l

[root@localhost ~]# ls -al
total 64
dr-xr-x---.  2 root root   219 Apr 26 17:31 .
dr-xr-xr-x. 17 root root   244 Apr 26 17:46 ..
-rw-------.  1 root root   742 Apr 27 10:22 .bash_history
-rw-r--r--.  1 root root    18 Dec 29  2013 .bash_logout

drwxrwxrwx:

左1位表示文件的类型

左rwx表示所属主(owers) 的权限 读+写+执行

中rwx表示所属组(groups)的权限

右rwx表示其他(others)的权限

    权限组合机制

    —  000  0

    –x  001  1

    -w-  010  2

    -wx  011  3

    r–  100  4

    r-x  101  5

    rw-  110  6

    rwx  111  7 

示例 r-xr-x–x  551

   rwxr-xr-x  755

   rw-rw—-  664

二:了解用户和组相关配置文件
  /etc/passwd:用户的密码文件

[root@localhost zxs]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

说明:文件用户“:”分隔一共有7个字段每个字段的含义是

username:password:UID:GID:GECUS:dircution:shell

用户名:x:UID:GID:注释:家目录:shell (x表示占位符,为了安全表示密码保存在/etc/shadow)

  /etc/shadow:用户的密码文件

[root@localhost ~]# cat /etc/shadow | grep "zxs\>"
zxs:$6$vF9dzSd/$dyIJLhXSAR8oB5RxgV2qt4W8eF.zMRX2bAoaxYM6nhbaz5xuhjQQKCRFSfNt1eo5jzdyEv44zDuLe55XakjwA.:17283:2:6:1:3::

文件9个字段用户“:”分隔分别表示

用户名:加密后的密码:最后一个更改密码的天数(计算机元年至修改密码的时候):密码最短使用天数:密码最长使用天数:警告时间段:禁用期限:账户过期时间(从计算机元年开始计算):保留字段

三:用户和组管理命令
1:创建新用户的命令和用法

useradd   [选项]   登录名

选项和参数说明:

  -u:指定用户的UID

  -s:指定用户的shell (系统可支持的shell在/etc/shells 下)

  -r:创建一个系统用户(UID范围centos6为1-499,centos7为1-999可在/etc/login.defs中查看)

  -c:关于登录时的简短描述 后跟描述的字符串

  -d:自定义用户的家目录 后跟家目录路径

  -e:用户账户将被禁用的期限格式为 YYYY-MM-DD

  -f:表示过期后彻底禁用的天数 0表示马上禁止 -1表示禁用这个功能

  -G[GROUP1],[GROUP2],… : 添加用户的附加组多个组用“,”隔开

  -M:不创建用户的家目录 默认复制/etc/skel/目录下的文件到/home/USERNAME/下作为USERNAME的家目录 都是隐藏文件

  -N;不创建同名的私有组

2:修改创建新用户的默认值:(D是default) 命令修改只对当前shell有效

useradd   -D   [选项]

注意:用 useradd -D 修改后的默认值只对当前shell进程,重启或重新登录无效永久生效需要修改配置文件/etc/default 或 /etc/login.defs 一般情况下linux系统下用命令行修改的设置都只对当前shell进程有

参数和选项说明:

  useradd -D 不带选项:查看创建新用户的默认值

                         GROUP=100                          #新用户添加到UID为100的公共组

                         HOME=/home                        #默认家目录路径

                         INACTIVE=-1                         #过期后彻底禁用的天数  -1表示禁用此功能  0表示过期后马上禁止

           EXPIRE= # 账户过期日期

                         SHELL=/bin/sh                      # 默认shell       

                         SKEL= /etc/skel                     # 默认家目录的复制目录      

                         CREATE_MAIL_SPOOL=          #默认创建邮箱   

  带选项就是修改上面的默认参数

  useradd -D -e 修改变量 EXPIRE=

  useradd -D -f 修改变量 INACTIVE=

  useradd -D -s 修改变量 SHELL

3:修改用户的信息

usermod   [选项]   用户名

参数和选项说明:

  -u:修改UID

  -g:修改用户的基本组

  -d:修改用户的家目录 原来的家目录文件不会转移至新目录 要想移动要与参数 -m 一起使用

  -G:修改用户的附加组原来的附加组会被删除 要想追加附加组使用参数 -a

  -c:修改注释信息

  -e:修改过期日期

  -f:修改过期后可使用的天数

4:删除用户

userdel   [选项]   用户名

   -r:删除用户一起删除其家目录

5:创建组

groupadd   [选项]   组名

  -r:创建系统组

  -g:指定GID -f:如果指定GID重复 强制创建

6:修改组信息

groupmod   [选项]   组名

  -g:改UID

  -n:改组名

7:删除组

groupdel   [选项]   组名

8:更新用户密码和信息

passwd  [选项]   用户名

参数和选项说明:

  -d:删除密码

  -l:锁定用户 机制是在/etc/shadow 文件中用户的密码字符串前加“!”

  –stdin:与管道一起用将管道前输出字符串作为密码不需要与用户交互 用于脚本编写

示例:

[root@localhost ~]# echo "123456" | passwd --stdin zxs

更改用户 zxs 的密码 。
passwd:所有的身份验证令牌已经成功更新。
  -u:解锁

  -e:密码过期日期

  -i:密码禁用期限

  -n:密码最小年龄

  -x:密码最长年龄

  -w:密码警告日期

示例:

[root@localhost zxs]# echo "123456" | passwd -n 2 -x 6 -w 1  -i 3 --stdin zxs

调整用户密码老化数据zxs。
passwd: 操作成功

说明:假设在2号修改了用户的密码和其他日期设置

  -n 2 (表示用户在这个改的密码至少要用到4号才能修改 2表天数为两天)

  -x 6 (表示密码用户用到8号就到期了 使用天数为6)

  -w 1 (表示用户密码到期之前的前一天也就是7号,系统会提示密码即将到期的消息提示用户修改密码,在到期之前用户可以登录系统)

  -i 2 (表示账号密码过期后,到账号完全禁用锁定的天数,为宽限期3天,此期间用户必须修改密码才能登录系统,禁用后完全无法登录需用root 解锁用户)

9:给组添加密码 一般不需要 用户临时切换基本组需要提供组密码 没有密码不能切换
gpasswd [选项] 组名:
-a:组中添加用户

         -d:组中删除用户

10:临时切换基本组 然后输入组密码

newgrp  -  [组名]

   -:表示模拟重新初始化工作环境 同su -

11:显示用户信息

id   [选项]   [用户名]

  -u 显示用户UID

  -g 显示用户基本组的GID

  -G 显示所有组的GID

  -n 显示用户或组的名称

su:切换用户

       -:重新读取用户的配置文件初始化其工作环境 就是切换至用户的家目录

pwck:检查用户密码文件

grpck:检查组密码文件

四:权限管理命令
三类用户:

u  owns

g  groups

o  others

a  all

1:赋权表示法即直接赋予某一类用户的所有权限
    chmod u=

        g=

        o=

        a=

2:授权表示法即修改某一类用户的一个权限位(比较常用比较安全)
    chmod u+

        g+

        o+

        a+(a可以省)

3:8进制数值修改权限方法 直接修改所有类型用户的权限
    chmod 644

      选项:

        -R 修改目录权限时一并修改目录下的所有文件

          注:此用法最好搭配授权表示法,为了安全起见文件最好不要拥有执行权限,目录最好不要有写权限

        –reference FILE 写改文件的权限使与文件FILE一样

4:修改文件的属主和属组

chown [OPTION]... [OWNER][:[GROUP]] FILE...

例如

[root@localhost ~]# chown zxs:ftp text
[root@localhost ~]# ll text
-rw-r--r--. 1 zxs ftp 554 Apr 27 21:18 text

5:修改文件权限的反向掩码
  umask默认为002

  默认创建的文件的权限是664  666-umask获得

  默认创建的目录的权限是755  777-umask获得

umask 掩码数字:修改掩码即修改创建文件和目录时的默认权限

6:install命令类似cp命令
  -m 复制是设置文件权限默认为755

  -o 复制时修改文件的属主

  -g 复制时修改文件的属组

你可能感兴趣的:(运维)