澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:CentOS用户组和权限管理,

2019-10-12 作者:澳门新萄京官方网站   |   浏览(192)
一、用户管理命令

![Uploading qq_477481.jpg . . .]

用户和组

Linux用户管理各命令的使用

unix的元年为1970年的1月1日

现行的各个版本的系统,无论是win还是linux大都遵循3A用户及权限管理机制即(Authencattion 身份认证机制、Authorzation 授权、Accounting 审计)

澳门新萄京官方网站 1

如图,当用户输入用户名密码后,系统通过查找passwd文件中相对应的UID,GID,以及所属组的信息,确认用户存在与否,如果存在,那么登陆账户,执行操作,如果没有,那么重新登陆。

[[email protected] ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

以上内容为我passwd中相关root的信息,其从左至右依次为username,password,uid,gid,GECOS,homefile,shell。

username 不用多说,基本上都知道,根据角色,权限都会用不同的username

password 经过加密的密码文件信息,在Centos5.x及以下用到的加密方式为md5,但在Centos6及 以上好像用的加密方式是sha512,并保存在/etc/shadow文件下

UID 用户的ID号码,机器通过ID号码查找你的用户名及密码信息是否正确,个数为0-65535个

其中普通用户:1-60000

系统用户:

CentOS6: 1-499

CentOS7:1-999

登录用户:

CentOS6: 500

CentOS7: 1000

GID GroupName组ID,用于分配用户的权限及角色,它的主要配置文件为/etc/gshadow 和/etc/group,一些公司的邮件系统基本上都是使用的这个来区分职能,linux对于组的分 配:

管理员组:0

普通组:

Centos6.X:1-499

Centos7.X:1-999

登陆用户:

Centos6.X:500

Centos7.X:1000

GECOS 用户的一些详细信息

HOMEFILE 家目录,存放一些个人角色用户的文件

SHELL 用户默认shell

注:/etc/shadow文件管理的是用户的密码信息,为单向不可逆文件,如以下代码文件:

澳门新萄京官方网站 2其格式为:

login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field

他的数据分别以":"或者"$"间隔开来

用户和组管理的相关命令:

useradd、usermod、passwd、userdel

groupadd、groupmod、gpasswd、groupdel

chage, chsh, chfn

id, w, who, whoami

su

useradd:创建用户

useradd [options] LOGIN

useradd -D [options]

-r: 创建系统用户

-u UID: 指定UID;

-g GID: 指定用户所属基本组,此组必须事先存在

-c 'COMMENT':

-d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先 存在,否则,其用户相关配置文件将被 复制;/etc/skel

-s SHELL:设定用户的默认shell;

cat /etc/shells

-G GID,...:指定所属的附加组;

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

groupadd:创建组

groupadd [OPTIONS] GROUPNAME

-g GID: 指明组ID;

-r: 创建系统组;

[[email protected] ~]# groupadd database

[[email protected] ~]# groupadd sql

id:查看用户相关的id信息;

id [OPTION]... [USER]

-u: UID

-g: GID

-G: Groups

-n: NAME

[[email protected] ~]# id -G Oracle

3000 501 502

su:switch user, 切换用户或以其它用户的身份执行命令;

切换方式:

su USERNAME: 非完全切换;非登录式切换

su - USERNAME或su -l USERNAME: 完全切换;登录式切换

仅以指定用户的身份执行指定的命令:

su - USERNAME -c 'COMMAND'

usermod:用户属性修改

usermod [OPTION]... LOGIN

-u UID

-g GID

-G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项;

-s SHELL

-c 'COMMENT'

-d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被 移动至新家;-m选项可实现同时将其迁至新的家目录;

-l LOGIN:

-L:lock user

-U: unlock user

[[email protected] ~]# useradd nicai

[[email protected] ~]# usermod -l Oralce nicai

[[email protected] ~]# cat /etc/passwd

Oracle:x:3000:3000::/home/database:/bin/bash

Oralce:x:3001:3001::/home/nicai:/bin/bash

passwd:给用户添加密码

passwd [OPTION] [UserName]

-l: lock user

-u: unlock user

-n mindays: 最短使用期限;

-x maxdays:默认为99999天;

-w warndays:

-i inactivedays:

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

echo 'centos' | passwd --stdin centos

userdel:删除用户

userdel [-r] USERNAME

-r:删除用户的同时删除其家目录;

澳门新萄京官方网站 3

groupmod: 组属性修改

groupmod [OPTION] GROUPNAME

-n GROUP_NAME

-g GID

gpasswd:设定组密码

newgrp:切换基本组为指定的组

groupdel:删除组

chage:修改用户账号及密码的属性

chage [OPTION]... LOGIN

其它命令:chfn, chsh, finger, whoami, who

例如:

创建用户Oracle,所属附加组database和sql,ID号为3000, 家目录为/home/database;

[[email protected] ~]# useradd Oracle -G database,sql -u 3000 -d /home/database
澳门新萄京官方网站 4

unix的元年为1970年的1月1日 现行的各个版本的系统,无论是win还是linux大都遵循3A用户及权限管理机制即(Authen...

CentOS用户组和权限管理

# 用户组和权限管理

## 概念

用户分为三类:

1、超级用户:root uid=0,简单来说uid为0的用户就是超级用户。

2、虚拟用户:存在linux中,满足文件或者程序运行的需要,而创建的。不能登录,不能使用。uid=1-499,1-999(centos7)

3、普通用户:管理员root创建的用户。uid=500 ,1000 (centos7)

用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组的目的方便管理员对用户进行集中管理。用户组也分为两类:系统组和普通组。

用户和用户组的关系:

一对一:一个用户存在一个组,也可以是组中唯一成员

一对多:一个用户属于多个组,只有一个主组,其余为附加组

多对一:多个用户存在于一个组

多对多:多个用户可以存在多个组

下图中每一个方框代表一个组,每个图代表一个用户,可以方便我们理解用户和组的关系。

澳门新萄京官方网站 5

## 用户及用户组配置文件介绍

/etc/passwd 用户及其属性信息

我们可以使用cat命令查看配置文件,下图截取了一部分。

澳门新萄京官方网站 6

第一列(以冒号为分隔符):用户名

第二列:密码位

第三列:UID号 CentOS6 1-499为系统用户,预留

CentOS7 1-999为系统用户,预留

第四列:GID号 主组和辅助组

第五列:用户全名或注释

第六列:用户的家目录

第七列:用户默认的shell类型

#

/etc/group 组及其属性信息

澳门新萄京官方网站 7

第一列:组名称

第二列:组密码,通常不需要设定

第三列:GID CentOS6 1-499为系统组,预留

CentOS7 1-999为系统组,预留

第四列:以该组为附加组的用户列表

#

/etc/shadow 用户密码及其相关属性

澳门新萄京官方网站 8

第一列:用户名

第二列:密码位 $加密方式$salt$password

!!代表账户被锁定

第三列:更改密码时间(天数计算)---距离1970年1月1号时间

第四列:密码最短口令有效期

第五列:口令过期时间,更改口令往后的时间

第六列:口令到期前提前多少天提醒

第七列:口令过期后多少天账户过期

第八列:帐号的有效期

#

/etc/gshadow 组密码及其相关属性

澳门新萄京官方网站 9

第一列:组名

第二列:组密码

第三列:管理员列表,可以更改组密码和成员

第四列:将该组作为辅助组的成员列表

## 用户和组管理命令

###用户管理命令

useradd

-u uid 创建用户时指定uid

-g gid 指明用户所属基本组

-c 用户的注释信息

-M 不建家目录

-s 指定用户的默认shell

-e 用户过期时间

-G 为用户指明附加组,组须事先存在

案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"。

[[email protected] ~]#useradd gentpp -G bin,root -s /bin/csh -c "Gentoo Distribution"

[[email protected] ~]#cat /etc/passwd|tail -n1 #查看/etc/passwd最后一行

[[email protected] ~]#id gentpp

uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)

#

创建用户时默认值设定存放于/etc/default/useradd

[[email protected] ~]#cat /etc/default/useradd

# useradd defaults file

GROUP=100

HOME=/home #把用户的家目录建在/home中

INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用

EXPIRE= #帐号终止日期,不设置表示不启用

SHELL=/bin/bash #新用户默认所用的shell类型

SKEL=/etc/skel #配置新用户家目录的默认存放路径。当我们用useradd添加用户时,

用户家目录下的文件,都是从这里配置的目录中复制过去的。下面会详细解释一下/etc/skel

CREATE_MAIL_SPOOL=yes #创建mail文件

#

/etc/login.defs文件是用来定义创建用户时所需要的一些用户的配置信息。如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。

下面是centos7版本的/etc/login.defs文件内容

#QMAIL_澳门新萄京官方网站,DIR Maildir

MAIL_DIR /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件

#MAIL_FILE .mail

# Password aging controls:

# PASS_MAX_DAYS Maximum number of days a password may be used.

# PASS_MIN_DAYS Minimum number of days allowed between password changes.

# PASS_MIN_LEN Minimum acceptable password length.

# PASS_WARN_AGE Number of days warning given before a password expires.

PASS_MAX_DAYS 99999 #一个密码最长可以使用的天数

PASS_MIN_DAYS 0 #更换密码的最小天数

PASS_MIN_LEN 5 #密码的最小长度

PASS_WARN_AGE 7 #密码失效前提前多少天开始警告

# Min/max values for automatic uid selection in useradd

UID_MIN 1000 #最小UID为1000,也就是说添加用户时,UID从1000开始分配

UID_MAX 60000 #最大UID为60000

# System accounts

SYS_UID_MIN 201 #系统用户UID最小为201

SYS_UID_MAX 999 #系统用户UID最大为999

# Min/max values for automatic gid selection in groupadd

GID_MIN 1000 #GID的范围为1000-60000。同上面UID情况

GID_MAX 60000

# System accounts

SYS_GID_MIN 201 #系统GID的范围是201-999

SYS_GID_MAX 999

# useradd command line.

CREATE_HOME yes #是否创建家目录,默认要求创建;可用-m参数控制

# The permission mask is initialized to this value. If not specified,

# the permission mask will be initialized to 022.

UMASK 077 #默认权限

# This enables userdel to remove user groups if no members exist.

USERGROUPS_ENAB yes #删除用户同时删除用户组

# Use SHA512 to encrypt password.

ENCRYPT_METHOD SHA512 #SHA512密码加密

#### 补充一点

/etc/skel的作用:/etc/skel目录使用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的文件都是隐藏文件;用过修改、添加、删除/etc/skel目录下的问及爱你,我们可以为新创建的用户提供统一的,标准的、初始化用户环境。

#

usermod

-u UID: 新UID

-g GID: 新主组

-G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项

-s 新的默认SHELL

-c 新的注释信息

-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

-l login_name: 新的名字

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

-U: unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁

案例:修改gentpp的默认shell和描述信息

[[email protected] ~]#cat /etc/passwd | tail -n1

gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh

[[email protected] ~]#usermod -s /bin/sh gentpp

[[email protected] ~]#cat /etc/passwd | tail -n1

gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh

#

userdel

-r 删除用户时,连同其家目录,mail一同删除

#

getent passwd ==cat /etc/passwd #查看用户信息,后面可直接跟用户名

[[email protected] ~]#getent passwd ma

ma:x:1000:1000:ma:/home/ma:/bin/bash

#

id

-u: 显示UID

-g: 显示GID

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

-n: 显示名称,需配合ugG使用

案例:

[[email protected] ~]#id gentpp

uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)

