本笔记说的Linux用户管理主要包括以下内容:

1、用户配置文件(/etc/passwd  /etc/shadow)

2、组配置文件(/etc/group  /etc/gshadow)

3、用户缺省配置文件(/etc/login.defs  /etc/default/useradd)

4、/etc/motd文件、/etc/issue文件

5、SetUID权限、SetGID权限、黏着位

6、典型案例之一:手动创建一个用户

7、典型案例之二:批量添加用户

8、典型案例之三:限制用户使用su

9、典型案例之四:root权限的开放——sudo

10、John the Ripper 密码强度检测软件

1、用户配置文件

用户配置文件主要包括两个文件,分别是:/etc/passwd和/etc/shadow。其中/etc/passwd存放的是用户的信息,/etc/shadow存放的是用户的密码信息。这两个文件的文件内容都是按照一定的格式编写的。

其中/etc/passwd文件格式如下:

用户名:密码位:UID:GID:描述信息:宿主目录:使用的shell命令

如:zhangsan:x:0:0:marketing dept:/home/zhangsan:shell

其中/etc/shadow文件的格式如下:

用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:帐号闲置时间:失效时间:标志

最后一次修改时间:是指最后一次修改密码的天数与1970年1月1日相隔的天数

最小时间间隔:指两次修改密码之间的最小天数(当为0时表示不限制)。

最大时间间隔:是指密码多少天之后失效,但是可以在重新密码使账户可以重新启用。而失效时间是指多久之后账户就直接无效(当不限制无效时间时,直接设置一个很大的值即可。)

警告时间:当密码失效前n天就进行提示警告(当为0时表示不警告)

帐号闲置时间:指用户没有登录活动但账号仍能保持有效的最大天数(不设置则留空)

失效时间:指多久之后账户就直接无效。一般应用于短期外来人员的帐号。

标志:一般不使用

如下面这个例子的最后一位和倒数第二位是空的:

chanshuyi:$1$L79I629.$xBlLNY7I6Y7ok7no2JT6S.:16277:0:99999:7:0::

useradd 添加用户命令

当我们要添加一个用户的时候,我们可以使用useradd命令设置用户的信息。

格式:useradd [参数] [用户名]

参数:-u  指定用户的UID(超级用户UID=0,普通用户UID 500-60000,伪用户UID 1-499)

-g  指定用户缺省所属的用户组的GID

-G  指定用户组所属多个组(用英文逗号隔开)

-d  指定宿主目录

-s  指定命令解释器Shell

-c  指定描述信息

-e  指定用户失效时间

范例:

#useradd -u 1888 -g webadmin -G sys,root -d /backup -s /bin/hash -e "Market WangWu" -e 2011-01-15 wangwu;
//属于sys/root/weadmin组,默认属于webadmin组。到2011年1月15日过期

添加一个用户hellen的例子:

useradd hellen //添加用户hellen
passwd hellen  //为hellen设置密码(之后输入密码即可)

注:你可以通过“useradd -d” 查看useradd命令时的缺省参数。

usermod 用户信息修改命令

格式:usermod [参数] [用户名]

参数:-l 修改登录名 (所有useradd的参数都可以作为usermod的参数)

范例:

usermod -l samlee -d /home/samlee liming    //将用户liming的登录名改为samlee,用户目录改为/home/samlee
usermod -G softgroup samlee       //将用户samlee添加到softgroup用户组中

userdel  删除用户 

格式:userdel [参数] [用户名]

参数:-r  删除用户的同时删除用户目录

chage  用户管理命令(chage只能在Linux中使用,在Unix无法使用)

格式:chage [参数] [用户名]

参数:-l  查看用户密码设置(如:密码失效时间、最后一次修改密码时间等)

-m 密码修改最小天数

-M  密码修改最大天数

-d  密码最后修改的日期

-I  密码过期后,锁定账户的天数

-E 设置密码的过期日期,如果为0,代码密码立即过期;如果为-1,代表密码永不过期

-W 设置密码过期前,开始警告的天数

例如:

#chage -m 1 test2  //修改test2密码修改最小天数为1
#chage -E 2014/12/20 test2  //设置test2用户2014年12月20日过期

禁用账户和恢复账户

禁用:usermod -L username 或 passwd -l username

回复:usermod -U username 或 passwd -u username

加上参数-f可以强制解锁。

停用或启用shadow功能

