Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性。文件的所有者、所属组以及其他人可对文件进行的读写执行等操作,以及如何在Linux系统中添加、删除、修改用户账户信息,都离不开Linux中用户身份与文件权限相关知识。
一、用户身份与能力
Linux的设计初衷之一就是为了满足多个用户同时操作的需求,因此Linux必须基本很好的安全性。
因此Linux系统中必须有一个root用户(超级管理员)拥有最高的系统所有权,能够管理系统的各项功能。
- 正是因为root权限拥有整个系统中的最高权力 因此使用root权限进行操作如果执行了错误的命令,可能会直接毁掉整个系统。
- 在学习的过程中可以使用root权限进行学习,但是在真正工作和实践的时候还是要区分用户进行操作。
- Linux系统中的管理员就是root,其实说法不准确。用户(root)是系统管理员,不是因为它叫root而是因为该用户的身份码(UID:User IDentification)的数值为0。
说到多用户与多任务(同时多个终端登录操作系统并进行多任务操作),就不得不说一下linux操作系统和windows操作系统
windows | Linux | |
---|---|---|
是否多任务 | 是 | 是 |
是否多用户 | 现在常用的Windows操作系统都是多用户的操作系统: win7、win10;Windows XP的多用户切换方式 | 是 |
在Linux中多个用户同时登录,cpu是根据不同用户的优先级来分配CPU运算资源
1. useradd
useradd命令用于创建用户,格式:useradd [options] username
- 使用useradd命令创建用户,默认将用户家目录放在/home目录中,默认使用的Shell解释器为/bin/bash
- 并且同时创建一个跟这个username同名的基本用户组
参数 | 作用 |
---|---|
-d | 指定用户的家目录(默认为/home/username) |
-e | 账户的到期时间,格式为:YYYY-MM-DD |
-u | 指定账户的uid |
-g | 指定一个初始的用户组(必须存在) |
-G | 指定一个或多个扩展用户组 |
-N | 不创建和username同名的基本用户组 |
-s | 指定该用户默认的Shell解释器 |
下面的一刚命令就是创建一个username为testuser的用户,该用户的uid为6666 指定路径/home/testusername/、指定shell解释器为/sbin/nologin(被指定为该解释器的用户无法登陆系统)
root@juzuo:/home useradd -d /home/testusername/ -u 6666 -s /sbin/nologin testuser
2. groupadd
groupadd命令用于创建用户组, 格式:groupadd [options] groupname
- 用户组的概念就是一组用户,拥有相似会或者相同权限,或者相似作用。
- Linux中为了更加高效的指派系统中各个用户的权限,在工作中常常会把几个用户加入到用一个组里,这样可以方便针对同一类用户统一安排权限。
这个命令用于创建一个用户组,现在把刚刚创建的用户testuser添加到这个用户组
root@juzuodaliyu:/home groupadd test
root@juzuodaliyu:/home usermod -g test testuser
root@juzuodaliyu:/home id testuser
uid=6666(testuser) gid=6667(test) groups=6667(test)
这里用到了命令usermod 意思是修改用户属性。具体用法和含义参照3
3. usermod
usermod命令用于修改用户的属性
格式usermod [options] 用户名
- Linux系统中一切都是文件,因此在系统中创建用户也就是修改配置文件的过程。
- 用户的信息保存在 /etc/passwd文件,可以直接使用vim编辑器修改用户属性,也可以使用usermod修改用户属性
# 这条命令就是修改用户testuser的用户组属性
root@juzuodaliyu:/home usermod -g test testuser
参数 | 作用 |
---|---|
-c | 填写用户的备注信息 |
-d -m | l两个参数连用,可以重新指定用户的家目录并且自动把旧的数据转移过去 |
-e | 账户的到期时间(同useradd) |
-g | 变更用户所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的uid |
具体的用户参照第2条,在自己的虚拟机或者是服务器上实验吧。
4. passwd
- passwd命令用于修改用户密码(口令)、过期时间、认证信息等(这个“等”我一直没有找到其他的用法,如果小伙伴有知道的请留言)
- 一般系统管理员用这个命令更多的是用来更改密码,格式为
passwd [-options] [username]
passwd username
# 然后根据提示修改密码即可
参数 | 含义 |
---|---|
-l | 锁定用户,禁止登陆 |
-u | 解锁用户,允许登陆 |
– | 允许通过标准输入修改用户密码,比如第一篇文章中用过的echo "newpassword" | passwd --stdin Username |
-d | 使该用户可用密码登录系统 |
-e | 强制用户在下次登录时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码锁采用的加密算法名称 |
5. userdel
- userdel命令用于删除用户。格式:
userdel [-options] Username
- 使用userdel删除用户的时候,用户的家目录是默认保存下来的,使用-r参数可以连带一起删除用户的目录
参数 | 作用 |
---|---|
-f | 强制删除用户 |
-r |
root@juzuodaliyun:/home userdel -r testuser
userdel: group testuser not removed because it is not the primary group of user testuser.
userdel: testuser mail spool (/var/mail/testuser) not found
userdel: /home/testusername/ not owned by testuser, not removing
# 查看是否删除
root@juzuodaliyun:/home id testuser
id: ‘testuser’: no such user