java程序员菜鸟进阶(十五)linux基础入门(三)linux用户和组管理
来源:互联网 发布:淘宝网长袖连衣裙棉麻 编辑:程序博客网 时间:2024/05/16 08:16
我们大家都知道,要登录linux操作系统,我们必须要有一个用户名和密码。每一个用户都由一个惟一的身份来标识,这个标识叫做用户ID.系统中的每一个用户也至少需要属于一个"用户分组".同样,用户分组也是由一个惟一的身份来标识的,该标识叫做用户分组ID(GID).每位用户的权限可以被定义为普遍用户或者根用户,普通用户只能访问其拥有的或者有权限执行的文件.根用户能够访问系统全部的文件和程序,根用户通常也被称为"超级用户"其权限是系统中最大的,可以执行任何操作.在本篇博客中,我们就一起来学习一下linux对用户和组的管理。
做个广告:我参加CSDN举办的博客之星评选,希望得到大家的支持!
投票地址:点我投票
一. 用户和组文件
1. 用户信息
linux操作系统的所有的用户信息都保存在/etc/passwd文件,用于用户登录时校验用户登录名.加密的口令数据项,用户ID(UID),默认用户分组ID(GID),用户信息,用户登录子目录和登录后使用的shell.这个文件的每一行保存一个用户的资料,而用户资料的每一个数据项采用冒号":"分隔,具体文件内容如下:
字段1:用户帐号的名称
字段2:用户密码字串或者密码占位符“x”
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息
2. 用户密码信息
inux用户密码信息主要保存在/etc/shadow文件中,这个文件也称为用户影子文件--shadow
LINUX使用不可逆的加密算法如DES来加密口令,所以黑客从密文是得不到明文的.文件的每行是8个冒号分割的9个域,如下:
username:passwd:lastchg:min:max:warn:inactive:expire:flag
解释一下:
username:用户登录名
passwd:加密的用户口令
lastchg:表示从1970年1月1日起到上次修改口令所经过的天数
min:表示两次修改口令之间至少经过的天数
max:表示口令还会有效的最大天数,如果是99999则表示永不过期
warn:表示口令失效前多少天内系统向用户发出警告
inactive:表示禁止登录前用户名还有效的天数
expire:表示用户被禁止登录的时间
flag:保留域,暂未使用
二.用户管理(添加、修改和删除用户命令useradd/usermod/userdel )
1.useradd建立用户
useradd不加任何参数创建用户时,系统首先读取添加用户配置文件/etc/login.defs和/etc/default/useradd,根据这两个配置文件中定义的规则添加用户,然后会向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc/passwd和/etc/group对应的加密文件也会自动生成记录,接着系统会自动在/etc/default/useradd文件设定的目录下建立用户主目录,最后复制/etc/skel目录中的所有文件到新用户的主目录中,这样一个新的用户就建立完成了。
示例:
添加一个用户caoshenghuan,指定所属的主用户组为linuxgroup2,附加用户组为linuxgroup,同时指定用户的默认主目录为/opt/caoshenghuan
[root@localhost ~]# useradd -g linuxgroup2 -G linuxgroup-d /opt/caoshenghuan caoshenghuan[root@localhost ~]# more /etc/passwd|grep caoshenghuancaoshenghuan:x:523:1030::/opt/caoshenghuan:/bin/bash[root@localhost ~]# more /etc/group|grep caoshenghuanlinuxgroup:x:1020:caoshenghuan
2.useradd的使用语法
useradd语法的一般格式为:
useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment]
[-f inactive] [-e expire ] name
各个选项具体含义如下:
-u uid:即用户标识号,此标识号必须唯一。
-g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
-G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。
-d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。
-s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。
-c comment:对新建用户的说明信息。
-f inactive:指定帐号过期多长时间后永久停用。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1
-e expire:指定用户的帐号过期时间,日期的指定格式为MM/DD/YY。
name:指定需要创建的用户名。
示例:
添加一个用户bzu,指定UID为686,默认的shell为/bin/csh,让其归属为用户组linuxgroup和linuxgroup2,同时添加对此用户的描述,
[root@localhost ~]# useradd -u 686 -s/bin/csh -G linuxgroup,linuxgroup2 -c "This is test user"bzu[root@localhost ~]# more /etc/passwd|grep bzubzu:x:686:686:This is test user:/home/bzu:/bin/csh[root@localhost ~]# more /etc/group|grep bzu linuxgroup2:x:1030:bzulinuxgroup:x:1020:caoshenghuan,bzubzu:x:686:
3.usermod的使用语法
usermod用来修改用户的账户属性信息,使用语法如下:
usermod [-u uid [-o]] [-g group] [-Ggroup,...]
[-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
[-f 失效日期] [-e 过期日期][-L|-U]Name
各个选项具体含义与上面一样。
示例:
修改用户bzu的主用户组为新建的组test_group1,同时修改bzu的附加组为linuxgroup和root,最后修改bzu的默认登录shell为/bin/bash
[root@localhost ~]# groupadd test_group1 #添加一个新的用户组[root@localhost ~]# more /etc/group|greptest_group1 #显示新增用户组的信息test_group1:x:1031:[root@localhost ~]# usermod -g test_group1 -G linuxgroup,root-s /bin/bash bzu[root@localhost ~]# more /etc/passwd|grep bzu #从输出可知,用户的属性已经更改 bzu:x:686:1031:This is test user:/home/bzu:/bin/bash[root@localhost ~]# more /etc/group|grep bzu #从输出可知,用户组的属性也同步更改 root:x:0:root,bzulinuxgroup:x:1020:caoshenghuan,bzubzu:x:686:
4.userdel的使用语法
Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为:
userdel [-r][用户帐号]
5.如何锁定、解除用户密码
下面首先对bzu和caoshenghuan用户设置密码
[root@localhost ~]# passwd bzuChanging password for user bzu.New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.[root@localhost ~]# passwd caoshenghuanChanging password for user caoshenghuan.New UNIX password: Retype new UNIX password: passwd: all authentication tokens updatedsuccessfully.
下面的操作是通过su命令切换到caoshenghuan用户下,然后在caoshenghuan下再次切换到bzu用户下,这里的切换用户是为了说明一个问题:从超级用户root切换到普通用户下,是不需要输入普通用户密码的,系统也不会去验证密码。但普通用户之间切换是需要密码验证的。
[root@localhost ~]# su – caoshenghuan #通过su命令切换到caoshenghuan用户下[caoshenghuan@localhost ~]$whoami #用whoami命令查看当前用户caoshenghuan[caoshenghuan@localhost ~]$ su - bzu #这里是从caoshenghuan用户下切换到bzu用户下,需要输入密码Password: [caoshenghuan@localhost ~]$whoami #成功切换到bzu用户下bzu
接下来,在root用户下执行usermod锁定bzu的密码,测试bzu是否还能登录,从下面可以看出,密码锁定后,出现登录失败。
[root@localhost ~]# usermod -L bzu #锁定bzu用户的密码[root@localhost ~]# su - caoshenghuan [caoshenghuan@localhost ~]$ whoamicaoshenghuan[caoshenghuan@localhost ~]$ su - bzu #这里输入的密码是正确的,但是提示密码错误,因为密码被锁定了Password: su: incorrect password[caoshenghuan@localhost ~]$ whoamicaoshenghuan
最后对bzu解除密码锁定,登录正常。
[root@localhost ~]# usermod -U bzu #解除密码锁定[root@localhost ~]# su – caoshenghuan[caoshenghuan@localhost ~]$ whoamicaoshenghuan[caoshenghuan@localhost ~]$ su - bzuPassword: [bzu@localhost ~]$ whoami #密码锁定解除后,bzu用户可以登录系统bzu
二. 用户组管理(添加、切换、删除groupadd/newgrp/groupdel)
1.groupadd命令
用来新建一个用户组。语法格式为:
groupadd [-g -o] gid group
各个选项具体含义如下:
-g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。
-o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例如:
创建一个linuxgroup的用户组和一个linuxgroup2用户组,GID分别为1020和1030
[root@localhost ~]# groupadd -g 1020 linuxgroup[root@localhost ~]# groupadd -g 1030 linuxgroup2[root@localhost ~]# more /etc/group|grep linuxgrouplinuxgroup:x:1020:[root@localhost ~]# more /etc/group|grep linuxgroup2linuxgroup2:x:1030:
2.newgrp命令
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换,语法格式为:
newgrp <用户组>
例子:下面通过实例讲述newgrp的用法:
首先建立了3个用户组group1、group2和group3.
[root@localhost ~]# groupadd group1[root@localhost ~]# groupadd group2[root@localhost ~]# groupadd group3
下面创建了一个用户user1,同时指定user1的主用户组为group1,附加用户组为group2和group3
[root@localhost ~]# useradd -g group1 -G group2,group3 user1[root@localhost ~]# more /etc/group|grep user1group2:x:501:user1group3:x:502:user1
下面是对用户user1设置密码
[root@localhost ~]# passwd user1Changing password for user user1.New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
下面是切换到user1用户下,通过newgrp切换用户组进行的一系列操作,从中可以看出newgrp的作用。
[root@localhost ~]# su - user1[user1@localhost ~]$ whoamiuser1[user1@localhost ~]$ mkdir user1_doc[user1@localhost ~]$ newgrp group2[user1@localhost ~]$ mkdir user2_doc[user1@localhost ~]$ newgrp group3[user1@localhost ~]$ mkdir user3_doc[user1@localhost ~]$ ll
total 12
drwxr-xr-x 2 user1 group1 4096 Oct 24 01:18 user1_docdrwxr-xr-x 2 user1 group2 4096 Oct 24 01:18 user2_docdrwxr-xr-x 2 user1 group3 4096 Oct 24 01:19 user3_doc[user1@localhost ~]$
3.groupdel命令
表示删除用户组,语法格式为:
groupdel [群组名称]
当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。
例如:删除linuxgroup这个用户组
[root@localhost ~]# groupdel linuxgroup
附:用户和组其他相关命令
设置/更改用户口令:
格式:passwd 用户名
id命令
用途:查询用户身份标识
格式:id [用户名]
users、w 、who命令
用途:查询已登录到主机的用户信息
su命令
用途:切换用户身份
格式:su - 用户名
- java程序员菜鸟进阶(十五)linux基础入门(三)linux用户和组管理
- java程序员菜鸟进阶(十七)linux基础入门(五)linux文件/目录的权限和归属管理
- java程序员菜鸟进阶(十七)linux基础入门(五)linux文件/目录的权限和归属管理
- java程序员菜鸟进阶(十四)linux基础入门(二)linux文件及目录命令管理
- java程序员菜鸟进阶(十四)linux基础入门(二)linux文件及目录命令管理
- java程序员菜鸟进阶(十六)linux基础入门(四)linux下VIM文本编辑器使用
- java程序员菜鸟进阶(十三)linux基础入门(一)vmvare下安装linux RedHat图解(超详细篇)
- java程序员菜鸟进阶(十三)linux基础入门(一)vmvare下安装linux RedHat图解(超详细篇)
- linux学习入门12——linux用户基础(linuxcast.net)(用户和组的管理和操作)
- Linux系统基础之三:Linux用户和用户组管理
- Linux基础入门(1):用户及文件权限管理
- Linux基础入门(第三弹:用户管理)
- java程序员菜鸟进阶(三)oracle基础详解(三)常用的SQL PLUS命令详解
- linux入门(用户和组账户管理)
- linux中的用户和组管理(进阶篇)
- linux入门:用户管理和目录管理
- Linux 基础操作(三)————vim进阶使用、输出及管理输出、管道、建立用户或用户组
- Java程序员从笨鸟到菜鸟之(十五)Html基础积累总结(下) .
- cookie与session
- 获取Android手机中所有的短信
- 在Andriod下架设phoneGap环境
- hdu1281 二分图匹配_必要边
- RTEMS IMFS文件根文件系统的初始化过程
- java程序员菜鸟进阶(十五)linux基础入门(三)linux用户和组管理
- 怎么让点击item的时候里面的button不会变换背景颜色,在点击具体的button时才变??
- 国外网站评出对程序员最具影响的书籍清单(2011)
- 取版本号
- c++中__declspec用法总结
- 统计查询
- python 进程单例,起停功能
- <Win32_1>深入浅出windows消息机制
- LeetCode(17) Letter Combinations of a Phone Number