Linux权限管理
2015-03-24 21:20
501 查看
创建新用户
# 创建用户并添加到sudoers sudo adduser blog sudo adduser blog sudo
修改用户组
# 创建文件 touch script.sh # 查看文件详情 ll -rw-rw-r-- 1 blog blog 0 Mar 23 21:18 script.sh sudo chgrp root script.sh -rw-rw-r-- 1 blog root 0 Mar 23 21:18 script.sh
修改拥有者
sudo chown root script.sh -rw-rw-r-- 1 root root 0 Mar 23 21:18 script.sh # 同时修改own和group sudo chown blog:blog script.sh -rw-rw-r-- 1 blog blog 0 Mar 23 21:18 script.sh
权限基础
在Linux中,有三种用户会使用文件或目录:文件的实际拥有者(u)、用户组(g)以及其他人(o)。文件或目录都有如下的权限:权限 | 缩写 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
可读 | r | 可以查看 | 可以使用ls命令列出其内容 |
可写 | w | 可以修改 | 可以删除、重命名或添加文件 |
可执行 | x | 可以运行 | 可以读取其文件、子目录或运行文件 |
suid | s | 任何用户都可以使用拥有者的权限执行文件 | 不可用 |
sgid | s | 任何用户都可以使用用户组的权限执行文件 | 在目录中新创建的任何文件都属于拥有该目录的用户组 |
sticky | t | 不适用于Linux | 用户不能删除或重命名文件,除非当前用户是文件或目录的拥有者 |
修改权限的两种方式
# 1、字母法 chmod [ugo][+-=][rwx] ll -rw-rw-r-- 1 blog blog 0 Mar 23 21:18 script.sh # 当前用户加执行权限 chmod u+x script.sh -rwxrw-r-- 1 blog blog 0 Mar 23 21:18 script.sh* # 当前用户去执行权限 chmod u-x script.sh -rw-rw-r-- 1 blog blog 0 Mar 23 21:18 script.sh # 2、数字法(更加简单灵活) chmod [0-7][0-7][0-7] # rwx分别对应421,如果是可读且可写,那么对应权限为r+w=4+2=6 # 为当前用户添加执行权限,添加x=1,所以权限总和为r+w+x=4+2+1=7 chmod 764 script.sh ll -rwxrw-r-- 1 blog blog 0 Mar 23 21:18 script.sh* # 删除执行权限 chmod 664 script.sh -rw-rw-r-- 1 blog blog 0 Mar 23 21:18 script.sh
设置suid
有些文件需要所有用户都能够进行访问,/usr/bin/passwd属于root用户,当其他用户都能修改自己的密码。chmod u[+-]s chmod 4[0-7][0-7][0-7] chmod u+s script.sh -rwSrw-r-- 1 blog blog 18 Mar 23 22:24 script.sh # 大写S表示,文件之前没有可执行权限 chmod u-s script.sh chmod u+x+s script.sh -rwsrw-r-- 1 blog blog 18 Mar 23 22:24 script.sh*
设置sgid
ubuntu下的crontab命令被设置了sgid,以便于任何用户都能够以受限的crontab组的权限而不是root权限来执行命令。当目录被设置sgid以后,任何在该目录下新建的文件都属于该目录所在的组。chmod g[+-]s chmod 2[0-7][0-7][0-7] # 新建用户组 sudo addgroup admin sudo adduser blog admin sudo adduser sgid_user admin chmod g+s+w test chown :admin test drwxrwsr-x 2 blog admin 4096 Mar 24 21:05 test/ su sgid_user touch sgid.txt # 创建的文件属于admin用户组 -rw-rw-r-- 1 sgid_user admin 0 Mar 24 21:05 sgid.txt
设置sticky bit
在linux下,sticky bit只作用于目录。/tmp是一个很好的例子,任何人都能在其中创建文件。但只有用户的拥有者或者目录的拥有者才能删除对应的文件。ll|grep tmp drwxrwxrwt 15 root root 4096 Mar 24 21:15 tmp/ ll|grep pulse-2L9K88eMlGn7/ drwx------ 2 lightdm lightdm 4096 Mar 23 20:47 pulse-2L9K88eMlGn7/ rm -rf pulse-2L9K88eMlGn7/ rm: cannot remove `pulse-2L9K88eMlGn7': Permission denied