十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
权限简介
目前成都创新互联已为1000+的企业提供了网站建设、域名、雅安服务器托管、网站托管维护、企业网站设计、册亨网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的粒度有
拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组,
如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
Linux上通常使用chmod命令对文件的权限进行设置和更改。
一、快速入门
更改文件权限 (chmod命令)
一般使用格式
chmod [可选项]
可选项: -c, --changes like verbose but report onlywhena change is made (若该档案权限确实已经更改,才显示其更改动作) -f, --silent, --quiet suppress most error messages(若该档案权限无法被更改也不要显示错误讯息) -v, --verbose output a diagnosticforevery file processed(显示权限变更的详细资料) --no-preserve-rootdonottreat'/'specially (the default) --preserve-root fail to operate recursively on'/' --reference=RFILE use RFILE's mode instead of MODE values-R, --recursive change files and directories recursively(以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)--help显示此帮助信息--version显示版本信息mode :权限设定字串,详细格式如下 :[ugoa...][[+-=][rwxX]...][,...],其中[ugoa...]
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。[+-=]
+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。[rwxX]
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
file...文件列表(单个或者多个文件、文件夹)
范例:
设置所有用户可读取文件 a.conf
设置 c.sh 只有 拥有者可以读写及执行
设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
设置当前目录下的所有档案与子目录皆设为任何人可读写
数字权限使用格式
在这种使用方式中,首先我们需要了解数字如何表示权限。
首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1
。此时其他的权限组合也可以用其他的八进制数字表示出来,如: rwx = 4 + 2 + 1 = 7 rw = 4 + 2 = 6 rx = 4
+1 = 5 即
若要同时设置
rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7 若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置
为 4 + 2 = 6 若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :
chmod file...
其中a,b,c各为一个数字,分别代表User、Group、及Other的权限。相当于简化版的chmod u=权限,g=权限,o=权限file...而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限
范例:
设置所有人可以读写及执行
设置拥有者可读写,其他人不可读写执行
更改文件拥有者(chown命令)
linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
语法格式:
chown [可选项] user[:group] file...
使用权限:root说明:[可选项] :同上文chmoduser :新的文件拥有者的使用者group :新的文件拥有者的使用者群体(group)
范例:
设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
二、Linux权限详解
Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机智,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。
Linux的文件权限有以下设定:
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。
通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
如果我们要表示一个文件的所有权限详情,有两种方式:
第一种是十位二进制表示法,(三个属组每个使用二进制位,再加一个最高位共十位),可简化为三位八进制形式
另外一种十二位二进制表示法(十二个二进制位),可简化为四位八进制形式
十位权限表示
常见的权限表示形式有:
-rw------- (600)只有拥有者有读写权限。-rw-r--r-- (644)只有拥有者有读写权限;而属组用户和其他用户只有读权限。-rwx------ (700)只有拥有者有读、写、执行权限。-rwxr-xr-x (755)拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。-rwx--x--x (711)拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。-rw-rw-rw- (666)所有用户都有文件读、写权限。-rwxrwxrwx (777)所有用户都有读、写、执行权限。
后九位解析:我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。
实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为
r--=100-w-=010--x=001---=000
转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)
实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:
rwx=111=7rw-=110=6r-x=101=5r--=100=4-wx=011=3-w-=010=2--x=001=1---=000=0
由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。
故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数
-rw------- =600-rw-rw-rw- =666-rwxrwxrwx =777
关于第一位最高位的解释:上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:
d代表的是目录(directroy)-代表的是文件(regular file)s代表的是套字文件(socket)p代表的管道文件(pipe)或命名管道文件(named pipe)l代表的是符号链接文件(symbolic link)b代表的是该文件是面向块的设备文件(block-oriented device file)c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
十二位权限(Linux附加权限)
附加权限相关概念
linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。
SET位权限:
suid/sgid是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。
一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内用户增加SET位权限。执行文件被设置了SUID、SGID权限后,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。在许多环境中,suid
和 sgid 很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。所以应该尽量避免使用SET位权限程序。(passwd
命令是为数不多的必须使用“suid”的命令之一)。
suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
sgid(set Group ID,set GID)意思也是一样,只是把上面的进程拥有者改成进程组就好了。
SET位权限表示形式(10位权限):
如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如:
1、-rwsr-xr-x表示设置了suid,且拥有者有可执行权限2、-rwSr--r--表示suid被设置,但拥有者没有可执行权限3、-rwxr-sr-x表示sgid被设置,且群组用户有可执行权限4、-rw-r-Sr--表示sgid被设置,但群组用户没有可执行权限
设置方式:
SET位权限可以通过chmod命令设置,给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):
chmodu+sfilename设置suid位chmodu-sfilename去掉suid设置chmodg+sfilename设置sgid位chmodg-sfilename去掉sgid设置
粘滞位权限:
粘滞位权限即sticky。一般用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限后,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,是用ls查看其属性时,其他用户权限处的x将变为t。
使用chmod命令设置目录权限时,+t、-t权限模式可分别用于添加、移除粘滞位权限。
粘滞位权限表示形式(10位权限):
一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上。如果文件设置了sticky还设置了x(执行)位,其他组用户的权限的可执行位为t(小写)。但是,如果没有设置x位,它将表示为T(大写)。如:
1、-rwsr-xr-t表示设置了粘滞位且其他用户组有可执行权限2、-rwSr--r-T表示设置了粘滞位但其他用户组没有可执行权限
设置方式:
sticky权限同样可以通过chmod命令设置:
chmod +t 文件列表..
十二位的权限表示方法
附加权限除了用十位权限形式表示外,还可以用用十二位字符表示。
11109876543210S G T r w x r w x r w x
SGT分别表示SUID权限、SGID权限、和 粘滞位权限,这十二位分别对应关系如下:
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位(后九位)。
在这十二位的每一位上都置值。如果有相应的权限则为1, 没有此权限则为0。
-rw-r-sr--的值为:010110100100-rwsr-xr-x的值为:100111101101-rwsr-sr-x的值为:110111101101-rwsr-sr-t的值为:111111101101
如果将则前三位SGT也转换成一个二进制数,则
suid 的八进制数字是4
sgid 的代表数字是 2
sticky 位代表数字是1
这样我们就可以将十二位权限三位三位的转化为4个八进制数。其中
最高的一位八进制数就是suid,sgdi,sticky的权值。
第二位为 拥有者的权值
第三位为 所属组的权值
最后一位为 其他组的权值
附加权限的八进制形式
通过上面,我们知道,正常权限和附加权限可以用4位八进制数表示。类似于正常权限的数字权限赋值模式(使用三位八进制数字赋值)
chmod file...
我们可以进一步使用4位八进制数字同时赋值正常权限和附加权限。
chmod file...
其中s是表示附加权限的把八进制数字,abc与之前一致,分别是对应User、Group、及Other(拥有者、群组、其他组)的权限。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。
我们进一步将上小节的例子中的二进制数转变为八进制表示形式,则
-rw-r-sr-- =010110100100=2644-rwsr-xr-x =100111101101=4755-rwsr-sr-x =110111101101=6755-rwsr-sr-t =111111101101=7755
对比范例:
设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行
设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行,并且设置suid
chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。
为什么要设置4755 而不是 755?
假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。
权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限
示例:在随意某个目录下ls -l
第一列的内容的信息解释如下:
这个字符串有10位,可以分为4段来解读。
第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;
第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限 - 属主权限(User);
第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限 - 属组权限(Group);
第四段(第8-10位,共3个字符串)表示其他用户对它的权限 - 其他权限(other);
注:
①我们用3位8进制来表示文件的权限,r(read)用4标识,w(write)用2标识,x(excute)用1标识
②r–可读,w–可写,x–可执行。
③每一段的三位顺序不可变,如果没有对应的权限,则使用-表示
上图中的-rwxrw-r–可以用八进制数字764表示。
案例:
-rwxrwxrwx
转算成八进制,777,代表这是一个对所有人开发权限的文件。
15.6.2 修改文件/目录的权限的命令:chmod
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,
其他用户只有读的权限
chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:
chmod 764 aaa.txt
15.7 free查看内存信息
15.7.1 free查看内存信息
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
df df -h 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
补充:
关机命令
reboot 重新启动操作系统
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 10:23
shutdown -h +10 系统再过十分钟后自动关机
总结
Linux命令
目录操作
cd usr/ 切换到该目录下usr目录
cd .. 切换到上一层目录
cd / 切换到系统根目录
mkdir 目录名称 创建目录
ls 目录名称 查询该目录下所有的目录和文件
ls [-a] 目录名称 查询该目录下所有的目录和文件,包含隐藏文件
ls [-l] 目录名称 查询该目录下所有的目录和文件的详细信息
find / -name 目录名称 查找/root下的目录(文件)
mv 目录名称 新目录名称 修改目录名称
mv 目录名称 目录的新位置 剪切
cp -r 目录名称 目录的目标位置 拷贝
rm -rf 目录 强制删除目录
文件操作
touch 文件名称 创建空文件
cat/more/less/tail 文件 查看文件内容
tail -f 文件 动态查看/实时查看文件(日志)
grep 要搜索的字符串 要搜索的文件 关键字搜索
vi/vim 文件 修改文件内容
rm -rf 文件 强制删除文件
文件的打包
tar -zcvf 文件名.tar 要打包的文件
文件的解压
tar -xvf 文件名.tar
扩充:将文件解压到固定位置
tar -xvf 文件名.tar -C 指定解压的位置
查询当前所在位置
pwd
查看进程
ps -ef | grep 进程名称(tomcat/mysql)
杀死进程
kill -9 进程pid
查看端口号
netstat -an | grep 端口号(3306)
查看服务器ip
ifconfig
查看网络是否能正常使用
ping 外网地址 查看是否能访问外网
ping 内网ip 查看是否能访问内网
权限命令
chmod 777 文件 赋权
查看cpu
top
查看磁盘信息
df -h
查看内存信息
free
关机命令
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 10:23
shutdown -h +10 系统再过十分钟后自动关机
重新启动
reboot 重新启动操作系统
```·
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
使用权限 : 所有使用者
语法
参数说明
mode : 权限设定字串,格式如下 :
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误信息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
Linux档案的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限
举例:档的权限字符为 -rwxrwxrwx 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
所以我们设定权限的变更时,该档案的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有档案都会变更
举例来说,如果要将.bashrc这个档案所有的权限都设定启用,那么就下达:
那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754 啰!所以你需要下达:
Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的(也就是说系统是识别的是用户的UID、GID,而非用户用户名),一个UID是唯一(系统中唯一如同身份证一样)用来标识系统的用户账号(用户名)。
文件的用户与用户组分为超级管理员,普通用户和系统用户。
1)超级管理员的UID=0,GID=0,也可以这么说系统只要是识别出某个用户的UID\GID都为0时,那么这个用户系统就认为是超级管理员。
2)普通用户(管理员添加的),默认它的UID\GID是从500-65535,权限很小,只能操作自己的家目录中文件及子目录(注:nobody它的UID\GID是65534)。
3)系统用户,也称虚拟用户,也就是安装系统时就默认存在的且不可登陆系统,它们的UID\GID是1-499。
我们可以通过cat /etc/passwd命令来查看所有的用户信息,例如下图,第三列是UID,第四列是GID:
创建用户
useradd user1 创建用户user1
useradd -e 12/30/2021 user2 创建用户user2,有效期到2021-12-30
设置用户密码
passwd user1 设置密码,有设置密码的用户不能用
这里设置密码时可能会碰到密码保护机制问题,这里需要注释掉保护机制的问题
这个时候需要在编辑/etc/pam.d/system-auth文件,将其中的password requisite
和password sufficient两行注释掉,如下图:
创建用户组
groupadd –g 888 users 创建一个组users,其GID为888
groupadd users 不用g参数,使用默认的组ID
命令 gpasswd为组添加用户
只有root和组管理员能够改变组的成员:
gpasswd –a user1 users 把 user1加入users组
gpasswd –d user1 users 把 user1退出users组
命令groupmod修改组
groupmod –n user2 user1 修改组名user1为user2
groupdel删除组
groupdel users 删除组users
真正从安全性角度上来考虑的话,是要控制用户一定执行命令的权限,也就是哪些用户可以执行哪些命令,不可以执行哪些命令,因此也就有了sudo这个应用,对于sudo提权,也就是修改/etc/sudoers的配置文件。