linux中权限设置

如果以root远程连接linux系统,并在上面创建网站目录,那么目录所有者就是root。如果在liux系统中创建网站,那么目录所有者就是网站的所有者,例如apache:apache。
先来看看linux系统中有哪些用户。
使用cat、getent 、sudo获取用户列表
查看/etc/passwd文件:/etc/passwd 文件包含了系统中所有用户的信息。您可以使用cat命令或者其他文本查看工具来查看这个文件的内容,从而获取用户列表。
cat /etc/passwd
使用getent命令:getent命令可用于获取各种数据库的条目,包括用户信息。以下命令将显示所有用户的名称。
getent passwd
getent passwd | cut -d: -f1 | sort
- getent passwd:获取系统上所有用户的密码条目。
- cut -d: -f1:使用冒号(:)作为分隔符,提取每行的第一个字段(用户名)。
- sort:对用户名进行排序。
查看/etc/shadow文件(需要root权限):/etc/shadow 文件包含了加密后的用户密码信息,但也包含了用户列表。您可以使用cat命令或其他适当的方式查看这个文件。
sudo cat /etc/shadow
查看网站目录所有者
网站运行环境创建后,一般都会创建默认站点,查看这个默认站点的所有者,就知道网站创建使用的哪个用户。
ls -l
ls -l命令,会列出当前目录下的文件和子目录,并以详细列表的形式显示它们的信息,包括权限、所有者、所属组、大小、修改日期和文件名等。
例如:
drwxr-xr-x 2 www user 4096 Jan 24 14:45 default
其中,drwxr-xr-x 分别代表了文件和目录的权限,2 表示链接数,www是所有者,user是所属组,4096 是文件大小,Jan 24 14:45是修改日期,default目录名。
如果指定目录查询:
ls -ld /www/default
如果指定文件查询:
ls -lF /www/default/index.html
注意:网站的所有者并不是相同的,例如www:www,apache:apache,nginx:nginx。linux严格区分大小写。
drwxr-xr-x,这种格式显示权限可能不是很直观。
第一个字符 d 表示这是一个目录。如果是 - 表示这是一个文件。
第一个字符表示文件类型,常见的字符包括:
-:普通文件。
d:目录。
l:符号链接(link)。
c:字符设备文件。
b:块设备文件。
p:命名管道(FIFO)。
s:套接字(socket)。
后面三组字符rwx表示所有者、所属组和其他用户对该文件或目录的权限。
第一组rwx表示所有者(Owner)的权限。其中r表示读取权限,w表示写入权限,x表示执行权限。如果没有相应的权限,就显示为 -。rwx表示所有者具有读、写、执行权限
第二组r-x表示所属组(Group)的权限。r-x表示所属组用户具有读、执行权限,但没有写入权限。
第三组r-x表示其他用户(Others)的权限。权限同上。
可以使用stat命令:stat -c '%a %n' <filename>。
stat -c '%a %n' /www/mall
#755 /www/mall 显示结果
stat -c '%a %n' /www/mall/index.html
#755 /www/mall/index.html 显示结果
这样显示权限,更加适合与我们在设置权限保持一致性的显示。
如果您使用root远程linux服务器登录创建目录,所有者将与网站所有者不一致,例如,您创建的目录或文件所有者是root:root用户,而创建网站所有者是apache:apache,同样都是755权限,所有者是apache:apache时,可以上传图片,删除文件,但所有者是root:root时,不能上传图片和删除文件,除非你把目录设置为777权限。
一般情况下,系统不建议您将目录设置成777权限,建议将所有的目录与文件的所有者设置为apache:apache。
查看当前用户whoami、id
whoami
#结果示例:root
id
#结果示例:uid=0(root) gid=0(root) groups=0(root)
切换用户su
例如,切换用户到www
su -s /bin/bash - www
切换后使用id命令查询一下。
使用chown设置所有者
chown命令用于更改文件或目录的所有者和所属组。chown命令的基本用法:
sudo chown [OPTION]... [OWNER][:[GROUP]] FILE...
#格式
sudo chown <username>:<group> <file_or_directory>
<username>为要更改的用户名,<group>为要更改的用户组,<file_or_directory>为要更改所有者的文件或目录。
示例:
sudo chown -R apache:user /www/mall
其中apache为用户,user为用户组(通常组与用户名相同,这里为了区别特意写成不同的),/www/mall为目录,示例中将/www/mall目录下的所有目录与文件所有者设置为apache:user,-R是递归更改,去掉-R,只更改/www/mall目录的所有者。
仅更改目录或文件所有者(仅更改用户,不更改组):
sudo chown apache /www/mall
仅更改目录或文件的组(不更改用户):
sudo chown :user /www/mall
使用chmod设置权限
在linux系统中,可以使用chown命令更改文件或目录的所有者。要将文件或目录的所有者更改为特定用户,chmod命令通常需要以管理员或超级用户的身份运行,以便对系统文件进行更改。可能需要使用sudo命令来获取足够的权限,格式:
sudo chmod [options] <permissions> <file_or_directory>
<permissions>为要更改的权限值,<file_or_directory>为要更改所有者的文件或目录。
示例:
#更改单个文件或目录的权限
sudo chmod 755 /www/mall
#递归地更改目录下的所有文件和子目录的权限
sudo chmod -R 755 /www/mall
-R选项表示递归地更改目录及其子目录和文件的权限。
使用sudo+find+chmod给目录与文件分配权限
示例:
sudo find /www/mall -type d -exec chmod 755 {} \;
sudo find /www/mall -type f -exec chmod 664 {} \;
sudo find /www/mall -type f -exec chown www:www {} \; -exec chmod 644 {} \;
这将为所有目录分配755权限(允许Web服务器用户所有者具有读、写和执行权限,所属组和其他用户具有读和执行权限。),为所有文件分配664权限(允许Web服务器用户所有者具有读和写权限,所属组和其他用户具有只读权限)。
linux系统下网站目录与文件的权限
目录权限(Directory Permissions),一般来说,网站的目录权限会设置为755或者750。
- 755权限表示:所有者具有读、写和执行权限,所属组和其他用户具有读和执行权限。这样设置可以确保所有用户都能够访问目录和其中的文件,以及执行目录下的文件(比如CGI脚本)。
- 750权限表示:所有者具有读、写和执行权限,所属组具有读和执行权限,其他用户没有任何权限。这种设置适用于需要限制其他用户对网站目录的访问权限的情况。
文件权限(File Permissions),一般的权限设置是644或者640。
- 644权限表示:所有者具有读和写权限,所属组和其他用户具有只读权限。这样设置可以确保文件内容可以被所有用户读取,但只有所有者才能修改文件。
- 640权限表示:所有者具有读和写权限,所属组具有只读权限,其他用户没有任何权限。这种设置适用于需要限制其他用户对文件的访问和修改权限的情况。
755权限解释:
- 所有者(Owner):具有读、写和执行权限(4+2+1=7)
- 所属组(Group):具有读和执行权限(4+1=5)
- 其他用户(Others):具有读和执行权限(4+1=5)
在文件权限的表示中,数字4表示读取权限,数字2表示写入权限,数字1表示执行权限。可通过将这些数字相加来组合不同的权限。例如,读+写+执行=4+2+1=7。