码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 用户管理

时间:2016-08-02 17:17:54      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:linux基础命令

描述:

     用户类型分为管理员(root)和普通用户(user,其中普通用户又可以分为系统用户和登录用户。而用户标识是根据其ID来区分的,简称为UID,每个用户所对应的ID都不同,也是唯一的,就如同每个人的身份证号是不同的。每个用户的UID及其它信息存放于系统的/etc/passwd文件里,名称解析库,可用cat /etc/passwd命令查看。

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
ping:x:500:500::/home/ping:/bin/bash

共有7个字段,每个字段之间用“:”分隔,每个字段所表示的含义为:

    root:用户名

    X:加密后的密码(也可以是占位符X

    0:用户的ID

    0:用户所属主组的GID

    root:注释信息

    /root:用户的家目录

    /bin/shell:用户登录时默认shell程序


Linux系统采用16bints二进制数字来为用户提供UID0-65635)。

管理员UID0     普通用户UID1-65635

    系统用户UID1-499Centos6,1-999Centos7

    登录用户UID500-60000Centos6),1000-60000Centos7

每个用户都有各自的组,简称为:group。每个组也有其对应的ID,也是唯一的,简称为GID。每个用户的GID及其它信息存放于系统的/etc/group文件里,名称解析库,可用cat /etc/group命令查看。

[root@localhost ~]# cat /etc/group
root:x:0:gentoo
bin:x:1:bin,daemon,gentoo
ping:x:500:

共有4个字段,每个字段之间用“:”分隔,每个字段的含义为:

root:用户组名称

X:加密后的组密码

0:所属组的GID

root:此用户组支持的账号名称

其中rootGID0

每个用户所属的组按照不同的分类方法可分为以下几类:

1,管理员组和普通用户组。其中普通用户组又分为系统组和登录组

   管理员组GID0    普通用户GID1-6535

2,用户的基本组和附加组

3,私有组(组名同用户名,且只包含一个用户)

   公共组(组内包含了多个用户)

用户如果需要登录主机以取得shell的环境来工作时,必须要在计算机前面利用tty1~tty7的终端机提供的login接口,并输入其账号与密码才能够登录。此过程称为认证过程。通过比对事先存储在/etc/passwd/etc/shadow中的信息,与用户登录时所提供的信息是否一致。

在系统里的/etc/shadow文件中存放着用户的密码信息,只有管理员root才用权限查看

[root@localhost ~]# cat /etc/shadow
root:$6$FE7Q336W$g/ry4M33OTbPef0/VHR/YwFg9zdA7QBeJGj.jKGw9tkWR3Wk1DMNBykFuNZef/xbSqRSacRD/MQp.Zr5KKK2D.:17008:0:99999:7:::
bin:*:15980:0:99999:7:::

共有9个字段,每个字段之间用“:”分隔,每个字段的含义为:

1,用户名:2,加密后的密码:3,最近一次修改密码的日期:4,最短使用期限:5,最长使用期限:6,警告天数:7,过期期限:8,账号失效日期:9,保留字段

技术分享

用户组的密码信息存放于系统/etc/gshadow中,只有管理员root才有权限查看,可使用cat /etc/gshadow命令查看

[root@localhost ~]# cat /etc/gshadow
root:::gentoo
ping:!::

共有4个字段,每个字段之间用“:”分隔,每个字段含义:

1,用户组名: 2,密码列,开头为!表示无合法密码,所以无用户组管理员: 3,组管理员列表,更改组密码和成员4,以当前组为附加组的用户列表(分隔符为逗号)


说明:

Passwd命令:修改用户密码   用户密码文件/etc/shadow

  密码使用策略:

  1,应该使用随机密码

  2,最短长度不低于8

  3,应该包括大写字母、小写字母、数字、标点符号四类中的三类

  4,须定期更改

  密码的加密算法:

  对称加密、非对称加密、单向加密

  md5: message digest  128bits

  sha: secure hash alorithm  160bints

  sha: secure hash alorithm  224bints

  sha: secure hash alorithm  256bints

  sha: secure hash alorithm  384bints

     sha: secure hash alorithm  512bints

 passwd [OPTIONS] UserName:  修改指定用户的密码,仅root 用户权限

 passwd:  修改自己的密码;

   常用选项:

      -l: 锁定指定用户

      -u: 解锁指定用户

      -d:清除用户密码

      -e: 强制用户下次登录修改密码

      -n mindays:  指定最短使用期限

      -x maxdays :最大使用期限

      -w warndays :设置警告期限

      -i inactivedays :设定非活动期限;

      --stdin :从标准输入接收用户密码;

      echo " PASSWORD " | passwd --stdin USERNAME


