Linux 用户和用户组
/etc/group 存储当前系统中所有用户组信息
1~499组号是系统预留
用户创建的是从500开始
/etc/gshadow 存储当前系统中用户组的密码信息
组密码如果为空,*,!的话说明组密码为空
/etc/passwd 存储当前系统中所有用户的信息
分为7段,每一行对应一个用户的信息
创建用户之后系统会在/home目录下生成一个和用户名称一样的个人文件夹
/etc/shadow 存储当前系统中所有用户的密码信息
创建用户组
groupadd [name] 创建用户组
groupmod -n [新组名] [旧组名] 更改组名
groupmod -g [组编号] [组名] 更改组编号
groupadd -g [组编号] [组名] 创建用户组的时候同时创建组名
groupdel [组名] 删除用户组
创建用户
useradd -g [用户组] [用户名] 创建用户并且将用户添加到指定用户组
useradd -d /home/xxx [用户名] 使用 -d 参数指定个人用户文件夹名称,如果没有指定 -d 参数,系统会自动在 /home 目录下创建一个和用户名一样的个人文件夹
usermod -c [描述] [用户名] -c参数用来给用户添加描述信息
usermod -l [新用户名] [旧用户名] -l参数用来修改用户名
userdel [用户名] 删除用户 添加 -r 参数连带个人文件夹一起删除
touch /etc/nologin 禁止除了root账户的其他账户登陆
- -c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
- -d<登入目录> 指定用户登入时的起始目录。
- -D 变更预设值.
- -e<有效期限> 指定帐号的有效期限。
- -f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
- -g<群组> 指定用户所属的群组。
- -G<群组> 指定用户所属的附加群组。
- -m 自动建立用户的登入目录。
- -M 不要自动建立用户的登入目录。
- -n 取消建立以用户名称为名的群组.
- -r 建立系统帐号。
- -s 指定用户登入后所使用的shell。 要拒绝系统用户登录,可以将其 shell 设置为 /usr/sbin/nologin 或者 /bin/false
- -u 指定用户ID。
更改用户密码
passwd [用户名]
锁定帐号
passwd -l [用户名] 锁定帐号
passwd -u [用户名] 解锁帐号
passwd -d [用户名] 清除账户密码
主要组与附属组
用户可以同时属于多个组
一个主要组
多个附属组
gpasswd -a [用户名] [附属组名] 为指定用户添加附属组
newgrp [用户名] 切换附属组
gpasswd -d [用户名] [附属组名] 从附属组删除指定用户
useradd -g [主要组] -G [附属组名],[附属组名] ,[附属组名] ... 添加用户的同时添加主要组和附属组
gpasswd [组名] 设置组密码
其他命令
whoami 显示当前登录用户名
id [用户名] -显示指定用户信息,包括用户编号、用户名、主要组编号及名称、附属组列表
groups [用户名] -显示指定用户所在的所有组
chfn [用户名] -设置用户资料,依次输入用户资料
finger [用户名] -显示用户详细资料
#添加一个不能登录的用户
要拒绝系统用户登录,可以将其 shell 设置为 /usr/sbin/nologin 或者 /bin/false。
usermod -s | --shell /usr/sbin/nologin username
或者
usermod -s | -shell /bin/false username
说明及比较:
/bin/false
/bin/false 什么也不做只是返回一个错误状态,然后立即退出。将用户的 shell 设置为 /bin/false,用户会无法登录,并且不会有任何提示。
/usr/sbin/nologin
nologin 会礼貌的向用户显示一条信息,并拒绝用户登录:
This account is currently not available.
有一些软件,比如一些 ftp 服务器软件,对于本地非虚拟账户,只有用户有有效的 shell 才能使用 ftp 服务。这时候就可以使用 nologin 使用户即不能登录系统,还能使用一些系统服务,比如 ftp 服务。/bin/false 则不行,这是二者的重要区别之一。
/etc/nologin
如果存在 /etc/nologin 文件,则系统只允许 root 用户登录,其他用户全部被拒绝登录,并向他们显示 /etc/nologin 文件的内容。
创建拥有root权限的账户
创建用户admin
1 [root@vm7 ~]# useradd -g root admin # -g指定admin用户的所属组为root
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere root ALL=(ALL) ALL admin ALL=(ALL) ALL #添加这一行
修改完毕,现在可以用admin帐号登录,然后在命令前加 sudo ,即可使用root权限执行命令。
1 [admin@vm7 ~]$ su - root 2 密码:
使用su - root 切换到root用户