Ŀ¼
1. Linux 账户及组的概念
Linux 系统是通过用户的 ID 来识别每个账号,默认 ID 长度为 32 位,从 0 开始,用户的 ID及 UID 限制在 60000 以下,其中 Linux 账户UID分为三种:
- root 用户 ( ID 0 )
- 系统用户 ( ID 1 ~ 499 )
- 普通用户 ( ID 500以上 )
Linux 系统中的组分为基本组和附加组,一个用户只可以加入一个基本组,但可以同时加入多个附加组。创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中。
2. 创建账户及组
useradd
命令创建账户,groupadd
用来创建组,创建账户和组时需要有管理员权限。下面给出两个命令的使用方法:
2.1 useradd
描述:创建新账户
用法:useradd [选项] 用户名字
选项 | 解释 |
---|---|
-c | 设置账号描述信息,一般为账号全称 |
-d | 设置账号家目录,默认为/home/用户名 |
-e | 设置账户失效日期,格式为 YYYY-MM-DD |
-g | 设置账户基本组 |
-G | 设置账户附加组,多个附加组用逗号隔开 |
-M | 不创建账户家目录,一般与-s 结合使用 |
-s | 设置账户登录的 shell,默认 bash |
-u | 指定账户 UID |
例1:
useradd -c administrator -d /home/admini -e 2020-01-01 -g root -G bin,adm,mail admin
创建普通用户 admin,全名administrator,家目录/home/admini
,失效日期为 2020-1-1,账户基本组 root,附加组bin,adm,mail。
例2:
useradd -s /sbin/nologin -M user1
创建无法登录系统且无家目录的账户user1
2.2 groupadd
描述:创建组账户
用法:groupadd [选项] 用户名字
选项 | 解释 |
---|---|
-g | 设置组 ID |
例:
groupadd -g 1000 Hello
创建 Hello 组账户,GID 为 1000
- id
id root //查看 root 账户的相关信息
3. 修改账户及组
3.1 passwd
描述:更新账户认证信息。
用法:passwd [选项] [账户名称]
参数选项如下:
选项 | 解释 |
---|---|
-l | 锁定账户,仅root 可使用此选项 |
从文件或管道读取密码 | |
-u | 解锁账户 |
-d | 快速清空账户密码,仅 root 使用 |
例:
passwd Shawn //修改 Shawn 密码 echo “123456” |passwd --stdin Shawn //设置 Shawn 的密码为 123456 passwd -l Shawn //锁定 Shawn passwd -u Shawn //解锁 passwd -d Shawn //清空 Shawn 账户密码
3.2 usermod
描述:修改账户信息
用法:usermod [选项] [账户名称]
参数选项如下:
参数 | 解释 |
---|---|
-d | 修改账户家目录 |
-e | 修改账户失效日期 |
-g | 修改账户所属基本组 |
-G | 修改账户所属附加组 |
-s | 修改账户登录 shell |
-u | 修改账户 UID |
4. 删除账户及组
4.1 userdel
描述:删除账户及相关文件,如果不加参数只删除账户,不删除账户家目录及文件
用法:userdel [选项] 账户名称
参数选项如下:
参数 | 解释 |
---|---|
-r | 删除账户及其相关文件 |
-f | 强制删除账户,即使账户正在使用 |
4.2 groupdel
描述:删除组账户
5. 账户与组文件解析
5.1 账户信息文件
账户信息文件保存在/etc/passwd
中,文件内容如下:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync ...
该文件共七列,以下是每一列解释。
- 第一列:账户名称
- 第二列:密码占位符,x 表示需要密码登录,为空时表示无需密码
- 第三列:账户 UID
- 第四列:GID
- 第五列:账户附加基本信息,一般储存账户全名,联系方式等信息
- 第六列:家目录位置
- 第七列:登录系统 shell
5.2 账户密码文件
账户密码文件保存在/etc/shadow
文件中,文件内容如下:
root:$1$GC$bLGQXmAa7pjS7TkkHvHel.:18032:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7::: adm:*:15980:0:99999:7::: lp:*:15980:0:99999:7::: sync:*:15980:0:99999:7:::
文件已冒号分开共九列,以下是每一列解释。
- 第一列:账户名称
- 第二列:账户密码,账户未设置密码时显示!!,设置密码后会加密显示
- 第三列:上次修改密码的时间距 1970-01-01 有多少天
- 第四列:密码最短有效天数,0 表示无限制
- 第五列:密码最长有效天数,默认99999, 表示无限制
- 第六列:过期前的警告天数
- 第七列:密码过期后宽限天数
- 第八列:账户失效日期,从 1970-01-01 起多少天后账户失效
- 第九列:暂时保留未使用
5.3 组账户信息文件
组账户信息被保存在/etc/group
中,文件内容如下:
root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon tty:x:5:
文件共四列,以下为每一列解释。
- 第一列:组账户名称
- 第二列:密码占位符
- 第三列:GID
- 第四列:这里只显示附加成员信息,基本成员不显示
5.4 组账户密码文件
组账户密码信息被保存在/etc/gshadow
,内容如下:
root::: bin:::bin,daemon daemon:::bin,daemon sys:::bin,adm adm:::adm,daemon tty:::
文件共四列,以下为每一列解释。
- 第一列:组账户名称
- 第二列:组密码
- 第三列:组管理员
- 第四列:组成员与
/etc/group
第四列一样
通过gpasswd 组名
的方式可以为组设置密码,通过gpasswd -A 账户名 组名
可以添加组管理员。
gpasswd admin #设置组密码 gpasswd -A mail admin #将 mail 用户设置为组 admin 的管理员
6. 文件及目录权限
6.1 概念
Linux 权限分为读、写、执行三种控制,下面为三种权限对应关系。
数字 | 字符 | 文件 | Ŀ¼ |
---|---|---|---|
4 | r | 查看文件内容 | 查看目录下的文件与目录名 |
2 | w | 修改文件内容 | 在目录下增、删、改文件或目录 |
1 | x | 可执行,一般为程序或脚本 | 可以 cd 进入该目录 |
6.2 修改文档属性
6.2.1chmod
描述:改变文件或目录权限
用法:chmod [选项] 文件或目录
常用选项及解释如下:
选项 | 解释 |
---|---|
根据参考文档的权限设置该文档的权限 | |
-R | 递归将所有权限应用于所有的子目录与子文件中 |
chmod
命令参数中,u是属主,g 是属组,o 是其他用户,a 代表所有人。
下面是通过chmod
改变文件权限的例子。
chmod u=rwx,g=rwx,o=rwx test.log chmod 777 test.log #设置 test.log 文件的主,组,其他用户权限为rwx chmod a=rw test.log #所有人对test.log 可读写 chmod g-x,o-wx test.log #test.log 文件属组去掉执行权限,其他用户去掉写,和执行权限 chmod --reference=old.txt new.txt #已 old.txt 为标准修改 new.txt 文件的权限
6.2.2chown
描述:修改文件或目录的所有者与所属组。
用法:chown [选项] [所有者]:[所属组] 文件/目录
选项:-R 递归将权限应用于所有子目录于子文件
例:
chown user1:mail install #修改install文件所有者为 user1,所属组为 mail chown :root install #修改 install 文件所属组为 root chown root install #修改文件属主为 root