Linux用户和组管理

Posted 一叶知秋~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户和组管理相关的知识,希望对你有一定的参考价值。

用户user

令牌token,identity

Linux用户:Username/UID

管理员:root, 0

普通用户:1-60000 自动分配

系统用户:1-499, 1-999 (CentOS7)

对守护进程获取资源进行权限分配

登录用户:500+, 1000+(CentOS7)

交互式登录

 

组group

Linux组:Groupname/GID

管理员组:root, 0

普通组:

系统组:1-499, 1-999(CENTOS7)

普通组:500+, 1000+(CENTOS7)

 

安全上下文

Linux安全上下文

运行中的程序:进程 (process)

以进程发起者的身份运行:

root: /bin/cat

wang: /bin/cat

进程所能够访问资源的权限取决于进程的运行者的身份

 

组的类别

Linux组的类别

用户的主要组(primary group)

  用户必须属于一个且只有一个主组

  组名同用户名,且仅包含一个用户,私有组

用户的附加组(supplementary group)

  一个用户可以属于零个或多个辅助组

 

用户和组的配置文件

Linux用户和组的主要配置文件:

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)等价于getent passwd

/etc/group:组及其属性信息   等价于 getent group

/etc/shadow:用户密码及其相关属性  等价于getent shadow

/etc/gshadow:组密码及其相关属性   等价于 getent gshadow

 

passwd文件格式

login name:登录用名(wang)

passwd:密码 (x)

UID:用户身份编号 (1000)

GID:登录默认所在组编号 (1000)

GECOS:用户全名或注释

home directory:用户主目录 (/home/wang)

shell:用户默认使用shell (/bin/bash)

 

 

shadow文件格式

登录用名

用户密码:一般用sha512加密

从1970年1月1日起到密码最近一次被更改的时间

密码再过几天可以被变更(0表示随时可被变更)

密码再过几天必须被变更(99999表示永不过期)

密码过期前几天系统提醒用户(默认为一周)

密码过期几天后帐号会被锁定

从1970年1月1日算起,多少天后帐号失效

 

 

 用户切换

  • su username: 非登录切换,不会读取目标用户的配置文件
  • su - username:登陆切换,会读取目标用户配置文件,完全切换

 

 useradd命令

useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码。

而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

useradd(选项)(参数)

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;

-d<登入目录>:指定用户登入时的启始目录;

-D:变更预设值;

-e<有效期限>:指定帐号的有效日期;

-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;

-g<群组>:指定用户所属的群组;

-G<群组>:指定用户所属的附加群组;

-m:自动建立用户的登入目录;

-M:不要自动建立用户的登入目录;

-n:取消建立以用户名称为名的群组;

-r:建立系统帐号;

-s<shell>:指定用户登入后所使用的shell;

-u<uid>:指定用户id。

userdel命令

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

userdel(选项)(参数)

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件,会删除家目录信息。

示例:
userdel -r wang  删除wang的所有信息,如果不跟r,只删除wang账号,相关的文件信息不删除

注:请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

 

usermod命令

usermod命令用于修改用户的基本信息。

usermod(选项)(参数)

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

-d<登入目录>:修改用户登入时的目录;

-e<有效期限>:指定账号的有效日期;

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

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

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

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

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

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

-u<uid>:修改用户ID;

-U:解除密码锁定。 

示例:

[root@centos7data]#useradd wang
[root@centos7data]#usermod -G liu wang  给wang加入liu的附加组
[root@centos7data]#id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang),1000(liu)
[root@centos7data]#useradd mama
[root@centos7data]#usermod -aG mama wang   如果想再追加新mama附加组,需要加上-a否则会把之前的附加组清掉,比较重要
[root@centos7data]#id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang),1000(liu),1002(mama)

groupadd命令

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

groupadd(选项)(参数)

-g:指定新建工作组的id;

-r:创建系统工作组,系统工作组的组ID小于500;

-K:覆盖配置文件“/ect/login.defs”;

-o:允许添加组ID号不唯一的工作组。

groupdel 删除创建的组

示例:

groupdel wang  删除wang组 

 

groupmod 修改组

-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:修改当前的组名

passwd用法:

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

实例:如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。

[root@localhost ~]# passwd linuxde    //更改或创建linuxde用户的密码;

