在Linux 系统中,所有的用户和组像一个国家。如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成。在linux 中如果你对安全需求比较苛刻,完全可以限制用户的各种行为,不同用户的权限是不同的。    
    在linux中系统中,它并不认识帐号名称。它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中。我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该帐号的user ID和group ID同时该帐号的根目录和shell也读了出来。然后在去核对密码表,在/etc/shadow中找出我们刚刚输入的帐号和userID,核对我们输入密码是否正确。一切正确我们可以登录到当前用户shell。那么,我们首先了解一下用户帐号文件。
    用户管理一般需要知道      /etc/passwd  /etc/shadow  /etc/group 
    add by warden2010 20100104
    1./etc/passwd我们使用more查看一下这个文件
    我们首先看第一行root这一行,一共有七项,每一项使用:分开,他们代表的意思如下:
    帐号名称:帐号名称由于对应用户ID,这个是系统默认用户root超级管理员,在同一个系统帐号名称是唯一的,长度根据不同的linux系统而定,一般是8位。
    密码:由于系统中还有一个/etc/shadow文件用于存放加密后的口令,所以在这里这一项是“x”来表示,如果用户没有设置口令,则该项为空。
    用户ID:这个是系统内部用于来识别不同的用户的,不同的用户识别码不同,其中用户ID有以下几种:
    0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。
    1-500系统预留的ID,500以上是普通用户使用。
    组ID:其实这个和用户ID差不多,用来规范群组,他与/etc/group有关。

描述信息:这个字段几乎没有什么作用,只是用来解释这个帐号的意义。

用户根目录:就是用户登录系统的起始目录,用户登录系统后将首先进入该目录。root用户默认的是/root,普通用户的是/home/用户名。

用户登录shell:就是用户登录系统时使用的shell,关于shell我们会在以后专门的研究一下。

2./etc/shadow

在早期的unix操作系统中,用户的帐号信息和口令信息都保存在passwd文件中,尽管系统已经对口令进行了加密,并且以密文的方式保存在passwd文件中,但是由于passwd文件对于系统中的所有用户是可读的,口令比较容易破解,存在较大的安全隐患。现在使用“shadow”文件保存密文的用户口令,使用passwd文件保存用户帐号其它信息。“shadow”文件只有管理员用户才可以读取其中的内容。由于这个文件可能被破解,所以一定不要将该文件内容泄露给他人,保证系统安全。

同样,我们还是分析第一行,一共有九项,分别说明一下:

帐户名称:和passwd对应,和passwd的意思相同。

密码:这才是真正的密码,并且已经加密过了,只能看到一些特殊符号。需要注意的是这些密码很难破解,但是不等于不能。还有密码栏的第一个字符为“*”表示这个用户不用来登录,如果那个用户不想让他登录了,可以在他前面加个星。

上次改动密码的日期:这段记录了改动密码的最后日期,为什么是13798呢?这是因为linux计算日期的方法是以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为13798了。

密码不可被改动的天数:由于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全。

密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。

帐号失效期:如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。

帐号取消日期:这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。

保留:最后一个字段是保留的,看以后有没有新功能加入。

3. /etc/group查看一下这个文件

我们还是分析第一行,一共有四项,依次为:

群组名称:就是群组的名称了。

群组密码:通常不需设定,因为我们很少使用群组登录。不过这个密码也被记录在/etc/gshadow中了。

群组ID:也就是组ID了。

支持帐号的名称:这个群组的所有帐号。如果你想让用户qiuri也属于root这个群组,就在第一行最后加上“,qiuri”注意添加的时候没有空格。

4. adduser添加用户

如果没有特殊的要求,通常我们使用adduser 用户名称直接创建用户帐号。例如我们创建qiuri帐户:

由于一般新创建的帐号都会在刚才我们说的三个文件的最后一行添加一行内容,我们验证一下:

我们使用这条命令是通过/etc/login.defs和/etc/default/useradd这两个默认帐号设定文件来实现创建用户的。

这个文件中我们有必要了解一下,SKEL这个选项,用户的根目录内容是从/etc/skel这个目录下复制过去的。在手动添加用户的时候有用。查看一下这个目录下的内容:

这条命令还有好多的参数举例几个,供大家参考一下:

adduser [-u uid][-g group][-d home][-s shell]

-u:直接给出userID -g:直接给出GID

-d:直接将根目录建立在已存在目录 -s:定义shell

5.passwd设置用户密码
    默认的情况下,在添加完用户后并没有设置用户的密码,因此建立的用户帐号即使存在也不能登陆系统。需要使用passwd命令对用户帐号设置密码才可以用于登陆系统。这条命令分为管理员给用户修改密码和用户自己登录系统自己修改密码。

管理员root给用户修改密码,例如:创建用户qiuri,然后设置密码

管理员给用户设置密码以命令passwd [用户名]来设置密码,在输入密码的过程中为了避免输入错误,将连续输入两次。如果两次输入的密码相同,表示输入的密码正确,同时将密码以加密的方式保存到了shadow文件中。设置完以后我们可以使用用户qiuri登录。qiuri用户自己修改一下密码。
    . 增加一个新用户 
    以下是操作一些具体的语法,可以通过man useradd 查看帮助命令
    在Linux系统中,只有root用户才能够创建一个新用户,如下的命令将新建一个登录名user1的用户。 
    # useradd user1 
    但是,这个用户还不能够登录,因为还没给它设置初始密码,而没有密码的用户是不能够登录系统的。在默认情况下,将会在/home目录下新建一个与用户名相同的用户主目录。如果需要另外指定用户主目录的话,那么可以使用如下命令: 
    # useradd -d /home/xf user1 
    同时,该用户登录时将获得一个Shell程序:/bin/bash,而假如你不想让这个用户登录,也就可以指定该用户的Shell程序为:/bin/false,这样该用户即使登录,也不能够执行Linux下的命令: 
    # useradd -s /bin/false user1 
    在Linux中,新增一个用户的同时会创建一个新组,这个组与该用户同名,而这个用户就是该组的成员。如果你想让新的用户归属于一个已经存在的组,则可以使用如下命令: 
    # useradd -g user user1 
    这样该用户就属于user组的一员了。而如果只是想让其再属于一个组,那么应该使用: 
    # useradd -G user user1 
    完成了这一操作后,你还应该使用passwd命令为其设置一个初始密码。 
    
    2. 删除一个用户 
    删除用户,只需使用一个简单的命令“userdel 用户名”即可。不过最好将它留在系统上的文件也删除掉,你可以使用“userdel -r 用户名”来实现这一目的。 
    
    3. 修改用户属性 
    在前面我们看到了在新建一个用户的时候如何指定它的用户主目录,如何指定它的Shell,如何设置它所属的组…等等。在Linux中提供了一个命令来实现: 
    usermod -g组名 -G 组名 -d 用户主目录 -s 用户Shell 
    还有一种直接的方法,那就是修改/etc/passwd文件,在这个文件中每个用户占用一行,它的内容为: 
    用户名:密码:用户ID:组ID:用户全名:用户主目录:用户Shell 
    不过值得注意的是,密码这一项通常是用一个*号代替的,你是看不到的。 
    
    4. 增加一个组 
    还记得Linux的文件可以为同组的人、非同组的人设置不同的访问权限吗?我们可以根据自己的需要创建用户组:
    groupadd 组名 
    
    5. 删除一个组 
    同样的,我们有时会需要删除一个组,它的命令就是groupdel 组名。 
    
    6. 修改组成员 
    如果我们需要将一个用户加入一个组,只需编辑/etc/group文件,将用户名写到组名的后面。例如将newuser用户加入到softdevelop组,只需找到softdevelop这一行: 
    softdevelop:x:506:user1,user2 
    然后在后面加上newuser,形成: 
    softdevelop:x:506:user1,user2,newuser 
    另外,在Red Hat Linux中还提供一个图形化的用户管理工具:userconf,通过它可以更直接地进行用户管理。
    文章出处:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/2008620/127098.html)

