1  Linux 用户与组

Linux是一个多用户多任务操作系统。多用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。

1.1  Linux下用户的角色分类

Linux用户的角色分为3类:

超级用户:拥有系统最高权限,默认是root。

普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限。如www用户、ftp用户。

虚拟用户:也称为“伪”用户。该类系统用户不能登录系统,例:系统默认的bin、adm、nobody用户等。一般运行的Web服务,默认就是使用nobody用户的,但是nobody用户是不能登录系统的。

1.2  用户和组的概

用户组

每个用户在都有一个初始用户组,表现为/etc/passwd的第4栏的GID。

基本组、附加组

组信息的文件存储在/etc/group与/etc/gshadow中。

以用户的角度来说,组的类型:

私有组:基本组

额外组:

计算机使用者有两个属性,用户名和用户id(UID)

管理员:root,UID和GID都固定为 0。

系统用户:供系统使用。用于维持系统或某个程序的正常运行,一般不允许登录,1~499的UID、GID默认保留给程序用户使用。

普通用户:一般只在用户自己的宿主目录中有完全权限,UID、GID号在500~65535之间。

UID和GID:UID(user identity),GID(group identify)

1.2.1  用户与组的关系

用户与组的对应关系有一对一,一对多,多对一,多对多。

1.3  用户和组相关配置文件

Linux的用户信息默认放在本地文本文件中。

跟用户和组相关的文件:

/etc/passwd: 用户的属性信息(不仅仅是密码信息);

/etc/shadow: 影子口令。只需要给管理员访问。

/etc/group: 组的属性信息;

/etc/gshadow: 组的密码;

1.3.1  /etc/passwd

该目录存储的是操作系统用户信息,该文件为所有用户可见。

该文件存放的是用户的信息,解释如下:

文件内容格式如下:

用户名 : 密码占位符 : UID : GID : 注释信息 : 家目录 : 默认shell

密码占位符通常表示为x。表示密码不存于本文件中,而是保存在shadow文件中。

例如:为系统添加一个用户名称叫做hadoop。并查看passwd文件。

1.3.2  /etc/shadow

用户影子文件,用于存储用户密码。该文件只有root用户拥有读权限。

文件内容格式如下:

登录名 : 加密的密码串 : 最近一次修改密码的时间 : 密码最短使用期限 : 密码最长使用期限 : 密码到期警告天数 : 帐号的非活动天数 : 帐号过期期限 : 预留段

1.3.3  /etc/group

用户组配置文件,用户组的所有信息都存放与此文件中。

文件内容格式如下:

组名 : 密码占位符 : GID : 以此组为额外组的用户列表(用户间用逗号分隔)

1.3.4  /etc/gshadow文件的格式

组名 : 密码栏 : 用户组管理员的帐号 : 用户组的所属帐号(与/etc/group相同)

2  用户管理命令

2.1  用户基本信息

2.1.1 显示用户id信息

id 用户名

-u 只显示用户uid

-g 只显示用户gid

-n 只显示名

-un, -gn  显示用户名,显示组名称。

2.1.2 finger命令

查找并显示用户信息。

2.2  用户组常用命令

2.2.1  groupadd命令 创建组

groupadd 组名称

常用参数:

-g GID:创建组的时候为其指定GID;该GID号必须唯一。不能与已存在的重复。

-o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

-r:创建系统组;

2.2.2  groupdel命令 删除组

若用户组中仍包括某些用户,则必须先删除掉这些用户,然后才能删除用户组。

例:删除linuxfans用户组。

groupdel linuxfans

2.2.3  newgrp命令 切换用户的所在主用户组

若一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便有其他用户组的权限。newgrp命令主要用于在多个用户组之间进行切换。

newgrp GROUP: 临时设定指定的组为自己的基本组;

例:通过如下实例演示newgrp的用法。

2.3  用户常用命令

2.3.1  useradd命令 添加用户(仅仅管理员可用)

useradd USERNAME

useradd的一些选项,通过选项可以定制用户。创建用户时为其创建同名组。称为用户的私有组,一般而言只为用户一个人而使用。

定制用户属性:

-u UID, 有效范围0-65535;

