4. Linux用户及权限管理

用户,组,和权限管理

     每个使用者:用户

     组:用户组;用户容器

 

     用户类别:

             管理用户:

             普通用户:

                   系统用户

                   登陆用户

             用户标识:UserID (UID)

                   16bits 二进制数字:0-65535

                            管理员:0

                            普通用户:1-65535

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

                                  登陆用户:500-60000(centos6),1000-60000(centos7)

                   名称解析:名称转换

                             username  <---> UID

                             根据名称解析库进行解析:/etc/passwd                       

                             root:x:0:0:root:/root:/bin/bash

           组:

                组类别1:

                   管理员组

                   普通用户组

                         系统组

                         登陆组     

                   组标识:GroupID ;GID

                          普通用户组:1-65535

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

                                  登陆用户组:500-60000(centos6),1000-60000(centos7)

                          名称解析:/etc/group                      

                                  root:x:0:

                  组类别2:

                          用户主(基本)组:

                          用户的附加组:

                  组类别3:

                          私有组:组名与用户名相同,且只包含一个用户

                          公共组:组内包含多个用户

           认证信息:

                  通过比对事先存储的,与登陆时提供的信息是否一致

                  password:

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

                            root:$6$NTfQ1/FiZ$YaJxvT4kw1tc7BfT25lbxl2Tm8w3Sf5Joz.gha.BPJ6qpZXLVTRKPYvJ5GAPj35EZ4pIHPOaAfmsM8.2qRkzt1:18278:0:99999:7:::

                              组的密码库文件:/etc/gshadow                                                      

                   root:::

                 密码的使用策略:

                             1.使用随机密码

                             2.最短长度不要低于8位

                             3.大小写字母数字特殊字符组成

                             4.定期更换

                 加密算法:

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

                       非对称加密:加密和解密使用一对儿密钥

               密钥对儿:

                                      公钥:

                                      私钥:

                        单项加密:只能加密,不能解密;提取数据特征。

                                 定长输出:

                                 雪崩效应:一点微小改变会引起结果的巨大差异

[root@myEcs ~]# echo "how are you"|md5sum
5ea0b7cb299e8c26b2d9c87039f5e7ad  -
[root@myEcs ~]# echo "how are you?"|md5sum
ce55c98ac24d4c7764877fa58ab441ef  -
[root@myEcs ~]# 

                             算法:md5  sha  sha256  sha384  sha512

                                 在计算知识加salt,添加的随机数。

      /etc/passwd:用户信息库

                       hxj_test:x:1000:1000::/home/hxj_test:/bin/bash

                       name:password:UID:GID:GECOS:directory:shell

                       name:用户名

                       passwd:可以是加密的密码,也可以是占位符x:

                       UID:uid

                       GID:用户所属的主组的id号

                       GECOS:注释信息

                       directory:用户的家目录,主目录

                       shell:用户的默认shell,登陆时默认shell。

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

                       hxj_test:$6$tmzktr3P$4QZUl7wDsD6nCaZ6fIWObzokWbAdd4PmOttxsevWozhW/Ue9A2B3KBv1eTjAbmoKE2H74Xb.nRJ68IrW20dVb.:18365:0:99999:7:::

                       用户名:加密的密码:最近一次修改密码的时间:密码的最短使用期限:密码的最长使用期限:警告阶段:过期期限:保留字段

 

       /etc/group:组的信息文件

                    group_name:password:GID:user_list

                         user_list:该组的用户成员;以此组为辅加组的用户的用户列表。

linux用户和组管理:    

          安全上下文:

                   进程:进程应当以发起者的身份运行

                            进程对文件的访问权限,取决于发起此进程的用户的权限。

                  系统用户:为了能够让后台进程或服务类进程以非管理员身份运行,通常需要为此创建多个普通用户,这类用户从来不用登陆系统。

          相关命令:useradd ,userdel,usermod,passwd,groupadd,groupdel,gpasswd,chage,chsh,id,su

           groupadd:创建一个新组

                 语法:groupadd [选项] group_name

                 -g GID:指定GID,默认是上一个组的GID+1

[root@myEcs ~]# groupadd -g 2000 hxj_group1
[root@myEcs ~]# tail -1 /etc/group
hxj_group1:x:2000:
[root@myEcs ~]# 

 

                 -r      :创建系统组。

[root@myEcs ~]# groupadd -r group_sys

        groupmod:修改组

                -g:修改GID

[root@myEcs ~]# groupmod -g 1002 hxj_group1
[root@myEcs ~]# tail -1 /etc/group
hxj_group1:x:1002:
[root@myEcs ~]# 

                -n:修改组名