此文是把两个文档进行合并得到的.

1.作用

useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。

  2.格式

  useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name

3.主要参数

  -c:加上备注文字,备注文字保存在passwd的备注栏中。

  -d:指定用户登入时的主目录,替换系统默认值/home/<用户名>

  -D:变更预设值。

  -e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。

  -f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.

  -g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。

  -G:指定用户所属的附加群组。

  -m:自动建立用户的登入目录。

  -M:不要自动建立用户的登入目录。

  -n:取消建立以用户名称为名的群组。

  -r:建立系统账号。

  -s:指定用户登入后所使用的shell。默认值为/bin/bash。

  -u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。

4.说明

  useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。

5.应用实例

建立一个新用户账户testuser1,并设置UID为544,主目录为/usr/testuser1,属于users组:

 代码如下 复制代码

  #useradd -u 544 -d /usr/testuser1  -g users -m  testuser1

加-m 如果主目录不存在则自动创建

6.例

使用管理员账号登陆系统,建立用户tmp_3452 密码3sdt5:Eawhg

添加用户命令:

 代码如下 复制代码

[root@ptr228 ~]# adduser tmp_3452

修改密码命令:

[root@ptr228 ~]# passwd tmp_3452

在系统出现提示输入密码是输入密码:3sdt5:Eawhg 系统提示输入确认密码后再输入一次。OK添加成功。

7.useradd批量添加用户

使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。

步骤如下:

(1)建立用户名列表文件username.txt (同上)

(2)创建用户密码对应文件serc.txt,格式为username:password (注意文件的格式)

 代码如下 复制代码
stu1:tt1
stu2:tt2
stu3:tt3
stu4:tt4
stu5:tt5
stu6:tt6

 

(3)批量添加的脚本文件aa.sh

 代码如下 复制代码

##添加用户,并且在/home/ 下为用户生成用户目录。cat < username.txt | xargs -n 1 useradd -m##批处理模式下更新密码
chpasswd < serc.txt##将上述的密码转换到密码文件和组文件
pwconv##结束验证信息
echo "OK 新建完成"(4)执行该脚本文件,查看执行过程

root@liu:/home/liu/Desktop/Dos# sh aa.sh

新建完成         useradd命令,在执行没有出错的情况下,不会输出任何的信息,不会与用户交互。但是用户必须要记住那些设置项目,否则添加的用户可能出现一些预想不到的结果。

二,userdel删除用户

删除刚创建的账号 tmp_3452

删除用户命令:

 代码如下 复制代码
[root@ptr228 ~]# userdel tmp_3452

或者连同用户目录一并删除:

 代码如下 复制代码

[root@ptr228 ~]# userdel -f tmp_3452

注意:这里如果用户还在登陆的话,会提示,用户正在登陆无法删除。此时可能需要先强制用户退出。

3. 强制退出已经登陆用户

查看当前登陆用户的命令:

 代码如下 复制代码

[root@ptr228 ~]# w

会输入如下结果:

 代码如下 复制代码

12:10:27 up 21:13,  1 user,  load average: 0.00, 0.01, 0.08
USER          TTY      FROM                 LOGIN@   IDLE   JCPU   PCPU WHAT
root            pts/0    ***.**.***.**    11:33    0.00s  0.08s  0.00s   w
tmp_3254  ps1       ***.**.***.**     11:33    0.00s  0.08s  0.00s   ls

这里知道了登陆用户的tty是ps1执行强制退出命令pkill:

命令原型: pkill -kill -t [TTY]

 代码如下 复制代码

[root@ptr228 ~]# pkill -kill -t ps1

执行之后再执行名w 可以看到用户已经退出。

重复执行第二步的删除用户命令,删除成功。