Changing password for user linuxde.

New UNIX password:          //请输入新密码;

Retype new UNIX password:   //再输入一次;

passwd: all authentication tokens updated successfully. //成功

普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。

[linuxde@localhost ~]$ passwd

Changing password for user linuxde. //更改linuxde用户的密码;

(current) UNIX password:   //请输入当前密码;

New UNIX password:         //请输入新密码;

Retype new UNIX password:  //确认新密码;

passwd: all authentication tokens updated successfully. //更改成功;

注:也可以直接用以下方法直接输入密码更改密码
echo centos | passwd --stdin linuxde    其中centos为密码,而linuxed为用户账号

gpasswd用法

-a:添加用户到组;

-d:从组删除用户;

-A:指定管理员;

-M:指定组成员和-A的用途差不多;

-r:删除密码;

-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。 

实例:

gpasswd  -a  liu  wang 将liu加入到wang的附加组里 

chsh用法:

chsh命令用来更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。

chsh(选项)(参数)

-s<shell 名称>或--shell<shell 名称>:更改系统预设的shell环境。;

-l或--list-shells:列出目前系统可用的shell清单;

-u或--help:在线帮助;

-v或-version:显示版本信息。 

实例:

chsh –s /bin/bash  将shell类型改为/bin/bash类型

 

chage命令

chage命令是用来修改帐号和密码的有效期限。

chage [选项] 用户名

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-w:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:上一次更改的日期。

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

newusers 命令用于批量创建用户:

  • newusers  users.txt  其中users.txt为用户名,即可以批量创建用户。

newgrp   临时切换主组

chpasswd 修改密码:

  • chpasswd  user:centos   user代表用户名,centos代表密码。
  • echo user:centos | chpasswd 

 

1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录

答:  ls –d /etc/[^[:alpha:]]*[[:alpha:]] 或者ls –d /etc/[^a-zA-Z]*[[:alpha:]]

演示:

[root@centos6etc]#ls -d /etc/[^a-zA-Z]*[[:alpha:]]

/etc/1b

[root@centos6etc]#ls -d /etc/[^[:alpha:]]*[[:alpha:]]

/etc/1b

2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

答:mkdir /tmp/mytest1

cp -r  /etc/p*[^[:digit:]]  /tmp/mytest1/ 
3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

答:tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out

4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
   (1)、创建组distro,其GID为2019;

    groupadd  –g 2019  distro
   (2)、创建用户mandriva, 其ID号为1005;基本组为distro;

    useradd  -u 1005 –g disro mandriva


   (3)、创建用户mageia,其ID号为1100,家目录为/homenux;

   useradd -u 1100 -d /homenux mageia

   查询结果:[root@centos7~]#getent passwd mageia

   mageia:x:1100:1100::/homenux:/bin/bash

   (4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期

   echo mageedu |passwd --stdin mageia && chage  -E  7 mageia
   (5)、删除mandriva,但保留其家目录;

   useradd mandriva

    userdel mandriva

   (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

   useradd –u 2002 –g distro –G peguin slackware
   (7)、修改slackware的默认shell为/bin/tcsh;

   useradd slackware

   chsh –s /bin/tcsh  slackware  或者用usermod  -s /bin/tcsh slackware

  修改结果:

  slackware:x:1101:1101::/home/slackware:/bin/tcsh
   (8)、为用户slackware新增附加组admins; 

   第一种创建方法:

  useradd slackware

  groupadd admins

  [root@centos7~]#usermod -G admins slackware

 

 第二种创建方法:

  useradd slackware

  groupadd admins

  [root@centos7~]#groupmems -a slackware -g admins

  [root@centos7~]#id slackware

  uid=1101(slackware) gid=1101(slackware) groups=1101(slackware),2021(admins) 

 

  第三种创建方法:

  useradd slackware

  groupadd admins

  [root@centos7~]#gpasswd -a slackware admins                                         

 

1)usermod -G "" slackware   清空附加组

2)usermod  -G  slackware   slackware清空附加组

 

以上是关于Linux用户和组管理的主要内容,如果未能解决你的问题,请参考以下文章

linux系统用户和组管理

用户和组管理用户和组管理

Linux用户和组管理

Linux用户和组的管理

管理Linux服务器的用户和组

Linux系统管理之用户和组配置文件