Linux系统下用户与组的管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统下用户与组的管理相关的知识,希望对你有一定的参考价值。
Linux系统下用户与组的管理
一、用户及组基本概述
Linux 系统上,用户管理是基于用户名和密码的方式进行资源的分配。
1、uid(用户身份标识)
(1)root用户
uid为0
(2)普通用户:1--65535
系统用户 系统已经已经存在专门用来对系统服务或者系统资源进行管理的
1--499(CentOS 6.X)
1--999 (CentOS 7.X)
登录用户(平时专门做系统管理的用户)
500+ (CentOS 6.X)
1000+ (CeentOS 7.X)
2、gid(用户组身份标识)
(1)root组
gid为0
(2)普通组
系统组:1-499(CentOS 6.X), 1-999(CENTOS7)
普通组:500+(CentOS 6.x),1000+(CENTOS7)
3、用户和组的关系:
(1)每个用户必须属于一个与用户同名的组(默认的情况)这个组一般叫做基本组(主组)
(2)一个用户可以属于除基本组之外的其他组,这个组就叫做(附加组)(辅助组)
二、用户和组的配置文件
1、用户的配置文件和用户的信息文件/etc/passwd
[[email protected] yum.repos.d]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
共有七个字段以“:”分隔,作用为:
第一字段root:用户名
第二字段x:密码占位符
第三字段0:用户UID
第四字段0: GID
第五字段root: 用户说明信息
第六字段 /root: 用户家目录
第七字段 /bin/bash 用户的shell
2、用户的配置文件/etc/shadow
[[email protected]]# cat /etc/shadow
root:$6$NJND277cVP5/NHvE$tH3CGuhyQJ.btAswXYkcJUNr62LjEy24hXlvu.AA2fVLSfNwrSrIHhcBrZM5N61XkiE5M/t6x3k/XDkdcBObO1::0:99999:7:::bin:*:16659:0:99999:7:::
共有九个字段以“:”分隔,作用为:
第一字段 root:用户名
第二字段 为加密后的密码(密码这一段 如果是! * 说明这个账号是不可用被锁定)
第三字段 密码的最后一次修改日期(使用1970年1月1日作为标准时间,每过一天,时间戳加一)
第四字段 两次密码修改的时间间隔
第五字段 密码的有效期,为99999时表示永不过期
第六字段 密码到期几天时提示修改密码,此处表示密码到期之前7天提醒修改密码
第七字段 密码到期后的宽限天数,即密码到期后这个账户还可以使用几天
0 代表密码过期后立即失效
-1 代表密码过期后用户失效
第八字段 账号的失效时间,用时间戳表示
第九字段 保留
3、用户的组信息文件/etc/group
[[email protected]~]# cat /etc/group
root:x:0:
共有四个字段以“:”分隔,作用为:
第一字段 组名
第二字段 密码占位符
第三字段 组ID即GID
第四字段 组里附加的用户
4、组密码文件/etc/gshadow
[[email protected]~]# cat /etc/gshadow
root:::
共有四个字段以“:”分隔,作用为:
第一字段 组名
第二字段 组密码
第三字段 组管理员用户名
第四字段 组中附加用户
三、用户和组的管理
1、用户管理的重要目录
(1)用户的家目录
普通用户:/home/UserName,所有者和所属组都是此用户权限是700
超级用户:/root/,所有者和所所属组都是root用户,权限是550
(2)用户的模板目录:
/etc/skel目录:用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会被复制到新添加的用户的家目录下,/etc/skel目录下的所有文件都是隐藏文件。
/etc/default/useradd:
作用:在使用useradd添加用户时的一个需要调用的一个默认配置文件
内容:# useradddefaults file
GROUP=100
HOME=/home 默认家目录
INACTIVE=-1 密码失效日期,shadow第7列
EXPIRE= 账号失效日期第8列
SHELL=/bin/bash
SKEL=/etc/skel 家目录下面的隐藏文件的模板
CREATE_MAIL_SPOOL=yes 是否创建一个邮箱账户
/etc/login.defs :
作用:用来定义创建用户时需要的一些用户配置信息
内容:MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999 #密码有效期
PASS_MIN_DAYS 0 #密码修改间隔
PASS_MIN_LEN 5 #密码最小为5位
PASS_WARN_AGE 7 #密码到期警告
UID_MIN 1000 #最小的uid范围
UID_MAX 60000 #最大的uid范围
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000 #最小的GID范围
GID_MAX 60000 #最大GID范围
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 #密码的加密算法
2、添加用户命令useradd
(1)useradd命令格式:useradd [选项] UserName
(2)选项: -u 指定UID (默认500|1000开头)
-o 新建用户前不检查指定的UID是否存在(一般不要使用这个选项)
-g GID|组名 指明用户所属的基本组 (使用比较多)
-G 指明用户所属的附加组
-d 指定某个目录作为家目录,默认/home
-s 指明用户默认的shell 默认/bin/bash 通常会指定/sbin/nologin(使用较多)
-c “ ” 指定用户注释信息
-r 新建系统用户
-m 默认选项 创建用户家目录
-M 不创建用户家目录(使用较多)
-D 修改用户的默认选项(修改的是/etc/default/useradd中的选项)
(3)指定选项添加用户:
useradd –u 550 –g dayi123 –G root –d /home/dayi123 –c “test user”–s /bin/bash dayi123
3修改用户属性usermod
(1)用法:usermod [选项] UserName
(2)选项:参数同useradd,部分不同参数如下:
-G GROUP1,GROUP2:新附加组,原来的附加组将会被覆盖,若要保留原有,则 要同时使用-a选项,表示追加
-l login_name:新的名字
-L 锁定指定用户
-U 解锁指定用户
-e YYYY-MM-DD:指定用户的过期日期
-f INACTIVE:指定非活动期限
-d 修改用户的家目录
4、给用户设定密码:
(1)用法:password [选项] UserName
(2)选项: -l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-nmindays: 指定最短使用期限
-x maxdays:最大使用期限
-wwarndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin 可以通过管道符输的数据作为用户密码
(3)应用
修改root用户密码:passwd 回车即可修改
[[email protected]~]# passwd
Changingpassword for user root.
Newpassword:
BADPASSWORD: it is based on a dictionary word
Retypenew password:
passwd:all authentication tokens updated successfully.
修改普通用户密码:passwd [选项] UserName
[[email protected]~]# passwd dayi123
Changingpassword for user dayi123.
Newpassword:
BADPASSWORD: it is based on a dictionary word
Retypenew password:
passwd:all authentication tokens updated successfully.
通过管道符修改密码(不需要确认):echo“[email protected]” | passwd –stdin dayi123
[[email protected]~]# echo ‘dayi123‘ | passwd --stdin dayi123
Changingpassword for user dayi123.
passwd:all authentication tokens updated successfully.
注意:注意字符串有一个$符号 会把后面的内容给替换成变量而这个变量为空,所以切记改密码的时候要使用单引号 强引用
5、修改用户密码的状态chage
(1)用法:chage [选项] 用户名
(2)选项:-l 列出用户详细密码状态
-d 日期:修改密码最后一次修改日期(shadow3字段)
-m 天数:两次密码修改间隔(shadow中四字段)
-M 天数:密码有效期(shadow中5字段)
-W 天数:密码过期前警告天数(shadow中6字段)
-I 天数:密码过期后宽限天数(shadow第7字段)
-E 日期:账号失效时间(shadow中8字段)
(3)应用:
要求用户在第一次登陆的时候必须强制一定要修改密码:chage -d 0 dayi123
6、删除用户userdel
(1)用法:userdel [参数] UserName
(2)参数:-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
(3)应用:
删除dayi123用户及所有相关文件:userdeldayi123
7、组管理命令groupadd、groupdel、groupmod、gpasswd
(1)groupadd 新建用户组
语法:groupadd [参数]GroupName
参数: -g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
应用举例:新建组dayi并指定GID为555
[[email protected]~]# groupadd -g 555 dayi
[[email protected]~]# cat /etc/group | grep dayi
dayi:x:555:
(2)groupdel 删除用户组(首先删除对应的用户 然后才能执行对应的组的删除操作)
语法:groupdel GroupName
(3)groupmod修改组信息
语法:groupmod [参数]GroupName
参数:-n 新的名字
-g 新的GID
修改组dayi名称为dy,修改GID为666:
[[email protected]~]# groupmod -g 666 -n dy dayi
[[email protected]~]# cat /etc/group | grep dy
dy:x:666:
(4)gpasswd给组新建一个密码
(5)groupmems用户主组的管理员成员
用法:groupmems [选项] [动作]
参数:-g 组 -a 用户名
-g 组 -d 删除
-g组 -p 清空
-g组 -l 列出组内所有的用户
应用:把test添加到dayi123用户组,并列出dayi123组内所有成员
[[email protected] ~]# groupmems -g dayi123 -atest
[[email protected] ~]# groupmems -g dayi123 -l
test
7、用户和组管理的其他命令
(1)chfn命令
1)作用:改变finger命令显示的信息
2)用法: chfn [参数]
3)应用举例:
[[email protected]]# chfn
Changingfinger information for root.
Name[root]: root
Office[]: mgedu
OfficePhone []: 123456
HomePhone []: 23456
Fingerinformation changed.
(2)chsh命令
1)作用:更换登录系统时使用的shell
2)语法:chsh [参数]
3)应用举例:
[[email protected]]# chsh
Changingshell for root.
Newshell [/bin/bash]:
(3)finger命令
1)作用:用于查找并显示用户信息
2)语法:finger [ 参数]
3)应用举例:
[[email protected]]# finger
Login Name Tty Idle Login Time Office Office Phone Host
root root tty1 22:23 Mar 30 13:16 mgedu 123456
root root pts/0 Mar 31 08:54mgedu 123456
四、用户身份切换su
1、作用:进行用户身份的切换
2、语法:su – UserName #切换用户身份,所有的环境都会切过去
su UserName #切换用户身份,某些环境变量可能不会切换过去
su - UserName -c "date +‘%Y %m‘" #以某个用户的身份执行命令但不切换用户
3、使用su的一些注意事项:
1)使用root切换到其他普通的时候 是不需要密码的
2)通用户切换到root或者切换到其他用户的时候是需要密码登录的
3)su - root 用户名可以省略 但是仅限于root用户
4)如果想切换到root用户不用输密码,可以只用visudoer编辑
xian ALL=(ALL) NOPASSWD: ALL1
4、应用
1)用户身份的切换
[[email protected]]# su - dayi123
Lastlogin: Fri Mar 31 10:49:16 EDT 2017 on pts/0
[[email protected]~]$ su -
Password:
Lastlogin: Fri Mar 31 10:51:18 EDT 2017 on pts/0
[[email protected]~]# su -
Lastlogin: Fri Mar 31 12:45:12 EDT 2017 on pts/0
[[email protected]~]# su dayi123
2)不切换身份,以其他用户执行命令
[[email protected]~]$ su - root -c "ls /root"
Password:
anaconda-ks.cfg baoding.log dayi123.txt EOF instll.log sn.txt test tr
[[email protected]~]$ exit
exit
[[email protected]~]# su - dayi123 -c "mkdir /root/dayi123"
mkdir:cannot create directory ‘/root/dayi123’: Permission denied
[[email protected]~]# su - dayi123 -c "mkdir /tmp/dayi123"
[[email protected] ~]# su - dayi123 -c "ls/tmp/dayi123 -d"
/tmp/dayi123
本文出自 “12064061” 博客,请务必保留此出处http://12074061.blog.51cto.com/12064061/1912466
以上是关于Linux系统下用户与组的管理的主要内容,如果未能解决你的问题,请参考以下文章