[[email protected] ~]#id -u gentpp

1007

[[email protected] ~]#id -g gentpp

1008

[[email protected] ~]#id -G gentpp

1008 0 1

[[email protected] ~]#id -nG gentpp

gentpp root bin

#

su 切换用户或以其他用户身份执行命令

1、su 非登录式切换,不会读取目标用户的部分配置文件,不改变当前工作目录

2、su - 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

3、root使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码

#

passwd 修改指定用户的密码,仅root用户权限

-l:锁定指定用户

-u:解锁指定用户

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

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

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-i inactivedays:非活动期限

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

案例:修改ma的密码

[[email protected] ~]#echo maguofu |passwd --stdin ma

Changing password for user ma.

passwd: all authentication tokens updated successfully.

注意:一次只能修改一个用户密码,不能批量修改。

#

###组帐号管理命令

#

groupadd

-g 创建指定gid的组

-r 创建系统组 CentOS 6: ID<500

CentOS 7: ID<1000

#

groupmod

-n newgrpname oldgrpname 修改组名

-g newgid groupname 修改gid

#

groupdel

groupdel 组名 删除组

#

gpasswd

-a user 将user添加至指定组中

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

例如: [[email protected] ~]#gpasswd -a ma -g zhu

Adding user ma to group zhu #将用户ma添加到组zhu中

