用户和用户组查看
id
[root@server1 ~]# id user01
uid=1000(user01) gid=1000(user01) 组=1000(user01)
uid的约定
Linux操作系统会依据用户的uid数值来判定这个用户的角色,分别如下
-
0:超级管理员,也就是root,在linux系统中拥有所有权力 -
1~999:系统用户,系统用户往往是用来约束系统中的服务的 -
1000+:普通用户,可以用来登陆和使用Linux操作系统 -
查看运行进程的用户名,ps命令会在后面进程管理部分讲解
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 09:06 0:00 [kthreadd]
passwd文件
用于保存用户的信息,一般第一行是root用户,下面都是其他用户
[root@localhost ~]# head -n 1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
# 这个格式为用户名:密码:uid:gid:描述:家目录:登陆后执行的命令
shadow文件
格式中密码占位置太长了,所以使用x来替代,Linux系统会到shadow中查找x部分的的密码内容
[root@localhost ~]# head -n 1 /etc/shadow
root:$6$frokclXSnQa8EbKs$pWElbjPlmxjYh30tr8qLsTQVOhuPg7GmW9Sanm2yXAK8TNMgje1gyc/vwPgqvmSMf6VaoEvveM0gFvtETmXy/.::0:99999:7:::
# 这个格式为用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
group文件
用户和组的对应关系,会保存在group文件中
[root@localhost ~]# head -n 1 /etc/group
root:x:0:
# 这个格式是组名:口令:组标识号:组内用户列表
用户组管理
添加用户组:groupadd
选项
- -g:指定新建工作组的 id;
- -r:创建系统工作组,系统工作组的组ID小于 500;
- -K:覆盖配置文件
/etc/login.defs - -o:允许添加组 ID 号不唯一的工作组。
- -f:如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
修改用户组:groupmod
选项
- -g:将组 ID 改为 GID
- -n:改名为 NEW_GROUP
- -o:允许使用重复的 GID
[root@server1 ~]# groupadd fd -g 4000
[root@server1 ~]# tail -n 1 /etc/group
fd:x:4000:
[root@server1 ~]# groupmod -n finance fd
[root@server1 ~]# tail -n 1 /etc/group
finance:x:4000:
删除用户组:groupdel
用户组成员管理:gpasswd
gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/shadow 管理工具,用于将一个用户添加到组或者从组中删除
选项
- -a:添加用户到组;
- -d:从组删除用户;
- -A:指定管理员;
- -M:指定组成员和-A的用途差不多;
- -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
实例
[root@server1 ~]# useradd itadmin
[root@server1 ~]# groupadd it -g 2000
[root@server1 ~]# gpasswd -a itadmin it
正在将用户“itadmin”加入到“it”组中
[root@server1 ~]# cat /etc/group | grep it:
it:x:2000:itadmin
[root@server1 ~]# id itadmin
uid=1002(itadmin) gid=1002(itadmin) 组=1002(itadmin),2000(it)
# 在用户的信息中,可以看到这个用户的所属组
用户管理
添加用户:useradd
选项
-
-c comment:指定一段注释性描述。 -
-d 目录:指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -
-m:创建用户的主目录 -
-g 用户组:指定用户所属的用户组,默认会创建一个和用户名同名的用户组。 -
-G 用户组:用户组 指定用户所属的附加组,一个用户可以属于多个附加组。 -
-s Shell文件:指定用户的登录Shell。 -
-u 用户号:指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。 -
为添加的用户指定相应的用户组
[root@localhost ~]# useradd -g root user02
[root@localhost ~]# useradd -d /home/test user03
[root@localhost ~]# useradd -s /sbin/nologin user04
修改用户:usermod
usermod命令用于修改用户帐号
usermod可用来修改用户帐号的各项设定
选项
- -c <备注>:修改用户帐号的备注文字。
- -a:追加,默认的修改是覆盖
- -d <登入目录>:修改用户登入时的目录。
- -e <有效期限>:修改帐号的有效期限。
- -f <缓冲天数>:修改在密码过期后多少天即关闭该帐号。
- -g <群组>:修改用户所属的群组。
- -G <群组>:修改用户所属的附加群组。
- -l <帐号名称>:修改用户帐号名称。
- -L:锁定用户密码,使密码无效。
- -s :修改用户登入后所使用的shell。
- -u :修改用户ID。
- -U:解除密码锁定。
删除用户:userdel
选项
passwd文件中的shell
查看/etc/passwd 文件会发现在每行的最后是登录成功之后执行的命令,有两种是使用最为频繁的:
- /bin/bash:这个是Linux的命令行工具,我们正常登陆之后默认就是进入命令行
- /sbin/nologin:如果写成nologin,那么用户将无法登录,有些用户是作为进程权限管理而存在的,不需要登录。如果提供登录的功能反而不安全,所以写成nologin
passwd
passwd命令用来更改使用者的密码
选项
- -k:保持身份验证令牌不过期
- -d:删除已命名帐号的密码(只有根用户才能进行此操作)
- -l:锁定指名帐户的密码(仅限 root 用户)
- -u:解锁指名账户的密码(仅限 root 用户)
- -x:密码的最长有效时限(只有根用户才能进行此操作)
- -n:密码的最短有效时限(只有根用户才能进行此操作)
- -w:在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
- -i:当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
- -S:报告已命名帐号的密码状态(只有根用户才能进行此操作)
- –stdin:从标准输入读取令牌(只有根用户才能进行此操作)
[root@server1 ~]# passwd --help
用法: passwd [选项...] <帐号名称>
-k, --keep-tokens 保持身份验证令牌不过期
-d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-l, --lock 锁定指名帐户的密码(仅限 root 用户)
-u, --unlock 解锁指名账户的密码(仅限 root 用户)
-e, --expire 终止指名帐户的密码(仅限 root 用户)
-f, --force 强制执行操作
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作)
--stdin 从标准输入读取令牌(只有根用户才能进行此操作)
Help options:
-?, --help Show this help message
--usage Display brief usage message
[root@localhost ~]# echo 123456 | passwd --stdin test01
更改用户 test01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
chage
chage是用于更改用户密码过期信息
[root@server1 ~]# chage ---help
用法:chage [选项] 登录
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
实例
[root@localhost ~]# chage -d 0 test01
[root@localhost ~]# logout
You must change your password now and login again!
更改用户 test01 的密码 。
为 test01 更改 STRESS 密码。
(当前)UNIX 密码:
或者
[root@localhost ~]# passwd -e username
sudoers
sudo命令执行过程
- 当用户执行sudo时,系统会主动寻找
/etc/sudoers 文件,判断该用户是否有执行sudo的权限 - 确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
- 若密码输入成功,则开始执行sudo后续的命令
赋予用户sudo操作的权限
通过useradd添加的用户,并不具备sudo权限。在ubuntu/centos等系统下, 需要将用户加入admin组或者wheel组或者sudo组。以root用户身份执行如下命令, 将用户加入wheel/admin/sudo组。
usermod -a -G wheel <用户名>
如果提示wheel组不存在, 则还需要先创建该组
groupadd wheel
配置文件
sudo的权限控制可以在/etc/sudoers 文件中查看到。一般来说,通过cat /etc/sudoers指令来查看该文件, 会看到如下几行代码。
[root@server1 ~]# egrep -v '^[ ]*$|^#' /etc/sudoers
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
实例
[root@localhost ~]# useradd user
[root@localhost ~]# echo 123456 | passwd --stdin user
[root@localhost ~]# usermod -a -G wheel user
[root@localhost ~]# su - user
[user@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够
[user@localhost ~]$ sudo -u root cat /etc/shadow
[sudo] user 的密码:
[user@localhost ~]$ sudo cat /etc/shadow
# sudo -u root用的比较多,可以被精简为sudo
papi ALL=(root) NOPASSWD: /bin/chown,/usr/sbin/useradd
- 表示: 用户papi能在所有可能出现的主机上, 提权到root下执行
/bin/chown , 不必输入密码; 但运行/usr/sbin/useradd 命令时需要密码 - 在具有sudo操作的用户下, 执行
sudo -l 可以查看到该用户被允许和被禁止运行的命令 - 查看下列示例
papi ALL=/usr/sbin/,/sbin/,!/usr/sbin/fdisk
- 命令前面加上!号表示取消该命令
- 用户papi在所有可能出现的主机上, 能够运行目录/usr/sbin和/sbin下所有的程序, 但fdisk除外。
- 默认情况下输入一次sudo可以保持15分钟不再要求输入密码,如果想要延长这个时间,可以修改配置文件
[root@localhost ~]# visudo
Defaults env_reset,pwfeedback,timestamp_timeout=60
# 这个是改成60分钟才会需要再次输入密码,并且输入密码的时候会显示*号
文件权限设置
- chown (change ownerp) : 修改所属用户与组。
- chmod (change mode) : 修改用户的权限。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MsuIOKWX-1631071327279)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20210731203058481.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MRC27nYa-1631071327281)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20210731203114977.png)]
修改文件属主chown
chown用于设置文件所有者和文件关联组的命令
chown 需要超级用户root 的权限才能执行此命令
实例
[root@localhost ~]# chown root anaconda-ks.cfg
- 将文件的拥有者设置为user01,允许使用的组设置为it
[root@localhost ~]# chown user01:it file.txt
[root@localhost ~]# chown -R :it dir/*
修改文件权限chmod
chmod是控制用户对文件的权限的命令
权限 | 对文件的影响 | 对目录的影响 |
---|
r(读取) | 可以读取文件的内容 | 可以列出目录的内容(文件名),可以使用ls命令 | w(写入) | 可以更改文件的内容 | 可以创建或删除目录中的任一文件,可以使用touch、rm命令 | x(可执行) | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限),可以使用cd命令 |
文件访问控制列表
getfacl命名
获取文件访问控制列表的详细内容
[root@server1 ~]# getfacl test1
# file: test1
# owner: root
# group: root
user::rw-
group::r--
other::r--
setfacl命令
用来设置更精确的文件权限
选项
-
-m:更改文件的访问控制列表 -
-M:从文件读取访问控制列表条目更改 -
-x:根据文件中访问控制列表移除条目 -
-X:从文件读取访问控制列表条目并删除 -
-b:删除所有扩展访问控制列表条目 -
-k:移除默认访问控制列表 -
-d:应用到默认访问控制列表的操作 -
-R:递归操作子目录 -
单独给予user1的可读和可进入权限
[root@server1 /]# setfacl -m u:user01:rx /worker/
[root@server1 /]# ls -la| grep worker
drwxrwx---+ 2 root worker 6 7月 31 20:34 worker
[root@server1 /]# getfacl worker/
# file: worker/
# owner: root
# group: worker
user::rwx
user:user01:r-x # 成功添加user1对workdir的权限
group::rwx
mask::rwx
other::---
[root@localhost ~]# setfacl -x u:user1 /workdir/
[root@localhost ~]# getfacl -c /workdir/
user::rwx
group::rwx
mask::rwx
other::---
|