linux系统中权限是非常完善的一个功能了,我们如果设置不正确文件就无法使用了,像我们以一般情况需要把文件权限设置为777或644了,对于用户权 限就更加了,像素ftp,nginx,php这些我们都可以给它们设置一个用户并且设置不同权限了,下面我们一起来看看文件与用户权限分配

文件权限设置

权限管理

主要的命令有: chmod、chown、chgrp、umask
1). 改变文件或目录的权限
chmod
2). 改变文件或目录的所有者
chown
3). 改变文件或目录的所属组
chgrp
4). 显示、设置文件与目录的缺省权限
umask

我想要改改目录权限的初衷,是因为我想将这个服务器配置更像虚拟主机一样,因为我的运行环境是nginx+php-
fpm,我将他们的运行用户都设置为nginx,组设置为ftp,以我的名字建了ftp账户,用户名为zhangcunchao,所属当然也是ftp,这
样php运行的用户和nginx运行用户和ftp账户都属于一个组,那么我们程序中如果有需要程序有写权限的,只需要指定664即可。

linux的用户是可以共用一个uid的,即,我可以让ftp账户的uid和php运行用户一个id,但是这样,相当于将所用虚拟主机目录都设置为777没有太大区别,安全漏洞太大。既然我们需要配置权限最优的话,是有这样几个原则的。
1.php所在目录,php运行用户是需要对目录执行权限的,不然php运行不了;
2.但是一般的php文件不需要有执行和写的权限,因为php程序时被进程读取加载运行的,所以一般644就可以了,当然也包括其他文件
3.不存放php的目录,如果只需要读,就755,如果需要有写,那么可以775,因为ftp和php是一个组
4,所有需要php对文件有写权限的文件,都可以664了。
这里有两个组合命令,非常好用,可以用于项目初始;

find /path -type f -exec chmod 644 {} ;  //设置文件权限为644
 
find /path -type d -exec chmod 755 {} ;  //设置目录权限为755

然后我们可以再对需要有写权限的单独开放组的写权限即可
如果一个目录下所有文件都需要有写权限可以这样