[[email protected] ~]#gpasswd -d ma -g zhu

Removing user ma from group zhu #将用户ma从组zhu中删除

#

groupmems[options] [action]

options

-g 更改为指定组

actions

-a 指定用户加入组

-d 从组中删除用户

-p 从组中清除所有成员

-l 显示组成员列表

案例:

[[email protected] ~]#groupmems -g admins -a ma

[[email protected] ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中

[[email protected] ~]#groupmems -g admins -l #查看admins中的用户列表

ma zhu

[[email protected] ~]#groupmems -g admins -d ma #将ma从admins中删除

[[email protected] ~]#groupmems -g admins -l

zhu

[[email protected] ~]#groupmems -g admins -p #清空admins中的所有组成员

[[email protected] ~]#groupmems -g admins -l

#

groups 查看用户所属组列表

[[email protected] ~]#groups ma

ma : ma

[email protected] ~]#groups zhu

zhu : zhu

#

##文件权限

###文件属性

通过ls -li可查看文件的长格式信息,我们取出一个进行解释

[[email protected] /]#ls -li

64 dr-xr-xr-x. 4 root root 4.0K Jul 14 11:33 boot

第1列:inode号

第2列:第1个字符代表文件的类型(-是普通文件,d是目录等等)

第2-10个字符代表文件权限,前三个是用户的权限、中间三个用户组的、后面其他用户的权限

第11个字符.与SELINUX相关,暂时不做描述

第3列:文件的硬连接数

第4列:文件对应的属主或者用户

第5列:文件对应的属组或者用户组

第6列:文件大小

第7列:文件最后的修改的时间

第8列:文件名

#

###修改文件属主和属组

chown 修改文件的属主(也可以改组)

用户 文件或者目录 <==仅仅授权用户

:组 文件活目录 <==仅仅授权组

用户:组 文件或目录 <==表示授权用户和组

-R 递归

--reference=源文件 目标文件

强调:

1)其中的冒号“:”可以用点好“.”代替

2)要授权的用户和组名,必须是linux系统里实际存在的

案例:

[[email protected] app]#ll

-rw-r--r--. 1 root root 0 Jul 29 16:27 f1

-rw-r--r--. 1 root root 0 Jul 29 16:27 f2

[[email protected] app]#chown ma:ma f1

[[email protected] app]#chown :zhu f2

[[email protected] app]#ll

-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1

-rw-r--r--. 1 root zhu 0 Jul 29 16:27 f2

[[email protected] app]#chown --reference=/app/f1 f2 #将f1的用户和属组信息复制给f2

[[email protected] app]#ll

-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1

-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2

#

chgrp 修改文件的属组(只能改组)

----reference=源文件 目标文件

-R 递归

案例:

[[email protected] app]#chgrp ma f1 <==将f1的属组直接修改成ma

[[email protected] app]#ll

-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1

-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2

-rw-r--r--. 1 root root 0 Jul 29 16:37 f3

[[email protected] app]#chgrp --reference=/app/f3 f1

[[email protected] app]#chgrp --reference=/app/f3 f2

[[email protected] app]#ll

-rw-r--r--. 1 ma root 0 Jul 29 16:27 f1

-rw-r--r--. 1 ma root 0 Jul 29 16:27 f2

-rw-r--r--. 1 root root 0 Jul 29 16:37 f3

#

###文件权限

普通文件

r:可以读取文件的内容

w:可以追加或者覆盖文件的内容

x:可以执行改文件,需要和r配合

目录文件

r:可以查看目录下有哪些文件,不能查看文件的详细信息

