用户与组

每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

每个用户都有且只有一个的 主组,还可以有任意多个附加组
每个用户一般都有一个与用户名同名的组。组名和用户名可以重复。

用户间传递消息

write user:向用户user发信息
wall:向登陆系统的所有用户群发信息
mesg no:屏蔽别的用户发来的信息
mesg yes

/etc/passwd文件

该文件中每一行都对应了一个用户的账户配置信息。有多少行,就意味着该系统有多少不同的用户。

每一行类似:root:x:0:0:root:/root:/bin/bash
总共列:

  1. 用户名(登录名)
  2. 密码占位符:真正的密码存储于/etc/shadow
  3. uid:用户ID。每一个用户的uid都是互不相同的。
  4. gid:主组ID。
  5. 用户全名
  6. 用户主目录:每一个用户都有一个其专属的目录。对于root账户,其主目录在/root;其他用户默认为/home/username。用户主目录有缩写:~username。
  7. 登录shell:Shell是当用户登录系统时运行的程序名称

root账户:系统管理员账户,拥有最高权限。其uid和gid都为0。
Linux系统中有些用户是无法登陆系统的。

根据用户uid的取值,可以将用户分为如下几类:

  1. uid为0:管理员用户,拥有最高权限
  2. uid为1~999:系统用户,Linux系统中用来负责运行系统服务的用户
  3. uid从1000开始:普通用户

/etc/group文件

该文件中每一行对应了一个组的配置信息。共有4列:

  1. 组名
  2. 组口令
  3. 组id(gid)
  4. 组成员(不包括主组)

常用管理命令

id:显示当前登陆用户信息(groups这列会显示用户的主组和附加组);id username:显示username对应用户的信息

groups
w:查看系统当前登陆的所有用户情况
alt+fn:切换命令行窗口
last:显示系统的历史登录记录

su: switch to root
su username: switch to username

sudo:以root的权限临时运行某命令
默认情况下,普通用户无法使用sudo。配置使得普通用户可以使用sudo命令:
1. 切换到root账户
2. 执行命令visudo
3. 添加一行 username ALL=(ALL) ALL
4. 保存比退出vi编辑器

useradd username:创建一个用户
useradd -r username:创建一个系统用户(默认不会给系统用户自动创建用户主目录)
useradd -d homedir username:创建一个用户,并指定其用户主目录为homedir
useradd -g mg -G sg username:创建一个用户,并指定用户的主组为mg,附加组为sg

usermod: 修改用户信息
usermod -G g1,g2 username:将用户username的附加组修改为g1,g2
usermod -aG g username:将用户username的附加组添加新的组g
usermod -g g username:将用户username的主组改为g
usermod -m -d dir username: 将用户username的用户主目录更改为dir

userdel username:删除用户
userdel -r username: 删除用户,并且同时删除其用户主目录

groupadd:创建一个组

groupmod:修改组信息
groupmod -n ng g: 将组g的组名改为ng
groupmod -g ngid g: 将组g的gid改为ngid

groupdel:删除组

passwd:修改密码。普通用户修改密码需要输入当前密码,root用户修改密码只需输入新密码
passwd username:修改username对应用户的密码,只有root可以使用此命令
passwd -d username: 删除密码
passwd -S username:显示用户密码信息,但不会直接显示明文密码
passwd -l username:锁住用户的密码,禁止登陆
passwd -u username:解锁用户的密码

chage:设定用户密码的过期时间
change -l:查看用户密码的过期信息
chage -d 0 username: 使用户下次登陆之后修改密码
chage -M x username:使得用户密码最大存活时间为x天,即x天内用户必须改密码

用户权限

在Linux中每个文件都有权限设置,Linux使用字母表示权限:

文件 文件夹
r(4) 可读 可以列出文件夹的文件列表
w(2) 可写 可以在文件夹下创建、删除文件
x(1) 可执行 可通过cd进入
-(0) 不具有相应权限 不具有相应权限

Linux文件的权限设置采用9位字母表示,这9位字母按顺序每三个分为一组,共三组,分别代表:

  1. 该文件属主用户的权限
  2. 该文件属组内用户的权限
  3. 其他用户的权限

举例:

  • rwx——w-:4+2+1,0+0+0,0+1+0=702;二进制111,000,010 = 十进制702
  • —xr-xrw-:0+0+1,4+0+1,4+2+0=156;二进制001,101,110 = 十进制156
  • 617:rw—-xrwx
  • 452:r—r-x-w-

当用户访问文件系统中的文件时,Linux采用如下权限判定方式:

  1. 若访问者的uid与文件的uid一致,则应用该文件的“属主用户权限”
  2. 否则,若访问者的gid与文件的gid一致,则应用该文件的“属组权限”
  3. 否则,就应用“其他用户权限”

例子:Linux系统A内有用户xingjian(uid:1000),Linux系统B内有用户ciec(uid:1000)。xingjian在系统A内向移动硬盘存了一个文件f,那么当该移动硬盘挂载到系统B后,用户ciec拥有文件f的“属主用户权限”。
不同的Linux系统中,同一个uid可以对应于不同的用户名。

chmod

可以更改文件的UGO权限设置

使用方式1:

chmod 权限的数字形式 filename,例如 chmod 400 a

使用方式2:

chmod u+w filename
chmod g+x filename
chmod o+rw filename
chmod o-r filename
chmod a+x filename
chmod u=rw filename
chmod u=rw,g=rw,o=r filename <=> chmod 664 filename
chmod -R:更改文件夹及该文件夹下属所有子文件的权限信息

chown

需要root权限
chown user:group filename
chown user filename
chown :group filename
chown -R :更改文件夹及该文件夹下属所有子文件的owner信息

umask

设置文件的默认生成掩码。
生成掩码:告诉操作系统生成一个新文件时,该文件应该拥有何种权限。

  • 对于文件:666-umask(如果umask中有奇数数字,则把奇数数字减1后计算)=新文件的权限
  • 对于文件夹:777-umask=新文件的权限

例如,umask为512时,创建一个新文件,其默认权限是?
因为为文件,所以奇数位减去1,512=>402
666 - 402 = 264

umask:以数字的形式查看umask
umask -S:以字符串的形式查看umask
umask n1n2n3:设置umask为n1n2n3

注意:umask设置过的值在用户登出(或重启)后会被重置为默认值(022)。

setfacl

ACL:access control list,访问控制列表
getfacl:获取某个文件或文件夹的acl权限列表

setfacl -[bkRd] [{-m|-x} acl参数] 目标文件名
选项与参数:
-m :配置后续的 acl 参数给文件使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除所有的 ACL 配置参数;
-k :移除默认的 ACL 参数,关于所谓的『默认』参数于后续范例中介绍;
-R :递归配置 acl ,亦即包括次目录都会被配置起来;
-d :配置『默认 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

setfacl -m u:xingjian:rx test
setfacl -m g:group:rx test

  1. 普通ACL:仅对本文件或本文件夹生效
  2. 默认ACL:对子文件和子文件夹生效,只能对目录进行配置