[root@myEcs ~]# groupmod -n hxj_group01 hxj_group1
[root@myEcs ~]# tail -1 /etc/group
hxj_group01:x:1002:
[root@myEcs ~]# 

 

    groupadel:删除组    

[root@myEcs ~]# groupdel hxj_group01
[root@myEcs ~]# tail -2 /etc/group
hxj_group:x:1001:
group_sys:x:988:
[root@myEcs ~]# 

 

           useradd:创建用户

                  语法:useradd [选项] username

                   -u,--uid UID:指定UID

[root@myEcs ~]# useradd -u 1001 hxj_mysql
[root@myEcs ~]# tail -1 /etc/passwd
hxj_mysql:x:1001:1002::/home/hxj_mysql:/bin/bash

 

                  -g,--gid GROUP:指定基本组id,此组必须事先存在

root@myEcs ~]# useradd -g cloud hxj_user1
useradd:“cloud”组不存在
[root@myEcs ~]# 

 

                -c:指明注释信息。

[root@myEcs ~]# useradd -c "hxj is cool" hxj_user1
[root@myEcs ~]# tail -1 /etc/passwd
hxj_user1:x:1002:1003:hxj is cool:/home/hxj_user1:/bin/bash
[root@myEcs ~]# 

 

                -G,--groups:指明用户所属的附加组,多个组之间用逗号分隔。

[root@myEcs ~]# useradd -G hxj_test,hxj_group,group_sys,hxj_mysql,hxj_user1 hxj_user2
[root@myEcs ~]# tail -6 /etc/group
hxj_test:x:1000:hxj_user2
hxj_group:x:1001:hxj_user2
group_sys:x:988:hxj_user2
hxj_mysql:x:1002:hxj_user2
hxj_user1:x:1003:hxj_user2
hxj_user2:x:1004:
[root@myEcs ~]# tail -7 /etc/group

 

               -d:指定用户的家目录。通过复制/etc/skel此目录重命名实现的。指定的家目录路径如果事先存在,则不会为用户复制环境配置文件。

[root@myEcs ~]# useradd -d /tmp/hxj_hon hxj_user3
[root@myEcs ~]# ls /tmp/
a.txt  hxj_hon  issue.txt
[root@myEcs ~]# 

 

[root@myEcs tmp]# mkdir hxj_home1
[root@myEcs tmp]# useradd -d /tmp/hxj_home1/ hxj_user4
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@myEcs tmp]# 

 

               -s:指明用户的默认shell,可用的所有shell列表存储在/etc/shells文件中。

[root@myEcs tmp]# cat /etc/shells 
/bin/sh
/bin/bash
/bin/nologin
/usr/bin/sh /usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh [root@myEcs tmp]#

 

[root@myEcs tmp]# useradd -s /bin/csh hxj_user5
[root@myEcs tmp]# tail -1 /etc/passwd
hxj_user5:x:1006:1007::/home/hxj_user5:/bin/csh
[root@myEcs tmp]# 

 

               -r:创建系统用户。

               -M:不为用户创建主目录

               -f:密码过期后账户被彻底禁用之前的天数。

               -D:显示创建用户一些默认信息

[root@myEcs tmp]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@myEcs tmp]# 

              创建用户时默认信息配置文件:/etc/login.defs

              使用useradd -D 修改的文件路径在:/etc/default/useradd

      usermod:修改用户属性

             语法:usermod [选项] 登陆

              -u,--uid UID:修改用户的id为此处指定的新UID。

              -g,--gid GROUP:修改用户所属的基本组。

              -G,--groups GROUP...:修改用户所属的附加组,原来的附加组会被覆盖。  

          -a,--append:与-G一同使用,用于为用户添加新的附加组

              -c:修改注释信息

              -d:修改用户的家目录,用户原有的文件不会转移至新的家目录

              -m: 只能与-d选项一同使用,用于将原来的家目录移动为新的加目录。

              -l:修改用户名

              -s:修改用户的默认shell

              -L:锁定账户密码;即在用户原来的密码字符之前添加一个“!”。

              -U:解锁用户的密码 ;解锁就是将“!” 去掉。

       userdel USERNAME:删除用户,默认不删除用户家目录

              -r:删除用户并且删除用户的家目录。

             

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

             passwd:后面什么都没有,修改用户自己密码

             passwd USERNAME:修改指定用户的密码,但仅仅root有此权限。

                       -l ;-u :锁定和解锁用户

                       -d;-d:清除用户的密码

[root@myEcs ~]# passwd -d hxj_user1
清除用户的密码 hxj_user1。
passwd: 操作成功
[root@myEcs ~]# 

 

                      -e DATE:过期期限,日期    

                      -i DATES:非活动期限,时间范围

                      -n DAYS:密码的最短使用期限

                      -x DAYS:密码的最长使用期限

                      -w DAYS:警告期限

                      --stdin:

