zoukankan      html  css  js  c++  java
  • 【转】Centos系统文件与用户权限分配详解ftp,nginx,php

    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
    除了一般权限还有特殊的权限存在,一些特殊权限存在特殊的权限,如果用户不需要特殊权限一般不要打开特殊权限,避免安全方面的问题。

  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/dsc65749924/p/5857447.html
Copyright © 2011-2022 走看看