文章目录
一、管理用户账号和组账号
1.1 用户账号说明
1.1.1 用户账号类型
超级用户:管理员账号,root ,默认对本机拥有最高权限的账户。在系统中是唯一的。
普通用户:一般都是由管理员创建的,拥有的权限是受限的,一般只在自己的家目录当中拥有完整的权限。普通用户可以正常的登录系统。
程序用户:在安装软件时,部分应用程序需要创建一些账号,来保证程序的正常运行,就会创建一个程序账户。程序账户是一些特定的低权限的账户,而且这些账户是不能登录系统的。作用:保证程序正常运行。
1.1.2 UID与GID
UID:用户的标识号,创建用户的时候可以指定,也可以系统自动分配,UID是唯一的,不能重复。
GID:组标识号,创建用户的时候可以指定,也可以自动飞陪,也是唯一的,不能重复。
用户账号可以根据UID来区分:
管理员的UID:0
普通用户的UID:1000开始
程序用户的UID:1-999
判定一个用户是否是管理员,以UID为标准。
查看UID:UID存放在/etc/passwd中
1.1.3 对/etc/passwd中条目的解释
/etc/passwd 保存的是用户信息。
对/etc/passwd中条目的解释,以下个条目为例:
root:x:0:0:root:/root:/bin/bash //( : 为分割字段的分隔符)
字段1:root :用户账户的名称
字段2:x :用户密码的占位符,无实意。
字段3: 0 :用户的UID
字段4: 0 :用户的GID
字段5:root :用户的全名,一般都和字段1一致
字段6:/root :用户家目录所在位置
字段7: /bin/bash :用户登录的shell,shell默认的解释器就是bash,只有是/bin/bash才可以登录系统。/sbin/nologin 和 /bin/false 都表示不可以登录系统。一般程序用户的shell都是 /sbin/nologin。
1.1.4 对/etc/shadow中条目的解释
/etc/shadow 保存的是用户的密码和账户的有效期。(密码字段经过加密)(用 :分隔字段)
root:$6$yW6PO2vUa1kf3nAp$bHiEeszKdtO9/aVTZi0Qz.GwGffjpKyw02kdcUFusaH/GY982oWAuGMBGt
KScfi1Kvxw7tGT9vMl4DP8xetNO1:19864:0:99999:7:::
字段1:用户的账号名称
字段2:用户的密码,MD5加密。 * 表示不能登录系统,!!表示密码为空(不是真的空,提示密码未创建),什么都没有才是真的为空。
字段3:表示上一次修改密码的时间,表示从1970-1-1到修改时过了多少天
字段4:密码的最短有效天数,0表示不限制
字段5:密码的最长有效天数,99999表示不限制
字段6:提前多少天警告用户密码将过期
字段7:密码过期之后多少天会禁用此用户
字段8:账号的失效时间(失效了多久),为空表示永不失效
字段9:保留字段,无实意。
1.2 用户账户管理命令
1.2.1 useradd 命令
useradd -选项 用户名 ————格式
useradd :添加用户,创建用户
useradd -u :指定UID号,已被占用的UID不能指定
useradd -d :指定用户的家目录的位置。一般不动。
useradd -e :指定用户的账户失效的时间,格式 yyyy-mm-dd,年-月-日。
useradd -M :创建用户时不建立家目录。
useradd -s :创建用户时指定用户的登录shell。
1.2.2 passwd 命令
passwd 用户名 ————格式
输入新密码(屏幕上不显示),回车确认
passwd -d :清空指定用户的密码。(慎用!)
passwd -l :锁定用户,使之无法登陆。(从超级管理员切换到用户不受限制)
passwd -u :解锁用户。
passwd -S :查看用户的状态,查看用户是否被锁定。
修改密码的另一种方式:
echo 密码 | passwd --stdin 用户名 ————格式
// 例:修改用户test1的密码为123456
echo 123456 | passwd --stdin test1
1.2.3 usermod 命令
usermod -选项 参数 用户名 ————格式
usermod -u :修改用户的UID
usermod -d :修改用户的家目录地址(不常用此功能)
usermod -e :修改用户的账户失效时间,yyyy-mm-dd(年-月-日)
usermod -s :修改用户登录的shell
usermod -L :锁定用户
usermod -U :解锁用户
锁定用户的两种方式:
passwd -l
usermod -L
1.2.4 userdel 命令
userdel -选项 用户名 ————格式
userdel -r :删除用户,同时删除家目录
1.3 组账号
1.3.1 组账号说明
/etc/group :组账号信息
/etc/gshadow :保存组账号的额外信息
创建用户时自动创建组账号,一般不许要对组账号做额外的操作。
1.3.2 组账号命令
groupadd :添加组账号
groupdel :删除组账号
gpasswd 命令
gpasswd -选项 用户名 组用户名 ————格式
gpasswd :修改组密码
gpasswd -a :向组内添加用户
gpasswd -d :从组内删除用户,删除组员只能单个删除
gpasswd -M :定义组员的列表,每个用户用逗号隔开,可一次性添加多个组员
1.4 配置文件
/etc/profile :全局配置,对所有用户都生效
~/.bash_profile :用户登录时会读取的配置,只对自己生效。
~/.bashrc :用户的配置文件,只对自己生效。每一次新打开一个子shell(建立一个终端),就会读取这个文件。每次登录都是shell的一个子shell,每个子shell之间互相隔离。
~/.bash_logout:用户退出当前shell的时候会执行的配置文件。
修改配置后,使用source + 配置文件名 ,使修改后的配置立即生效。重启系统也可以使配置生效。
读取顺序(优先级)从高到低:
/etc/profile :先读全局配置
~/.bash_profile :再读登录用户配置
~/.bashrc :再读打开子shell的配置
~/.bash_logout :退出子shell时的配置
二、权限管理
2.1 查询用户信息
id命令
id :查询用户UID,GID
id 用户名 ————格式
w,who,users 命令
查询已经登录到主机的用户信息
2.2 文件、目录的权限和归属
旧的方法
U:所有者;G:所在组;O:其他用户;A:所有用户
例:a+x :所有用户赋予执行权限
被八进制算法替换了。
新的方法:
无权限即为0,举例:rwx r-x -w- :对应 752 八进制数。
2.3 管理权限的命令
2.3.1 chmod命令
chmod :change mode :赋权命令
chmod -选项 权限(3位8进制数) 参数(对象文件/目录) ————格式
chmod 654 /opt/xyz.txt
//解释:对/opt目录下的xyz.txt文件赋权:
所有者权限rw-,所在组权限r-x,其他用户权限r--
chmod -R :递归赋权,对目标目录下所有(文件和子目录)批量赋权
chmod -R 权限(3位8进制数) 参数(对象目录)
chmod -R 777 /opt/aa/bb/cc
//解释:对/opt/aa/bb/cc 目录下的所有(包括目录cc)赋权 777 ,即rwx rwx rwx
chmod -R 777 /opt/aa/bb
//解释:对/opt/aa/bb 目录下的所有文件和子目录
(包括cc以及其他可能存在的所有子目录,以及子目录下的所有)赋权 777
2.3.2 umask命令
umask :用来设定文件和目录的默认权限
umask xxx ————格式,xxx代表八进制数
文件的默认权限:666
目录的默认权限:777
文件和目录的实际默认权限:= 默认权限 - umask。
创建文件,默认不赋予执行权限。所以实际权限一旦为奇数,默认+1。
创建目录,一定要有执行权限,没有执行权限,就不能cd进入这个目录。所以无论给不给执行权限,目录都有执行权限。
问:我要修改一个文件的默认权限,怎么办?
答:修改umask,如果是文件,怎么改umask都没有执行权限。
2.3.3 chown命令
chown:change owner,修改所有者和所在组。前提:用户和所在组要存在,要先创建好。
chown 用户、所在组 文件/目录名 ————格式
chown id:id :所有者和所在组一起变
chown id.id :同上
chown id :只改变所有者
chown .id :只改变所在组
chown :id :同上
chown -R :递归改变所有者和所在组,模式同chmod
chown test1.test1 03
ls -al 03
drwxr-xr-x. 3 test1 test1 17 May 21 02:42 .
drwxr-xr-x. 5 root root 208 May 21 02:42 ..
drwxr-xr-x. 2 root root 20 May 21 02:43 004
// 解释:可以看到只有目录 03 被修改了所属,但目录 03 下的子目录和文件没有被修改所属
chown -R test1.test1 03
ls -lR 03
03:
drwxr-xr-x. 2 test1 test1 20 May 21 02:43 004
03/004:
-rw-r--r--. 1 test1 test1 0 May 21 02:43 01.txt
//解释:可以看到目录 03 下的所有都被修改了所属