Linux中的账号管理

今天学习了Linux中的账号管理部分,现对其进行总结,本博客将其分为如下几个部分:

1.  用户账号和用户组的介绍

2.  账号管理部分

3.  用户组管理

一、用户账号和用户组介绍

平常我们启动Linux后,每个用户都需要有账号和密码才能登入系统,但是账号和密码保存在什么地方呢?中间又经历一个什么样的过程呢?每次我们用ls -l命令时候显示一个文件的信息,其格式如下:

-rwxrwxrwx 1 chopard chopard 0 Nov 13 22:16 test

我们都知道第一列表示文件的权限, 第二列表示链接数, 第三列和第四列分别表示用户名和用户组,我们这里只介绍第三列和第四列, 第三列表示文件所属的用户名, 第四列表示文件所属的用户组。在我们创建的时候根据我们登陆的用户信息创建对应的文件。

    我们上边所说的用户名和用户组的所有信息都在/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow这四个文件中。我们用head命令分别查看一下四个文件信息如下(蓝色部分代表命令,下边代表输出):

# head -n 4 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
chopard:x:501:502:chopard:/home/chopard:/bin/bash

...(余下部分省略)


#head -n 4 /etc/shadow
root:$1$xxxxxxxxxxx:14126:0:99999:7:::
daemon:*:14126:0:99999:7:::

...(余下部分省略)


#head -n 4 /etc/group

root:x:0:

bin:x:1:root,bin,daemon

chopard:x:502:

...(余下部分省略)


#head -n 4 /etc/gshadow

root:::root

bin:::root,bin,daemon

sys:::root,bin,adm

...(余下部分省略)

    这几个文件中的信息代表什么意思呢?我们首先简单说一下登陆过程,我们带着问题去思考。

    1.先查找/etc/passwd 里边是不是有你的账号,如果有把对应的UID(用户名ID)和GID(用户组ID)读出来,并把登陆的shell也读出来,如果不存在则跳出,显示登陆失败。

    2.然后会根据第一步找到的UID,在/etc/shadow中查找你的密码。

    3.如果找到的密码和你输入的密码一致的话,就进入系统。

    在/etc/passwd中,以刚才head出来的信息中的chopard:x:501:502:chopard:/home/chopard:/bin/bash为例,其中这几输出中有7个字段,字段之间用冒号隔开 chopard代表你的用户名, x代表你的密码,早期的密码放在这个字段,为了安全期间,已经转移到了/etc/shadow文件中,501是你的UID,502是你的GID,第二个chopard是默认的说明信息,可以任意设置, /home/chopard是你的home目录,/bin/bash是你的shell信息。

    在/etc/shadow中,以刚才head出来的信息中的root:$1$xxxxxxxxxxx:14126:0:99999:7:::为例,其中有九个字段,字段之间用冒号隔开,有的为空,其中root代表你的账号名称,后边的一长串代表你的密码, 再往后代表最近更改密码日期,就是距离1970年1月1日的时间,0代表不可更改密码的天数, 为0的话表示随时可以更改,99999表示密码需要重新设置的时间,也是距离1970年1月1日的时间,99999折算一下为273年,表示没有强制更改密码的限制,7表示密码过期前提前几天警告,后边三个字段分别表示密码过期以后账号还能用几天,账号失效时间和保留字段。

    在/etc/group中,以刚才head出来的信息中的bin:x:1:root,bin,daemon为例,字段之间用冒号隔开。bin表示用户组名,x表示密码,早期使用现在转移到了/etc/gshadow文件中,1代表用户的GID,root,bin,daemon代表此用户组支持的账号名。

    在/etc/gshadow中,以bin:::root,bin,daemon为例,字段之间用冒号隔开。bin表示用户组名,中间两个空字段分别表示密码列和用户管理员账号列,其中密码列开头如果为感叹号,表示无用户组管理员。 最后的root,bin,daemon代表属于该组的账号。

    介绍完了这几个文件,你现在对登陆信息有一个模糊的了解了吧,其实重点是/etc/passwd文件,其他的数据都是根据这个文件的字段去寻找的。例如root的UID和GID都是0,寻找/etc/group可以知道GID为0的组名为root,查找密码的过程中根据/etc/passwd中的用户名去/etc/shadow中查找用MD5加密过的密码。

    文件和文件夹的信息中的账号和用户组信息也是根据UID和GID映射回来的。一个用户名可能属于好几个用户组,我们创建文件的时候是根据用户的有效用户组创建的。有效用户组可以用group命令查询,其中查询到的第一个就是你的有效用户组。我们可以用newgrp命令更改有效用户组,其实更改有效用户组的原理就是登陆一个新的shell其中有效的GID改成新的有效用户组了。/etc/passwd中第四列那个GID是初始用户组,当用户登陆时候就就会拥有这个用户组的权限。

