用户与组
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
每个用户都有且只有一个的 主组,还可以有任意多个附加组。
每个用户一般都有一个与用户名同名的组。组名和用户名可以重复。
用户间传递消息
write user:向用户user发信息
wall:向登陆系统的所有用户群发信息
mesg no:屏蔽别的用户发来的信息
mesg yes
/etc/passwd
文件
该文件中每一行都对应了一个用户的账户配置信息。有多少行,就意味着该系统有多少不同的用户。
每一行类似:root:x:0:0:root:/root:/bin/bash
总共七列:
- 用户名(登录名)
- 密码占位符:真正的密码存储于
/etc/shadow
- uid:用户ID。每一个用户的uid都是互不相同的。
- gid:主组ID。
- 用户全名
- 用户主目录:每一个用户都有一个其专属的目录。对于root账户,其主目录在
/root
;其他用户默认为/home/username
。用户主目录有缩写:~username。 - 登录shell:Shell是当用户登录系统时运行的程序名称
root账户:系统管理员账户,拥有最高权限。其uid和gid都为0。
Linux系统中有些用户是无法登陆系统的。
根据用户uid的取值,可以将用户分为如下几类:
- uid为0:管理员用户,拥有最高权限
- uid为1~999:系统用户,Linux系统中用来负责运行系统服务的用户
- uid从1000开始:普通用户
/etc/group
文件
该文件中每一行对应了一个组的配置信息。共有4列:
- 组名
- 组口令
- 组id(gid)
- 组成员(不包括主组)
常用管理命令
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位字母按顺序每三个分为一组,共三组,分别代表:
- 该文件属主用户的权限
- 该文件属组内用户的权限
- 其他用户的权限
举例:
- 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采用如下权限判定方式:
- 若访问者的uid与文件的uid一致,则应用该文件的“属主用户权限”
- 否则,若访问者的gid与文件的gid一致,则应用该文件的“属组权限”
- 否则,就应用“其他用户权限”
例子:Linux系统A内有用户xingjian(uid:1000),Linux系统B内有用户ciec(uid:1000)。xingjian在系统A内向移动硬盘存了一个文件f,那么当该移动硬盘挂载到系统B后,用户ciec拥有文件f的“属主用户权限”。
不同的Linux系统中,同一个uid可以对应于不同的用户名。
chmod
使用方式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
- 普通ACL:仅对本文件或本文件夹生效
- 默认ACL:对子文件和子文件夹生效,只能对目录进行配置