-g GID, 有效范围已有的GID;

-G GID, 有效范围为已有的GID;可以有多个,用逗号分隔;

-c COMMENT

-d /path/to/somewhere

-s /path/to/shell_command

-r: 创建系统用户, ID号范围为1-499之间的用户;系统用户的家目录不会被真正创建;

-M: 不为用户创建家目录;

-m: 必须为用户创建家目录;

useradd命令添加一个用户,用户信息的四个文件都会有改变。添加用户后,passwd文件会多出一条数据,其规则如下:

UID:已有最大UID+1

GID:/etc/group中已有最大GID+1,如果没有给用户指定基本组,且其UID相同的GID号未被占用,则GID同UID;

注释信息:空

家目录:/home/USERNAME

shell:/bin/bash

2.3.2  usermod命令 修改用户属性

# usermod [-cdegGlsuLU] username

常用选项:

-u UID

-g GID

-a -G GID: -G修改额外组时会覆盖原有的额外组,同时使用-a选项则能保留原有的额外组;(append,追加)

-c COMMENT

-s /PATH/TO/SHELL

-l NEW_NAME: 改用户的登录名称;

-m -d /path/to/somewhere:-d只修改家目录指向,同时使用-m选项则可实现将原来家目录移动为新的家目录;

2.3.3  userdel命令 删除用户

userdel [options] USERNAME

常用选项:

-r:一并删除用户的家目录。若无该选项,则删除用户,但不删除家目录。

2.3.4  usermod命令 修改用户帐号

usermod可用来修改用户帐号的各项设定。该命令不允许改变正在线上的使用者帐号名称。

-c<备注>  修改用户帐号的备注文字。

-d登入目录>  修改用户登入时的目录。

-e<有效期限>  修改帐号的有效期限。

-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

-g<群组>  修改用户所属的群组。

-G<群组>  修改用户所属的附加群组。

-l<帐号名称>  修改用户帐号名称。

-L  锁定用户密码,使密码无效。

-s<shell>  修改用户登入后所使用的shell。

-u<uid>  修改用户ID。

-U  解除密码锁定。

例:

1、将 newuser2 添加到组 staff 中

# usermod -G staff newuser2

2、修改 newuser 的用户名为 newuser1

# usermod -l newuser1 newuser

3、锁定账号 newuser1

# usermod -L newuser1

4、解除对 newuser1 的锁定

# usermod -U newuser1

3  密码管理

3.1  passwd密码 修改用户密码

修改当前用户的密码;

passwd USERNAME

常用选项:

-l: 锁定用户帐号。不允许指定用户登录。

-u: 解锁。

-e

-n: 密码最短使用天数;

-x:最长使用天数;

-w: 警告天数;

-i: 非活动时长;

3.2  密钥属性的修改

chage

-d: 修改密码的最近一次修改时间

-m, --mindays MIN_DAYS:最短使用期限;

-M, --maxdays MAX_DAYS:最长使用期限;

-W, --warndays WARN_DAYS:警告天数;

-I, --inactive INACTIVE:非活动天数;

-E, --expiredate EXPIRE_DATE:过期时间;

3.3  修改用户组的密码

gpasswd: 为组设定密码;

例:

范例一:完全参考默认值创建一个用户,名称为 vbird1

[root@www ~]# useradd vbird1

[root@www ~]# ll -d /home/vbird1

drwx------ 4 vbird1 vbird1 4096 Feb 25 09:38 /home/vbird1

# 默认会创建用户家目录,且权限为 700 !这是重点!

[root@www ~]# grep vbird1 /etc/passwd /etc/shadow /etc/group

/etc/passwd:vbird1:x:504:505::/home/vbird1:/bin/bash

/etc/shadow:vbird1:!!:14300:0:99999:7:::

/etc/group:vbird1:x:505:    <==默认会创建一个与账号一模一样的群组名

1、创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux;

# groupadd linux

# groupadd -g 3003 distro

# useradd -u 2002 -g distro -G linux mandriva

2、创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh;

# useradd -c "Fedora Community" -s /bin/tcsh fedora

3、修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora;

# usermod -u 4004 -g linux -G distro,fedora mandriva