linux系统useradd及周边命令和概念详解相关推荐

  1. linux管道命令详解,Linux系统中的管道命令的用法详解

    Linux系统中管道命令是linux系统的一个强大之处.下面由学习啦小编为大家整理了Linux系统中的管道命令的用法详解的相关知识,希望对大家有帮助! Linux系统中的管道命令的用法详解 管道命令操 ...

  2. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+

    Linux系统下SVN服务器的搭建过程详解 UpJ}s7+   1 环境:  服务器放在redhatAS4.0上,客户端在windows 2000. k_lb"5z   Z]jSq@%1H* ...

  3. Linux系统下ifconfig和route配置网络详解

    Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...

  4. Linux系统多网卡绑定各配置模式详解

    Linux系统多网卡绑定各配置模式详解 1. 配置多网卡bond 1.1. mode=0 模式 1.2. mode=1 模式 1.2.1. 关闭NetworkManager服务 1.2.2. 网卡配置 ...

  5. linux 移动剪切命令,Linux中vi的复制命令的用法详解

    在Linux系统中,使用VI编辑的时候经常用到的操作就是复制粘贴,那么下面由学习啦小编为大家整理了linux中vi的复制命令的用法详解的相关知识,希望对大家有帮助! Linux中vi的复制命令的用法详 ...

  6. linux权限644是什么,linux系统644、755、777权限详解linux操作系统 电脑资料

    linux系统644.755.777权限详解linux操作系统 电脑资料 在linux系统中644.755.777三种权限是非常重要的一些权限了,下面我来详细的介绍644.755.777三种权限的使用 ...

  7. linux 系统监控、诊断工具之 top 详解

    接触 linux 的人对于 top 命令可能不会陌生(不同系统名字可能不一样,如 IBM 的 aix 中叫 topas ),它的作用主要用来监控系统实时负载率.进程的资源占用率及其它各项系统状态属性是 ...

  8. linux中vi指令干嘛的,Linux系统中的vi/vim指令【详解】

    vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称.几乎可以说任何一台Unix机器都会提供这套软件. 只要简单的在Shell下执行vi就可以进入 vi 的 ...

  9. Linux系统上安装JDK(有图详解)

    Linux系统上安装JDK 安装中要用到的工具: 1.通过Xshell连接linux服务(需要先安装Xshell) Xshell网盘提取链接(提取码:1sqk) 2.如果是在自己电脑上使用VMware ...

最新文章

  1. Day 1 AR认知课 || AIRX三次方
  2. [Python]urllib库的简单应用-实现北航宿舍自动上网
  3. Grpc+Grpc Gateway实践一 介绍与环境安装
  4. Ubuntu 14.04 DNS 配置
  5. 10 分钟上手 Vue 组件 Vue-Draggable
  6. 【计算机组成原理】指令执行过程
  7. torch.full 【输出大小为size内容为填充张量为fill_value的张量】
  8. js match函数注意
  9. abstract interface java_Java -- abstract 和 interface 的理解
  10. Java ques: Unknown initial character set index ‘255‘ received from server. Initial client character
  11. 开发板与思岚RPLIDAR A系列雷达通过串口获取数据
  12. 京东E卡查询绑定助手电脑版APP
  13. ideal上初写mapreduce程序出现的报错信息解决
  14. Poisson 分布
  15. 学习Gluster创建不同卷,设置NFS挂载
  16. 华为手机怎么连接电脑传输
  17. c语言填数字游戏求解过程解读,c语言编程--数字游戏.doc
  18. 机器人中的DIY,成就满满!
  19. 用python3+ PyQt5写一个NFC模块的串口小工具的一星期
  20. sja1000 中断_SJA1000程序

热门文章

  1. scratch飞机大战
  2. ue4怎么用虚幻商城场景_ue4商城资源DownTown市中心场景
  3. 汽车电子学习笔记---RZ、NRZ、NRZ1、曼彻斯特编码
  4. HIPAA解决方案(二、流程及术语)
  5. vb2005 rnd 函数的应用
  6. vue图片img加载失败显示自定义默认图片(缺省图)
  7. vue3+ts引入百度地图
  8. Pytorch搭建网络训练葡萄酒分类数据集(三分类)
  9. C/C++游戏开发(easyx框架)回合制——魔塔
  10. 广式月饼的做法(100g月饼制作教程)