[root@myEcs ~]# echo "hxj123456789" | passwd --stdin hxj_user1
更改用户 hxj_user1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@myEcs ~]# [root@myEcs ~]# passwd -d hxj_user1

 

          gpasswd命令:

                   组密码文件:/etc/gshadow

                    passwd [选项] group 

                            - a USERNAME:向组中添加用户

                            -d USERNAME:从组中移除用户

          newgrp [-] group:临时切换指定的组为基本组

          charg:修改密码的过期信息

                 chage [选项] 登录名

                     -d

                     -E

                     -W

                     -m

                     -M    

          id命令:显示用户的真实有效id

                id [OPTION]... [USER]

[root@myEcs ~]# id hxj_user1
uid=1002(hxj_user1) gid=1003(hxj_user1) 组=1003(hxj_user1)
[root@myEcs ~]# 

 

               -u:仅仅显示有效的uid

[root@myEcs ~]# id -u hxj_user1
1002
[root@myEcs ~]# 

 

               -g:仅仅显示基本组id

[root@myEcs ~]# id -g hxj_user1
1003
[root@myEcs ~]# 

 

              -G:仅仅显示用户所属的所有组的id

[root@myEcs ~]# id -G hxj_user1
1003
[root@myEcs ~]# 

 

             -n:显示名称而非id。可以和上面的的选项一起用。

        su命令:切换用户

             登陆式切换:会通过读取目标用户的配置文件来重新初始化

                   su - USERNAME

 

             非登陆式切换:不会读取目标用户的配置文件进行初始化

                  su USERNAME

注意:管理员可无密码切换至其他用户。

[root@myEcs ~]# su - hxj_user1
上一次登录:二 4月 14 21:06:51 CST 2020pts/0 上
[hxj_user1@myEcs ~]$ pwd
/home/hxj_user1
[hxj_user1@myEcs ~]$ exit
logout
[root@myEcs ~]# su hxj_user1
[hxj_user1@myEcs root]$ pwd
/root
[hxj_user1@myEcs root]$ 

 

                  -c  "COMMAND":仅仅以指定用户的身份运行此处指定用户的命令,不用登陆到指定的用户,来运行命令。

 [root@myEcs ~]# su - hxj_user1 -c "df -h"
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  5.0G   33G  14% /
devtmpfs        909M     0  909M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M  668K  919M   1% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs           184M     0  184M   0% /run/user/0
[root@myEcs ~]# whoami
root
[root@myEcs ~]# 

 

权限管理:

          进程安全上下文:

                rwxrwxrwx:

                      做三位:定义user(owner)的权限

                      中三位:定义group的权限

                      右三位:定义other的权限

                进程对文件的访问权限应用模型:

                      进程的属主与文件的属主是否相同,如果相同,则应用属主的权限;否则则检查进程的属主是否属于文件的属组,如果是,则应用属组权限,否则就只能应用other的权限

         权限:

               r:读

              w:写

              x:执行

              文件:

                    r:可获取文件的数据。

                   w:可修改文件的数据。

         x:可将此文件运行为进程             

              目录:

                   r:可使用ls命令获取其下的所有文件信息,不能获取详细信息,不能使用ls -l

                   w:可修改此目录下的文件列表。即创建或删除文件

                   x:可cd至此目录中,且可使用ls -l来获取文件的详细属性信息。

[hxj_user1@myEcs tmp]$ ll
total 20
-rw-r--r-- 1 root      root        45 Apr 12 16:10 a.txt
drwxr-xr-x 2 root      root      4096 Apr 13 22:51 hxj_home1
drwx------ 2 hxj_user3 hxj_user3 4096 Apr 13 22:48 hxj_hon
-rw-r--r-- 1 root      root        23 Apr 12 16:24 issue.txt
d--x------ 2 hxj_user1 hxj_user1 4096 Apr 15 20:12 test1
[hxj_user1@myEcs tmp]$ ls test1/                                   //无法使用ls命令查看目录内容
ls: cannot open directory test1/: Permission denied 
[hxj_user1@myEcs tmp]$ cd test1/                                   //可以进入目录
[hxj_user1@myEcs test1]$ 

 

              权限组合机制:

                      ---      000   0

                      --x    001    1

                     -w-   010   2

                     -wx   011    3

                     r--    100   4

                     r-x    101    5

                     rw-   110    6

                     rwx       111     7

           权限组合命令:

                    三类用户:

                          u:属主

                          g:属组

                          o:其他

                          a:所有

                    chmod命令:

                         chmod [OPTION]... MODE[,MODE]... FILE...

                                MODE表示法:

                                         权限表示法:u=   g=   o=   a=

