「Linux」Linux之用户管理

        今天学习了Linux用户管理,在这里记录一下。

一、用户及用户组存在的意义

1)用户存在的意义

系统的资源是有限的,如何合理分配系统资源?

1.身份 account

2.授权 author

3.认证 auth

以上3个 'a' 称为3A机制,3A机制组成系统中最底层的安全架构。

2)用户组存在的意义

用户组是一个逻辑容器,对用户进行归类和统一授权。

简单说用户组就像是我们在学校的时候的班级或者社团组织一样,你在的班级被赋予了什么权利,你在社团中的部门有什么权力,那你就有什么权利。这样做方便了权力的统一下放。

二、用户及用户组在系统中存在的方式

因为计算机对数字敏感,而我们人对名称比较敏感,利用这个特性我们在计算机内部可以用数字和字符串相关联的形式存储用户。

我们知道,在Linux中一切都是文件,所以用户也不例外,我们所说的用户和用户组其实也就是文件中的一条字符串。

用户是在/etc/passwd文件中的一行字符
用户组是在/etc/group文件中的一行字符
vim /etc/passwd   用此命令可以查看passwd文件内容,进而得知用户信息
vim /etc/group    用此命令可以查看group文件内容,进而得知用户组信息

但是在文件中查看用户或用户组的id信息终究有些麻烦,Linux给我们提供了这样的命令方便我们查看用户的相关信息:

whoami  查看当前用户名称
id  [参数][用户名]  查看用户的id信息,用户名缺省则查看当前用户

    -u查看用户的用户id
    -g查看用户的主组id
    -G查看用户所有组id
    -n显示名称,不能单独使用,需要和上面的命令连用来显示信息


用户id范围:
    0:超级用户id
    1-999:Linux系统自用id
    1000-65535:用户级id
            
            以上id信息都被记录在/etc/login.defs

三、用户涉及到的系统配置文件

/etc/passwd        用户身份信息文件

passwd中的字符串意义
用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell

/etc/group        组身份信息文件

组名称:组密码:组id:组的附加成员

/etc/skel/.*        用户环境配置文件模板

/etc/shadow        用户认证信息文件

/home/username        用户家目录

/var/spool/mail/username        用户邮箱文件

四、用户相关操作

1)用户和用户组建立及删除

我们可以用watch命令来监控用户的创建和删除

watch -n 1 "tail -n 4 /etc/passwd /etc/group;echo =======;ls -l /home"

用户建立命令useradd:

useradd username    ##用户建立
        -u id username        ##指定用户uid
        -g id username        ##指定主组id
        -G id username        ##指定附加组id
        -d dir username       ##指定用户的家目录
        -M     username       ##创建用户时不自动创建家目录
        -c word username      ##创建用户时指定用户说明
        -s shell username     ##指定shell
userdel username    ##用户删除
        -r username           ##删除用户同时删除家目录和系统配置文件
groupadd groupname  ##组建立
         -g id groupname      ##指定组id
groupdel groupname  ##组删除

2)用户和用户组的信息管理

有时候我们在服务器的使用过程中需要更改用户的相关属性,虽然我们知道在/etc/passwd文件中用户是以字符串的形式存储,并且知道字符串的意义:

用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell

那么理所当然我们就可以用root用户修改这些字段达到更改用户信息的目的,但是在实际应用中我们并不会这么做,而是使用一些相关命令:

usermod [选项] [参数] [username]

[选项]
        -l    #修改用户名称
        -u    #修改用户的uid
        -g    #修改用户主组id
        -G    #修改用户附加组身份
        -aG   #添加用户附加组身份
        -c    #更改用户说明文字
        -d    #更改用户家目录指向
        -md   #同时更改家目录指向和家目录名称
        -s    #更改默认shell
        -L    #冻结账号
        -U    #解锁账号

我们的密码信息存储在shadow文件中,shadow内容:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

我们可以用passwd命令来修改密码相关属性信息

passwd [选项] [参数] [username]
如果选项和参数缺省则修改'username'的密码

[选项]
        -S    #查看密码状态
        -l    #冻结账号认证
        -u    #解锁账号认证
        -d    #删除用户密码
        -e    #修改默认使用时间为0
        -n    #设置最短使用时间
        -x    #设置密码过期时间
        -w    #设置过期警告时间
        -l    #设置非活跃天数
change -d 0 [username]    #必须修改密码才能登陆
change -E "xxxx-xx-xx" [username]    #设置冻结日期

五、用户权力下放

我们在实际中使用服务器,经常使用到权力下放,这可以让我们以更高的权限执行一些命令,例如我们可以用权力下放使普通用户以root身份运行一些命令,这样我们不用登录root账号,在保证了系统安全的同时也达到了我们的目的。

授权方法:

我们可以用visudo命令来修改/etc/sudoers文件(当然我们也可以用vi或者vim修改,但是vi和vim不提供语法检测,当我们错误修改文件之后不方便错误查找)

为了方便,我们约定俗成的在文件的100行左右添加权力下放:

username        hostname=(newusername)        [NOPASSWD:] /command, /command1

六、文件权限查看和读取

1)权限查看

ls -l file        #查看文件权限
ls -ld dir        #查看目录权限

文件权限的信息分为三大类ugo

u代表user也就是文件的所有者
g代表group也就是文件的拥有组
o代表other也就是其他人,和文件的归属没有关系的人
每个大类型中拥有权力的标志位,也就是rwx
r代表read也就是读权限
w代表write也就是写权限
x代表执行权限

我们可以用chmod命令来修改文件相关权限信息

chmod [ugo][+-=][rwx] [filename/dirname] #通过表达式来赋予权限

chmod [xxx] [filename/dirname]    #通过数字来赋予权限

通过对布尔量的理解我们可以对rwx三位进行二进制转8进制的转换
分别
r-4
w-2
x-1

S权限

可以用字符串表达式的方式设置S权限,S权限的作用:

当对文件的u位设置s权限的时候,表示文件执行者在执行时会获得文件的所有者身份,它只能用在二进制文件上
当对文件的g位设置s权限的时候,表示文件的执行者会获得文件所属组身份,如果用在目录上那么在目录下创建的文件的所属组将会变成此目录
Sticky Bit的作用只对目录生效,效果是在当前目录下只有文件的所有者可以删除自己的文件

猜你喜欢

转载自blog.csdn.net/beijimao_/article/details/121645336