chmod -R 644 目录/*.*

尽量避免所有文件目录都777,我们要保证方便的同时,尽量保证安全,权限最低原则

1.

chgrp,改变文件所属用户组;

chown,改变文件所有者;

chmod,改变文件的权限。

2.

chgrp就是change group的简称,使用该指令时,要被改变的组名必须在/etc/group文件内存在才行。

#chgrp [-R] group filename(or dirname),其中R表示进行递归(recursive)的持续更改,也即连同子目录下的所有文件、目录。所以当修改一个目录中所有文件的用户组(所有者与权限也一样)时,要加上-R。

例如将文件install.log改到users用户组

$chgrp users install.log

3.

chown就是change owner的简称。

#chown [-R] user filename(or dirname),改变file的文件所有者为user。

#chown [-R] .group filename(or dirname),改变file的用户组为group(注意加点)。

#chown [-R] user.group filename(or dirname),改变file的文件所有者为user,用户组为group。为避免“.”引起的系统误判,通常用一下命令表示该句:
#chown [-R] user:group filename(or dirname)。

4.

复制文件给其他人,复制命令:

$cp [-option] [source file or dir] [target file or dir]

复制行为(cp)会复制执行者的属性与权限,所以即使复制到他人用户组仍然无法使用,所以这时必须修改该权限。

5.

chmod就是change mode bits的简称。

数字类型改变文件权限:

#chmod [-R] xyz fileordir,其中x代表owner权限,y代表group权限,z代表others权限。

r=4,w=2,x=1,上面三种身份的权限是r+w+x的和,如果没有相应的权限,则值为0。

例如:install.log文件,owner=rwx=4+2+1=7,group=rwx=4+2+1=7,others=---=0+0+0=0,所以这个文件的将改变权限值为770:

#chmod 770 install.log。

6.

符号类型改变文件权限

我们可以用u,g,o三个参数来代表user,group,others 3种身份的权限。

a代表all,也即全部的身份。

读写的权限就可以写成r,w,x。

+,-,=分别代表加入,出去,设置一个权限。

加入要设置一个文件的权限成“-rwxr-xr-x,指令为:

#chmod u=rwx,go=rx filename,注意加上那个逗号。

要给一个文件的全部身份加上x权限,则指令为:

#chmod a+x filename。

用户&组权限&添加删除用户

上面介绍的是文件权限,下面来看用户&组权限&添加删除用户

2.Linux环境下的账户系统文件
账户系统文件主要在/etc/passwd, /etc/shadow,/etc/group,和/etc/gshadow四个文件中。

其中root的uid是0,从1-499是系统的标准账户,普通用户从uid 500开始。

3.使用命令管理账户

useradd 选项  用户名//添加新用户

usermod 选项  用户名//修改已经存在的用户

userdel -r    用户名//删除用户表示自家目录一起删除。

groupadd 选项  组名// 添加新组

groupmod 选项  组名//修改已经存在的组

groupdel 组名  //删除已经存在的特定组。

例子

useradd zhh888 //添加一个用户zh888

groupadd blog  //新建一个blog组

useradd -G blog zh //表示创建一个新用户zh,同时加入blog附加组中。

useradd -d /var/ftp/pub -M ftpadmin //创建一个新用户ftpadmin,指定目录是/var/ftp/pub,不创建自家目录(-M)

usermod -G blog zh888 //表示将zh888添加到附加组blog中去。

userdel ftpadmin //表示删除ftpadmin用户

userdel -r zhh888 //表示删除zh888和/home中的目录一起删除。

groupdel blog //表示删除blog组。

4.口令管理及时效

创建用户之后就要给用户添加密码,设置的口令的命令式passwd
passwd 选项  用户名

passwd -l 用户名账号名//禁止用户账户口令

passwd -S 用户名//表示查看用户账户口令状态

passwd -u 用户名//表示恢复用户账号

passwd -d 用户名//表示删除用户账户口令

5.chage 命令

chage是保护密码的时效这样可以防止其他人猜测密码的时间。

chage 选项 用户名

参数有 -m days, -M days ,-d days, -I days ,-E date, -W days,-l

例子:

#chage -m 2 -M 30 -W zhh//表示的意思是要求用户zhh两天内不能更改密码,并且口令最长存活期是30天,并且口令过期5天通知zhh

6.用户和组的状态查询命令

whoami //用于显示当前的用户名称。

groups 用户名//表示显示指定的用户所属的组,如果没指定用户则是当前用户所属的组。

id //表示显示当前用户的uid gid和用户所属的组列表。

su - 用户//表示转换到其他用户,如果su表示切换到自己的当前用户。

newgrp 组名//表示转换用户的当前组到指定的附加组,用户必须属于该组才能进行。

7.更改属主和同组人
有时候还需要更改文件的属主和所属的组。只有文件的属主有权更改其他属主和所属的组,用户可以把属于自己的文件转让给大家。改变文件属主用chown命令
chown [-R] <用户名或组><文件或目录>

chown zh888 files//把文件files属主改成zh888用户。

chown zh888.zh888 files//将文件files的属主和组都改成zh888。

chown -R zh888.zh888 files//将files所有目录和子目录下的所有文件或目录的主和组都改成zh888.

8.设置文件的目录和目录生成掩码
用户可以使用umask命令设置文件默认的生成掩码。默认的生成掩码告诉系统创建一个文件或目录不应该赋予哪些权限。如果用户将umask命令放在环境文件.bash_profile中,就可以控制所有新建的文件和目录的访问权限。

umask [a1a2a3]

a1表示的是不允许属主的权限,a2表示的是不允许同组人的权限,a3代表不允许其他人的权限。

umask 022//表示设置不允许同组用户和其他用户有写的权限。

umask //显示当前的默认生成掩码。

9.特殊权限的设置

SUID SGID 和sticky-bit
除了一般权限还有特殊的权限存在,一些特殊权限存在特殊的权限,如果用户不需要特殊权限一般不要打开特殊权限,避免安全方面的问题。

【转】Centos系统文件与用户权限分配详解ftp,nginx,php的更多相关文章

  1. 【转载整理】mysql权限分配详解

    原文:https://www.cnblogs.com/Csir/p/7889953.html MySQL权限级别 1)全局性的管理权限,作用于整个MySQL实例级别 2)数据库级别的权限,作用于某个指 ...

  2. mongodb 用户 权限 设置 详解

    原文地址:http://blog.51yip.com/nosql/1575.html 我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限 ...

  3. linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解

    linux用户管理 http://www.qq210.com/shoutu/android 用户账号的添加(新加用户需添加用户口令) :增加用户账号就是在/etc/passwd文件中为新用户增加一条记 ...

  4. Linux(centos)系统各个目录的作用详解

    Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...

  5. SVN 权限配置详解

    SVN权限详细配置 本章将详细介绍SVN权限配置涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内 ...

  6. 若依管理系统RuoYi-Vue(二):权限系统设计详解

    若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...

  7. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  8. virtualbox centos安装增强工具和问题详解

    virtualbox centos安装增强工具和问题详解 VirtualBox 大家都习惯性把它简称为 Vbox ,比 VM 的体积小.开源.速 度快.不过在使用 VirtualBox 在虚拟机中安装 ...

  9. Linux 系统的用户和组详解_【all】

    1.Linux 用户和用户组详解 2.Linux 文件特殊权限详解 3.Linux 文件的读写执行权限的说明 4.Linux 架构之简述企业网站 5.Linux 环境变量设置详解 6.企业生产环境用户 ...

随机推荐

  1. 数据库索引B+树

    面试时无意间被问到了这个问题:数据库索引的存储结构一般是B+树,为什么不适用红黑树等普通的二叉树? 经过和同学的讨论,得到如下几个情况: 1. 数据库文件是放在硬盘上,每次读取数据库都需要在磁盘上搜索 ...

  2. git tag推送小分析

    一个推送可以用三条命令 -[deleted]-git push origin --tags git push origin master --follow-tags git push --follow ...

  3. 浅谈全区全服架构的SNS游戏后台

    版权声明:本文由梁本志原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/198 来源:腾云阁 https://www.qclo ...

  4. C++编译错误cannot have cv-qualifier

    C++编译错误cannot have cv-qualifier 在C++中CV指const和volatile两个关键字.有两种情况不能使用CV限定. 一.非成员函数不能含有CV限定,即const和vo ...

  5. Vim学习指南

    你想尽可能快地自学vim(为大家所熟知的最好的编辑器) .这是我学习的方法:从细处入手然后慢慢掌握所有技巧. Vim 六十亿美元的编辑器 设计优良,强壮,快速. 学习vim并把它作为你的下一个文本编辑 ...

  6. 《javascript高级程序设计》第八章 The Browser Object Model

    8.1 window 对象 8.1.1 全局作用域 8.1.2 窗口关系及框架 8.1.3 窗口位置 8.1.4 窗口大小 8.1.5 导航和打开窗口 8.1.6 间歇调用和超时调用 8.1.7 系统 ...

  7. ERROR 1130: Host 'root@localhost' is not allowed to connect to MySQL server

    连接mysql时遇到的错误. 原因:该用户没有权限连接访问mysql数据库 解决方法:网站上搜了好多,试了都没有用.最终在登陆的信息页面用root用户登陆时不输入root密码即可.

  8. lucene Lock obtain timed out: Lock@

    出错界面: 解决办法: 出现以上异常主要有两种原因: 1.系统正在写索引未完成之前,应用程序关闭 解决方法:删除提示的lock文件后重启应用(最好在应用中捕捉到,自动删除) 2.系统中有多个线程或程序 ...

  9. POJ1780-Code(欧拉路径求解)

    题目链接:poj1780-Code 题意:有个保险箱子是n位数字编码,当正确输入最后一位编码后就会打开(即输入任意多的数字只有最后n位数字有效)……要选择一个好的数字序列,最多只需按键10n+n-1次 ...

  10. Configure,make,make install详解

    转:http://my.oschina.net/qihh/blog/66113?fromerr=6ej3CfGJ   无论对于一个初学者还是一个资深的Linux程序员,编写Makefile文件都是一件 ...