一、用户权限
使用这个用户登录linux系统后的一般操作(除sudo/su等操作外)都是这个用户权限的操作,包括启动应用后,该应用具有的权限,也是和这个用户一致的。Linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。用户本身对系统的权限在创建用户时设置,也可后续更改(如不能登录等等)。
创建一个指定用户组为root,不可登录的账户test
useradd -s /sbin/nologin -g root test
查看所有用户信息。
二、文件目录角色授权
Linux权限授权,默认是授权给三种角色,分别是user、group、other。三种角色对目录的权限:chmod 设置数字权限4,2,1,分别对应的是r,w,x,即可读,可写,可执行。 对目录设置权限时,可以加-R递归参数。可以对文件的这三个角色进行目录读写可执行授权,如图。
以上图所示,第一组为文件所有者的权限,第二组为文件所属组的权限,第三组为其他人的权限。其表示的具体含义为:文件所有者具有对文件的读写权限,文件所属组的用户具有对文件读写的权限,而其他人只有读取文件的权限。
chmod u+x test
表示给test文件增加可执行权限(u,g,o 分别代表三种用户 + 和 - 代表增加或者去掉权限 rwx 代表读,写,可执行)
chmod 777 test
表示给test文件授权三个角色为777所有权限
文件的所有者
文件的所有者一般是创建该文件的用户,对该文件具有完全的权限。在一台允许多个用户访问的 Linux 主机上,可以通过文件的所有者来区分一个文件属于某个用户。当然,一个用户也无权查看或更改其它用户的文件。
文件所属的组
假如有几个用户合作开发同一个项目,如果每个用户只能查看和修改自己创建的文件就太不方便了,也就谈不上什么合作了。所以需要一个机制允许一个用户查看和修改其它用户的文件,此时就用到组的概念的。我们可以创建一个组,然后把需要合作的用户都添加都这个组中。在设置文件的访问权限时,允许这个组中的用户对该文件进行读取和修改。
其他人
如果我想把一个文件共享给系统中的所有用户该怎么办?通过组的方式显然是不合适的,因为需要把系统中的所有用户都添加到一个组中。并且系统中添加了新用户该怎么办,每添加一个新用户就把他添加到这个组中吗?这个问题可以通过其他人的概念解决。在设置文件的访问权限时,允许其他人户对该文件进行读取和修改。
三、文件所属用户和用户组更改
授权完各个角色的权限,那么怎么更改文件所属的角色。如下:
更改文件拥有者: chown 账号名称 文件或目录
更改文件所属用户组:chgrp 组 目录或文件名
使用chown命令可以修改文件或目录所属的用户:
命令:chown 用户 目录或文件名
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
使用chgrp命令可以修改文件或目录所属的组:
命令:chgrp 组 目录或文件名
例如:chgrp qq /home/qq (把home目录下的qq目录的所属组改为qq组)
四、web目录权限设置
web目录权限设置参考。注意Web服务器各自的运行用户如果要对web目录进行操作,也必须得到web目录的rwx授权才可以。
五、附
linux里面如何让某个程序以某个用户来运行?比如让mysql程序用mysql用户去运行。让httpd用httpd用户去运行。
切换用户,然后启动执行。
例如程序目录是dir 用户为xyz
chown -R xyz dir
su xyz
然后执行你要运行的程序即可。
假设用户名umysql,需要把mysql安装到用户目录下 /home/umysql/mysql (~/mysql)
启动mysqld --defaults-file=/home/umysql/mysql/etc/my.cnf --user=umysql &