二、账号管理部分

   添加新的用户用 useradd 新用户名 直接添加例如:useradd chopard 就添加了chopard用户。在此期间系统帮我们设定了很多默认值,包括创建/home/chopard目录,在/etc/passwd,/etc/group,/etc/shadow,和/etc/gshadow中写入对应的信息。

    其中的默认值都能从/etc/default/useradd, /etc/login.defs, /etc/skel/*中得到结果。创建新用户时候Linux系统会从/etc/default/useradd中查找默认用户组,默认主文件夹所在目录,密码失效日,账号失效日,默认shell,主文件夹模板,是否帮用户创建邮箱。从/etc/login.defs中查找邮箱所在目录,密码最小长度等限制,UIG和GID最小数值。用户主文件设置的权限,加密等。其中/etc/skel文件夹下的目录结构就是新创建的用户的home文件夹的目录结构。例如:/etc/skel下边有download文件夹,新创建的chopard用户的/home/chopard文件夹下就会有download文件夹。

    假如我们想修改创建以后的默认值,我们可以用usermod和usergroup修改默认的用户名和用户组信息,具体可以man usermod和man usergroup查看用法。假如我们要修改账号名,可以用

# usermod -l wukong chopard

这样就把用户名chopard修改为wukong,修改用户名以后我们还想修改用户组名的话我们可以用一下命令

# groupmod -n wukong chopard

这样就把用户组chopard修改为wukong, 修改以后我们可能还想修改/home文件夹下的主文件夹,我们可以用一下命令:

# cp -a /etc/skel /home/wukong

# chown -R wukong,wukong /home/wukong

# chmod 700 /home/wukong

# usermod -d /home/wukong wukong

这样就把主文件也修改成了/home/wukong.当然还有usermod和groupmod还有option选项,自己可以查看对应的文档。

    我们可以用userdel删除用户账号,格式为

# userdel wukong

删除时候一定要谨慎,最好先用#find / -user wukong 查出系统内属于wukong的文件.然后再进行删除操作。

    我们可以用passwd username 来修改用户的密码其格式如下:

# passwd wukong

    如果我们要修改root用户的密码,直接passwd就好,不需要后边接用户名。passwd命令还有很多选项,例如使密码失效,锁定等,具体用man passwd查看。还有chage显示密码信息,finger查看用户信息, chfn修改finger显示的信息,chsh修改shell,id命令显示别人或自己的UID/GID等,此处就不一一举例了。

三、用户组管理

好的,接前天晚上写的今天接着介绍用户组的管理。

    上边我们接扫了有效用户组和初始用户组,还有用ls显示文件时候三四位字段代表的什么意思,创建时候文件的用户组又是什么。这一小节我们说一下用户组的新增和删除。

    添加用户组用groupadd 组名。格式如下:

    # groupadd group1

    # grep group1 /etc/group /etc/gshadow

    /etc/group:group1:x:702

    /etc/gshadow:group1:!::

然后我们就创建了group1组,然后我们可以用grep命令来查看了一下输出,其中GID为702,下边一行的感叹号代表这个组没有组管理员,后边的密码行为空代表没有设置组密码。我们平时如果把一个其他组的成员加入另一个组的话我们一般会在root权限下执行以下命令:

    # useradd -G group1 wukong

将wukong用户加入到group1, 但是现在我们想给这个组设置一个管理员,我们需要以下操作:

    # gpasswd -A wukong group1

将wukong设置为组管理员。我们还想给这个组加一个密码,我们只需要直接运行gpasswd不带参数的命令行就可以了。我们用

    # grep group1 /etc/group /etc/gshadow

    /etc/group:group1:x:702

    /etc/gshadow:group1:xxxxxxxx:wukong:

可以看到现在group1中有了密码和名字叫wukong的管理员。我们在wukong用户登陆的条件下可以使用一下命令添加组用户(命令前边#代表root权限下运行,$代表一般用户权限下运行)

    $ gpasswd -a bajie group1

    $ gpasswd -a shasheng group1

这样我们就把用户bajie和shasheng加入到了group1中。同样我们也可以用groupmod修改用户组的各个信息。

    下一篇是写login-shell和nologin-shell的区别,以及用户身份切换。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值