root@myEcs tmp]# chmod a=rwx,g=rw,o=r a.txt 
[root@myEcs tmp]# ll
总用量 4
-rwxrw-r-- 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 
[root@myEcs tmp]# chmod a=rwx a.txt 
[root@myEcs tmp]# ll
总用量 4
-rwxrwxrwx 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 

                                          权限表示法:u+    g+   o+    a+   u-   g-   o-  a- 

[root@myEcs tmp]# ll
总用量 4
-rwxrwxrwx 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# chmod u-r,g-r,o-r a.txt 
[root@myEcs tmp]# ll
总用量 4
--wx-wx-wx 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 

 

[root@myEcs tmp]# chmod a-rwx a.txt 
[root@myEcs tmp]# ll
总用量 4
---------- 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 

                         chmod [OPTION]... OCTAL-MODE FILE...

                                   chmod  777  FILE

                         chmod [OPTION]... --reference=RFILE FILE...

[root@myEcs tmp]# ll
总用量 4
---------- 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# chmod --reference /etc/fstab a.txt    // 引用其他文件或目录的权限修改当前文件或者目录的权限
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# ll /etc/fstab 
-rw-r--r-- 1 root root 313 7月  11 2019 /etc/fstab
[root@myEcs tmp]# 

 

                       chmod选项:

                                -R:递归修改

 从属关系管理命令:chown,chgrp

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

                            修改属主属组:

[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# chown hxj_mysql: a.txt                        //修改属主
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 hxj_mysql hxj_mysql 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 hxj_mysql hxj_mysql 45 4月  12 16:10 a.txt
[root@myEcs tmp]# chown :hxj_user5  a.txt                       //修改属组 
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 hxj_mysql hxj_user5 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 hxj_mysql hxj_user5 45 4月  12 16:10 a.txt
[root@myEcs tmp]# chown hxj_user1:hxj_user2 a.txt               //同时修改属主属组
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 hxj_user1 hxj_user2 45 4月  12 16:10 a.txt
[root@myEcs tmp]#                                        

                      chown [OPTION]... --reference=RFILE FILE...

[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 hxj_user1 hxj_user2 45 4月  12 16:10 a.txt
[root@myEcs tmp]# chown --reference /etc/passwd a.txt           //引用其他文件或者目录的属主和属组修改当前文件或者目录
[root@myEcs tmp]# ll
总用量 4
-rw-r--r-- 1 root root 45 4月  12 16:10 a.txt
[root@myEcs tmp]# 

 

                     chown选项:

                            -R:递归修改

umask:文件权限的反向掩码,遮罩码。

          文件: 666-umask

          目录: 777-umask

           注意:文件为什么是666 - umask呢?因为文件默认不应该有写权限,如果减得到的结果中有执行权限,则需要将其加1;目录不受影响。

                    如:umask : 023

                          创建文件的默认权限为:666 - 023 = 644(other减得到3,将其加1为4)

                          创建目录的默认权限为:777 - 023 = 754

练习:使创建的目录默认权限为750

[root@myEcs tmp]# umask 027
[root@myEcs tmp]# mkdir file
[root@myEcs tmp]# ll
总用量 8
-rw-r--r-- 1 root root   45 4月  12 16:10 a.txt        //仅仅对当前shell有效
drwxr-x--- 2 root root 4096 4月  16 21:21 file
[root@myEcs tmp]# 

 

                      install命令:

                            install [OPTION]... [-T] SOURCE DEST

[root@myEcs tmp]# install /etc/passwd /tmp/                  //将passwd文件复制到tmp目录下,install命令复制的文件默认加上755的权限。
[root@myEcs tmp]# ll
总用量 12
-rwxr-xr-x 1 root root 2099 4月  16 21:29 passwd
[root@myEcs tmp]# 

 

                   单源复制:

                            install [OPTION]... SOURCE... DIRECTORY

                   多源复制 :

                           install [OPTION]... -t DIRECTORY SOURCE...

                   创建目录:

                            install [OPTION]... -d DIRECTORY...

                   选项:

                         -m:设定目标文件权限,默认权限为755

                         -o:设定目标文件属主

                         -g:设定目标文件属组

                         -d:创建目录

                 mktemp命令:创建临时文件

[root@myEcs tmp]# mktemp /tmp/a.XXXXXXX
/tmp/a.Rw2OvDi
[root@myEcs tmp]# mktemp /tmp/a.XXXXXXX
/tmp/a.UXfFe8G
[root@myEcs tmp]# mktemp /tmp/a.XXXXXXX
/tmp/a.lmDR7h9

 

             

 

 

 

                  

 

 

 

posted @ 2020-04-12 16:56  附庸风雅  阅读(196)  评论(0)    收藏  举报