w:可以在目录中创建和删除文件,需要x配合

x:可以cd进入该目录

区别:

澳门新萄京官方网站 10

#

文件权限可以用八进制来表示

r:4

w:2

x:1

例如:rwx=4 2 1=7

#

修改文件权限

chmod

方法一:chmod u=rwx,g=rx,o=r /app/f1

澳门新萄京官方网站:CentOS用户组和权限管理,用户和组管理命令。方法二:chmod 755 /app/f1

方法三:chmod --reference=f1 f2 <==将f2的权限修改成f1一样

#

默认权限umask

真实用途,从对应的位中将umask指定权限去除

全局设置:/etc/bashrc

用户设置:~/.bashrc

新建目录权限=777-umask

新建文件权限=666-umask 看结果,有寄数,对位 1

无寄数 偶数不变,最终结果

#

目录案例:

[[email protected] app]#umask

0022

当前umask的值为0022(第一位是特殊权限位,后续会介绍暂时不用理会)

新建目录权限=777-022=755

[[email protected] app]#mkdir test/

[[email protected] app]#ll

drwxr-xr-x. 2 root root 6 Jul 29 19:15 test <==创建一个目录test可以看见默认权限为755

[[email protected] app]#su - ma <==切换到ma用户,root默认umask为022,其他用户002

Last login: Sat Jul 29 17:17:11 CST 2017 on pts/0

[[email protected] ~]$umask

0002

[[email protected] ~]$mkdir test2

[[email protected] ~]$ll

drwxrwxr-x. 2 ma ma 6 Jul 29 19:20 test2 <==创建的目录为775=777-002,符合上述格式

#

文件案例:这次我们把默认umask更改为0421

[[email protected] app]#umask 0421

[[email protected] app]#umask

0421

[[email protected] app]#touch f1

[[email protected] app]#ll

--w-r--rw-. 1 ma ma 0 Jul 29 19:38 f1 <==666-421=245 5为奇数 1,偶数不变。最终为246。

# 用户组和权限管理 ## 概念 用户分为三类: 1、超级用户:root uid=0,简单来说uid为0的用户就是超级用户。 2、虚拟用...

1.useradd              useradd 用户名               useradd -u xxx 用户名 指定被创建用户的uid为多少

                    -g      gid 指明用户所属基本组
                    -c      用户的注释信息
                    -M     创建非系统用户,不建家目录
                    -s       指定用户的默认shell
                    -e      用户过期时间
                    -G     为用户指明附加组,组须事先存在

            创建用户时默认值设定存放于/etc/default/useradd 
            [root@centos7 ~]#cat /etc/default/useradd
            # useradd defaults file
            GROUP=100                       
           HOME=/home #把用户的家目录建在/home中         
           INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用
           EXP  IRE= #帐号终止日期,不设置表示不启用
           SHELL=/bin/bash #新用户默认所用的shell类型
           SKEL=/etc/skel #配置新用户家目录的默认存放路径。当我们用useradd添加用户时,用户家目录下的文件,都是从这里配置的目录中复制过去的。
           CREATE_MAIL_SPOOL=yes #创建mail文件

案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为”Gentoo Distribution”。

[root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c “Gentoo Distribution”
[root@centos7 ~]#cat /etc/passwd|tail -n1  #查看/etc/passwd最后一行
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)

                 /etc/login.defs文件是用来定义创建用户时所需要的一些用户的配置信息。如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。

2.usermod
                   -u            UID: 新UID
                   -g            GID: 新主组
                   -G           新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
                   -s            新的默认SHELL
                   -c            新的注释信息
                   -d            HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
                   -l              login_name: 新的名字
                   -L            lock指定用户,在/etc/shadow 密码栏的增加!
                   -U            unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁

案例:修改gentpp的默认shell和描述信息

[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh
[root@centos7 ~]#usermod -s /bin/sh gentpp
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh

 3.userdel

                 -r           删除用户时,连同其家目录,mail一同删除

    getent passwd ==cat /etc/passwd #查看用户信息,后面可直接跟用户名    

 [root@centos7 ~]#getent passwd fan
 fan:x:1000:1000:ma:/home/ma:/bin/bash

 

 4.ID
               显示当前用户自身的信息
                id                 用户名  显示指定用户的信息
               id -u              用户名 显示指定用户的uid
               id -g              用户名 显示指定用户的主组的gid
               id -un            用户名 显示指定用户的名字
               id -gn            用户名 显示指定用的的主组的组名

案例:

[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
[root@centos7 ~]#id -u gentpp
1007
[root@centos7 ~]#id -g gentpp
1008
[root@centos7 ~]#id -G gentpp
1008 0 1
[root@centos7 ~]#id -nG gentpp
gentpp root bin

 

5.su 切换用户或以其他用户身份执行命令
              su                   非登录式切换,不会读取目标用户的部分配置文件,不改变当前工作目录
              su –                登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
              root                 使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码

6.passwd 修改指定用户的密码,仅root用户权限
               -l:                   锁定指定用户
              -u:                   解锁指定用户
              -e:                   强制用户下次登录修改密码
              -n mindays:     指定最短使用期限
              -x maxdays:  最大使用期限
             -w warndays: 提前多少天开始警告
              -i :                 非活动期限
              –stdin:           从标准输入接收用户密码

案例:修改fan的密码

[root@centos7 ~]#echo fanhj |passwd –stdin fan
Changing password for user fan.
passwd: all authentication tokens updated successfully.

 

注意:一次只能修改一个用户密码,不能批量修改。

1.添加用户命令useradd

一、用户:

二、组帐号管理命令

1.groupadd
              -g                  创建指定gid的组
              -r                   创建系统组 CentOS 6: ID<500
              CentOS 7: ID<1000

2.groupmod
              -n                  newgrpname oldgrpname 修改组名
              -g                  newgid groupname 修改gid 

3.groupdel
              groupdel 组名 删除组 

4.gpasswd
              -a                  user 将user添加至指定组中
              -d                  user 从指定组中移除用户user

5.groupmems[options] [action]
options
              -g                  更改为指定组
actions
              -a                  指定用户加入组
              -d                  从组中删除用户
              -p                  从组中清除所有成员
              -l                    显示组成员列表

root@centos7 ~]#groupmems -g admins -a f
[root@centos7 ~]#groupmems -g admins -a h #将ma和zhu用户添加到admins中
[root@centos7 ~]#groupmems -g admins -l #查看admins中的用户列表
fan  h
[root@centos7 ~]#groupmems -g admins -d f #将ma从admins中删除
[root@centos7 ~]#groupmems -g admins -l
h
[root@centos7 ~]#groupmems -g admins -p #清空admins中的所有组成员
[root@centos7 ~]#groupmems -g admins –l

6.groups 查看用户所属组列表

[root@centos7 ~]#groups fan
fan : fan
root@centos7 ~]#groups h
h : h

 

