Linux运维养成记-账户与权限管理

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

  1. id
id root				//查看 root 账户的相关信息

3. 修改账户及组

3.1 passwd

描述:更新账户认证信息。
用法:passwd [选项] [账户名称]
参数选项如下:

选项 解释
-l 锁定账户,仅root 可使用此选项
–stdin 从文件或管道读取密码
-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 [选项] 文件或目录
常用选项及解释如下:

选项 解释
–reference=RFILE 根据参考文档的权限设置该文档的权限
-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

猜你喜欢

转载自blog.csdn.net/weixin_45181224/article/details/91412616