pwconv/pwunconv   停用用户的shadow功能

grpconv/grpunconv   停用用户组的shadow功能

pwck 检测/etc/passwd文件是否有错误

pwck命令会检测/etc/passwd以及/tec/shadow两个文件是否出错

vipw 编辑/etc/passwd文件(锁定文件)

finger [用户名]    查看用户的详细信息

su - [用户名]     切换用户

加横杠表示切换环境变量。不加横杆则环境变量不会改变。

who/w  查看当前登录用户信息

Who与w的区别就是w命令会显示比who更加详细的信息。

2、组配置文件

组配置文件也是包括一个组信息文件和一个组密码文件,分别是:/etc/group、/etc/gpasswd。它们也是有一定的编写格式的。

其中/etc/group文件的格式如下:

组名:组密码位:GID:组成员列表

其中组成员如果有多个,则用英文逗号隔开

如:sys::3:root,bin,adm

上面表示有一个组名为sys,GID为3的组,这个组有root,bin,adm三个用户。

/etc/gshadow文件的格式如下:

组名:组密码:用户组管理员的账号:组成员列表

test1:test1:chanshuyi:chanshuyi,chenyr

test1的组,组密码是test1,组成员有chanshuyi & chenyr,组的管理者是chanshuyi。

groupadd  添加用户组

groupadd {-g 888} webadmin //创建用户组webadmin,其GID为888

groupdel  删除用户组

groupdel webadmin  //删除用户组webadmin

groupmod  修改用户组信息

groupmod -n apache webadmin //修改webadmin组名为apache

设置组密码用“gpasswd [组名]”,然后根据提示输入密码。不要用“gapsswd -p [组名]”的方式。

gpasswd 用户组管理命令

格式:gpasswd [参数] {用户名} [组名]

参数:-a 添加用户到用户组

-d 从用户组中删除用户

-A 设置用户组管理员

-r 删除用户组密码

-R 禁止用户切换为该组

范例:

gpasswd group1 //为group1设置密码
gpasswd –a tomgao group1  //将tomgao加到group1里
gpasswd –d tomgao group1  //将tomgao从group1里删除
gpasswd –A tomgao group1 //设置tomgao为管理员
gpasswd –r group1 //删除group1的组密码
gpasswd –R group1  //禁止用户切换为该组

groups [用户名]  查看用户所隶属的组

groups samlee  查看samlee所属的用户组

newgrp  切换用户组

格式:newgrp [组名]

newgrp sugroup //(当前用户)加入sugroup用户组,之后根据提示输入组密码

grpck  用户组配置文件检测

chgrp  修改文件所属组

vigr  编辑/etc/group文件(锁定文件)

3、用户缺省配置文件

用户缺省配置文件指的是/etc/login.defs/etc/default/useradd文件。

它们指的是当我们使用useradd命令添加用户时,对用户的缺省设置(如密码强度、警告时间、最长有效时间等)。

其中/etc/login.defs文件可以定义警告时间、最长有效时间等信息。

而/etc/default/useradd文件可以设置home目录,使用的shell等。

4、/etc/motd文件、/etc/issue文件

/etc/motd文件:存放登录成功之后的提示信息(Message of The Day)

/etc/issue文件:存放登录的提示信息。只要你尝试登录,它就会提示这个文件中的信息,而。一般这个文件只存放一些形式上的欢迎信息,不会透漏服务器的任何信息。

5、SetUID权限、SetGID权限、黏着位

SetUID权限,其实对应与二进制文件的S权限位,它表示其他凡是对此文件有执行权的用户执行时权限自动提升为所有者的权限。如:

-rwsr-xr-x  小写s表示具有SetUID权限,当为大写S时表示SetUID权限出现了错误。

SetUID权限 权限值=4 代号s

授予/撤消SetUID权限(用s表示)分别有两种方式:

chmod u+s  或 chmod 4755

chmod u-s  或  chmod 755

注:4所在的位表示特殊位,而4这个值是SetUID权限的权限值。

SetGID权限 权限值=2 代号g

授予/撤消SetGID权限(用s表示)分别有两种方式:

chmod g+s  或  chmod 2755

chmod g-s  或   chmod 755

如果同时授予SetGID和SetUID则用:chmod 6755

黏着位 权限值=1 代号t

黏着位(用t表示)只能针对权限为777的目录设置。(权限要为777,并且是目录!)。如果一个目录具有黏着位,那么表示每个用户都可以在这个目录下创建文件,但是只能删除自己创建的文件。