参数:

    是用来操作系统中不同功能的身份.

-u:用户uid,配置文件在/etc/login.defs下

Linux系统中用户的分类

-o:配合-u选项,不检查uid的唯一性

    1)超级用户: root  uid=0

-g:创建用户时指定主组为某个已存在的组。(将不会再创建与用户同名的组)

    2)系统用户:不需要登录系统,服务于应用程序,维护系统的运行

-c “hello”:注释信息

            bin  nobody  uid=1-499

-s shellL:指明用户的默认shell程序

    3)普通用户:可以登录的用户  uid>=500

-G :为用户指明附加组,组必须事先存在

        UID:用户标识

-N:不创建私用组做主组,使用users组做主组

添加用户:useradd  username  创建的时候可以指定u、g、c等选项

创建的admin没有自己的gid,默认为users组的gid

查看当前用户的ID:id  username

-r:创建系统用户 centos:id<500 ,centos7:id<1000

[root@localhost ~]# useradd -N admin
// 创建一个用户并且不创建私用的组做主组
[root@localhost ~]# id admin   
uid=1001(admin) gid=100(users) groups=100(users)

查看当前用户的名字:whoami

实例:

[root@localhost ~]# useradd -u 100 test 
 //指定test用户的uid为100

设置用户密码:passwd  username (普通用户只能通过passwd修改自己本身密码)

1.1显示或更改默认配置:

删除一个用户:userdel  username  (-r 选项会连同创建的家目录一同删除)

useradd -D //显示默认配置,配置文件在/etc/default/useradd文件中

创建组:groupadd  groupname

useradd -D -s //修改默认shell

删除组:groupdel  groupname (用户的主要组不可以删除)

useradd -D -b //修改默认家目录

修改用户信息:usermod  -[u,g,G等]  username

useradd -D -g //修改默认gid

修改组的信息:groupmod  groupname

实例:

[root@localhost ~]# useradd  -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
//查看创建账号默认权限设置
[root@localhost ~]# useradd -D  s /bin/csh  
//设置默认shell为csh,当创建用户的时候用户的默认shell为csh

为组添加一个管理员:gpasswd  -A  username  groupname

2.用户修改命令usermod

用组管理员为组添加一个用户成员:gpasswd  -a  usrname  groupname

参数:

删除一个组成员:gpasswd  -d username group

-u :指定新的uid

为组设定一个密码:gpasswd  groupname

-g :指定新的组gid

系统文件:

-G :新的附加组,原来的会被覆盖,若要保留原有,则要同时加上-a选项

    /etc/passwd:用户信息

-s :新的默认shell

    /etc/shadow:用户密码相关的信息

-c :新的注释信息

  useradd user1

-d :新家目录不会自动创建。若要创建新的家目录并移动原数据,同时使用-m选项

1、会在/etc/passwd添加一行

-o 配合-u选项,不检查UID的唯一性 创建同UID的用户,权限相同

2、会在/etc/group添加一行

-l :新的名字

3、会在/etc/shadow添加一行

-L :lock 指定用户名,在/etc/shadow密码栏的增加!,表示锁定账号

4、会在/etc/gshadow添加一行

-U :unlock指定用户,将/etc/shadow密码栏的!拿掉,表示解锁账号

5、会在/home目录下建立一个与用户同名的目录作为家目录,同时会从/etc/skel目录中复制出所有的隐藏文件到该目录

-e yyyy-mm-dd:指明用户账号过期日期

6、修改权限

-f :指定非活动期限

-u    指定用户的uid

实例:

[root@localhost ~]# usermod -u 1000 test
//指定test的uid为1000,如果1000已经存在需要加上-o 
[root@localhost ~]#usermod -ou 1003 test 
//修改test的uid为1003,因为已经存在所以必须加-o,切记-o参数一定要加在前面,如果在后面会报错

-g    指定用户的gid

用户删除命令 userdel

-G    指定附属组,可以有多个, 但是这些附属组必须是系统内已经存在的

参数:

-c    指定描述

-r :删除账号的同时删除家目录

-d    指定家目录

实例:

