Linux-用户,组管理

2017-2-13来源:经验技巧人气:541

权限管理
            文件权限:9位,每3位一组,每一组rwx(read,write,执行)
            每组代表对象:
                1.文件的属主(ower)
                2.文件的属组(group)
                3.文件的组外
            文件:
                r:可读,可以使用类似cat等命令查看文件内容
                w:可写,可以编辑或者删除此文件
                x:可执行,exacutable,可以命令提示符下当作命令提交给内核运行
            目录:
                r:可以对此目录执行ls以列出内部的所有的文件
                w:可以在此目录创建文件
                x:可以使用cd切换此目录,也可以使用ls -l查看内容文件的详细信息

            rwx:
                r--:只读
                r-x:读和执行
                ---:无权限


            0 000  ---:无权限
            1 001  --x:执行
            2 010  -w-:编辑
            3 011  -wx:写和执行
            4 100  r--:只读
            5 101  r-x:读和执行
            6 110  rw-:读写
            7 111  rwx:读写执行

                用户:UID,/etc/passwd
            组:GID,/etc/group

            影子口令:[对应的passwd就是密码放在这个文件都当中]
                用户:/etc/shadow
                组:/etc/gshadow

            用户类别:
                管理员:0
                普通用户:1-65535
                    系统用户:1-499
                    一般用户:500-60000

            用户组类别第一种分法:
                管理员组:
                普通组:
                    系统组
                    一般组

            用户组类别第二种分法:
                私有组:创建用户时,如果没有为其指定所属的组,系统会为其创建一个与用户同名的组
                基本组:用户的默认组
                附加组:额外组,默认组以外的其他组

                for example:
                (每个指令执行即为进程,其发起者决定其用户的权限)
                进程:tom tom(tom属主 tom属组)
                对象:rwxrw-r-- jerry tom a.txt
                最终系统会执行:rw-的权限
                解释:
                    执行对象a.txt首先会比对其属主jerry是不是等于发起者tom,是就为rwx
                    不是则比较的是tom发起者是否在对象的属组上,是就为rw-,不是则r--

            查看的/etc/paswd文件内容:
            指令:
                whatis pwsswd:可以查看其在man当中的第几个章节,得出是第5个
                man 5 passwd:可以查看其章节对应的结构
            由指令看出结构内容:
                    account:登录名
                passWord:密码
                UID:用户的id
                GID:基本组的id
                comment:注释
                Home DIR:家目录
                SHELL:用户的默认shell
                查看/etc/shadow文件内容:
                指令:man 5 shadow
            查看结构内容:
                account:登录名
                encrypted passwod:加密的密码
                    在linux上显示是这样:
                    $1$xsdsd$sdsdji=YUD_sr34+34
                    说明:$进行隔开,分为3部分
                      1.标示符,用户的标示符
                      2.salt进行给对应md5算法进行混淆干扰加强安全保密性
                      3.就是salt+明文进行md5的产物   
                加密方法:
                    对称加密:加解密使用同一个密码
                    非对称加密:每个密码都成对出现,一个私钥,一个公钥,可以是私钥加密,也可以公钥加密
                    单向加密:散列加密:提取数据特征码,常用于数据校验的完整性
                        特点:
                            1.雪崩效应:有一个基础不一样的条件,整个结果都不一样
                            2.定长的输出:
                                MD5:Message Digest,128定长
                                SHA1:Secure Hash Algorithm,160位定长输出
                        for example:
                        1.    md5sum 文件名称
                            nano对应的文件名称,进行修改某个字符串
                            md5sum 修改过的文件
                            一对比是不一样的
                        2.passwd 对应用户名:进行修改用户名
                          tail -l  /etc/passwd:查看对应密码文件的后面字符

                用户指令:
                    useradd:添加新的用户
                        -u UID username:为添加用户添加uid
                            for example:   
                                useradd -u 1000 username:添加一个用户名为username,其uid为1000
                        -g GID username:为添加用户添加gid[组id]
                            for example:
                                useradd -g 10 username:添加一个用户名为username,其组id为10(组id需要是存在的)   
                        -G GID,...(附加组)
                        -c  "COMMENT"
                        -d /path/to/someditectory:为新的用户添加一个家目录.默认同名的/home/username
                        -s "对应shell的指令":为新填的用户添加其执行的shell执行指令的路径
                            /etc/shells:指定了当前系统可用的安全shell
                        -M:为新的用户不添加家目录---->/etc/login/defs

                    userdel:删除用户,如果单单执行的这个指令,则删除用户,但其家目录是不会执行
                        -r username:删除用户的同时,也把其家目录删掉
                    id:查看用户的账号的属性
                        -u:
                        -g:
                        -G:
                        -n:显示用户的名称,可以与-u或者-G联合一起使用
                        for example:
                        (id username:查看username的id等基本信息   id -u username:查看username的uid     id -G: 查看组id)   
                    finger:查看用户的账号信息
                    修改用户账号属性:
                        usermod修改用户的属性
                            -u UID:修改用户的用户的id
                            -g GID:修改用户的组id
                            -a -G GID:为用户额外添加新的附加组
                            -G GID:覆盖此前的附加组
                            -c:添加对应的注释信息
                            -d:修改新的家目录,原来的目录无效
                            -d -m:创建新的家目录,并把原来的家目录进行移到新的目录
                            -l:修改对应的登录用户名
                            -L:锁定账号
                            -U:解锁账号
                            -r:添加系统用户 1-499 没有家目录,不能登录

                        chsh:修改用户的默认shell

                        chfn:修改注释信息

                    密码管理:
                        passwd [username]:修改用户的密码
                            --stdin:标准输入
                            for example:
                                在脚本方便创建账号与密码的输入
                                echo "redhat" | passwd --stdin
                           -l:锁对应的密码
                           -u:解锁
                           -d:删除用户密码[用户没有密码,则用默认的密码进行登入]

                        pwck:检查用户账号的用户的隐患,检查用户账号的完整性
                    change:改变用户的密码
                        -d:最近一次的修改时间
                        -E:过期时间
                        -I:非活动时间
                        -m:最短使用期限
                        -M:最长使用期限
                        -W:警告时间

                组管理:
                    groupadd:创建组
                        -g GID:指定gid,不指定的话则是大约500,而且自增
                        -r:添加系统组
                    groupmod:
                        -g GID:
                        -n GREPNAME:

                    groupdel:删除组
                    gpasswd:为组设定密码
                    [把对应的用户切换到附加组:newgrp mygroup[这个是其组名],切换回基本,exit]


                用户分组指令练习:
                1.创建一个用户mandriva,其ID号为2004,基本组oklus(组是3003),附加组为linux
                [组是必须是存在的,则先创建新的组]
                    groupadd -g 3003 oklus
                    groupadd linux
                    useradd -u 2004 -g oklus -G linux mandriva
                2.创建一个用户fedora,其全名为Feodora Community,默认shell为tcsh
                    useradd -c "Feodora Community" -s /bin/tcsh fedora
                3.修改mandrivade的ID号为4004,基本组Linux,附加组distro和fedora
                    groupadd fedora
                    groupadd distro
                    usermod -u 4004 -g linux  -G distro,defora mandriva
                4.给fedora加密码,并设定其密码最短使用期限为2天,最长为50天
                    passwd  -n 2 -x  50 fedora
                5.将mandriva的默认shell改为bin/bash
                    usermod -s /bin/bash mandriva
                6.添加系统用户hbase,且不允许登录系统
                    useradd -r -s /sbin/nologin hbase

