用户和用户组管理

时间:2021-10-18 00:14:07
服务器管理规则:越是安全等级要求高的服务器,越要严格限制用户安全等级。

    用户信息文件:/etc/passwd
    
    
    
  1.     aax501:501::/home/aa:/bin/bash
    第一列:用户名
    第二列:密码位(不是真正的密码)
    第三列:UID     用户ID
                         0               超级用户
                    1~499           伪用户(系统用户)(还有一个例外:65534)
                        >500       普通用户
    第四列:GID     初始组ID
    第五列:用户说明
    第六列:家目录
    第七列:用户登录后的权限
    
     影子文件: /etc/shadow(真正的密码在shadow里面,512加密)
    为什么要把用户和密码分开?
   
   
   
  1. [root@centos ~]# ll /etc/passwd
  2. -rw-r--r--. 1 root root 1535 9  15 04:02 /etc/passwd
  3. [root@centos ~]# ll /etc/shadow
  4. ----------. 1 root root 883 9  15 04:02 /etc/shadow
如代码所示,shadow除了管理员其他人都不能修改,更加安全
vi /etc/shadow/
   
   
   
  1. aa:$6$H5hSuu3k$yW6BfM5z35doKs82MeOl452jrcPNw7Z5R0S1Ql0/dQfIwQYqtLT1fQJ2DtwhjkX0FXroTQx2sFzFYh4NoyjEq0:16327:0:99999:7:::
共9列
第一列:用户名
第二列:真正的密码
99999:密码有效时间(270多年)
7:给七天的宽限时间,到期后仍不修改,就封停了

    组信息文件:     /etc/group
    
    
    
  1. aa:x:500:
怎么查看用户初始组?
vi      /etc/passwd
vi      /etc/group

1、添加用户
    useradd     用户名(最习惯的用法,什么选项都不加)
    useradd     选项     用户名
    选项:
              -g     组名 指定初始组                    不要手工指定
              -G     组名 指定附加组                    把用户加入组,使用附加组
              -c     说明 添加说明
              -d     目录   手工指定家目录,目录不需要事先建立
              -s     /bin/bash     手工指定用户登录之后的权限

    useradd     -g     aa     bb                添加bb用户,同时指定初始组为aa(通常不要这样做)
    useradd     -G     user1     aa        添加用户aa,指定附加组为user1
    useradd     -c     "test user"     -d     /user     user     用户没有权限,需手动添加

     初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组
     附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组
2、设定密码
         passwd     用户名
         passwd               改变当前用户密码
         passwd     root     改变root密码
3、删除用户
         userdel     -r     用户名
                           -r     连带家目录一起删除(习惯用法,因为userdel会遗留相关信息,user的目录仍然存在)
4、添加组
         groupadd     组名

5、删除组
         groupdel     组名     注意:组中没有初始用户

6、把已经存在的用户加入组
         gpasswd     -a     用户名     组名                用户加入组
         gpasswd     -d     用户名     组名                把用户从组中删除
    另一种简单的方法是:直接打开文件,在文件中添加用户

    1、id     用户名     显示用户的UID,初始组和附加组
         [ root@localhost home ]# id aa
         uid=500(aa) gid=500(aa) group=500(aa),0(root)
    2、su     -     用户名          切换用户身份(-是独立选项,两边都有空格)
                    -     连带环境变量一起切换
         su     root     3行     
         env                 11行
         USER=aa     18行      说明切错了
   
   
   
  1. [aa@centos ~]$ id aa
  2. uid=500(aa) gid=500(aa) 组=500(aa)
  3. [aa@centos ~]$ su root
  4. 密码:
  5. [root@centos aa]# ls
  6. [root@centos aa]# cd
  7. [root@centos ~]# ls
  8. anaconda-ks.cfg  httpd-2.2.9  httpd-2.2.9.tar.gz  install.log  install.log.syslog  japan  xdl
  9. [root@centos ~]# whoami
  10. root
  11. [root@centos ~]# env
  12. HOSTNAME=centos
  13. TERM=xterm
  14. SHELL=/bin/bash
  15. HISTSIZE=1000
  16. QTDIR=/usr/lib/qt-3.3
  17. QTINC=/usr/lib/qt-3.3/include
  18. USER=aa
  19. LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
  20. PATH=/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aa/bin
  21. MAIL=/var/spool/mail/aa
  22. PWD=/root
  23. LANG=zh_CN.UTF-8
  24. HISTCONTROL=ignoredups
  25. HOME=/root
  26. SHLVL=2
  27. LOGNAME=aa
  28. CVS_RSH=ssh
  29. QTLIB=/usr/lib/qt-3.3/lib
  30. LESSOPEN=|/usr/bin/lesspipe.sh %s
  31. G_BROKEN_FILENAMES=1
  32. _=/bin/env
  33. OLDPWD=/home/aa

    
    
    
  1. [root@centos ~]# exit
  2. exit
  3. [aa@centos ~]$ whoami
  4. aa
  5. [aa@centos ~]$ su - root
  6. 密码:
  7. [root@centos ~]# env
  8. HOSTNAME=centos
  9. SHELL=/bin/bash
  10. TERM=xterm
  11. HISTSIZE=1000
  12. QTDIR=/usr/lib/qt-3.3
  13. QTINC=/usr/lib/qt-3.3/include
  14. USER=root
  15. LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
  16. MAIL=/var/spool/mail/root
  17. PATH=/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  18. PWD=/root
  19. LANG=zh_CN.UTF-8
  20. HISTCONTROL=ignoredups
  21. SHLVL=1
  22. HOME=/root
  23. LOGNAME=root
  24. QTLIB=/usr/lib/qt-3.3/lib
  25. CVS_RSH=ssh
  26. LESSOPEN=|/usr/bin/lesspipe.sh %s
  27. G_BROKEN_FILENAMES=1
  28. _=/bin/env