授予/撤消黏着位分别有两种方式:

chmod o+t 或 chmod 1777

chmod o-t  或 chmod 777

6、典型案例之一:手动创建一个用户

我们除了可以通过useradd添加一个用户之外,我们也可以通过修改配置文件的方式手动添加一个用户。只要按下面的顺序我们就可以手动添加一个用户zhangsan:

① 修改/etc/passwd、/etc/shadow文件

//在/etc/passwd配置
zhangsan:x:556:556:zhangsan:/home/zhangsan:/bin/bash
//在/etc/shadow配置
zhangsan::16406:0:99999:7:::

MARK 这里少了关键的一步

② 创建宿主目录

//创建宿主目录/home/zhangsan
mkdir /home/zhangsan

③ 拷贝/etc/skel下的配置文件到宿主目录/home/samlee(用户名)下

7、典型案例之二:批量添加用户

下面以批量添加10个用户为例。(MARK 补充一个完整的实例)

① 用newusers命令 - 导入用户信息文件

创建user.txt文件,内容如下:

cs1:x:0:0:marketing dept:/home/cs1:/bin/bash
cs2:x:0:0:marketing dept:/home/cs2:/bin/bash

执行以下命令,导入用户信息文件:

[root@localhost ~]# newusers /home/chanshuyi/Desktop/user.txt

② pwunconv命令 - 取消shadow password功能

[root@localhost ~]# pwunconv

③ chpasswd命令 - 导入密码文件(格式->用户名:密码)

创建passwd文件,并输入以下内容:

cs1:cs1
cs2:cs2

执行密码文件导入的命令:

[root@localhost ~]# chpasswd /home/chanshuyi/Desktop/passwd.txt

④ pwconv命令 - 将密码写入shadow文件

[root@localhost ~]# pwconv

8、典型案例之三:限制用户使用su

限制用户使用su的本质是改变su命令的可执行位,对所有具有使用su命令的用户授予x权限。

① 创建sugroup组并改变su命令的权限

#groupadd sugroup
#chmod 4550 /bin/su  //限制只有创建者和所属组具有x权限(可执行权限,4表示SetUID权限)

SetUID权限可以让执行者执行此文件时以文件所有者的身份执行。

② 改变/bin/su所属组为sugroup

#chgrp sugroup /bin/su

设定之后,只有sugroup中的用户可以使用su切换为root。

9、典型案例之四:root权限的开放——sudo

Sudo是一个软件,它可以让普通用户以root身份执行命令,并且可以精细化到命令的参数。

Sudo的配置文件是:/etc/sudoers,要编译Sudo的配置文件用命令:visudo,用一般的vi命令是不能编译的。

而我们编辑sodoers文件也要按照一定的格式,/etc/sudoers文件的格式为:用户名(组名) 主机地址=命令(绝对路径)

比如我要让hellen具有添加用户的权限,那我用visudo编辑配置文件并加入下面的配置:

chenyr localhost=/usr/sbin/useradd  //有多个命令要赋予时,用英文逗号隔开

这样当我用chenyr登录的时候,我可以用“sudo [命令]”的格式去添加用户,如:

sudo useradd testuser
sudo passwd testuser

这样就可以成功添加testuser用户了。

此外,你可以用“sudo -l 命令”查看看当前用户被授予了哪些命令的root执行权限。如上面的chenyr账号,你可以看到它被授予执行的命令有useradd:

[chenyr@localhost ~]$ sudo -l
//.....
User chenyr may run the following commands on this host:
    (root) /usr/sbin/useradd

另外,sudo可以精细化地进行命令的授权,如:

hellen localhost=/sbin/shutdown -h now       //只允许用户执行sudo shutdown -h now命令,少一个参数都不行。

10、John the Ripper 密码强度检测软件

11.Linux用户管理的更多相关文章

  1. Linux - 用户管理与文件权限

    目录 Linux - 用户管理与文件权限 创建普通用户 切换用户 userdel删除用户 sudo 命令 文件与目录权限 Linux权限的解读 目录权限 查看用户权限的命令 文件权限 修改权限的命令 ...

  2. linux用户管理-用户的基本操作

    目录 linux用户管理-用户的基本操作 用户相关的命令 linux用户管理-用户的基本操作 什么是用户 用户指能够正常登录linux或windows系统 区别 本质都是登录系统的,只不过Linux支 ...

  3. Linux 用户管理 与 文件权限

    Linux 用户管理 与 文件权限 用户组操作 1.groupadd命令 groupadd [-g -o] gid group 各个选项具体含义如下: -g:指定新建用户组的GID号,该GID号必须唯 ...

  4. linux 用户管理

    linux 用户管理 创建一个用户 foo 这个用户只能在/home/foo 上面增加删除文件, foo 不能在其他目录加减文件 useradd -d /home/foo -m foo [root@] ...

  5. linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解

    linux用户管理 http://www.qq210.com/shoutu/android 用户账号的添加(新加用户需添加用户口令) :增加用户账号就是在/etc/passwd文件中为新用户增加一条记 ...

  6. Linux用户管理的复习时间

    所谓三天不练手生,你还记得关于Linux用户管理的所有知识吗?现在就来跟我一起复习一下吧! 1.常用配置文件 用户信息文件: /etc/password 密码文件: /etc/shadow 用户组文件 ...

  7. Linux用户管理简介

    Linux用户管理是Linux的优良特性之一,本文说明了Linux中用户的登录过程和登录用户的类型. 一.Linux用户登录过程 用户要使用Linux系统,必须先进行登录.Linux的登录过程和win ...

  8. linux 用户管理,用户权限管理,用户组管理

    linux 用户管理,用户权限管理,用户组管理 一:ls -l 命令 解释 第个d表示是目录,如果是文件是-,如果是连接是l 第2到4个 rwx 表示创建者的操作权限 r 读,w 写,x 执行 第5到 ...

  9. 第七天 Linux用户管理、RHEL6.5及RHEL7.2 root密码破解、RHEL6.5安装vmware tools

    1.Linux用户管理 Linux系统中,存在三种用户 A.超级用户:root 最高权限,至高无上 在windows中 administrator是可以登录的最高权限,但是,system权限最高,不能 ...

随机推荐

  1. IOS编程学习笔记

    @interface -实例对象 +类名 #import "MyClass" @implementation MyClass -(id)initWithString:(NSStri ...

  2. Python,datetime模块实例

    Python的标准模块datetime模块,在我们的工作中应用非常频繁,下面对datetime中常用的方法进行了总结和测试:对每一个方法都使用了单元测试框架Unittest来配合测试. 主要的类型有: ...

  3. 纯css实现京东导航菜单

    纯CSS代码实现导航菜单,推荐在chrome预览! 预览请点击这里:mygithub <!doctype html> <html lang="en"> &l ...

  4. Algorithms(4th)谢路云译大纲总结(附实现源码)

    前言: 此算法书可以说是Java程序开发者的福音.里面涉及近50种计算机领域的经典算法,几位作者花了近40年的时间才完成这本著作.秉着对作者的敬仰与对算法的兴趣,我多次翻阅此书,而且常常被书中的经典算 ...

  5. javascript 常用api

    常用API合集 来源于:https://www.kancloud.cn/dennis/tgjavascript/241852 一.节点 1.1 节点属性 Node.nodeName //返回节点名称, ...

  6. Android网络编程要学的东西与Http协议学习

    本节引言: 本节开始我们来学习Android网络编程相关的一些东西:Android端网络编程是要干嘛?http协议的学习,使用自带扣脚Json解析类解析Json,XML解析常用的几种方式,HttpUr ...

  7. sql语句,实践证明了某种情况下not in的效率高于not exists

    只要百度not in和not exists,清一色的not exists的效率优于not in,毕竟not exists只是去强调是否返回结果集,只是一个bool值,而not in是返回一个结果集,是 ...

  8. 一篇文章为你深度解析HTTPS 协议

    一.前言 微信小程序如期发布,开发者在接入微信小程序过程中,会遇到以下问题: 小程序要求必须通过 HTTPS 完成与服务端通信,若开发者选择自行搭建 HTTPS 服务,那需要自行 SSL 证书申请.部 ...

  9. 聊聊"jQuery is not defined"

    KiwenLau同学在他的个人博客使用了Fundebug的JavaScript错误监控插件,然后偶尔会收到jQuery is not defined这样的错误报警: 他的博客使用了Staticfile ...

  10. 出现http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException异常

    解决方案 1.在eclipse的菜单中,进入Window > Preferences > Java > Installed JREs > Execution Environme ...