• 用户和用户组管理


    服务器管理规则:越是安全等级要求高的服务器,越要严格限制用户安全等级。

        用户信息文件:/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权限





    php是世界上最好的编程语言,没有之一
  • 相关阅读:
    Clean Code(三):注释
    Clean Code(二):函数
    mysql中查询某字段所在的表方法
    对于POI的XSSFCell 类型问题
    Clean Code 笔记 (一):命名
    java 注解
    搭建Eureka服务时报Cannot execute request on any known server 错误
    Jquery获取子父类方法
    Oracle 查询id相同多个数据取一条
    Ajax的使用及后台如何传参
  • 原文地址:https://www.cnblogs.com/lookphp/p/4683061.html
Copyright © 2020-2023  润新知