• Linux菜鸟起飞之路【五】权限管理(一)


    一、与用户相关的几个文件

    1./etc/passwd

    储存用户名,格式为 用户名:密码(用密码代位符X代替):UID:GID:用户描述信息:家目录:shell

    • 用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

    • 密码(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

    • 用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

    • 组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

    • 注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

    • 家目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

    • Shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

    注意:

    a)用户自己建立的账户的UID和GID都是从500开始的,500之前为系统的保留账户。

    b)Root用户的UID是0,将UID改为0就是登陆的Root账户

    c)Root账户的标识符为#,其他账户都为$

    2./etc/shadow

    密码文件,格式为 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

    1. “登录名”是与/etc/passwd文件中的登录名相一致的用户账号

    2. “口令”字段存放的是加密后的用户口令字:
      1. 如果为空,则对应用户没有口令,登录时不需要口令;

      2. 星号代表帐号被锁定;

      3. 双叹号表示这个密码已经过期了;

      4. $6$开头的,表明是用SHA-512加密;

      5. $1$表明是用MD5加密;

      6. $2$ 是用Blowfish加密;

      7. $5$ 是用 SHA-256加密;

    3. “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。

    4. “最小时间间隔”指的是两次修改口令之间所需的最小天数。

    5. “最大时间间隔”指的是口令保持有效的最大天数。

    6. “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

    7. “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。

    8. “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

    3./etc/group

    用户组的所有信息都存放在/etc/group文件中,格式为 组名:密码:组标识号:组内用户列表

     

    a)组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

    b)密码:密码字段存放的是用户组加密后的密码,与用户文件中一样一般用密码代位符X代替。

    c)组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.

    d)组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

    4./etc/gshadow

    组密码文件,格式为 组名:口令:组管理者:组内用户列表

    a) 组名: 是用户组的名称,由字母或数字构成。  
    b) 口令:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码。
    c) 组管理者:这个字段也可为空,如果有多个用户组管理者,用,号分割。
    d) 组内用户列表:如果有多个成员,用,号分割。

    思考:创建一个系统用户需要涉及多少文件?

    已知:1./etc/passwd 2./etc/shadow 3./etc/group

    4./etc/gshadow 5./home 

    扩展:

    6./var/spool/mail

    用户邮件目录,每创建一个用户就会在该目录下以用户名新建一个邮箱。

    二、用户相关命令重认识

    1.id查看用户

    选项: -g或--group   显示用户所属群组的ID。

       -G或--groups   显示用户所属附加群组的ID。

       -n或--name    显示用户,所属群组或附加群组的名称。

       -r或--real    显示实际ID。

       -u或--user    显示用户ID。

       -help         显示帮助。

       -version      显示版本信息。

    在实际使用中一般是直接使用。

    例子:

    1 id Xs

    2.useradd添加用户

    选项: -u 指定用户的UID

        -g 指定用户的所属群组

        -G 将用户加入指定群组中,方式为覆盖

        -d 指定用户的家目录

        -c 指定用户的描述信息

        -s 指定用户所使用的shell

    例子:

    1 useradd -u 1314 -g Xs -d /home/ljq -c ABeautifulGirl -s /bin/bash MQ 

    3.userdel删除用户

    选项: -f:强制删除用户,即使用户当前已登录。    

        -r:删除用户的同时,删除与用户相关的所有文件。

    直接使用userdel只删除用户但是不删除其家目录和其他文件,使用userdel -r删除用户及其一切文件。

    例子:

    1 userdel cnblogs
    2 userdel -r MQ 

    4.usermod修改用户基本信息

     选项:-c<备注>:修改用户帐号的备注文字;

         -d<登入目录>:修改用户登入时的目录;
         -e<有效期限>:修改帐号的有效期限;
       -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
       -g<群组>:修改用户所属的群组;
       -G<群组>;修改用户所属的附加群组,方式为覆盖;

        -aG<群组>;修改用户所属的附加群组,方式为覆盖;

       -l<帐号名称>:修改用户帐号名称;    
       -L:锁定用户密码,使密码无效;   
       -s<shell>:修改用户登入后所使用的shell;   
       -u<uid>:修改用户ID;   
       -U:解除密码锁定。
    例子:
    1 useradd -s /sbin/nologin -c test ljq
    2 passwd ljq
    3 tail -1 /etc/passwd
    4 usermod -u 1314 -aG Xs -c ABeautifulGirl -s /bin/bash -l MQ ljq
    
    

    注意:

    在使用-d修改用户家目录时,直接修改是没有作用的而且会造成用户无法登录。

    如下图:

    图一可以正常登录

    图二更改用户家目录操作

    图三再次登录提示找不到家目录

    因为在/home下没有/lv目录,那么我尝试创建一个/lv目录,尝试在有/home/lv目录时能否登录

    图四为创建/home/lv操作

    图五提示信息变为找不到"/home/lv/.local"文件

    原来在家目录里还有一些看不见的隐藏配置文件,如果不将它们拷贝过去同样无法登录。

    图六为MQ账户家目录下的隐藏配置文件(之前MQ账户叫做ljq,因此家目录为/home/ljq,我们利用usermod改变账户名称时,其他文件名称不变)

    我们尝试将/home/ljq完整拷贝到/home/lv,再看看能否登陆

    图七为拷贝操作

    图八可登录

    5.groupadd添加组

    选项: -g:指定新建工作组的id

        -r:创建系统工作组,系统工作组的组ID小于500;

        -K:覆盖配置文件“/ect/login.defs”;

        -o:允许添加组ID号不唯一的工作组。

    例子:

    1 groupadd -g 521 mm

     

    6.groupmod修改组基本信息

    选项: -g<群组识别码>:设置欲使用的GID;

        -o:重复使用GID;

        -n<新群组名称>:设置欲使用的群组名称。

    例子:

    1 groupmod -g 1314 -n xq mm

    7.groupdel删除组

     例子:

    1 groupdel xq

     

     

     

    个人简介:安久殇,曾经学习影视艺术,现在是一个喜欢电影的软件专业在读小说写手,坚信科学与艺术的相通性,希望能和大家一起开心的成长。QQ:55083581,有事请骚扰~
  • 相关阅读:
    Java实现 LeetCode 211 添加与搜索单词
    跨平台Unicode与UTF8互转代码
    C++转换unicode utf-8 gb2312编码
    c++ ANSI、UNICODE、UTF8互转
    Visual C++ unicode and utf8 转换
    Unicode和UTF-8的关系
    boost uuid 学习笔记
    boost uuid
    Darwin Streaming server 的 Task 类
    VS2010下编译安装DarwinStreamingServer5.5.5
  • 原文地址:https://www.cnblogs.com/Xsing/p/9446649.html
Copyright © 2020-2023  润新知