用户和组
用户账号
- 超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。
 
- 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
 
- 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。
 
组账号
- 基本组(私有组):基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4字段记录的即为该用户的基本组GID号。
 
- 附加组(公共组):用户除了基本组以外,额外添加指定的组。
 
相关文件
- /etc/passwd:文件用户的配置文件,保存用户名称、宿主目录、登录Shell 等基本信息
 
- /etc/group:文件组的配置文件,记录Linux包含的组的信息
 
- /etc/shadow:文件口令的配置文件,保存用户的密码、账号有效期等信息
 
- /etc/gshadow:组密码及其相关属性
 
文件属性
rwx
- 读取r:允许查看文件内容、显示目录列表
 
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
 
- 可执行x:允许运行程序、切换目录
 
注意:三个权限的位置不会改变,如果没有权限,就会出现-代替,如果rwx任意位置变为-则代表不可读或不可写或不可执行文件。
| 权限 | 
读 | 
写 | 
执行 | 
 | 
| 字符 | 
r | 
w | 
x | 
- | 
| 数字 | 
4 | 
2 | 
1 | 
0 | 
查看文件/目录的权限和归属
| 字符 | 
描述 | 
| d | 
目录 | 
| - | 
文件 | 
| l | 
链接文档(link file) | 
| b | 
装置文件里面的可供储存的接口设备(可随机存取装置) | 
| c | 
装置文件里面的串行端口设备 | 
- 第一段(3位):代表拥有者的权限
 
- 第二段(3位):代表拥有者所在的组,组员的权限
 
- 第三段(3位):代表的是其他用户的权限
 
每个文件的属性由左边第一部分的10个字符来确定
| 类型 | 
文件类型 | 
属主权限 | 
属组权限 | 
其他用户权限 | 
| 位置 | 
0 | 
123 | 
456 | 
789 | 
用户管理
查看用户信息
- whoami:查看当前用户
 
- who:打印当前登录用户
 
| 参数 | 
描述 | 
| -a | 
打印全面信息 | 
| -b | 
打印系统最近启动时间 | 
| -d | 
打印死掉的进程 | 
| -l | 
打印系统登录进程 | 
| -H | 
带有列标题打印用户名,登录终端和登录时间 | 
| -t | 
打印系统上次锁定时间 | 
| -u | 
打印已登录用户列表 | 
exit:退出登录账户
useradd:添加用户
| 参数 | 
描述 | 
| -u | 
指定用户的 UID 号,要求该 UID 号码未被其他用户使用。 | 
| -d | 
指定用户的宿主目录位置(当与-M 一起使用时,不生效)。 | 
| -e | 
指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 | 
| -g | 
指定用户的基本组名(或使用 GID 号),对应的组名必须已存在。 | 
| -G | 
指定用户的附加组名(或使用 GID 号),对应的组名必须已存在。 | 
| -m | 
用户目录不存在时自动创建 | 
| -M | 
不建立宿主目录。 | 
| -s | 
指定用户的登录 Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。 | 
| -r | 
建立系统账号 | 
| -c | 
添加备注文字 | 
1 2 3 4
   | useradd -m liyou1:创建用户名,并且创建与用户名相同的目录与用户组 useradd -d /home/liyou -m liyou2:指定用户目录 useradd -g ftp liyou3:指定用户组 useradd -p 123 liyou4:指定用户密码
   | 
 
userdel:删除用户
1 2 3
   | userdel liyou:删除用户,但不删除其家目录及文件 userdel -r liyou:删除用户,并将其家目录及文件一并删除 userdel -f liyou:强制删除用户
   | 
 
usermod:修改用户账号
| 参数 | 
描述 | 
| -u | 
修改用户的 UID 号。 | 
| -d | 
修改用户的宿主目录位置。 | 
| -e | 
修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 | 
| -g | 
修改用户的基本组名(或使用 GID 号)。 | 
| -G | 
修改用户的附加组名(或使用 GID 号)。 | 
| -s | 
指定用户的登录 Shell。 | 
| -l | 
更改用户账号的登录名称 | 
| -L | 
锁定用户账户 | 
| -U | 
解锁用户账户 | 
1 2 3 4 5
   | usermod -d /home/liyou liyou:更改登录目录 usermod -u 777 liyou:改变用户的uid usermod -l liyou liyou1:修改用户名liyou1为liyou usermod -L liyou:锁定密码 usermod -U liyou:解锁密码
   | 
 
passwd:设置用户密码
| 参数 | 
描述 | 
| -d | 
清空指定用户的密码,仅使用用户名即可登录系统。 | 
| -l | 
锁定用户密码,无法被用户自行修改,锁定的用户账号将无法再登录系统。 | 
| -u | 
解开已锁定用户密码,允许用户自行修改(-u解锁时,如果没有密码会提示,需要使用-f强制解锁) | 
| -e | 
密码立即过期,下次登录强制修改密码 | 
| -k | 
保留即将过期的用户在期满后仍能使用 | 
| -S | 
查看用户账户的状态(是否被锁定)。 | 
1 2 3 4 5 6
   | passwd:设置当前用户密码 passwd liyou1:设置用户密码 passwd -l liyou1:锁定密码不允许用户修改 passwd -u liyou1:解除锁定密码,允许用户修改 passwd -e liyou1:下次登录强制改密码 passwd -d liyou1:移除用户密码
   | 
 