示例:

1,修改用户自己的密码:

[root@localhost ~]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

2,清除指定用户密码

[root@localhost ~]# passwd -d ping
Removing password for user ping.
passwd: Success

3,从标准输入接受用户密码

[root@localhost ~]# echo "123456" | passwd --stdin ping
Changing password for user ping.
passwd: all authentication tokens updated successfully


Useradd命令:添加新用户  (具体用法可参考man useradd

[root@localhost~]# useradd [option] login

  其中选项有:

  -u, --uid UID 指定用户的UID

  -g, --gid GRIOUP 指定基本组ID,但此组须事先存在

  -G--groups GROUP1[,GROUP2,..] 指明用户所属的附加组,多个组之间用“,”分隔,添加附加组须事先存在

  -c, --comment COMMENT 指明注释信息

  -d,--home HOME-DIR 以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现,指定的家目录路径若事先存在,则不会为用户复制环境配置文件

  -s,--shell SHELL 指定用户的默shell,可用的所有shell列表存储于/etc/shells文件中

  -r,---system 创建系统用户  

注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

  -D,  显示创建用户的默认配置

  -D+选项: 修改默认选项的值修改的结果保存于/etc/default/useradd文件中

示例:创建新用户user50, uid为555,注释信息为“hello user50", 家目录为/home/user50,

    shell为/bin/bash

[root@localhost ~]# useradd -u 555  -G gentoo -c "hello user50" -s /bin/bash user50
[root@localhost ~]# id user50;grep user50 /etc/passwd
uid=555(user50) gid=555(user50) groups=555(user50),501(gentoo)
user50:x:555:555:hello user50:/home/user50:/bin/bash


新建用户的相关文件和命令:

/etc/default/useradd

/etc/skel/*

示例:批量创建完用户后,需将/etc/skel/*下的文件复制到该用户的家目录下

[root@localhost ~]# cp -r /etc/skel/.[^.]* /testdir/a
[root@localhost ~]# su - a
[a@localhost ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

/etc/login.defs

newusers passwd 格式文件 批量创建用户

示例:创建用户a,b,c,d,e,f五个用户

[root@localhost ~]# vim user.txt
[root@localhost ~]# cat user.txt
a:x:2000::hello a:/testdir/a:/bin/bash
b:x:2000::hello b:/testdir/b:/bin/bash
c:x:2000::hello c:/testdir/c:/bin/bash
d:x:2000::hello d:/testdir/d:/bin/bash
e:x:2000::hello e:/testdir/e:/bin/bash
[root@localhost ~]# newusers user.txt
[root@localhost ~]# tail -5 /etc/passwd
a:x:2000:2000:hello a:/testdir/a:/bin/bash
b:x:2000:3011:hello b:/testdir/b:/bin/bash
c:x:2000:3012:hello c:/testdir/c:/bin/bash
d:x:2000:3013:hello d:/testdir/d:/bin/bash
e:x:2000:3014:hello e:/testdir/e:/bin/bash

chpasswd 批量修改用户口令

示例:修改上面五个用户的密码

[root@localhost ~]# vim pass.txt
[root@localhost ~]# cat pass.txt
a:a123
b:b123
c:c123
d:d123
e:e123
[root@localhost ~]# cat pass.txt | chpasswd
[root@localhost ~]# tail -5 /etc/shadow
a:$6$zksrb/hGnN./ro.c$Tz8eyweWg6u0r.U8Tz5eC8M0SsUJIdhwdvyuLEwEzRxpxz9sC9ZTRyw5.2J.RVkjuUZIoVHJErSIiKqgSx31I.:14101:0:99999:7:::
b:$6$ZrgX2L9cD$Sz4dNtMuwJRhBrRZYbIWlz3JQ2QvFRmUZVHtnh6yw0GOfnfXyF2PA32RSK7ERa/JmEYcxJHGQQM5XZs.MaPP./:14101:0:99999:7:::
c:$6$A7zZB6kmIGQn3QG/$zeBLSC1Ph3jemx9JURRHL2nsCd8CivcVxJsNUWlkBHKqlC/k1ebXzmJQXZkPMmyCsTcrBM7vyKbH72ABiGTOl0:14101:0:99999:7:::
d:$6$Q2kk4/9m$nmBglyeL2u8pxbe5.jS2kA1G9Hcoavu6lGHa6YYCWm7i14XFIBDDFL3//LDqzFsetzP2r.wZdU3t6KQZvqzMS.:14101:0:99999:7:::
e:$6$cP1fr/KReDq/$yhTinFy6AaTLXjzdnxSPO1MX2P6uDsZCsr4fX1yLsb5YENjQgpcUCsjaMyEKFHHC5kwJb.aFrXSMwGH7dmjjM0:14101:0:99999:7:::



usermod 命令:修改用户属性

  格式: usermode [OPTION] login

       -u UID:  UID

       -g GID:  新基本组

       -G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加

       组将会被覆盖;若保留原有,则要同时使用-a 选项,表示append; ;

       -s SHELL :新的默认SHELL; ;

       -c ‘COMMENT‘ :新的注释信息;

       -d HOME:  新家目录不会自动创建,原家目录中的文件不会同时移

       动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m 选项

       -l login_name:  新的名字;

       -L: lock 指定用户, /etc/shadow  密码栏的增加 !

       -U: unlock 指定用户,将 将 /etc/shadow 的 密码栏的 !  拿掉

       -e YYYY-MM-DD:  指明用户账号过期日期;

       -f INACTIVE:  设定非活动期限;

 示例:修改用户user50的uid为450, 附加组为ping, 注释信息为“good luck to you”, 家目录为/testdir/user50, shell为/bin/csh

[root@localhost ~]# usermod -u 450 -G ping -c "good lock to you " -d /testdir/user50 -s /bin/csh user50
[root@localhost ~]# grep user50 /etc/passwd
user50:x:450:555:good lock to you :/testdir/user50:/bin/csh




userdel命令:删除用户

   userdel [OPTION]... login

    -r: 删除家目录


id命令:显示用户的有效ID

  id [option].. [user]

   其中选项有:

    -u:  仅显示有效UID

    -g:  仅显示用户的基本组ID

    -G:  仅显示用户所属的所有组的ID

    -n: 仅显示用户名字而非ID

[root@localhost ~]# id user50
uid=450(user50) gid=555(user50) groups=555(user50),500(ping)



su命令switch user  切换用户 

   登录式切换:通过读取目标用户的配置文件来重新初始化用户环境

      su - USERNAME

      su -l USERNAME

[root@localhost ~]# su - ping
[ping@localhost ~]$ pwd
/home/ping
[ping@localhost ~]$ echo $USER
ping

   非登录式切换:不会读取目标用户的配置文件进行初始化用户环境

      su  USERNAME

[root@localhost ~]# su ping
[ping@localhost root]$ ls
ls: cannot open directory .: Permission denied
[ping@localhost root]$ pwd
/root
[ping@localhost root]$ whoami
ping
[ping@localhost root]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[ping@localhost root]$ echo $USER
ping

         -c COMMAND 仅以指定用户身份运行此处指定的命令

[ping@localhost root]$ su - root -c ‘cat /etc/shadow‘
Password: 
root:$6$6Sq0.SQE$k6whOyJPZsFPHiJHJY/0PqYJI9sWJ9CWouvCwwPcpkfeL5e1MN/6SAdu6l1uKU.n7Hw0N3QaGzeaiXITfffpB0:14101:0:99999:7:::
bin:*:15980:0:99999:7:::
[ping@localhost root]$

   以某用户的身份执行完操作后,需exit或者logout命令退出当前终端


groupadd命令:添加组

  groupadd [option] GROUP_NAME

   其中选项有:

    -g, GID  指定GID,默认是上一个组的GID+1

    -r  创建系统组

[root@localhost ~]# grep liming /etc/group
liming:x:3011:


groupmod命令:修改组属性

  group [option] GROUP

   -g GID  修改GID

   -n NEW_NAME 修改组名

  

  gpasswd命令:修改组密码

     格式: gpasswd [OPTION] GROUP

      -a user:  user 添加至指定组中;

     -d user:  从指定组中移除用户user

     -A user1,user2,...:  设置有管理权限的用户列表

  

  newgrp 命令:临时切换基本组;如果用户本不属于此组,则需要组密码

 

  groupdel命令:删除组

  groupdel [option] GROUP

     -g, --group groupname 组更改为指定组 ( 只有root)

     -a, --add username 指定用户加入组

     -d, --delete username 从组中删除用户

     -p, --purge 从组中清除所有成员

     -l, --list 显示组成员列表

  示例:删除liming这个组

[root@localhost ~]# groupdel liming

结束语:

  本篇内容是本人上课总结和整理的内容,若有错误或遗漏请各位路过的达人指出!

Linux 用户管理

标签:linux基础命令

原文地址:http://suifengsky.blog.51cto.com/11393684/1833526

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!