管理Linux系统中的用户

所有修改权限的动作,可能需要重新登录用户,才能够生效

用户信息及组信息的存放文件:
    /etc/passwd存放用户信息
    /etc/shadow存放用户密码
    /etc/group存放组信息        
        #一般看组信息都是grep这个文件,而不是用id查用户
    /etc/gshadow存放组密码
    
组:方便对用户的管理,方便对权限的管理
    组的唯一标识:GID 
    Linux的用户至少属于一个组
    组分为两种:基本组 从属组
        当我们新创建一个用户时,不加任何选项时,系统就会自动生成一个同名的组,这个组也叫基本组
        除了这个系统的组,用户加入的别的组都叫从属组
    
用户:
    UID是用户的唯一标识,管理员root的UID是0
    用户信息存放在/etc/passwd 文件中
    显示的信息如下:
        root : x : 0 : 0 : root : /root : /bin/bash
        用户名:密码:UID:基本组的GID:用户描述信息:用户的家目录:用户的登陆解释器
    用户密码存放在/etc/shadow 文件
    显示信息如下:
        root : !!或密码串 : 距离上次的密码修改时间 : 0 : 99999 : 7 :  :  :
        用户名:!!表示没密码不让登录:距离上次修改密码的时间:过多少天必须修改密码0是不用改:密码有效期:在密码失效前需要提前多少天改密码
    id 用户名:该命令可以查看用户的详细信息,会显示uid gid 组信息
        
使用useradd命令添加用户:
    添加用户并指定用户的UID:useradd -u 数字 用户名
    添加用户并指定用户家目录:useradd -d 路径 用户名
    添加用户并指定登陆解释器:useradd -s /sbin/nologin 用户名(这个是创建不能登陆的用户)
    添加用户并指定从属组:useradd -G 从属组 用户名
    


使用passwd命令修改密码:root权限下可以任意修改普通用户的密码
    命令格式:
        passwd 普通用户名        
        #root才能用这命令,普通用户不需要输入用户名,直接输入passwd,普通用户改密码有复杂度要求,普通用户没密码不让登录
    非交互式的设置密码:
        echo 密码 | passwd --stdin 用户名
        #如果不加 --stdin会显示交互信息

切换用户的方法:
    su - 用户名        #root su到任何用户都不需要密码

修改用户的属性:
    命令格式:usermod [选项] 参数
    修改用户的UID:usermod -u 
    修改用户的家目录:usermod -d        
        #这个命令并不会创建新的家目录
        #而且如果以root用户去cp普通用户的家目录的隐藏文件,这里面是环境变量,相关权限也会变成root的
        #这个命令只是去修改了/etc/passwd的第六个字段
        #所以当你给这个用户指定了一个新的家目录时,你可能就会出问题登录不了了
    修改用户的解释器:usermod -s
    修改用户的附加组:usermod -G
        例:usermod -u 1600 -d /opt/a -s /sbin/nologin -G 组名称 所需要改的用户名
    以数字的形式改变权限:
        usermod -u 777 root
        
使用userdel命令删除用户:
    删除用户:userdel 用户名
    删除用户及家目录:userdel -r 用户名

修改用户组信息及创建组:
    组信息在/etc/group 文件里的显示内容如下
        root : x :0 :组成员
        组名:组的密码占位符:组的ID:组成员列表
    创建新的组:groupadd 组名
    把用户加进组里:gpasswd -a 用户名 组名
    把用户从组里删除:gpasswd -d 用户名 组名

修改组属性:
    修改组ID:groupmod -g 新ID 组名
    修改组名称:groupmod -n 新组名 原组名
    删除组:groupdel 组名

目录或文件的权限及归属:但是权限约束不了root用户
    读取权限:r
        一般是要和x一起给的
    写入权限:w
        w权限只针对它的子目录和子文件生效,当前目录是不生效的,要想改这个目录,必须对上一级目录有w权限
        而且必须要和r一起使用
    可执行权限:x
        比如bash 文件 或者 cd到这个目录,都属于执行动作
        
    权限适用对象:u(所有者) g(所属组) o(其他用户)
        例:ls -ld /opt 显示内容如下
            d rwxr-x--x. 10 root root 4096 12月 3 20:06 /opt
            #第一列:
                d代表该文档是目录 -代表普通文件 l代表快捷方式
            #第二列:
                rwx代表所有者的权限有         读、写、执行
                r-x代表所属组成员的权限有     读、执行
                --x代表其他用户有执行权限,但是一般执行权限必须要与r权限一起使用
            #第四列:
                该目录的所有者是哪个用户
            #第五列:
                该目录的所属组是哪个组
            
利用chmod命令修改文档的权限:
    命令格式:
        chmod [选项] 参数 目标文件或目录
        chmod -R ugo=rwx /opt 
            #就是给/opt目录下的所有子目录和文件修改成这个权限
    为文档更改权限:chmod u/g/o +/-/= 目标文件或目录
        例:
            chmod u+r /opt 
            chmod g=w /opt
    如果想更改多个权限可以用逗号隔开
        例:
            chmod u+r,g=x /opt
    如果多个角色更改相同的权限
        例:
            chmod ugo=rwx /opt        
    权限的数值表示:
        r=4 w=2 x=1    
    一个用户能否cd进一个目录:
        在于该用户对该目录是否有x权限
    如果一个用户拥有一个目录的所有权限:
        则可以对这个目录下的所有子目录做任意修改

利用chown命令修改文档的所属关系:
    修改目录的所有者: 
        chown -R lisi /opt 
            #-R是递归修改,也就是将/opt和它的子目录所有者都改成lisi
    修改目录的所属组: 
        chown :lisi /opt 
    两者一起修改:
        chown lisi:lisi /opt

关于权限的匹配机制:遵循匹配即停止机制
    所有者>所属组>其他人
    当系统判定到一个用户是目录的所有者,就只会看所有者所拥有的权限,而不去看这个用户还有没有其它权限,以此类推

其它的附加权限:
    特殊权限必须是先设置后生效,对于已经存在的子文档是不生效的。
    关于t权限:
        chmod o+t /tmp 
        ls -ld /tmp
        d rwx---rwt. 15 root root 4096 6月 5 11:12 /tmp
            #当root想让普通用户在/tmp目录中可以自由的删除或更改自己的目录或文档,而又无法更改其他用户的文件和文档,就可以赋予这个/tmp目录o+t
            #t权限适用于o角色,t权限会在执行权限的位置上覆盖x权限
    关于s权限:
        针对目录,s的权限适用于g角色
            chmod g+s /opt/test
            ls -ld /opt/test
            drwxr-sr-x 3 root test 4096 Jul  8 09:56 /opt/test/
                #功能就是以后在/opt/test目录下建的任何文件或者目录,所属组都会是test
                #如果所属组的用户有x权限,则在x位置上显示小s,如果没有x权限,则显示大S
                #s权限只适用于u和g角色
        针对可执行文件,s的权限适用于u角色
            chmod u+s /opt/a.sh   
                #传递所有者身份,以后不管什么用户运行该程序,都会以该文件所有者权限执行,这句话是两个意思
                #比如/opt/a.sh原本除了所属主以外都没有执行权限,加了s,普通用户也可以执行这个程序
                #又或者说我们用root给/usr/bin/mkdir这个命令设置u+s,那么以后普通用户用mkdir建目录所属主都会变成root

acl访问控制列表:
    acl策略实现更加精细的控制,可以针对单个用户,或者组设置权限
    当我们设置了acl权限以后,d rwx---rwt. 这个.就会变成+
    给指定用户增加acl权限:
        setfacl -m u:用户名:权限 /opt
    给指定组增加acl权限:
        setfacl -m g:组名:权限 /opt/1.txt
    删除用户或组对该文档的acl权限:
        setfacl -x u:用户名:权限 /opt
        setfacl -x g:组名:权限 /opt
    删除文档的所有acl策略:
        setfacl -b /opt
    查看文档的所有权限包括acl权限:
        getfacl /opt
        #有的时候因为acl权限设置过多,会导致ls看到的权限和实际显示会有出入,建议看权限用这个命令看
    利用acl给用户设置黑名单:
        setfacl -m u:lisi:--- /opt


 

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值