sudo:用超级用户的权限执行命令
sudo是为所有想使用root权限的普通用户设计的,可以让普通用户具有临时使用root权限的权利,只需输入自己账户的密码即可
1 2
   | # 进入sudo配置文件命令 vi /etc/sudoer或者visudo
   | 
 
su:切换用户
su用于用户之间的切换,但是切换前的用户依然保持登录状态。如果是root向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。
不足:如果某个用户需要使用root权限、则必须要把root密码告诉此用户。
1 2 3 4 5
   | su test:切换到test用户,但是路径还是/root目录 su - test :切换到test用户,路径变成了/home/test su:切换到root用户,但是路径还是原来的路径 su - :切换到root用户,并且路径是/root exit、logout:退出返回之前的用户
   | 
 
用户组管理
groupadd:添加组
| 参数 | 
描述 | 
| -g | 
指定新建工作组的id | 
| -r | 
创建系统工作组,系统工作组的组ID小于500 | 
| -K | 
覆盖配置文件“/ect/login.defs” | 
| -o | 
允许添加组ID号不唯一的工作组 | 
1 2 3
   | groupadd usergroup1:创建用户组 groupadd -g 8563 usergroup1:创建用户组,指定工作组id groupadd -r usergroup1:使用-r创建系统工作组
   | 
 
groupdel:删除用户组
给出的组名必须存在,若改群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组
1
   | groupdel usergroup1:删除用户组
   | 
 
gpasswd:设置用户的用户组
| 参数 | 
描述 | 
| -a | 
添加用户到组 | 
| -d | 
从组删除用户 | 
| -A | 
指定管理员 | 
| -M | 
定义组成员列表,以逗号分隔 | 
| -r | 
删除密码 | 
| -R | 
限制用户登入组,只有组中的成员才可以用newgrp加入该组 | 
1 2
   | gpasswd -a liyou usergroup1:添加用户到组 gpasswd -d liyou usergroup1:移除用户出组
   | 
 
groupmod:更改用户组
| 参数 | 
描述 | 
| -g | 
设置欲使用的群组识别码 | 
| -o | 
重复使用群组识别码 | 
| -n | 
设置欲使用的群组名称 | 
1 2
   | groupmod -g 222 usergroup1:更改组ID groudmod -n usergroup1 usergroup2:更改组名
   | 
 
groups:查询用户所属的组
格式:groups  [用户名]
权限修改
chmod:修改文件或目录权限
- u(user):所有者
 
- g(group):所有组
 
- o(other):其他人
 
- a(all):所有人
 
1 2 3 4 5 6 7 8 9 10 11 12 13
   | chmod u=rwx,g=rx,o=x 文件目录名 #表示给所有者读、写、执行权限 ,给所有组读和执行权限,给其他人执行权限 chmod o+w 文件目录名 #表示给其他人添加写的权限 chmod a-x 文件目录名 #表示给所有人去除执行的权限
  #1、给abc文件的所有者读写执行的权限,给所有组读执行权限,给其他组读执行权限 chmod u=rwx,g=rx,o=rx abc #2、给abc文件的所有者除去执行的权限,增加所有组写的权限 chmod u-x,g+w abc #3、给abc文件的所有用户添加读的权限 chmod a+r abc
   | 
 
**规则 **
- r=4:二进制 100
 
- w=2:二进制 010
 
- x=1:二进制 001
 
rwx=4+2+1=7
1 2 3 4 5
   | chmod u=rwx,g=rx,o=x 文件目录名 #相当于chmod 751 文件目录名
  #将/home/abc.txt文件的权限修改成rwxr-xr-x,使用数字的方式实现 chmod 755 /home/abc.txt
   | 
 
chown:修改文件所有者
| 参数 | 
描述 | 
| -R | 
递归修改指定目录下所有子项的权限 | 
格式:
- chown newowner file:改变文件的所有者
 
- chown newowner:newgroup file:改变用户的所有者和所有组
 
1 2 3 4
   | #将/home/abc.txt文件的所有者修改成tom chown tom abc.txt #将/home/kkk目录下所有的文件和目录的所有者都修改成tom chown -R tom kkk/
   | 
 
chgrp:修改文件所在组
格式:chgrp newgroup file:改变文件的所有组
1 2 3 4
   | #将/home/abc.txt文件的所在组修改成bandit(土匪) chgrp bandit /home/abc.txt #将/home/kkk 目录下所有的文件和目录的所在组都修改成bandit(土匪) chgrp -R bandit /home/kkk
   |