- 权限计算方法
文件默认权限:644
目录默认权限:755
umask :用于设置权限计算参考值
#文件:666 - umask = 666 - 022 = 644 偶数运算
#文件:666 - umask = 666 - 033 = 633 + 011 = 644 奇数运算
#目录:777 - umask = 777 - 022 = 755 没有奇偶运算区别
umask为什么永久设置的是022:
查看/etc/profile 文件
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]
如果 条件01 &&
> < = >= <= ≠
gt lt eq ge le ne
then 然后
umask 002
else 否则
umask 022
fi
- 用户相关命令介绍
张三 运维部门 sa_zhangsan sa组 1000~2000
李四 开发部门 dev_lisi dev组 2001~3000
王五 数据库部分 db_wangwu db组 3001~4000
老男孩 全才 sa_oldboy sa组 dev db
useradd 添加用户信息
-g --- 指定用户属于哪个特定组(主要组)
-G --- 指定用户属于哪个特定组(附属组)
-u --- 指定用户编号信息(uid)
-c --- 指定用户描述信息
-M --- 表示不创建家目录
-s --- 表示指定用户登录方式
用户登录系统设置方式:
能登陆: /bin/bash
不能登陆:/sbin/nologin
===================================
用户和组的关系:
1对1关系: 一个用户属于一个组
1对多关系:一个用户属于多个组
n对1关系: 多个用户属于一个组
n对n关系: 多个用户属于多个组
===================================
passwd 修改用户密码信息
交互设置密码:
#passwd sa_zhangsan
更改用户 sa_zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
普通用户设置修改密码有复杂度要求:
长度不能小于8位
密码需要有字符组合:
Zaq!abcd1
非交互设置密码:
echo 654321|passwd --stdin sa_zhangsan
测验:*
如何创建多个用户 oldboy01 oldboy02 oldboy03 并且每个用户密码信息为123456 通过一条命令创建出来 (之前只是汇总)
单个用户创建并设置密码:
useradd oldboy01 ; echo 123456|passwd --stdin oldboy01
批量多个用户创建并设置密码
useradd oldboy01 ; echo 123456|passwd --stdin oldboy01
useradd oldboy02 ; echo 123456|passwd --stdin oldboy02
useradd oldboy03 ; echo 123456|passwd --stdin oldboy03通过某个命令将上面三行命令信息输出出来
echo {01..03}|xargs -n1|sed -r 's#(..)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'
useradd oldboy01;echo 123456|passwd --stdin oldboy01
useradd oldboy02;echo 123456|passwd --stdin oldboy02
useradd oldboy03;echo 123456|passwd --stdin oldboy03echo {01..03}|xargs -n1|sed -r 's#(..)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'|bash
更改用户 oldboy01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 oldboy02 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 oldboy03 的密码 。
passwd:所有的身份验证令牌已经成功更新。
usermod: 修改已有用户设置信息
-g --- 修改用户属于哪个特定组(主要组)
-G --- 修改用户属于哪个特定组(附属组)
-u --- 修改用户编号信息(uid)
-c --- 修改用户描述信息
-s --- 修改指定用户登录方式
用户登录系统设置方式:
能登陆: /bin/bash
不能登陆:/sbin/nologin
userdel:删除指定用户
-r --- 彻底删除用户所有信息
groupadd --- 提前创建出指定的用户组
-g --- 指定用户组gid数值
w:显示当前登录系统用户信息
15:00:06 up 4 days
系统已运行时间
19:32
系统登录时间
2 users
已登录用户
oad average: 0.00, 0.01, 0.05
分别代表系统一分钟、五分钟、以及十五分钟的系统平均负载
15:00:06 up 4 days, 19:32, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 Wed10 4days 0.06s 0.06s -bash
root pts/0 10.0.0.1 Wed16 6.00s 1.25s 0.02s w
从USER到 WHAT 分别代表
登录用户 登录方式 登录客户端主机地址 登录时间 空闲时间
JCPU指的是与该tty终端连接的所由进程占用的时间,不包括过去的后台作业时间;PCPU 指的是当前进程(即w项中显示的)所占用的时间
执行什么操作
踢出指定用户:
第一个历程:查看已连接用户的ssh会话进程id信息
ps -ef|grep ssh
第二个历程:停止指定用户的会话进程(等价于踢出指定用户)
kill 进程编号
系统重要目录与文件(用户相关文件) 了解
/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
① ② ③ ④ ⑤ ⑥ ⑦
① 系统已有用户名称
② 系统用户密码信息
③ 系统用户uid编号
④ 系统用户组gid编号
⑤ 系统用户描述信息
⑥ 系统用户家目录路径信息
⑦ 系统用户登录方式
/etc/shadow --- 记录系统用户密码信息
/etc/group --- 记录系统用户组信息
/etc/gshadow --- 记录系统用户组密码信息/etc/skel/ --- 保存用户家目录模板文件信息 (样板间) 面试题
useradd 用户:
创建家目录 --- cp /etc/skel/* /home/oldboy10/
-bash-4.2$ --- 命令提示符出现此情况,表示自己家被毁了
恢复方式:
cp /etc/skel/.b* ~/.bash_logout 相对 /etc/rc.local
用户权限提权设置
概念解释:将root用户具有的能力可以分配给指定用户进行使用
第一个历程:设置指定用户特殊权限
visudo --- 切换到92行 === vi /etc/sudoers
\# 92 root ALL=(ALL) ALL
① ② ③
oldboy ALL=(ALL) /bin/vim /etc/hosts, /bin/touch /etc/*①
指定授予特殊权限用户信息②
可以实现权限设置集中管理③
具体赋予特殊权限信息
第二个历程:行使赋予的特权
sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
# 输入密码后
Matching Defaults entries for root on centosb:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User root may run the following commands on centosb:
(ALL) ALL
# visudo 编辑 用户的权限
# 代表centosb 拥有授权的权利 编辑hosts 在etc下创建文件 (加上sudo)
# 注意 内置命令 如cd 不可以授权 使用man查看内置命令
centosb (ALL) /bin/vim /etc/hosts, /bin/touch /etc/*
用户提权操作扩展说明:
1)
如何在使用特权时不用输入密码:
visudo
oldboy ALL=(ALL) NOPASSWD: /bin/vim /etc/hosts, /bin/touch /etc/*
2)
危险权力排除操作
oldboy ALL=(ALL) NOPASSWD: /bin/vim /etc/, ! /bin/vim /etc/sudoers, /bin/touch /etc/
系统特殊权限设置
1)特殊权限位介绍 9+3 = 12位权限
setuid权限位(属主位设置):对命令文件设置特殊权限,让普通用户具有命令文件属主执行能力
chmod u+s 命令文件 s=4setgid权限位(属组位设置):对命令文件设置特殊权限,让普通用户组具有命令文件属组执行能力
chmod g+s 命令文件 s=2sticky权限位(其他用户位设置):粘滞位
可以在系统设置一个共享存储目录,目录中的数据可以互相查看,但是只能文件所有者可以进行编写和删除操作,不能被其他用户管理
chmod o+t 目录信息 t=1
2)文件数据上锁权限设置
文件被上锁设置后,系统中所有用户(包含root)都不能对文件进行编辑修改
给文件加上锁权限:
chattr +i /etc/hosts
查看文件是否上锁:
lsattr /etc/hosts
给文件解锁操作过程:
chattr -i /etc/hosts
作用:企业中可以将重要文件数据信息进行上锁保护
3)给文件数据权限设置访问控制列表
作用说明:一个数据文件可以被多个指定用户进行管理 可以被多个指定用户组进行管理
getfacl:查看文件访问控制列表信息
chattr 修改文件或者目录的特殊属性(拓展属性)
a #限定文件具有某种功能。这个对于日志文件非常有作用,比如,不允许删除,只允许向里面追加内容。
b #不更新或修改文件或目录的最后存储时间
c #将文件或目录压缩后存储
d #将文件或目录排除在倾倒操作之外
i #锁定文件或目录,不被更改
s #秘密删除文件或目录
S #动态实时更新文件或目录
u #防止文件或目录被意外删除
chattr [选项] mode file
lsattr [选项] file
lsattr选项说明
-E #显示属性的当前值
-D #显示扩展属性的名称
-R #递归
-V #显示版本信息
-a #列出目录下所有文件,包括隐藏文件
#注意-E -D -R三个选项是不可以一起使用的,它们是相互排斥的。
sed命令使用方法
作用说明:可以直接编辑修改文件内容 语法格式:sed 参数 '条件 指令(改/添加/删除)' 文件信息 可以对文件进行:增 删 改 查 查操作: 根据内容筛查文件信息: sed -n '/Python/p' test.txt --- 根据指定内容过滤单行信息 oldboy Python sed -rn '/Linux/,/mysql/p' test.txt --- 根据指定内容进行过滤连续多行内容 sed -rn '/^#|^$/!p' /etc/selinux/config --- 根据指定内容进行取反过滤 SELINUX=disabled SELINUXTYPE=targeted [root@bj-oldboy-muban ~]# sed -rn '/^SELINUX|^SELINUXTYPE/p' /etc/selinux/config --- 根据指定内容过滤多行信息 SELINUX=disabled SELINUXTYPE=targeted 根据行号筛查文件信息: sed -n '2p' /etc/selinux/config --- 根据行号过滤筛选内容 sed -n '2,6p' /etc/selinux/config --- 根据行号区间范围进行过滤筛选 sed -n '7p;12p' /etc/selinux/config --- 根据行号将不连续多行信息进行过滤 删除指定信息: sed -i '/mysql/d' test.txt sed -i.bak '/mysql/d' test.txt --- 删除文件信息前会对源文件进行备份 [root@bj-oldboy-muban ~]# ll test.txt.bak -rw-r--r-- 1 root root 67 11月 26 06:56 test.txt.bak
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。