Linux系统的用户和用户组管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统的用户和用户组管理相关的知识,希望对你有一定的参考价值。
一、用户(user)和用户组(group)概念
1、用户(user)的概念
Linux 是典型的多用户操作系统,我们可以建若干用户(user),用于系统服务的运行和权限管理,不同的用户登陆系统,按照设定的权限去操作系统,提高了安全性。在Linux系统中有一些用户是用来完成特定任务的,比如nobody和ftp 等;有的是为了权限安全,比如限制root直接登陆系统,创建一个sshusr用户,登陆sshusr后,再su到root下。可以通过查看/etc/passwd了解Linux系统有哪些帐号。
2、用户组(group)的概念
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限。
3、用户和用户组的对应关系
一对一:某个用户可以是某个组的唯一成员;
多对一:多个用户可以是某个唯一的组的成员;
一对多:某个用户可以是多个用户组的成员,有附加组;
多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组。
二、用户(user)和用户组(group)相关的配置文件、命令或目录
1、与用户和用户组相关的配置文件;
1)与用户相关的配置文件;
/etc/passwd 注:用户的配置文件;
/etc/shadow 注:用户影子口令(密码)文件;
2)与用户组相关的配置文件;
/etc/group 注:用户组配置文件;
/etc/gshadow 注:用户组的影子口令文件;
2、管理用户和用户组的相关工具或命令;
1)管理用户的工具或命令;
useradd :添加用户
adduser :添加用户
userdel :删除用户
passwd :为用户设置密码
usermod :修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov :同步用户从/etc/passwd 到/etc/shadow
pwck :pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv :是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger :查看用户信息工具
id :查看用户的UID、GID及所归属的用户组
chfn :更改用户信息工具
su :用户切换工具
sudo :sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo :visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit :和sudo 功能差不多;
2)管理用户组的工具或命令;
groupadd :添加用户组;
groupdel :删除用户组;
groupmod :修改用户组信息
groups :显示用户所属的用户组
grpck :用于验证组文件的完整性
grpconv :通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;
3、/etc/skel 目录
/etc/skel目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel 目录下的文件都是隐藏文件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;
[[email protected] beinan]# ls -la /etc/skel/
总用量 92
drwxr-xr-x 3 root root 4096 8月 11 23:32 .
drwxr-xr-x 115 root root 12288 10月 14 13:44 ..
-rw-r--r-- 1 root root 24 5月 11 00:15 .bash_logout
-rw-r--r-- 1 root root 191 5月 11 00:15 .bash_profile
-rw-r--r-- 1 root root 124 5月 11 00:15 .bashrc
-rw-r--r-- 1 root root 5619 2005-03-08 .canna
-rw-r--r-- 1 root root 438 5月 18 15:23 .emacs
-rw-r--r-- 1 root root 120 5月 23 05:18 .gtkrc
drwxr-xr-x 3 root root 4096 8月 11 23:16 .kde
-rw-r--r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel 下的文件复制到用户的家目录下,然后要用chown 来改变新用户家目录的属主;
4、/etc/login.defs 配置文件
/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;
比如Fedora 的 /etc/logins.defs 文件内容;
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#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 5 注:密码最小过期天数;
PASS_MIN_LEN 5 注:密码最小长度;
PASS_WARN_AGE 7 注:密码过期警告天数
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的;
UID_MAX 60000 注:最大UID为60000;
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 注:GID 是从500开始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes 注:是否创用户家目录,要求创建;
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
5、/etc/default/useradd 文件
通过useradd 添加用户时的规则文件;
# useradd defaults file
GROUP=100
HOME=/home 注:把用户的家目录建在/home中;
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用;
EXPIRE= 注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash 注:所用SHELL的类型;
SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
三、用户组的管理
1、创建一个用户组
命令格式:
groupadd [选项] [用户组]
选项:
-g :GID 指定新用户组的组标识号(GID)。
-o :一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例1:创建group1,GID会自动在系统已创建的基础上增加1# groupadd group1
例2:创建一个新组group2,同时指定新组的组标识号是101。#groupadd -g 101 group2
2、删除一个用户组
命令格式:
groupdel [用户组]
例:此命令从系统中删除组group1。#groupdel group1
3、修改用户组的属性
命令格式:
groupmod [选项] [用户组]
选项:
-g :GID 为用户组指定新的组标识号。
-o :与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n :新用户组 将用户组的名字改为新名字
例:此命令将组group2的组标识号修改为102。# groupmod -g 102 group2
例:此命令将组group2的标识号改为10000,组名修改为group3。# groupmod –g 10000 -n group3 group2
4、用户切换用户组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
例如:
$ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
四、用户管理
(一),添加用户
1.命令
useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。
2.命令格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
3.主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的主目录,替换系统默认值/home/<用户名>
-D:变更预设值。
-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
-g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。默认值为/bin/bash。
-u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。
例:创建用户tom,没有登陆权限# useradd -s /sbin/nologin tom
4.说明
useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
(二)用户的删除
命令格式:
userdel [用户名] #只是删除用户名,用户目录和邮件账户目录还在
userdel -r [用户名] #清除用户的家目录和邮件目录
(三)设置用户密码
root用户登陆时执行,如果是当前用户登陆,passwd回车后按提示设置密码即可。
1,命令格式:
echo [密码] | passwd --stdin [用户名]
例如:新建用户test,密码test,另外添加usertest组
#useradd test
#echo "test" | passwd --stdin test
#groupadd usertest
2,用户的密码文件
用户修改的密码信息存在/etc/shadow中,
# sed -n ‘$p‘ /etc/shado`w`
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI.:17551:0:99999:7:0:17897:
--用户名
--密码
--从1970年1月1日起到上次修改密码所经过的天数
--密码再过几天可以被变更(0表示随时可以改变)
--密码再过几天必须被变更(99999表示永不过期)
--密码过期前几天提醒用户(默认为一周)
--密码过期几天后帐号被禁用
--从1970年1月1日算起,多少天后账号失效
(四)修改用户属性
1.用usermod修改用户属性
语 法:usermod [参数选项] [用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
选 项:
-a|--append ##把用户追加到某些组中,仅与-G选项一起使用
-c|--comment ##修改/etc/passwd文件第五段comment
-d|--home ##修改用户的家目录通常和-m选项一起使用
-e|--expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-f|--inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码一过期就禁用帐号,-1表示禁用此功能,默认值是-1
-g|--gid ##修改用户的gid,改组一定存在
-G|--groups ##把用户追加到某些组中,仅与-a选项一起使用
-l|--login ##修改用户的登录名称
-L|--lock ##锁定用户的密码
-m|--move-home ##修改用户的家目录通常和-d选项一起使用
-s|--shell ##修改用户的shell
-u|--uid ##修改用户的uid,该uid必须唯一
-U|--unlock ##解锁用户的密码
2.示例
1).新建用户alex,密码alex,另外添加galex组
#useradd alex
#echo "alex" | passwd --stdin alex
#groupadd galex
2).把alex用户加入galex组#usermod -aG galex alex #多个组之间用空格隔开
# id alex
uid=1005(alex) gid=1006(alex) 组=1006(alex),1007(galex)
3).修改alex用户的家目录为galex
# usermod -md /home/galex alex
# cat /etc/passwd|grep "alex"
alex:x:1005:1006::/home/galex:/bin/bash
4).修改用户名
# usermod -l nalex alex
# cat /etc/passwd|grep "alex"
nalex:x:1005:1006::/home/galex:/bin/bash
5).锁定nalex的密码
# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:::
#usermod -L nalex
# sed -n ‘$p‘ /etc/shadow
nalex:!$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:::
锁定后用户冒号后面会多一个感叹号“!”
6).解锁nalex的密码#usermod -U nalex
去除用户后面的感叹号
7).修改用户的shell
#sed ‘$!d‘ /etc/passwd
nalex:x:500:500::/home/usertest:/bin/bash
#usermod -s /bin/sh nalex
#sed -n ‘$p‘ /etc/passwd
nalex:x:500:500::/home/galex:/bin/sh
8)指定帐号过期日期
# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:::
# usermod -e 2019-01-01 nalex
]# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7::17897:
多了时间限制
9).指定用户帐号密码过期多少天后,禁用该帐号
# usermod -f 0 nalex
# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:0:17897:
以上是关于Linux系统的用户和用户组管理的主要内容,如果未能解决你的问题,请参考以下文章