权限管理:
                linux分为3种权限:
                    r:读
                    w:写
                    x:执行
                3种权限面向的对象:
                    u:属主
                    g:属组
                    o:其他用户
                指令:
                    chown:改变文件的属主[只有管理员才能改属主]
                          e:#chown username file1,file2....
                          e:chown :linux(属主不动可以直接改属组)
                          -R:修改目录及其内部文件的属主
                          --reference=/path/to/somfile  file,file1,file2... 将file1,file2的属主改成somfile的属主一样

                    chgrp:grpname file,...修改属组
                          -R:修改目录及其内部文件的属主
                          --reference=/path/to/somfile  file,file1,file2... 将file1,file2的属主改成somfile的属主一样


                    chmod:修改文件的权限:
                        chmod MODE file,file,...
                              -R
                              --reference=/path/to/somfile  file,file1,file2...
                        修改三类用户的权限
                                e:chmod 750 targetfile:修改对应的目录属主权限为rwx 属组r-x 其他组为--
                               chmod 75 targetfile:修改对应的目录属主权限为--- 属组rwx  其他组为r-x               

                    修改某类用户或某些类用户权限:
                        chmod 用户类别=MODE file,file1...
                        u,g,o,a
                        chmod u=rw targetFile  将targetFile属主rw-
                        chmod g=rx,o= targetFile 将targetFile的属组为rx,其他组为---
                    修改某类用户的某位或某些位权限:
                        chomd 用户类别+|-MODE file,..
                        chmod u-x,o-x,g-x targetFile  将3类用户都减掉x权限
                        =
                        chmod -x targetFile  将3类用户都减掉x权限

                    【ls -l /etc/shadow 查看对应用户的密码的内容值,仅有r的权限】
                练习:
                1.新建一个没有家目录的用户openstack:
                    #useradd -M  openstack
                    创建时的验证:
                        finger openstack:查看openstack的用户信息
                        id openstack:查看的openstack的对应的属主 属组 组集合
                        ls /home:是否创建了openstack的目录
                2.复杂/etc/ske1为/home/openstack:
                    #cp -r /etc/ske1 /home/openstack
                      验证:
                        ls -l /home:查看的是openstack下的属主属组权限的内容
                        ls -la /home/openstack:查看的是openstack包括其根目录下的权限内容[全部目录下]
                3.改变/home/openstack及其内部文件的属主均为openstack
                    #chown -R openstack:openstack /home/openstack
                    或者
                    #chown -R openstack.openstack /home/openstack
                       验证:
                        ls -la /home/openstack:查看对应的权限都变成了openstack
                4./home/openstack及其内部的文件,属组和及其没有任何访问权限
                    #chmod -R go= /home/openstack
                        验证:
                        ls -la  /home/openstack :即为对应的权限为openstack,需要查看的是rwx-----
                        su openstack  登录成功即成功了

                【
                    bc:计算器的指令
                    其实以上指令就是给下面三个文件添加对应的用户密码的基本信息然后添加对应的文件目录再赋值于对应权限
                    以上对文件进行操作:
                        /etc/shadow
                        /etc/passwd
                        /etc/shadow
                    为新加的openstack进行添加密码,手动的方式进行添加:
                    1.加密[加盐]:
                        whatis passwd:找到对应的openssl文件进行加salt的操作
                        openssl passwd -1 -salt '123456'
                        openssl passwd -1:MD5加密操作
                        openssl passwd -salt:加盐进行混淆保全其安全性
                        再到对应的nano进行编辑一下shadow文件:添加对应的密码
                            1.ctr+0
                            2.exit
                            3.exit即可

                    2.exit
                    3.进行对ssh  ip地址进行login的操作
                    4.输入密码即可:123456
                    【检验通过】
                 】

                 【新建一个用户创建一个文件与目录,权限的MODE值不一样,umask决定
                    umask:对应用户遮罩码
                    umask xx:设置的遮罩码
                    基本原则:文件默认不能具有执行权限,如果算得的结果执行权限是有执行的,则自动会加1操作
                    创建 一个文件:666-umask
                    创建一个文件目录:777-umask
                    当我们创建一个用户,不让它任何的访问的权限,设置其的umask为227即可

                    站在用户登录的角度来说,SHELL的类型:
                    登录式shell:
                        正式通常终端登录:
                            su -USERNAME
                            su -l UNSERNAME
                        非登录式shell:
                            su USERNAME
                            图形终端下打开命令窗口
                            自动执行的shell脚本


                    bash的配置文件:
                        全局配置:
                            /etc/PRofile,/etc/profile.d/*.d,/etc/bashrc
                        个人配置:
                            ~/.bash_profile,~/.bashrc
                        profile类的文件:
                            设定环境变量
                            运行命令或脚本
                        bashrc类的文件:
                            设定本地变量
                            定义命令别名
                        登录式shell如何 读取配置文件?
                            /etc/profile--->
                            /etc/profile.d/*.sh--->
                            ~/.bash_profile--->
                            ~/.bashrc--->
                            /etc/bashrc
                        非登录式shell如何配置文件:
                            ~/.bashrc  --->
                            /etc/basrc   --->
                            /etc/profile/d/*.sh

                        for example:
                            1.修改对应的登录进来的开头语:welcome to linux,this time is `date`
                               su openstack
                               nano .bash_profile
                                添加多一条:echo "welcom to Linux,this time `date`"
                               exit
                               ssh ip地址
                               登录进去就可以看到对应的提示语
                            2.修改对应的umask值为027
                               su openstack
                               nano .bash_profile
                                添加多一条:umask 027
                               exit
                               ssh ip地址
                               登录进去
                               #umask  ---->就可以查看对应的umask对应值了
                】   
·