linux用户及权限管理
linux用户,组管理介绍
linux操作系统对多用户管理是非常繁琐的,所以用组的概念来管理用户就变得简单了,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户,Linux系统用户时根据用户ID来识别的,默认ID长度为32位,默认ID编号从0开始(其实就是root),但是为了和老式系统兼容,用户ID限制在60000以下,linux用户总共分为3种:
- root用户(ID 0)
- 系统用户(ID 1~499)
- 普通用户(ID 500以上)
linux系统中的每个文件或者文件夹都有一个所属用户及所属组,使用id命令可以显示当前用户的信息,使用passwd命令可以修改当前用户密码。
linux操作系统用户的特点如下:
- 每个用户拥有一个UserID,操作系统实际读取的是UID,而非用户名
- 每个用户属于一个主组,属于一个或者多个附属组,一个用户最多有31个附属组
- 每个拥有一个GroupID
- 每个进程以一个用户身份运行,该用户可对进程拥有资源控制的权限
- 每个可登陆用户拥有一个指定的shell环境
linux用户在操作系统中可以进行日常管理和维护,涉及的相关配置文件如下:
- /etc/passwd:保存用户信息
- /etc/shadow:保存用户密码(以加密形式保存)
- /etc/group:保存组信息
- /etc/login.defs:用户属性,密码过期时间,密码最大长度等限制
- /etc/default/useradd:显示或更改默认的useradd配置文件
linux用户管理
如果创建新用户,可以使用命令useradd,执行命令 useradd fengzi7314 即可创建fengzi7314用户,同时会创建一个同名的组fengzi7314,默认该用户属于fengzi7314组
执行useradd fengzi7314会根据以下操作步骤进行:
- 在/etc/passwd文件中添加用户信息
- 如使用passwd命令创建密码,密码会被保存在/etc/shadow中
- 为fengzi7314创建一个家目录/home/fengzi7314
- 将/etc/skel中的.bash开头的文件复制到/home/fengzi7314家目录
- fengzi7314组信息保存在/etc/group配置文件中
在使用useradd命令时,可以添加如下参数
-d:新账户的主目录 -e:新账户的过期日期 MM/DD/YY-g:新账户属组的名称或ID-r:创建一个系统账户 -s:新账户的登录shell -u:新账户的UID
-G:新建账户的附加组
-c, --comment 注释
useradd案例
- 新建fengzi7314用户,并添加到group1和group2附属组
[root@localhost var]# useradd -G group1,group2 fengzi7314
[root@localhost var]# id fengzi7314
uid=1000(fengzi7314) gid=1002(fengzi7314) 组=1002(fengzi7314),1000(group1),1001(group2)
- 新建fengzi1234账户,并制定新的家目录,同时指定其登录的shell
[root@localhost var]# useradd -d /tmp/fengzi1234 -s /bin/sh fengzi1234 [root@localhost var]# su - fengzi1234 -sh-4.2$ pwd /tmp/fengzi1234 -sh-4.2$ whoami fengzi1234 -sh-4.2$
此外我们可以用chage命令去查看用户状态
[root@localhost ~]# useradd liwang [root@localhost ~]# chage -l liwang 最近一次密码修改时间 :11月 14, 2019 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7
我们可以编辑/etc/login.defs进行修改 ,那么后建立的账户就会遵循这个配置进行创建
[root@localhost ~]# vim /etc/login.defs
PASS_MAX_DAYS 99999 #密码过期时间,99999代表永不过期 PASS_MIN_LEN 5 #密码最小长度 PASS_WARN_AGE 7 #在密码过期之前警告的天数
如果用户已经被创建,我们想修改他的用户信息可以用
chage -I 5 USERNAME:密码5天后失效时间 chage -M 30 USERNAME:密码30天后过期 chage -W 3 USERNAME:在密码过期之前3天警告 chage -E 11/15/19 USERNAME:在19年11月15日账户过期 chage -l USERNAME:查看用户过期时间,密码过期时间等
linux组管理
linux组管理有如下特点
- 每个组有一个组ID
- 组信息保存在/etc/group中
- 每个用户至少拥有一个主组,同事还可以拥有31个附属组
- 通过命令groupadd,groupdel,groupmod来对组进行管理
groupadd用法如下:
-h:帮助信息 -g:为新组使用GID -r:创建一个系统账户
案例:
- 创建名字为group1的组
[root@localhost var]# groupadd group1
- 创建group2并且制定GID为2000
[root@localhost var]# groupadd group2 -g 2000
- 创建一个系统组(system)名为group3
[root@localhost var]# groupadd -r group3
groupmod用法如下:
-g:将组ID改为GID -h:帮助信息 -n:将旧组名改为新组名
案例:
- 把组名group1修改成为group250
[root@localhost var]# groupmod -n group250 group1
- 把group250的GID号修改成为4000
[root@localhost var]# groupmod -g 4000 group250
groupdel用于删除用户组
[root@localhost mnt]# groupdel group1
linux用户及组案例
useradd主要用于新建用户,而用户创建完毕,可以使用usermod来修改用户及组的属性,一下为usermod参数
-c, --comment 注释 GECOS 字段的新值 -d, --home HOME_DIR 用户的新主目录 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE -f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态 -g, --gid GROUP 强制使用 GROUP 为新主组 -G, --groups GROUPS 新的附加组列表 GROUPS-h, --help 显示此帮助信息并推出-L, --lock 锁定用户帐号-s, --shell SHELL 该用户帐号的新登录 shell -u, --uid UID 用户帐号的新 UID -U, --unlock 解锁用户帐号
案例:
- 将fengzi7314用户的付家组修改为group1,group2
[root@localhost var]# usermod -G group1,group2 fengzi7314
- 锁定fengzi7314用户和解锁fengzi7314用户
[root@localhost var]# usermod -L fengzi7314;usermod -U fengzi7314
- 将fengzi7314用户名修改为fengzi1234
[root@localhost var]# usermod -l fengzi1234 fengzi7314
userdel
主要是用来删除用户的
userdel fengzi7314:保留用户的家目录 userdel -r fengzi7314:删除用户及用户家目录,用户login系统无法删除 userdel -rf fengzi7314:强制删除用户及该目录的家目录,无论是否登录
权限管理
linux权限是操作系统用来限制对方访问资源的机制,权限一般分为读,写,执行,系统中每一个文件都拥有特定的权限,所属用户和所属组,通过这样的机制来限制哪些用户或组可以对特定文件进行相应的操作
linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限越大
权限 | 对文件的影响 | 对目录的影响 |
r(读) | 可读取文件内容 | 可列出目录内容 |
w(写) | 可修改文件内容 | 不能查看目录内容,不在目录中创建文件,不能cd到目录中 |
x(执行) | 可作为命令执行 | 可以进入到目录,但是不能查看也不能创建删除 |
linux系统中可以通过ls -l查看详细属性,目录如下:
chmod命令
主要是用来设置文件或者目录的权限比如chmod o+x FILE ,权限也可以用数字表示
r:4
w:2
x:1
chmod 777 FILE代表给FILE文件赋予读写执行权限
常用选项
-c:如果修改权限成功显示信息,如果没改变不显示
-R:递归赋予权限
chown命令
chown命令主要用于修改文件或目录所属主和所属组
常用选项
-R:递归赋予属主和属组
-v:显示详细信息
sudo权限
sudo简介:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性
第一步,创建用户并给与密码
[root@localhost ~]# useradd liwang [root@localhost ~]# echo "liwang" | passwd --stdin liwang 更改用户 liwang 的密码 。 passwd:所有的身份验证令牌已经成功更新。
第二步,编辑/etc/sudoers文件,这里可以用visudo也可以vim /etc/sudoers,写入用户信息,liwang就是新创建的用户
- 第一个ALL:表示允许登录的主机
- 第二个(ALL):表示以谁的身份执行,ALL表示root身份
- 第三个ALL:表示当前用户可以执行的命令
第三步,su到liwang用户,并测试
[liwang@localhost ~]$ sudo ls -ltr /root/ 总用量 22076 -rw-r--r-- 1 root root 22580749 7月 17 2017 Python-3.6.2.tgz -rw-------. 1 root root 1257 5月 28 08:18 anaconda-ks.cfg drwxr-xr-x. 5 root root 272 6月 16 23:03 old drwxr-xr-x. 5 root root 240 6月 16 23:31 inc1 drwxr-xr-x. 5 root root 235 6月 16 23:31 fullbackup drwxr-xr-x 17 root root 4096 6月 18 15:11 Python-3.6.2 -rw-r--r-- 1 root root 102 6月 18 21:42 test.yaml -rw-r--r-- 1 root root 15 6月 18 21:42 test.retry -rw-r--r-- 1 root root 1100 11月 14 15:44 passwd -rw-r--r-- 1 root root 1130 11月 14 16:49 myfile.txt
note:NOPASSWD是每次用sudo命令的时候不需要写密码
补充
如果不想给用户太高权限可以编辑/etc/sudoers文件进行修改,如下: