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清空附加组