[root@localhost ~]# userdel test
//删除test账号,但不删除家目录
[root@localhost ~]# userdel -r wzc 
//删除wzc账号并且删除家目录

-M    不建立家目录

3.查看用户相关的Id信息,命令id

-s    指定shell

参数:

-e    指定用户过期时间, 日期

-u :显示uid

-f    指定用户过期时间, 天数

-g :显示gid

#useradd u1 -u 2000 -g 2000 -G 516 -d /u1 -c user1 -s /sbin/nologin

-G :显示用户所属的组的id

usermod

-n :显示名称,需配合ugG使用

与useradd参数差不多,一个是在创建用户时设定,一个是用户创建好

实例:

[root@localhost ~]# id admin   
uid=1001(admin) gid=100(users) groups=100(users)
//当前用户的组id

-u -g -G -d -s   

4.用户切换命令su

-L  锁定用户

参数:

-U  解除锁定

su username:非登录式切换,即不会读取目标用户配置的文件,不改变当前工作目录

-l    改名

su - username :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

-a  添加用户到组,结合-G使用

root su至其他用户无需密码:非root用户切换时需要密码

passwd -l 锁定用户

换个身份执行命令:

      -u 解锁用户

实例:

[root@localhost ~]# su - root -c 'ls /root' 
111.txt          gcc-4.8.5-11.el7.x86_64.rpm  node-latest.tar.gz
anaconda-ks.cfg  manpages-zh-1.5.1.tar.gz     node-v8.1.4
// 临时获取root权限
[root@localhost ~]#  su test    
//切换到test账号,但不读取test账号配置文件信息,不改变当前工作目录
[root@localhost ~]#  su - test 
//切换到test账号并且读取test账号配置信息,目录改变到test的家目录

  -n 密码最小使用期限  天数

4.修改用户密码命令passwd

  -x 密码最大使用期限  天数

参数:

  -w  密码过期前几天提醒  天数

-l :锁定指定账号

whoami

-u :解锁指定账号

who

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

who am i

-n :指定最短使用期限(密码多久过期)

w

-x :最大使用期限(密码到期时间必须修改时间)

users

-w :提前多少天警告

id

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

finger username  查看用户的相关信息

实例:

[root@localhost ~]# echo yyc| passwd --stdin root
//表示前面输出yyc,作为后面root密码

[root@localhost ~]# passwd -l wzc 
//锁定wzc账号,密码文件/etc/shadow查看时会看到wzc账号密码那位会有!!号,
说明账号被锁,解锁就输入相应的命令,如果是2个!就要解锁2次

chfn username  修改用户相关信息

5.修改用户密码策略命令chage

userinfo username    X window下修改用户相关信息 

参数:

对用户的操作:新增、删除、修改、查看、设置密码

-d 10 root:指定密码的上次修改时间

    1、查看用户    id

-E :指定账号的过期时间

        # id            //默认查看的是当前用户的信息

-I :密码过期多久后多少天账号过期

            uid=0(root) gid=0(root) groups=0(root)

-m:设置最小存活时间(密码多久过期)

        # whoami  //查看当前用户是谁

-M:设置最大存活时间(密码到期时间必须修改时间)

            root

-W:设置密码过期前的提醒时间

        # id lp        //查看指定用户的信息

-l :详细显示username密码策略信息

            uid=4(lp) gid=7(lp) groups=7(lp)

实例:

[root@localhost ~]# chage -d 10 root  
//指定用户上次修改密码的时间
[root@localhost ~]# chage -l root
Last password change                                    : never
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
//详细显示root密码策略信息

                uid:用户标识

6.创建组命令groupadd

                gid:组标识,用户的主组

参数:

                groups:用户所属组信息

-g :指明gid

    2、添加用户  useradd

-r :创建系统组

        注意:添加用户的操作只有root能操作

实例:

groupmod  -n haha  test
//把test的组名修改成haha

        # useradd niulang

7.修改组命令groupmod

        反例: 

参数:

        # su - niulang    // switch user切换用户

-n username:新名字

        $ useradd zhinv

-g :新gid

            -bash: /usr/sbin/useradd: Permission denied  权限被拒绝,普通用户是无法添加用户的

实例:

[root@localhost ~]# groupdel haha 
//删除haha组

        $ exit

8.删除组命令groupdel

            logout

参数:

        # id niulang

groupdel group:删除指定组

            uid=500(niulang) gid=500(niulang) groups=500(niulang)

实例:

[root@localhost ~]# groupdel haha //删除haha组

            添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组。

9.更改组密码命令gpasswd

      1)添加用户时指定选项  man useradd

参数:

            -c:注释性的描述信息

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

            -d:指定用户的家目录

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

                    默认情况下:

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

                            root的家目录是/root

实例:

gpasswd  -a test yyc 
//将test添加到yyc的组中
gpasswd root 
//设置root用户的组(gid)密码

                            普通用户的家目录是/home

10.临时切换主组命令newgrp

            -g:指定用户的主要组,前提:组是必须存在的

实例:

[root@localhost ~]# newgrp root 
//切换到root的gid的组下,需要输入组密码,
当获取到root的组后可以拥有root权限,退出只须exit即可

            -G:指定用户的附加组(附属组),前提:组是必须存在的

11.更改和查看组成员命令groupmems

            -s:指定用户的登录shell

参数:

            -u:指定用户的uid

-g :更改为指定组(只有root)

            # head -1 /etc/passwd

-a :指定用户加入组

                root:x:0:0:root:/root:/bin/bash

