linux命令用户和用户组

useradd

  useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码。而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。

  1. 语法   useradd(选项)(参数)  
  2. 选项   - c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;     - d<登入目录>:指定用户登入时的启始目录;     - D:变更预设值;     - e<有效期限>:指定帐号的有效期限;     - f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;     - g<群组>:指定用户所属的群组;     - G<群组>:指定用户所属的附加群组;     - m:自动建立用户的登入目录;     - M:不要自动建立用户的登入目录;     - N:取消建立以用户名称为名的群组;     - r:建立系统帐号;     - s:指定用户登入后所使用的shell;     - u:指定用户id。  
  3. 参数   用户名:要创建的用户名。  
  4. 实例   useradd -d /user/test -m test; 添加一个用户test,并指定目录  

passwd

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

  1. 语法   passwd(选项)(参数)  
  2. 选项   -d:删除密码,仅有系统管理者才能使用;     -f:强制执行;     -k:设置只有在密码过期失效后,方能更新;     -l:锁住密码;     -S:列出密码的相关信息,仅有系统管理者才能使用;     -u:解开已上锁的帐号  
  3. 参数   用户名:需要设置密码的用户名。  
  4. 实例
     ➜  ~ sudo passwd test
     输入新的 UNIX 密码:
     重新输入新的 UNIX 密码:
     passwd:已成功更新密码
     ➜  ~
    

  普通用户如果想更改密码直接运行 passwd 即可。  

usermod

usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。  

  1. 语法   usermod(选项)(参数)  
  2. 选项   -c<备注>:修改用户帐号的备注文字;   -d<登入目录>:修改用户登入时的目录;   -e<有效期限>:修改帐号的有效期限;   -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;    -g<群组>:修改用户所属的群组;     -G<群组>;修改用户所属的附加群组;     -l<帐号名称>:修改用户帐号名称;     -L:锁定用户密码,使密码无效;     -s:修改用户登入后所使用的shell;     -u:修改用户ID;     -U:解除密码锁定。  
  3. 参数   登录名:指定要修改信息的用户登录名。  
  4. 实例   usermod -G tests test; 将test添加到组tests中(!会清空以前添加的组);     usermod -G -a tests test; 将test添加到组tests中(在原有的组上追加);     userdel -l testUser test; 将test修改为testUser。 

userdel

userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

  1. 语法 userdel(选项)(参数)
  2. 选项 -f:强制删除用户,即使用户当前已登录; -r:删除用户的同时,删除与用户相关的所有文件(他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份)。
  3. 参数 用户名:要删除的用户名。
  4. 实例 userdel test; 删除用户linuxde,但不删除其家目录及文件; userdel -r test; 删除用户linuxde,其家目录及文件一并删除。

groupadd

groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

  1. 语法 groupadd(选项)(参数)
  2. 选项 -g:指定新建工作组的id; -r:创建系统工作组,系统工作组的组ID小于500; -K:覆盖配置文件“/ect/login.defs”; -o:允许添加组ID号不唯一的工作组。
  3. 参数 组名:指定新建工作组的组名。
  4. 实例 groupadd -g 515 test; 添加组id为515的组。

gpasswd

gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow管理工具。

  1. 语法 gpasswd(选项)(参数)
  2. 选项 -a:添加用户到组; -d:从组删除用户; -A:指定管理员; -M:指定组成员和-A的用途差不多; -r:删除密码; -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
  3. 参数 组:指定要管理的工作组。
  4. 实例 groupadd -a test tests; 将test用户添加到tests组,并且保留以前添加的用户组。

groupmod

groupmod更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

  1. 语法 groupmod(选项)(参数)
  2. 选项 -g<群组识别码>:设置欲使用的群组识别码; -o:重复使用群组识别码; -n<新群组名称>:设置欲使用的群组名称。
  3. 参数 组名:指定要修改的工作的组名。
  4. 实例 groupadd -g 1001 test; 将test的组id修改为1001。

groupdel

groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

  1. 语法 groupdel(参数)
  2. 参数 组名:要删除的工作组名。
  3. 实例 groupdel test; 删除test组。

id

id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。

  1. 语法 id [-gGnru][--help][--version][用户名称]
  2. 选项 -g或–group   显示用户所属群组的ID。 -G或–groups 显示用户所属附加群组的ID。 -n或–name   显示用户,所属群组或附加群组的名称。 -r或–real   显示实际ID。 -u或–user   显示用户ID。 -help   显示帮助。 -version   显示版本信息。
  3. 实例 ` id testUser uid=1001(testUser) gid=100(users) 组=100(users)` ;

finger

finger命令用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。

  1. 语法 finger(选项)(参数)
  2. 选项 -l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容; -m:排除查找用户的真实姓名; -s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话; -p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。
  3. 参数 用户名:指定要查询信息的用户。

su

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

  1. 语法 su(选项)(参数)
  2. 选项 c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份; -f或——fast:适用于csh与tsch,使shell不用去读取启动文件; -l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量; -m,-p或--preserve-environment:变更身份时,不要变更环境变量; -s或--shell=:指定要执行的shell; --help:显示帮助; --version;显示版本信息。
  3. 参数 用户:指定要切换身份的目标用户
  4. 实例 su -c ls root ;变更帐号为root并在执行ls指令后退出变回原使用者。

linux 用户理解

我们识别用户是通过用户名,因为用户名(字符串)好记。而计算机觉得数字更好记一些,于是在创建用户时系统会为其分配一个唯一的特征码,用以识别该用户,这个特征码也叫UID。同样的,用户组也有特征码,叫做GID。

  1. Linux 系统中,UID以如下的方式划分:

    • 0 表示管理员(root)
    • 1 - 500 表示系统用户
    • 501 - 65535 表示普通用户
    • 不同的 Linux 发行版,这些数字可能不一样
  2. /etc/passwd 中的字段分别表示如下信息:

    • ACCOUNT:用户名
    • PASSWORD:密码占位符
    • UID:用户ID
    • GID:用户组ID
    • COMMAND:注释信息
    • HOME DIR:用户家目录
    • SHELL:用户的默认 shell
  3. /etc/shadow文件格式与/etc/passwd文件格式类似,同样由若干个字段组成,字段之间用“:”隔开。 通过命令行输入sudo cat /etc/shadow进行文件内容查看:

     root:!:17043:0:99999:7:::
     daemon:*:16652:0:99999:7:::
     mysql:!:17048:0:99999:7:::
     rayle:$6$3j2EeWmN$N6IMUSg78kZZx.vgPwFyaRM1D25mV4ShTPSF/Ct/5NjGBN1RAfjkbH6AzItfhXiesVfUa6pU9MDWMZwF.V7uk0:17212:0:99999:7:::
    

文件中字段主要含义为:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

1. “登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2. “口令”字段存放的是加密后的用户口令字:
    * 如果为空,则对应用户没有口令,登录时不需要口令;
    * 星号或感叹号代表帐号被锁定;
    * 双叹号表示这个密码已经过期了;
    * $6$开头的,表明是用SHA-512加密;
    * $1$表明是用MD5加密;
    * $2$ 是用Blowfish加密;
    * $5$ 是用 SHA-256加密;
    “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。

3. “最小时间间隔”指的是两次修改口令之间所需的最小天数。
4. “最大时间间隔”指的是口令保持有效的最大天数。
5. “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
6. “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
7. “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
Table of Contents