三、ACL权限     用来解决用户身份不足的问题的。(用户操作文件的权限)(用户名尽量不要使用纯数字,系统容易把它当成id)
三个身份:
所有者
所属组
其他人
用户和用户组管理 
服务器上:先分身份,再给权限
初始组和附加组指的是:用户和用户组之间的关系。(这个组是我的初始组或附加组)
所有者和所属组指的是:用户和文件的之间的关系。(任何一个文件只能拥有一个所属组)

查看分区ACL权限是否开启
[ root@localhost~ ]#  df     -h       查看分区使用状况
[ root@localhost~ ]# dumpe2fs     -h     /dev/sda5
#dumpe2fs命令是查询指定分区详细文件系统信息的命令选项:
    -h     仅显示超级块中信息,而不显示磁盘块组的详细信息

查看文档中的:Default  mount  options : user_xattr  acl     发现系统默认是开启的

临时开启分区ACL权限
[ root@localhost ~] # mount  -o  remount, acl /
#重新挂载根分区,并挂载加入ACL权限

永久开启分区ACL权限
[root@localhost ~]# vi /etc/fstab
UUID=6dbef646-7790-40eb-8f60-0f91c56c72c4 /                       ext4    defaults,acl        1 1
#添加acl     (,acl    注意:因为这是启动文件,所以务必小心)

[ root@localhost ~ ]# mount -o remount /
#重新挂载文件系统或重启系统,使修改生效

1、    getfacl    文件名        查询文件的ACL权限

2、    setgacl    选项    文件名        设定ACL权限
                             -m     设定ACL权限
                             -b      删除指定的ACL权限
                             -x      删除所有的ACL权限
                             -k      删除默认ACL权限
                             -R      递归设定ACL权限
                             d      设定默认ACL权限

          setfacl     -m     u:用户名:权限     文件名
         setfacl     -m     g:组名:权限          文件名

         setfacl     -m     u:bzr:rwx     /www     给www目录bzr设置读写执行的acl权限

         setfacl     -m    u:bzr:rwx    -R    /www    赋予递归acl权限,只能赋予目录
         -R     递归
3、    setfacl     -m    d:u:bzr:rwx    -R    /www    acl默认权限。     注意:默认权限只能赋予目录

     注意:如果给目录赋予ACL权限,两条命令都要输入

        -R 递归(当前目录和目录下的所有子文件都生效)

        -m  u:用户名:-R 权限 只对已经存在的文件生效

        -m  d:u:用户名:-R 权限 只对未来要新建的文件生效


11行     1770 ————>13行     权限位 T(t、T——只能删自己,不能删别人)
16行     增加版主任用户
17行     赋予ACL权限
21行     不支持绝对路径的方式,但这个报错不影响我们的查询结果,可忽略
27行     班主任的权限
   
   
   
  1. [root@centos ~]# mkdir /www
  2. [root@centos ~]# useradd sc
  3. [root@centos ~]# groupadd 89g
  4. [root@centos ~]# gpasswd -a user1 89g
  5. Adding user user1 to group 89g
  6. [root@centos ~]# gpasswd -a user2 89g
  7. Adding user user2 to group 89g
  8. [root@centos ~]# chown sc:89g /www/
  9. [root@centos ~]# ll -d /www/
  10. drwxr-xr-x. 2 sc 89g 4096 9  15 05:34 /www/
  11. [root@centos ~]# chmod 1770 /www/
  12. [root@centos ~]# ll -d /www/
  13. drwxrwx--T. 2 sc 89g 4096 9  15 05:34 /www/
  14. [root@centos ~]# ll -d /tmp
  15. drwxrwxrwt. 4 root root 4096 9  15 03:44 /tmp
  16. [root@centos ~]# useradd bzr
  17. [root@centos ~]# setfacl -m u:bzr:rx  /www/
  18. [root@centos ~]# ll -d /www/
  19. drwxrwx--T+ 2 sc 89g 4096 9  15 05:34 /www/
  20. [root@centos ~]# getfacl /www/
  21. getfacl: Removing leading '/' from absolute path names
  22. # file: www/
  23. # owner: sc
  24. # group: 89g
  25. # flags: --t
  26. user::rwx
  27. user:bzr:r-x
  28. group::rwx
  29. mask::rwx
  30. other::---