-d :从组中删除用户

                用户名:密码:uid:gid:注释性描述:用户的家目录:用户的登录shell

-p :从组中清楚所有成员

                                    -u  -g      -c              -d                  -s

-l :显示组的成员立标

            # echo $SHELL  //查看当前shell,echo可以用来打印变量

实例:

groupmems  -lg root /显示组
groupmems -a  test -g yyc 
//把test加入到yyc的附加组,-a表示添加,-g指定yyc组

                /bin/bash

          要求区分的两种shell

            /bin/bash:可登录shell,如果用户的shell是这个,那么该用户可以登录到系统中

            /sbin/nologin:非登录shell,如果用户的shell是这个,那么该用户是不允许登录到系统的

    格式:useradd 选项 选项的参数 ... 用户名

            例子:

                # useradd -u 600 -s /sbin/nologin zhinv

                # id zhinv

                    uid=600(zhinv) gid=600(zhinv) groups=600(zhinv)

                # tail -1 /etc/passwd

                    zhinv:x:600:600::/home/zhinv:/sbin/nologin

                # useradd -g 502 wangmu  错的

                    useradd: group '502' does not exist

                # useradd -g zhinv wangmu

                # id wangmu

                    uid=601(wangmu) gid=600(zhinv) groups=600(zhinv)

    3、删除用户 userdel

          # userdel wangmu        //删除的时候不会删除用户的家目录和邮箱

          # useradd wangmu        //能添加,但是会有提示消息

                useradd: warning: the home directory already exists.

                Not copying any file from skel directory into it.

                Creating mailbox file: File exists

          -r: 可以干净的删除一个用户

            # userdel -r wangmu

          # cd /var/spool/mail/    邮箱所在位置

    4、给用户设置密码

        passwd:

          超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码

          普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码

        # passwd    // 默认修改当前用户的密码

            Changing password for user root.

            New password:

            BAD PASSWORD: it is based on a dictionary word

            BAD PASSWORD: is too simple

            Retype new password:

            passwd: all authentication tokens updated successfully.

        # passwd niulang            //修改指定用户的密码

            Changing password for user niulang.

            New password:

            BAD PASSWORD: it is too short

            BAD PASSWORD: is too simple

            Retype new password:

            passwd: all authentication tokens updated successfully.

        反例:

            # su - niulang

            $ passwd zhinv

                passwd: Only root can specify a user name.

        普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词

            $ passwd

                Changing password for user niulang.

                Changing password for niulang.

                (current) UNIX password:

                New password:

                BAD PASSWORD: it is based on a dictionary word

                New password:

                Retype new password:

                passwd: all authentication tokens updated successfully.

        /etc/shadow:存放用户密码信息的文件

            # head -1 /etc/shadow

root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::

用户名:加密后的密码:....

        $6$:加密算法是sha512

        $1$:加密算法是md5

    5、修改用户:常用

        usermod:      //modify:修改

            -G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖

            -g:修改用户的主要组

            -a:一般和-G联合使用,追加附属组

            -u:修改用户的uid

            -d:修改用户的家目录

            -s:修改用户的shell

            # useradd -G niulang,zhinv sha

            # id sha

                uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),600(zhinv)

            # useradd sha2

            # usermod -G sha2 sha

            # id sha

                uid=601(sha) gid=601(sha) groups=601(sha),602(sha2)

            # usermod -a -G niulang sha

            # id sha

                uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),602(sha2)

练习:

    1)添加三个用户usr1,usr2,usr3

        # useradd usr1

        # useradd usr2

        # useradd usr3

    2)添加用户usr4,同时指定其主组为usr1,uid为2014,并验证用户创建是否正确

        # useradd -g usr1 -u 2014 usr4

        # id usr4

    3)添加用户usr5,家目录为/tmp/usr5,附加组为usr2,usr3

        # useradd -d /tmp/usr5 -G usr2,usr3 usr5

    4)修改usr4的附加组为usr2,usr3,注意验证

        # usermod -G usr2,usr3 usr4

        # id usr4

    5)修改usr1的shell为非登录shell

        # usermod -s /sbin/nologin usr1

        # grep usr1 /etc/passwd      //仅过滤出文件中含有usr1的行

    6)彻底删除usr5用户

        # userdel -r usr5

    7)为用户usr1设置密码redhat

        # passwd usr1

二、组  group

    用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。用户只有一个主要组,可以同时属于多个组,但是除了主组以外的其他组称为附属组。

    组的分类:从用户的角度分的,分为:

                主组:primary group、initial group、first group,用户的默认组,也就是gid所标识的组

                附属组:secondary group、supplementary group

    1、添加组  groupadd

        # groupadd g1

            -g:添加组时,指定gid是多少

        # groupadd -g 800 g2

        # tail -2 /etc/group

            g1:x:603:

            g2:x:800:

            组名:密码:gid:组里成员

    2、修改组: groupmod

        # groupmod -g 888 g2

        # grep g2 /etc/group

            g2:x:888:

        修改组的名字 :  -n 新名字

            # groupmod -g 588 -n group1 g1

            # grep gr /etc/group

                group1:x:588:

    3、删除组:groupdel

        注意:不能够删除用户的主要组,能够删除用户的附属组

        # groupdel group1

        # grep group1 /etc/group  //没有任何输出,表示文件中没有含有group1关键字的行

        #

        小实验:

        # useradd t1

        # useradd t2

        # id t1

            uid=603(t1) gid=603(t1) groups=603(t1)

        # id t2

            uid=604(t2) gid=604(t2) groups=604(t2)

        # tail -2 /etc/group

            t1:x:603:

            t2:x:604:

        # groupdel t1    //t1组是t1用户的主要组,不能删除

            groupdel: cannot remove the primary group of user 't1'

        # usermod -g t2 t1

        # usermod -G t1 t2

        # id t1

            uid=603(t1) gid=604(t2) groups=604(t2)

        # id t2

            uid=604(t2) gid=604(t2) groups=604(t2),603(t1)

        # groupdel t1  //t1组仅仅是t2用户的附属组,可以被删除

        # grep t1 /etc/group

