Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

linux用户管理:对用户的增、删、改、查等
                                               

      今天给大家带来的是Linux中对于用户信息的相关管理     

     首先介绍一下何为用户:用户就是系统使用者的身份,有超级用户和普通用户之分;而用户又属于用户组,,这些概念在面内容中会讲到。
而用户在系统中是以若干窜字符+若干个系统配置文件的形式存在的。
用户信息涉及到的系统配
置文件如下:

1./etc/passwd 中储存着用户信息

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

这些字符从左到右分别是,用户:密码:用户ID:用户所在组ID:说明:家目录:用户使用的shell(以冒号隔开)
对应的操作字符为:                                    -u                  -g            -c        -d             -s

2./etc/shadow中储存着用户的认证信息

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

这些字符从左到右分别是,用户:密码:最后一次密码修改该时间:密码最短有效期:密码最长有效期:警告期:非活跃期:帐号到期日(以冒号隔开)

3./etc/group中存储着用户组信息

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

这些字符从左到右分别是,组名称:组密码组id附加组成员

3./etc/gshadow 中存储着组认证信息

/home/username 中存储着用户家目录。用户家目录,存放用户个人数据,除了root用户,其他用户的设置文件,桌面以及个人数据都是放在各自的用户目录下面的。

/etc/skel/.* 中存储着用户骨架文件,所谓骨架文件就是创建用户系统时所需的基本框架结构,和我们人体的骨骼一样,为基本的框架。这个目录和里面的东西是十分重要的。 /etc/skel/ 此目录中的所有文件或目录,在用户新建的过程中会被复制到用户的家目录里,而且这个目录中默认存在的隐藏文件是用户的默认配置文件

注:小帮手  watch -n 1 'tail -n 3 /ect/passwd /etc/group;echo ====;ls -1 /home;echo ===;ls -1 /mnt,可用来实时监控对用户信息的各种操作,简捷明了,方便理解。不明白的可以执行“watch --help 或者 man help”查看对watch的详细解释。

下面是对用户的管理:

1.用户id信息的查看

具体操作是 在shell中执行"id+参数+用户名"进行对用户信息的查看,具体参数如下

    -u  查看用户 uid;                              -g   查看用户初始组id;

    -G  用户所有所在组id;                     -n   显示名称而不是id数字

    -a   显示用户所有信息(id+用户名,默认为显示用户所有信息)

2.用户的信息管理 

(1)添加用户

在shell中执行"useradd + 用户名"对系统添加新用户。

如下添加一个名叫“linux”的新用户。用户信息如下所示,其中默认用户所在组为“linux”。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

也可以按照组名添加用户

在shell下执行“useradd -g +组名+用户名”  这个组必须已经存在,若是不存在则会报错

示例如下,建立一个属于linux组并且用户名为lin的用户。用户信息显示,用户名为lin应乎所在组为linux,若是组别不存在,系统报错,显示没有这个组。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

 在shell下执行“useradd -G +组名+用户名”  指定用户附加组,即用户可以属于多个组

示例如下,建立一个附加组为student的用户liming,用户信息如下,用户的组有liming和student。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

下面三个都是指定用户的某一固定信息建立用户,其他的用户名称和组别都按建立时给的用户名称来建立。

    useradd + -c +用户名    指定用户说明来建立用户

    useradd + -d +用户名    指定用户家目录来建立用户

    useradd + -s +用户名    指定用户所使用的shell来建立用户(/etc/shells记录了用户能使用shell的名字)

如按照用户说明来建立一个名叫为westos的用户Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

可以在/etc/passwd 查看westos的详细信息

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

按照家目录和用户所使用的shell来建立用户与上同,均可在/etc/passwd中查看用户对应信息。

(2)删除用户

userdel     -r    用户名称 -r表示删除用户信息及用户的系统配置,若不添加“-r”将会对用户删除不彻底,造成不必要的麻烦。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

(3)组的建立

   可以单独建立组而不建立用户,组信息可在/etc/group中查看

     组的建立:groupadd+组名   

     组的删除groupdel+组名字   

建立组名为zhangsan的组,并可在/etc/group中查看他的信息,删除后再查看就消失了。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