12、13行:权限溢出(不可避免,特殊的可以手动修改)(通过修改mask来修改权限)
9行        递归     -R
20行     默认权限      d
42行     cde      已经存在的文件,cde之前的有权限   
48行     cde     未来的文件,cde之后的文件有权限
   
   
   
  1. [root@centos ~]# cd /www
  2. [root@centos www]# ls
  3. [root@centos www]# touch abc
  4. [root@centos www]# touch bcd
  5. [root@centos www]# ll
  6. 总用量 0
  7. -rw-r--r--. 1 root root 0 9  15 06:02 abc
  8. -rw-r--r--. 1 root root 0 9  15 06:02 bcd
  9. [root@centos www]# setfacl -m u:bzr:rx -R /www/
  10. [root@centos www]# ll
  11. 总用量 8
  12. -rw-r-xr--+ 1 root root 0 9  15 06:02 abc(执行权限:对目录来讲是可进入,对文件来讲是可执行)
  13. -rw-r-xr--+ 1 root root 0 9  15 06:02 bcd(这两行出现了权限溢出)
  14. [root@centos www]# touch cde
  15. [root@centos www]# ll
  16. 总用量 8
  17. -rw-r-xr--+ 1 root root 0 9  15 06:02 abc
  18. -rw-r-xr--+ 1 root root 0 9  15 06:02 bcd
  19. -rw-r--r--. 1 root root 0 9  15 06:03 cde
  20. [root@centos www]# setfacl -m d:u:bzr:rx -R /www/
  21. [root@centos www]# getfacl /www/
  22. getfacl: Removing leading '/' from absolute path names
  23. # file: www/
  24. # owner: sc
  25. # group: 89g
  26. # flags: --t
  27. user::rwx
  28. user:bzr:r-x
  29. group::rwx
  30. mask::rwx
  31. other::---
  32. default:user::rwx
  33. default:user:bzr:r-x
  34. default:group::rwx
  35. default:mask::rwx
  36. default:other::---
  37. [root@centos www]# ll
  38. 总用量 8
  39. -rw-r-xr--+ 1 root root 0 9  15 06:02 abc
  40. -rw-r-xr--+ 1 root root 0 9  15 06:02 bcd
  41. -rw-r--r--. 1 root root 0 9  15 06:03 cde
  42. [root@centos www]# touch def
  43. [root@centos www]# ll
  44. 总用量 12
  45. -rw-r-xr--+ 1 root root 0 9  15 06:02 abc
  46. -rw-r-xr--+ 1 root root 0 9  15 06:02 bcd
  47. -rw-r--r--. 1 root root 0 9  15 06:03 cde
  48. -rw-rw----+ 1 root root 0 9  15 06:05 def
设置组权限:
12行:组bangzhuren的权限:r-x
   
   
   
  1. [root@centos ~]# groupadd bangzhuren
  2. [root@centos ~]# setfacl -m g:bangzhuren:rx /www
  3. [root@centos ~]# getfacl /www
  4. getfacl: Removing leading '/' from absolute path names
  5. # file: www
  6. # owner: sc
  7. # group: 89g
  8. # flags: --t
  9. user::rwx
  10. user:bzr:r-x
  11. group::rwx
  12. group:bangzhuren:r-x
  13. mask::rwx
  14. other::---
  15. default:user::rwx
  16. default:user:bzr:r-x
  17. default:group::rwx
  18. default:mask::rwx
  19. default:other::---

最大有效权限mask
mask是用来指定最大有效权限的。
如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限

修改最大有效权限
[ root@localhost /]# setfacl -m m:rx 文件名
#设定mask权限位r-x。使用“m:权限”格式

   
   
   
  1. [root@centos ~]# setfacl -m m:rx /www
  2. [root@centos ~]# getfacl /www
  3. getfacl: Removing leading '/' from absolute path names(报错不影响我们查看的信息
  4. # file: www
  5. # owner: sc
  6. # group: 89g
  7. # flags: --t
  8. user::rwx
  9. user:bzr:r-x
  10. group::rwx #effective:r-x(会有提示,虽然设定的权限是7,但其实最大的权限只有5)
  11. group:bangzhuren:r-x
  12. mask::r-x
  13. other::---
  14. default:user::rwx
  15. default:user:bzr:r-x
  16. default:group::rwx
  17. default:mask::rwx
  18. default:other::---

删除ACL权限
1、[root@localhost /]# setfacl -x u:用户名     文件名
    #删除指定用户的ACL权限
     [root@localhost /]# setfacl -x g:组名     文件名
    #删除指定用户组的ACL权限
2、 [root@localhost /]# setfacl -b     文件名
    #删除文件的所有ACL权限

setUID
chatter权限
sudo权限