find和chmod结合来修改权限
已知问题:
1,/etc/my.cnf 由于权限过高,无法被load,mysql启动时略过,导致配置文件字符集设置无效,出现乱码。
2,/etc/ssh/下面sshd的配置文件,启动文件,key文件权限过高,无法被load,导致ssh连接失败,错误为ssh_exchange_identification: Connection closed by remote host。
chmod –R o+rwx /后,很多系统文件权限过高,导致很多应用出问题。
我解决的基本原则是,对于目录如果group只有rx的,去掉others的w,对于group只有r的,去掉others的wx,对于group没有任何权限的,去掉others的rwx;
对于文件group有r权限的,给others r的权限,去掉wx;对于group没有任何权限的,others也没有任何权限;
对于find命令和chmod命令不熟的,以及运营服务器上慎用如下命令,由此带来的损失,概不负责。
对于目录:
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 647 -exec chmod 644 {} \; -print
--忽略/usr,/var目录,查找类型为目录,权限为647的文件,修改权限为644,并将这些目录显示出来
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 667 -exec chmod 664 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 657 -exec chmod 655 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 607 -exec chmod 600 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 707 -exec chmod 700 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 407 -exec chmod 400 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 207 -exec chmod 200 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type d -perm 107 -exec chmod 100 {} \; -print
find . –type d –perm 757 –exec chmod o-w {} \;
find . –type d –perm 667 –exec chmod o-w {} \;
find . –type d –perm 607 –exec chmod o-rwx {} \;
find . –type d –perm 707 –exec chmod o-rwx {} \;
find . –type d –perm 407 –exec chmod o-rwx {} \;
find . –type d –perm 207 –exec chmod o-rwx {} \;
find . –type d –perm 107 –exec chmod o-rwx {} \;
对于文件:
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 647 -exec chmod 644 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 657 -exec chmod 654 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 667 -exec chmod 664 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 607 -exec chmod 600 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 707 -exec chmod 700 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 407 -exec chmod 400 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 207 -exec chmod 200 {} \; -print
find / \( -path /usr -o -path /var \) -prune -o -type f -perm 107 -exec chmod 100 {} \; -print
find . –type d –perm 647 –exec chmod o-wx {} \;
find . –type d –perm 667 –exec chmod o-wx {} \;
find . –type d –perm 607 –exec chmod o-rwx {} \;
find . –type d –perm 707 –exec chmod o-rwx {} \;
find . –type d –perm 407 –exec chmod o-rwx {} \;
find . –type d –perm 207 –exec chmod o-rwx {} \;
find . –type d –perm 107 –exec chmod o-rwx {} \;
批量处理完后,查找一下是否还有残留的others为rwx的文件,一般都是些l链接文件,对于这些不用变。
find –perm -007 +007 007 /007
在linux里面,目录也是一个文件。权限设置方法与普通文件一样。
目录的可执行权限:目录无所谓执行不执行,目录只能否被开启(也称作“遍历”或“搜索”)
对目录的执行权限不仅意味着查看目录下文件名还允许查看文件的其它信息如文件大小、修改时间。说的再详细些就是这样的
Linux的权限不是很细致,只有RWX三种
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
1、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入。
2、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。
3、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
4、目录的w位不设置,即使你拥有目录种某文件的w权限也不能写该文件再具体的话 只能# man chmod 自己查看了
Linux权限设置详解
Linux是一个对权限管理非常严格的系统,Linux下每个文件的权限分为三个组:User,Group,Other。每个组又有三种不同的权限,可读,可写,可执行,一共用3个八进制数来表示一个文件的权限。
User组代表文件的拥有者,通常文件的创建者就是文件的拥有者,当然,可以使用chown来改变拥有者。
Group组代表拥有文件的用户组,任何在这个组中的用户都被视作拥有这个文件,并且拥有相同的访问权限,这个是很有用的,比如,你有一个项目,需要多人合作,必须让开发者拥有访问权限,而其他人没有,那么就可以把这些用户添加到一个组,然后设置文件归这个组所有。
Other组代表既不是文件的拥有者,也不属于拥有文件的用户组的用户。相当于Windows中Everyone组,对这个组设置的权限会影响到其他所有人。
我们可以用ls -l命令来列出目录下文件的权限,比如得到了如下列表:
drwxr-xr-x 3 cloud www-data 4096 2012-08-07 08:46 android-build
drwxr-xr-x 2 cloud www-data 4096 2012-08-07 08:46 bin -rw-r--r-- 1 root root 529 2012-07-22 07:30 atk.json -rwxrwxrwx 1 cloud www-data 702261 2012-04-17 17:48 rootdabitch-0.1.zip
这里drwxr-xr-x里面开头的d代表这是一个目录,rwx代表文件拥有者具有读(r),写(w),执行(x)的权限,r-x代表拥有文件的组的成员具有读取和执行的权限,但是没有写入权限,cloud代表文件拥有者,www-data代表拥有文件的组。-rw-r–r– root root代表这是一个普通的文件,拥有者是root,拥有文件的组为root,root用户有读取和写入权限,没有执行权限,root组有读取权限,其他人有读取权限。如果用三个8进制数来表示文件的权限,对应规则是:r代表2^2=4,w代表2^1=2,x代表2^0=1,-代表0,所以-rw-r–r–用三个8进制数表示就是644,-rwxrwxrwx就是777.
可以用chmod来修改文件的权限,但必须是用较高权限的账户,或者是文件的所有者来执行这个命令,比如:
chmod o w atk.json
表示授予Other组写入权限。
chmod go-rw atk.json
表示删除Group和Other组的读取和写入权限。
基本参数如下:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它可执行的话)
或者可以用3个八进制数来设置权限,比如
chmod 777 atk.json
表示设置atk.json对所有人都可读写,可执行。
还可以用chown来设置文件的拥有者。具体请参考:
man chmod
man chown
Linux命令之chmod(修改文件权限) 转
linux下总是遇到没有文件修改权限, 很头疼, 作为菜鸟我很喜欢"chmod 777 -R 文件目录" 了事, 结果现在系统崩了, 哎.. 慎用
"
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
chmod 命令
用途
更改文件方式。
语法
要用符号更改文件方式
chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }
要用数字更改文件方式
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }
描述
chmod 命令修改方式位和指定文件或目录的扩展访问控制表(ACL )。可以用符号或用数字定义方式(完全方式)。
当遇到符号链接而您未指定 -h 标志时,chmod 命令更改通过链接指向的文件或目录的方式,而非链接本身的方式。如果指定 -h 标志,则 chmod 命令防止此方式更改。
如果指定 -h 标志和 -R 标志,chmod 命令递归地降序指定的目录,并且在遇到符号链接时,不更改链接指向的文件或目录的方式。
标志
-f |
禁止所有错误报告(除了无效权限和用法语句)。 |
-h |
禁止遇到的符号链接指向的文件或目录的方式更改。 注:由于不能在符号链接上设置方式位,所以此行为与 chgrp 和 chown 命令上的 -h标志的行为略有不同。 |
-R |
只递归地降序目录,如同模式 File...|Directory... 指定。-R 标志更改匹配指定模式的每个目录和所有文件的文件方式位。请参阅示例 6 。 当遇到符号链接并且链接指向目录时,更改该目录的文件方式位,但不进一步遍历目录。 |
符号方式
要以符号格式指定方式,必须指定三个标志集。
注:不要使用空格分隔标志。
第一个标志集指定对谁授权或对谁拒绝指定的许可权,如下所述:
u |
文件所有者。 |
g |
文件组固有的组和扩展 ACL 条目。 |
o |
所有其它条目。 |
a |
用户、组和所有其它条目。a 标志具有与一起指定 ugo 标志相同的效果。如果不指定这些标志,则缺省值为 a 标志,并应用文件创建掩码(umask )。 |
第二个标志集指定是否要除去、应用或设置许可权:
- |
除去指定的许可权。 |
+ |
应用指定的许可权。 |
= |
清除选定的许可权字段并将其设置为指定的许可权。如果不指定 = 之后的许可权,chmod 命令从选定的字段除去所有许可权。 |
第三个标志集指定要除去、应用或设置的许可权:
r |
读许可权。 |
w |
写许可权。 |
x |
对于文件的执行许可权;对于目录的搜索许可权。 |
X |
如果当前的(未修改的)方式位设置了至少一个用户、组或其它执行位,则执行文件的许可权。如果指定了 File 参数并且在当前的方式位中未设置任何执行位,则忽略 X 标志。 搜索目录的许可权。 |
s |
如果指定或隐含 u 标志,则设置执行时的用户标识许可权。如果指定或隐含 g 标志,则设置执行时的组标识许可权。 |
t |
对于目录,它表示只有文件所有者可以链接或取消链接指定目录中的文件。对于文件,它设置 save-text 属性。 |
数字或完全方式
chmod 命令还允许您对该方式使用八进制表示法。数字方式是一个或多个以下值的摘要:
4000 |
设置执行时的用户标识。 |
2000 |
设置执行时的组标识。 |
1000 |
对于目录设置链接许可权或对于文件设置 save-text 属性。 |
0400 |
允许所有者读。 |
0200 |
允许所有者写。 |
0100 |
允许所有者执行或搜索。 |
0040 |
允许组读。 |
0020 |
允许组写。 |
0010 |
允许组执行或搜索。 |
0004 |
允许其他人读。 |
0002 |
允许其他人写。 |
0001 |
允许其他人执行或搜索。 |
注:
1. 用数字方式指定禁用任何扩展 ACL 。请参考《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『访问控制列表 』以获取更多信息。
2. 用符号更改组访问权限还影响扩展 ACL 条目。与文件的所有组相同的 ACL 中的组条目拒绝从方式除去的任何许可权。请参考『访问控制表 』以获取更多信息。
3. 可以指定用逗号分开的多个符号方式。按照它们从左到右的出现顺序执行操作。
4. 当从目录除去设置执行时的组标识许可权时,必须用符号指定该方式或使用 4 字符八进制,并且行距为零(例如 0755 )。
安全性
访问控制:此程序应该作为“可信计算基”中的正常用户程序安装。
只有文件的所有者或 root 用户可以更改文件的方式。
退出状态
该命令返回以下出口值:
0 |
已成功执行完命令并已执行所有请求的更改。 |
>0 |
发生错误。 |
示例
1. 要将许可权类型添加到几个文件:
chmod g+w chap1 chap2
这将组成员的写权限添加到文件 chap1 和 chap2 。
2. 要立即进行几个许可权更改:
chmod go-w+x mydir
这拒绝组成员和其他人创建或删除 mydir (go-w )中的文件的许可权,并允许组成员和其他人搜索 mydir 或在路径名(go+x )中使用它。这等价于命令序列:
chmod g-w mydir
chmod o-w mydir
chmod g+x mydir
chmod o+x mydir
3. 要只允许所有者将 shell 步骤用作命令:
chmod u=rwx,go= cmd
这授权文件(u=rwx )所有者读、写和执行许可权。它还拒绝组和其他人以任何方式(go= )访问 cmd 的许可权。
如果具有执行 cmd shell 命令文件的许可权,则可以通过输入以下命令运行它:
cmd
注:取决于 PATH shell 变量,可能需要指定 cmd 文件的全路径。
4. 要使用设置标识(Set-ID )方式:
chmod ug+s cmd
在执行 cmd 命令时,有效的用户标识和组标识设置为那些拥有 cmd 文件的所有者。只更改与运行 cmd 命令的子进程关联的有效标识。 shell 会话的有效标识保留不更改。
此功能允许您可以访问受限制的文件。假定 cmd 程序启用了“设置用户标识(Set-User-ID )方式”并为名为 dbms 的用户所拥有。实际上,用户 dbms不是一个人,但可能与数据库管理系统关联。用户 betty 不具有访问任何 dbms 的数据文件的许可权。然而,她具有执行 cmd 命令的许可权。当她这样做时,她的有效用户标识临时更改为 dbms ,因此 cmd 程序可以访问用户 dbms 拥有的数据文件。
这种方式下,用户 betty 可以使用 cmd 命令访问数据文件,但她不会在使用标准 shell 命令的过程中意外地破坏它们。
5. 要使用 chmod 命令的完全方式格式:
chmod 644 text
这设置所有者的读和写许可权,并且它对组和其他用户设置只读方式。这还除去可能与文件关联的所有扩展 ACL 。
6. 要递归地降序目录并更改给予树结构的文件和目录许可权:
./dir1/dir2/file1
./dir1/dir2/file2
./dir1/file1
请输入此命令序列:
chmod -R 777 f*
这将更改 ./dir1/file1 的许可权。
但对于以下树结构:
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
命令序列:
chmod -R 777 f*
将更改以下内容的许可权:
./dir1/fdir2
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
文件
/usr/bin/chmod |
包含 chmod 命令。 |
"
Linux find 命令忽略某个或多个子目录的方法
在linux find 进行查找的时候,有时候需要忽略某些目录不查找,可以使用 -prune 参数来进行过滤,但必须要注意要忽略的路径参数必须紧跟着搜索的路径之后,否则该参数无法起作用。
以下是指定搜索/home/carryf目录下的所有文件,但是会忽略/home/carryf/astetc的路径:
find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -print
如果按照文件名来搜索则为:
find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -name "cdr_*.conf" -print
如果要忽略两个以上的路径如何处理?
find /home/carryf /( -path "/home/carryf/astetc" -o -path "/home/carryf/etc" /) -prune -o -type f -print
find /home/carryf /( -path "/home/carryf/astetc" -o -path "/home/carryf/etc" /) -prune -o -type f -name "cdr_*.conf" -print
注意/( 和/) 前后都有空格。
查找某个文件包含内容,下面这个语句可以解决目录带空格的问题:
find ./ -name "mysql*" -print0 |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"
如果目录不带空格,那么可以如下面的形式执行:
find ./ -name "mysql*" |xargs grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"
转载于:https://my.oschina.net/alphajay/blog/108668
find和chmod结合来修改权限相关推荐
- java chmod 777_chmod 777 修改权限
在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限. 例如我用ls -l命令列文件表时,得到如下输出: -rw-r--r-- 1 apple users ...
- linux 可执行文件权限不够,root执行/media可执行文件权限不够,chmod修改权限无效...
问题: 我想执行media文件夹下自己写的某个程序,但无法执行? 1. 于是我以root的身份在终端以输入指令chmod a+x 1,回车后没反应,查询该文件夹的属性,也没有改变,即修改权限无效. 2 ...
- linux必须root权限才能mount,root执行/media可执行文件权限不够,chmod修改权限无效...
http://blog.csdn.net/pipisorry/article/details/39649699 问题: 我想执行media文件夹下自己写的某个程序,但无法执行? 1. 于是我以root ...
- linux 用chomd修改权限时报:只读文件系统,linux下修改文件夹权限提示chmod: 更改xx 的权限: 只读文件系统...
1.当前用户权限是否正确2.当前分区是否可读写3.是否设置权限遮罩4.是不是RP有问题,那需要看你修改的文件在什么位置,是怎么mount上来的如果是cdrom一类的路径的话,那肯定就是只读的还有就是m ...
- linux修改文件夹的访问权限,linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组...
linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组 我们在创建一个文件夹或者一个文件的时候,希望集成父文件夹的访问权限和组 修改默认访问权限 setfacl 以及 ...
- chmod修改权限的用法
一.chmod作用:修改文件.目录的权限 二.语法:chmod [对谁操作] [操作符] [赋予的权限] 文件名 三.操作对象:u 用户user,表现文件或目录的所有者 g 用户组grou ...
- linux中修改权限命令,如何修改权限命令chmod用法
Linux中的Chmod命令用于更改或分配文件和目录的权限.在Linux/Unix系统中,文件和目录的可访问性是由文件所有权和权限决定的.在本教程中,我们将介绍chmod命令. chmod命令(cha ...
- Linux修改权限功能------chmod
一.chmod命令概况 chmod是Linux/Unix中修改文件或者目录权限的命令,通过修改权限可以让 ...
- chmod 777 修改权限
在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限. 例如我用ls -l命令列文件表时,得到如下输出: -rw-r--r-- 1 apple users ...
- linux如何修改权限详解
前言 今日,同事问我,服务器上拷贝过来的tomcat,怎么执行不了./startup.sh.于是,我一想,那肯定是没有权限的问题了.于是使用chmod命令更改了权限后,就可以执行了.项目正常启动.我想 ...
最新文章
- # 2021华为软件精英挑战赛C/C++——build.sh/build_and_run.sh/CodeCraft_zip.sh注释
- 应用交付:从技术到服务
- 【阿里妈妈数据科学系列】第五篇:实验指标设定方法与指标体系构建
- Cloud一分钟 | 华为云发布云数据安全白皮书;OPPO携手阿里云举行天池OGeek算法挑战赛...
- wgs84坐标系转换工具_ArcGIS中不同坐标系之间的转换
- leetcode--Longest Substring Without Repeating Characters
- Android权限管理之Permission权限机制及使用
- 2018年区块链将如何发展?
- 强悍的 Linux —— 常用 shell
- android_dialog_2
- 小书童开源免费的二维码批量生成工具
- PeopleSoft
- 标题:缩位求和 在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。 比如:248 * 15 = 3720 把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得 2
- 华为路由器:GRE技术
- 如何在自己的电脑开服务器(内网穿透)
- New binary linear programming formulation to compute the graph edit distance 2015
- 爬取彼岸网所有4K美图壁纸--Python脚本
- git 命令回退到上次
- 基于SSM的南昌旅游网站管理系统设计与实现 毕业设计源码101407
- C# 自动发送邮件被系统当做垃圾邮件退回的处理方法
热门文章
- 用L2TP与OpenSwan构建IPSec ×××(使用X.509证书认证)
- 正式环境docker部署hyperf_忍受不了 docker 环境下 hyperf 启动等待时间,教你如何通过 win10 子系统快速运行 hyperf...
- Missing Push Notification Entitlement警告-----以及解决方法
- elf section类型_ELF 转二进制(2/4): 允许把 Binary 文件加载到任意位置
- SQL中 and or in的用法
- Layui第三方扩展LAY_EXCEL导出数据表格的数据
- Latex初学入门记载
- Yii Framework2.0开发教程(9)运行机制概述
- LIBAVCODEC_VERSION_INT是哪里定义的?
- 高级插座的过载保护是否真的可靠?