权限管理下
Linux系统一切皆文件!!!
1、文件权限
以根目录下的etc目录下的hosts文件为例:

[root@localhost ~]# ll /etc/hosts -rw-r--r--. 1 root root 158 6月 7 2013 /etc/hosts
- 表示文件的类型是普通文件。
rw-r--r-- 表示具体的权限,没有权限就写-,没3位表示一组,固定写法,第一位表示读权限,第二位表示写权限,第三位表示执行权限。
root 表示属主
root 表示属组
文件权限的分类:
9位,3位一组,每一组都由三部分组成
r:读权限
w:写权限
x:执行权限
文件权限的归属角色有三类:
u:属主
g:属组
o:其他人
进程在用文件的权限:
1、进程启动(必须赋予某种身份,默认是当前登录用户,也可以在配置文件里修改指定进程启动的身份)
2、拿着进程的用户身份去匹配目标文件的权限,进程的用户身份会依次匹配文件的
u 对应9段权限的前3段。
g 对应9段权限的中3段。
o 对应9段权限的后3段。
修改权限的命令:
属主属组
change owner 缩写就是chown
把文件1.txt的属主改为zrg,属组改为group1。
[root@localhost ~]# ll 1.txt -rw-r--r--. 1 root root 0 5月 20 20:50 1.txt [root@localhost ~]# useradd zrg [root@localhost ~]# groupadd group1 [root@localhost ~]# [root@localhost ~]# chown zrg.group1 1.txt [root@localhost ~]# ll 1.txt -rw-r--r--. 1 zrg group1 0 5月 20 20:50 1.txt

如果只改属主:
chown zrg 1.txt
如果只改属组:
chown .group 1.txt
改文件夹:
-R 递归的改,包括/wahaha文件夹本身以及子子孙孙
[root@localhost ~]# chown -R yj.group2 /wahaha

如何修改权限
r 对应数字4
w 对应数字2
x 对应数字1
用rwx去修改 一种是加减法一种是赋值
把主人的权限改成rwx,组权限改成rwx,其他人全程改成---

[root@localhost ~]# chomd u+x,g+wx,o-r 1.txt
[root@localhost ~]# chomd u=rx,g=-,o=r 1.txt
用用户数字代号去修改
[root@localhost ~]# chomd 645 1.txt
改目录 加-R
[root@localhost ~]# chomd -R 777 /home
权限对于目录、普通文件的意义:
r(read):读取,对文件来说是读取内容,对目录来说是浏览目录内容。
w(write):写入,对文件来说是修改文件内容,对目录来说是删除和修改目录内的文件。
x(execute):执行,对文件来说是执行文件,对目录来说是进入目录。
-:表示不具有该权限。
命令分为两大类:
1、二进制的命令:/usr/bin/ls 这种只需要对它的x权限就可以执行。
2、脚本文件(内容是一堆普通文件) 这种需要对它有r+w权限。
一个文件 /a/b/c/1.txt 可能在多个文件夹下面。
文件夹/a/b/c
1、当前进程的身份要对沿途经过的所有文件夹都有一个权限 x
2、问c文件夹的
r 浏览里面的内容(子文件、子文件夹名)
w 在该文件夹创键、删除、移动内容(子文件、子文件夹名)
文件/a/b/c/1.txt
1、当前进程的用户身份要对沿途的所有文件夹都有一个权限 x
2、对1.txt拥有
r 读入1.txt内容。
w 可以修改1.txt的内容。
x 可以执行1.txt文件里面的指令(如果是脚本文件还需搭配一个r权限)
文件的特殊权限:
suid 数字代号4
1、给命令文件加的权限
chmod u+s /usr/bin/passwd
效果:passwd ------> /etc/shadow
加了suid权限的命令在启动时的用户身份会用自己的命令文件的属主身份
sgid 数字代号4
1、可以给文件夹加
chmod g+s /aaa
后续在/aaa文件夹下建的文件、文件夹的属组都会继承自/aaa文件夹的属组。
sticky 粘着位 数字代号1
chmod o+t /share
在/share文件夹下的文件只能被属主自己操作。
umask值可以控制创键文件、文件夹时的默认权限。

在root目录下创建的目录和文件分别有默认的权限,目录是755文件是644。
在系统中创建的目录和文件的权限默认是777和666。
文件及文件夹的默认权限是:系统默认权限+umask值计算出来一个结果。
[root@localhost ~]# umask 0022
umask指定的是需要减掉的权限,而对于u、g、o三组权限,文件默认没有执行权限
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
目录权限直接相减,文件权限偶数直接相减,奇数的话要加1.
[root@localhost ~]# umask 002
2、su切换用户
按照进入shell环境方式的不同,分为两种:
登录shell:登录账号密码。su - zrg
非登录shell:在shell环境中直接输入命令进入的shell环境。su zrg

两者的区别就是加载的配置文件不同。
登录shell:
/etc/profile
/etc/profile.d /下的一堆脚本文件
----------------------------------------->centos9对所执行一次/etc/bashrc
~/.bash_profile
~/.bashrc
/etc/bashrc
非登录shell:
~/.bashrc
/etc/bashrc
/etc/profile.d /下的一堆脚本文件
3、sudo
让普通用户只用自己的账号密码进行认证,操作时可以临时获取管理的某种权限。
用的时候,首先得在管理员下,把你要分配给那些普通账号的权限全都给分配好,然后普通账号才能用的上。
修改sudo配置文件方式: visudo -c 检查文件语法
visudo,专门编辑文件/etc/sudoers。
vi /etc/sudoers

如果改错一点,保存时会提示报错。
#开头的都是注释。
## Host Aliases ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. # Host_Alias FILESERVERS = fs1, fs2 # Host_Alias MAILSERVERS = smtp, smtp2
对主机做一些别名。
yy复制一行,x可以删掉一个字符,u还原回来。
# User_Alias ADMINS = jsmith, mikem
把多个用户包含到ADMINS里面去。
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
命令的别名。
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
%后面跟的是个系统组。
sudo企业实战案列:
根据角色的不同,给不同的用户分配不同的角色 # 1、创建初级运维工程师3个 useradd chuji01 # 然后设置密码 echo "111"|passwd --stdin chuji01 useradd chuji02 # 然后设置密码 echo "111"|passwd --stdin chuji02 useradd chuji03 # 然后设置密码 echo "111"|passwd --stdin chuji03 # 2、创建5个初级php开发人员,属于phpers组 groupadd -g 999 phpers useradd -g phpers php01 useradd -g phpers php02 useradd -g phpers php03 useradd -g phpers php04 useradd -g phpers php05 # 3、创建高级网络工程师1个,后面还打算再招 useradd net01 # echo "111"|passwd --stdin net01 # 4、创建中级运维工程师1个 useradd senior01 # echo "111"|passwd --stdin senior01 # 5、创建一个中级php开发 useradd seniorPhper # 6、创建运维经理1个 useradd manager01 # echo "111"|passwd --stdin manager01 # 7、创建一个开发经理 useradd kaifaManager # 4.编辑配置文件 [root@localhost ~]# vim /etc/sudoers ########################User Aliases By FTL ################################### User_Alias CHUJI_YUNWEI_ADMINS=chuji01,chuji02,chuji03 User_Alias CHUJI_KAIFA_ADMINS=php01,php02,php03,php04,php05 User_Alias GAOJI_WANG_ADMINS=net01 ########################Runas_Alias By FTL ################################### Runas_Alias OP = root -->未来切换到某个角色执行任务 ########################Cmnd_Alias By FTL ################################### Cmnd_Alias CY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route Cmnd_Alias GY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route, /sbin/iptables, /etc/init.d/network, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /bin/rpm, /usr/bin/updatedb, /usr/bin/yum, /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount Cmnd_Alias CK_CMD_1=/usr/bin/tail, /bin/grep, /var/log/messages* Cmnd_Alias GK_CMD_1=/sbin/service, /sbin/chkconfig, /bin/tail, /var/log/*, /bin/grep, /bin/cat, /bin/ls, /bin/sh Cmnd_Alias GW_CMD_1= /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /sbin/iwconfig, /sbin/mii-tool, /bin/cat, /var/log/* ########################Config By FTL ################################### # 1、初级运维 CHUJI_YUNWEI_ADMINS ALL=(OP) CY_CMD_1 # 2、初级php开发 CHUJI_KAIFA_ADMINS ALL=(OP) CK_CMD_1 或者可以这么写(%组名) %phpers ALL=(OP) CK_CMD_1 # 3、高级网管 GAOJI_WANG_ADMINS ALL=(OP) GW_CMD_1 # 4、中级运维 senior01 ALL=(OP) GY_CMD_1 # 5、中级php开发 seniorPhper ALL=(OP) GK_CMD_1 # 6、运维经理 manager01 ALL=(ALL) NOPASSWD:ALL # 7、开发经理 kaifaManager ALL=(ALL) ALL, /usr/bin/passwd [A-Za-z], !/usr/bin/passwd root, !/usr/sbin/visudo,\ !/usr/bin/vi *sudoer*, !/usr/bin/sudo su -, !/bin/su 命令的路径要全路径 别名需要大写 超过一行,用"\"换行 排除的命令一定在最后面写 kaifaManager 因为有ALL,所以可以直接su - 切换root,但是 sudo su -切换不了
zrg

浙公网安备 33010602011771号