4、组管理  gpasswd

        管理/etc/group和/etc/gshadow文件的,每一个组可以有管理员,成员和密码

        给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。

        1)指定组的管理员列表

            # groupadd groups

            # useradd u1

            # gpasswd -A u1 groups    //u1用户就是groups组的管理员了

        2)向组中添加成员

            # su - u1

            $ gpasswd -a sha groups

                Adding user sha to group groups

            # tail /etc/group

                groups:x:889:sha

        3)给组设置密码

            # gpasswd groups

                Changing the password for group groups

                New Password:

                Re-enter new password:

        4)切换组

            # su - niulang

            $ id

                uid=500(niulang) gid=500(niulang) groups=500(niulang)

            $ newgrp groups  //临时切换组

                Password:

            $ id

                uid=500(niulang) gid=889(groups) groups=500(niulang),889(groups)

        5)将用户从组中删除

            # gpasswd -d sha groups

                Removing user sha from group groups

/etc/passwd: 保存用户信息的文件

/etc/shadow: 保存用户密码相关信息的文件

/etc/group:  保存组信息的文件

/etc/gshadow:保存组密码相关信息的文件

1、/etc/passwd: *****

    # man 5 passwd

    # head -1 /etc/passwd

        root:x:0:0:root:/root:/bin/bash

      用户名:密码占位符:UID:GID:描述信息:家目录:登录shell

2、/etc/shadow

    # useradd zhangsan

    用户有无密码两种情况:

    # tail -1 /etc/shadow.

        zhangsan:!!:16276:0:99999:7:::

    # passwd zhangsan

        Changing password for user zhangsan.

        New password:

        BAD PASSWORD: it is WAY too short

        BAD PASSWORD: is a palindrome

        Retype new password:

        passwd: all authentication tokens updated successfully.

    # tail -1 /etc/shadow

        zhangsan:$6$/23ax9CR$IDSfqNF3gZqDq4L0.Bdqd19SLbzBa6CuSpuOn.9YrFmSWYy09xPGa47SVEsQXfQJDybUDOzsu4vG.FV

        KMt91l/:16276:0:99999:7:::

  # man 5 shadow

    zhangsan:!!:16276:0:99999:7:::

      1)用户名

      2)加密后的密码

      3)上一次密码修改时间(单位是天,是距离1970年1月1日多少天)

      4)密码最小生存周期  单位:天  0表示随时可以修改密码;2表示两天内不能修改

      5)密码最大生存周期  单位:天,密码使用的最长时间

      6)密码到期前几天开始警告

      7)密码过期之后到账户失效之前的时间限制        密码过期之后还可以用几天

      8)账户过期时间

      9)保留列

  查看用户的密码相关的时间

      # chage -l root

            Last password change : Jul 25, 2014

            Password expires : never

            Password inactive : never

            Account expires : never

            Minimum number of days between password change : 0

            Maximum number of days between password change : 99999

            Number of days of warning before password expires : 7

  # chage -d 0 用户名  用户下次登录必须更改密码

    chage -m 2 u1  修改密码最少使用天数

    chage -M 50 u1  修改密码最大使用天数(密码过期时间)

    chage -I 5 u1  密码过期后到账户失效的天数(密码过期后还能使用的天数)

        chage -E "2019-3-5" u1 修改的是账户的过期时间

3、/etc/group

    # head -1 /etc/group

        root:x:0:

        组名:密码占位符:GID:用户列表

4、/etc/gshadow

    # head -1 /etc/gshadow

        root:::

        组名: 加密后的密码:组管理员:组成员

/etc/login.defs  默认创建新用户的配置文件

和用户登录相关的文件或目录

/etc/profile

    此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置

/etc/bashrc

    为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取

~username/.bashrc

    每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件

~username/.bash_profile

    该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

/etc/profile.d/*

profile类的文件:

          设定环境变量

          运行命令或脚本

bashrc类的文件:

          设定本地变量

          定义命令别名

站在用户登录的角度来说,SHELL的类型:

登录式shell:

          正常通过某终端登录

          su - USERNAME

          su -l USERNAME

非登录式shell:

          su USERNAME(使用su切换用户,不带任何参数)

          GUI下打开命令窗口

          自动执行的shell脚本

登录式shell如何读取配置文件:

/etc/profile -->/etc/profile.d/*.sh -->~/.bash_profile -->~/.bashrc -->/etc/bashrc

非登录式shell如何读取配置文件:

~/.bashrc -->/etc/bashrc -->/etc/profile.d/*.sh

su - :完全登录shell,切换后用户拥有自己的一套环境变量

su:不完全登录shell,切换后用户使用的是其他用户的环境变量

和新创建用户相关的文件:/etc/login.defs  /etc/default/useradd

/etc/rc.local  是系统开机后执行的最后一个脚本,一般被管理员执行一些系统开机运行的命令

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:澳门新萄京官方网站:CentOS用户组和权限管理,

关键词: