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,有事请骚扰~
原文地址:https://www.cnblogs.com/Xsing/p/9446649.html