用户、用户组管理(CentOS)
centos中新建的非root用户是没有sudo的权限的,如果需要使用sudo权限必须在/etc/sudoers 中加入账户和权限,
所以切换到root账号的时候只需要输入:su加入root账号的密码即可。
在Ubuntu中,一般使用sudo+命令,如果是第一次使用会提示输入当前用户的密码(而不是root的密码)。
注意:在Ubuntu中两个命令:useradd和adduser,虽然功能一致,但用法却不尽相同,在Ubuntu系统上这是两条命令,而在Centos上则是同一条命令,adduser 是链接的形式存在。
一、账户管理
1. 新建用户
1.1 确保当前登录用户有创建新用户的权限
# 查看当前已存在用户:
cat /etc/passwd |cut -f 1 -d:
查看用户列表:
cat /etc/passwd
查看系统中有哪些用户:
cut -d : -f 1 /etc/passwd
查看可以登录系统的用户
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
注意:linux里没有windows的net user,net localgroup命令。
1.2 查看UID
# 查看用户ID
more /etc/passwd
注意:参数(UID)为0即为系统管理员,1-499为系统帐号(新版本为1-999),500-65535为一般使用者(新版本系统以1000开头)。
本例中“root”的UID为0(即为系统管理员),“fairy”为1000(一般使用者)。
1.3 添加用户
useradd [用户名] // 默认主文件夹在 `/home` 目录
添加一个名为“testuser”的帐号,默认会添加一个同名的组,并在/home新建一个同名目录。
useradd testuser
参数:
-m 新账号名称
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用 -m 选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有 -o 选项,则可以重复使用其他用户的标识号。
例如:
此命令创建了一个用户testuseruser,其中-d和-m选项用来为登录名testuser产生一个主目录 /home/hh(/home为默认的用户主目录所在的父目录)。
useradd –d /home/hh -m testuser
注意:此时帐号“testuser”处于锁定状态。
或直接给新用户/usr/local目录的读和写权限。
sudo chmod u+rw /usr/local
在命令 'sudo chmod u+rw /usr/local' 中,'u' 是指 'user',表示对用户的权限进行更改。
这个命令是用来改变文件或目录的权限的,其中 'g+rw' 表示给用户添加读和写的权限。
1.4 设置密码
passwd [用户名] // 设置用户密码
创建用户完毕后,必须修改密码否则无法登陆,Linux不显示密码。
# 需输入相同密码两次
passwd wtf123456
1.5 授权
新创建的用户并不能使用 sudo 命令,需要授权。
1.5.1 添加 sudoers 文件可写权限
chmod -v u+w /etc/sudoers
1.5.2 修改 sudoers 文件
使用 vim 编辑器打开 sudoers 文件
# 编辑 vi /etc/sudoers,在 sudoers 文件中找到如下位置并添加如下内容:
[用户名] ALL=(ALL) ALL
备注:
若新用户需要使用 sudo 时不输密码, 则将此行最后一个 ALL 改为 NOPASSWD:ALL 即可
testuser ALL=(ALL) NOPASSWD:ALL
1.5.3 收回 sudoers 文件可写权限
chmod -v u-w /etc/sudoers
1.6 切换账户
# 切换到用户(testuser)下即可使用。
su - testuser
1.7 查看默认设置
# 查看此账户的默认设置
useradd -D
2. 删除账户
2.1 退出用户组
将名称为testuser的用户退出名称为testgroup的组
gpasswd -d testuser testgroup
2.2 删除用户账号和主目录
# userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
例如:
# userdel -r testuser
此命令删除用户testuser在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
备注:
删除用户可能会提示用户被占用根据进程号,先杀进程再删除。
kill -9 进程号
2.3 查看文件内容命令
cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f
3. 修改账户
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod
命令,其格式如下:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:
usermod -l testuser test //将用户名称 test 改为 testuser
此命令将用户testuser的登录Shell修改为ksh,主目录改为/home/h,用户组改为testgroup。
二、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
1. 查看用户组列表
cat /etc/group
查看当前用户属于哪个用户组:
id 或 groups
id testuser
groups testuser
2. 新建用户组
2.1 增加一个新的用户组
使用groupadd命令。其格式如下:
groupadd 选项 用户组
可以使用的选项有:
- -g GID 指定新用户组的组标识号(GID)。
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例如:
# groupadd testgroup
此命令向系统中增加了一个新组testgroup,新组的组标识号是在当前已有的最大组标识号的基础上加1。
# groupadd -g 1000 testgroup
此命令向系统中增加了一个新组testgroup,同时指定新组的组标识号是1000。
2.2 新建用户同时添加组
新建用户同时增加用户组:
useradd -g testgroup testuser //新建testuser用户并增加到testgroup用户组
给已有的用户增加用户组:
usermod -G groupname username
或者:
gpasswd -a user group
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
补充:查看用户和用户组的方法
用户列表文件:/etc/passwd
用户组列表文件:/etc/group
查看系统中有哪些用户:cut -d : -f 1 /etc/passwd
查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
查看某一用户:w 用户名
查看登录用户:who
查看用户登录历史记录:last
给组添加文件夹的读写权限
sudo chmod g+rw /usr/local
在命令 'sudo chmod g+rw /usr/local' 中,'g' 是指 'group',表示对组用户的权限进行更改。
这个命令是用来改变文件或目录的权限的,其中 'g+rw' 表示给组用户添加读和写的权限。
3. 修改用户组
3.1 修改组属性
修改用户组的属性使用groupmod命令。其语法如下:
groupmod 选项 用户组
常用的选项有:
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n 新用户组 将用户组的名字改为新名字
例如:
将组testgroup的组标识号修改为1001
# groupmod -g 1001 testgroup
将组testgroup的标识号改为10000,组名修改为testgroup1
# groupmod –g 10000 -n testgroup1 testgroup
3.2 多用户组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
例如:
# newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
4. 删除用户组
4.1 删除组
#删除名称为testgroup的组
groupdel testgroup
三、总结
4.1 创建用户、用户组、分配权限
useradd -s /bin/sh -g testgroup –G adm,root testuser
解释一下该命令的每个部分的含义:
`useradd`: 这是一个用于创建用户的命令。
`-s /bin/sh`: 指定新创建用户的默认Shell为`/bin/sh`,也称为Bourne shell。Shell是用于与操作系统进行交互的命令行解释器。
`-g testgroup`: 指定新创建用户所属的主要用户组为`testgroup`。主要用户组是用户在创建时自动分配的初始组。在这种情况下,新用户的主要组将是`testgroup`。
`-G adm,root`: 指定新创建用户所属的其他附加组。在这种情况下,新用户将同时属于`adm`组和`root`组,也就是将其添加到`adm`组和`root`组中。
`testuser`: 新创建用户的用户名,这里指定为`testuser`。
该命令的含义是创建一个名为`testuser`的用户,属于`testgroup`作为其主要组,并且还添加到`adm`组和`root`组作为附加组。此外,`/bin/sh`被指定为该用户的默认Shell。
请注意,要执行该命令,通常需要以root用户或具有足够权限的用户身份登录。
这里可能新建组:
# groupadd testgroup 及 groupadd adm
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
四、用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号创建完时没有口令,被系统锁定无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
命令的格式为:
passwd 选项 用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是testuser,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
# passwd testuser
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
# passwd -d testuser
此命令将用户 testuser 的口令删除,这样用户 testuser 下一次登录时,系统就不再允许该用户登录了。
passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:
# passwd -l testuser
五、设置用户首次登录必须修改密码
1. 添加新账户
useradd testuser
2. 设置初始密码
设置帐号初始密码为“wtf123456”
echo "wtf123456" | passwd --stdin testuser
3. 设置密码过期
chage -d 0 testuser
4. 登录新账户
提示必须修改密码,输入新密码并回车确定后,会自动中断连接,再次连接即可)。