(5)用户信息更改
     usermod+参数+用户,可以做到对用户信息的修改

    具体操作如下:

     usermod+  "-l" +用户名         用来更改用户名称

     usermod+" -u" +用户名         用来更改用户ID

     usermod+ "-g" +用户名         用来更改组ID

     usermod+"-G" + 用户名        用来更改附加组

     usermod+"-aG"+用户名        用来添加附加组

     usermod+ " -c" +用户名        用来更改说明
     usermod+  "-d"+用户名         用来更改家目录   :不管是修改家目录还是以家目录添加用户,若是家目录中间有空格字符,必须用''单引号引起来,在linux  shell 中执行指令也一样空格分开两个指令,引号内为一个
     usermod+ "-md"+用户名        用来更改家目录指定及家目录名称
     usermod+ "-s" +用户名          用来更改shell
     usermod+ "-L" +用户名          用来冻结帐号
     usermod+"-U" +用户名           用来解锁
其他按照步骤来都没什么大问题,这里强调一下帐号冻结和解锁

打开shell 先新建一个名为“list”的用户,后执行“passwd”为其赋予密码。然后执行usermod -L list 用来冻结帐号,在普通用户下切换到list(小知识点linux中在shell下可利用su - 用户名来切换用户),输入密码后将会报错,显示身份验证失败。示例如下:

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

想要解除锁定,执行“usermod+-U +用户名”来进行解锁

3.用户权限的下放

一般而言,对系统建立新的用户正能在超级用户下进行,这是因为系统用户的权限问题,但是在某些情况下我们可以将系统管理员权限下放给普通用户,即让普通用户可以执行系统管理员的某些能力。执行如下。

在超级用户下执行"vistudo" 进入编辑/etc/sudoers模式,在100行左右进行编辑,具体设置,

以test用户为例 ,让其可执行仅超级用户可执行的对系统用户的添加删除。

获得权限用户                主机名称=(得到某用户的身份)                                 需要执行的命令

   test                                 hostanme=(root)                                            /usr/sbin/useradd

注:在shell中执行hostname可查询主机名称,每个主机的名称都是不同的!!

执行visudo后的显示:

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

查看主机名称

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

进行权限下放

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

在切换到test用户后可输入    "sudo+useradd  + 用户名"来以普通用户来进行新建用户的操作

注:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

执行该操作后,系统会让用户输入密码。以验证用户身份,难免繁琐,可以在对/etc/sudoers 进行修改时,在需要执行的命令前加上NOPASSWD:这样就可以免密进行用户的增添啦。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

用户删除也是同样的,只要将需要执行的命令后加上   ,/usr/sbin/userdel即可

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

4.用户认证信息的控制(passwd)

所谓用户认证信息的控制,就是对用密码信息的修改。

(1)passwd + -S + 用户名 对用户密码信息进行查看

          用上 watch -n 1 passwd -S 用户认证信息进行监控,方便后续操作。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)执行后显示如下:Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

上面的passwd -S student 查看的student用户的认证信息含义分别是

 2014-07-09至今:密码默认使用天数;         0:密码最短有效期(即过多久可以下一次修改密码,默认为0); 

                99999:密码最长有效期;             7:密码过期前警告期;

                       -1:密码非活跃天数

(2)passwd +用户名    用来修改密码。

          如果是超级用户执行此命令,不需要知道原来密码直接修改,没密码强度限制

          如果是普通用户需要输入原始密码,并且密码不能少于8个字符,不能是纯数字,不能是纯字母

(3)passwd +-d +用户名    删除用户密码

(4)passwd+ -l+  用户名    冻结帐号密码

         passwd +-u+ 用户名    解锁用户

上述两个与usermod +-L+用户名和usermod+-U+用户名有区别,在/etc/shadow下监测可以看出。

执行watch -n1 tail - n1 /etc/shadow 注意密码一栏,即test后的那长串字符

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

执行usermod -L test后字符前出现一个!

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

执行passwd -l test 后字符前出现两个!,而usermod -U test 一次只能取消一个!,passwd -u 可一次取消完。

Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

(5)passwd +"-e"+ 用户      更改密码默认使用天数(一个让密码快速失效的方法,用户在下次登录时必须强制修改密码)

         passwd +"-x数字"+ 用户      密码最长有效期

         passwd +"-n数字"+ 用户      密码最短有效期

         passwd +"-w数字"+用户     密码过期前警告期

         passwd+ "-i数字"+ 用户       密码非活跃天数

(6)   passwd +"--stdin" +用户   非交互式更改用户密码(必须在超级用户下执行)

        例如:修改test用户密码为lin,执行echo tlin | passwd --stdin test

      Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)

修改用户参数:   指令为  "chage+参数+用户"
            对应参数:                           -d    用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码    
                                                        -m    修改最短有效期
                                                        -M    修改最长有效期
                                                        -W    修改警告期
                                                         -I     修改用户非活跃天数
                                                         -E    修改帐号到期日,格式 -E "YYYY-MM-DD"