4、给fedora加密码,并设定其密码最短使用期限为2天,最长为50天;

# passwd fedora

# chage -m 2 -M 50 fedora

5、将mandriva的默认shell改为/bin/bash;

# usermod -s /bin/ash mandriva

4  转换用户

4.1  su命令 转换用户

su (switch user)命令 切换当前用户

su USERNAME

su -l USERNAME

su - USERNAME

管理员su到普通用户,不需要密码;反之,不成;

4.2  退出当前用户

exit 该命令会推出当前用户,转换为之前登录的用户。

Linux 用户与用户组的更多相关文章

  1. Linux 用户和用户组管理

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  2. Linux用户与用户组,UID及GID

    以下列出文章: Linux系统下如果查看用户的UID和GID:http://blog.csdn.net/ahangliu/article/details/7567444 Linux的用户和用户组管理: ...

  3. linux用户及用户组操作

    Linux用户.用户组权限管理详解 Linux用户管理三个重要文件详解: Linux登陆需要用户名.密码./etc/passwd 文件保存用户名.登录Linux时,Linux 先查找 /etc/pas ...

  4. 八、Linux 用户和用户组管理

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  5. linux用户和用户组管理详解

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  6. Linux用户与用户组

    Linux用户与用户组 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助系统管 ...

  7. Linux 用户和用户组管理(useradd userdel groupadd groupdel)

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. Linux系统用户账户的 ...

  8. linux 用户、用户组不能是全数字

    今天封装命令行,需要创建用户.用户组,遇到下面问题,如图: 当时我和迷茫,为什么明明存在‘1111’这个用户组,但是却提示不存在呢??难道是linux的一个bug??? 接着我又试了几个: 发现规律了 ...

  9. Linux 用户和用户组操作

    [认识/etc/passwd和/etc/shadow] 这两个文件可以说是linux系统中最重要的文件之一.如果没有这两个文件或者这两个文件出问题,则你是无法正常登录linux系统的. /etc/pa ...

随机推荐

  1. 从零开始学习MySQL3---数据库的基本操作

    创建数据库 MySQL安装完成后,将会在其Data目录下自动创建几个必需的数据库 可以用  SHOW DATABASES: 来查看当前存在的数据库 创建数据库是在系统磁盘上划分一块区域用于数据的存储和 ...

  2. struts中如何将前台的值能在action中获取到

    如何获取值----三种方式(属性驱动,对象驱动,模型驱动)  A:属性驱动 必须生成get,set方法  B:对象驱动 给对象也必须生成get,set方法  c模型驱动 模型驱动需要action去实现 ...

  3. encodeURL() vs encodeRedirectURL()

    当用URL重写方式来管理Session的时候,通过以上两个方法把session ID写到URL中.不同点是:两个方法确定是否需要包含session ID的逻辑不同.在调用HttpServletResp ...

  4. linux RWT

    http://www.cnblogs.com/qlwy/archive/2011/06/26/2121919.html#undefined

  5. 基于android的Socket通信

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户 ...

  6. 利用no_merge优化

    SQL> select a.unit3_code 机构编码, 2 a.unit3_name 机构名称, 3 a.dept1_code 部门编码, 4 a.dept1_name 部门名称, 5 a ...

  7. 【PPC】Qemu怎么玩儿

    1. 编译Qemu这里不建议使用自动安装,手工编译下.Qemu源代码的质量很高,什么环境都能编译过.tar -xzvf qemu.tar.gzmkdir build-qemucd build-qemu ...

  8. 【HDOJ】前三百留念

    4个月不到的时间,终于刷到了HDOJ前三百.肯定还不够,好多基本的算法还不了解.还得继续学习.以此留念,假期目标是前一百.

  9. 【HDOJ】1892 See you~

    wa了十次,原来变量名写错.二维树状数组. #include <cstdio> #include <cstring> #define MAXN 1002 int nums[MA ...

  10. HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)

    Problem Description 杭州师范大学第29届田径运动会圆满的闭幕了,本届运动会是我校规模最大,参赛人数最多的一次运动会.在两天半时间里,由学生.教工组成的61支代表队共2664名运动员 ...