1. Linux/Centos 权限命令常识:
Linux操作系统是多用户多任务操作系统,包括用户账户和组账户两种:
细分用户账户(普通用户账户,超级用户账户)除了用户账户以为还有组账户所谓组账户就是用户账户的集合,centos组中有两种类型,私有组和标准组:
当创建一个新用户时,若没有指定他所属的组,centos就建立以个和该用户相同的私有组,此私有组中只包括用户自己。
标准组可以容纳多个用户,如果要使用标准组,那创建一个新的用户时就应该指定他所属于的组,从另外一方面讲,同一个用户可以属于多个组。当一个用户属于多个组时,其登录后所属的组是主组,其它组为附加组。
账户系统文件主要在 /etc/passwd, /etc/shadow,/etc/group,和/etc/gshadow四个文件中。
其中root的uid是0,从1-499是系统的标准账户,普通用户从uid 500开始。
1. 权限命令
chgrp,改变文件所属用户组;
chown,改变文件所有者;
chmod,改变文件的权限。
chmod -R 777 /usr/data/websites/ #设置websites下所有文件的权限
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系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限。
根据我自己遇到的情况,对这类问题做一个小结。
在命令行使用命令“ll”或者“ls -a”,可以查看文件或者文件的权限:
ls -ld /usr/data/websites
drwxr-xr-x. 4 aerchi web 4096 Nov 29 09:42 /usr/data/webistes
其中“drwxr-xr-x”表示权限,一共有10字符。
第一个字符,如果是“-”则表示是文件,如果是“d”则表示是目录(directory)。
后面9个字符, 每3个字符为一个组,则有3组信息(“rwx”、“r-x”、“r-x”),分别表示所属用户本身具有的权限、所属用户组其他成员的权限、其他用户的权限。
每组信息如“rwx”,每一个字符都有它自己的特定含义且先后位置是固定的 。其中r是读权限、w是写权限、x是可执行权限、-没有对应字符的权限。
Linux里面对这些字符设置对应的数值,r是4,w是2,x是1,-是0。
说明如下:
1参数: “-”则是文件,“d”是目录
2-4参数: 属于user权限
5-7参数: 属于group权限
8-10参数: 属于others权限
------------------
“d” : 表示为目录
“rwx” :用户权限 7
“r-x” : 用户组权限 5
“r-x” : 其它用户权限 5
上面的“rwx”则是7(=4+2+1),所以最开始/usr/data/websites的权限是755,属于web用户组的aerchi用户。
注: 如下,当前目录为 /usr/data/websites, 下面包含子目录 aerchi,
子目录 aerchi下包含 aerchi.txt, 即 /usr/data/websites/aerchi/aerchi.txt
3. 权限修改 chmod
3.1 文件的权限修改
我想修改文件aerchi.txt的权限为755,则为:
[root@aerchi websites]# ll
-rwxr-xr-x. 1 aerchi web 6 Nov 29 09:42 aerchi.txt #改之前权限是755, 用户:aerchi, 用户组:web
[root@aerchi websites]# chmod 775 aerchi.txt
[root@aerchi websites]# ll
-rwxrwxr-x. 1 aerchi web 6 Nov 29 09:42 aerchi.txt #改后权限是775
3.2 文件夹的权限修改
修改之前:
[root@aerchi websites]# ll
drw-r--r--. 2 root root 4096 Nov 9 16:42 aerchi #改之前文件夹aerchi的权限是644
[root@aerchi websites]# ll aerchi/
-rwxr-xr-x. 1 root root 6 Nov 9 16:42 a.txt #改之前文件夹my的里面的文件权限是755
3.2.1 改变文件夹本身权限,不改动子文件(夹)
执行命令修改aerchi文件夹权限为600:
[root@aerchi websites]# chmod 600 aerchi/ #修改命令
[root@aerchi websites]# ll
drw-------. 2 root root 4096 Nov 29 09:42 aerchi #改aerchi目录之后权限是600
[root@aerchi websites]# ll aerchi/
-rwxr-xr-x. 1 root root 6 Nov 29 09:42 aerchi.txt #改aerchi目录之后里面的文件权限还是755,没有变化
3.2.2 文件夹及子目录下所有文件(夹)权限修改
执行1.2.1步骤之后,aerchi目录和里面的文件权限都是不同的。现在递归修改,都改为统一的权限777:
[root@aerchi websites]# chmod -R 777 aerchi/ #修改命令,注意中间是大写的R,不是小写
[root@aerchi websites]# ll
drwxrwxrwx. 2 root root 4096 Nov 29 09:42 aerchi #修改后aerchi文件夹权限是777
[root@aerchi websites]# ll aerchi/
-rwxrwxrwx. 1 root root 6 Nov 29 09:42 aerchi.txt #修改后里面的文件变为了777
4. 所属用户和用户组修改chown
这个和修改文件夹的权限是基本相同的,只不过是把chmod命令换成了chown。
4.1 文件所属用户和用户组修改
修改aerchi.txt文件所属用户(test-user)和用户组(test-group):
chown test-user:test-group aerchi.txt #修改文件所属用户为test-user,所属用户组为test-group
4.2 文件夹所属用户和用户组修改
4.2.1 只修改文件夹本身所属用户和用户组,不改子文件(夹)
仅修改目录aerchi 本身所属用户(test-user)和用户组(test-group):
chown test-user:test-group aerchi #修改文件所属用户为test-user,所属用户组为test-group
4.2.2 文件夹及所有子文件(夹)所属用户和用户组修改
递归修改文件夹aerchi及包含的所有子文件(夹)的所属用户(test-user)和用户组(test-group):
chown -R test-user:test-group aerchi #修改文件所属用户为test-user,所属用户组为test-group
5. 总结
修改单个文件(夹), 用命令:
chown或chmod “权限”或“名:组” 文件(夹)名称
修改文件夹及其包含的子文件夹所有文件, 用命令:
chown或chmod -R “权限”或“名:组” 文件夹名称
比如我修改目录权限:
//注: group-aerchi 为用户组,
//ftp-aerchi 用vsftp用户名, ng-nginx 为nginx用户名,apache-daemon 为apache用户名
groupadd group-aerchi //用户组
usermod -G group-aerchi ftp-aerchi //ftp用户添加至用户组
usermod -G group-aerchi nginx-nginx //nginx用户添加至用户组
usermod -G group-aerchi apache-daemon //apache用户添加至用户组
chown -R :group-aerchi /usr/data/web-sites && chmod 775 -R /usr/data/web-sites //为用户组赋予 /usr/data/web-sites目录 775权限
6. 其它常用命令:
1. 新建用户
adduser user #新建user 用户
passwd user #给user 用户设置密码
2. 新建工作组
groupadd group #新建group工作组
3.新建用户同时增加工作组
useradd -g group user #新建user用户并增加到group工作组
//注:-g 所属组, -d 家目录, -s 所用的SHELL
4.给已有的用户增加工作组
usermod -G groupname username
5.临时关闭
在/etc/shadow文件中,属于该用户的行的第二个字段(密码)前面加上就可以了。
恢复该用户,去掉即可
//或者使用如下命令关闭用户账号:
passwd user –l
//重新释放:
passwd user –u
6.永久性删除用户账号
userdel user
groupdel group
usermod –G group user //(强制删除该用户的主目录及其所有子目录和子文件)
7.显示用户信息
id user
cat /etc/passwd
查看用户和用户组的方法:
用户列表文件:/etc/passwd
用户组列表文件:/etc/group
查看系统中有哪些用户:cut -d:-f 1 /etc/passwd
查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d:-f 1
查看用户操作:w命令 (#需要root权限)
查看某一用户:w 用户名
查看登录用户:who
查看用户登录历史记录:last
-----------------------------------------------------------------
useradd user1 #添加用户1
useradd user2 #添加用户2
groupadd group1 #创建名为group1的组
gpasswd -a user1 group1 #给用户user1添加到group1中 或 usermod -G group1 user1
gpasswd -a user2 group1 #给用户user2添加到group1中 或 usermod -G group1 user2
grep group1 /etc/group #(或者 cat etc/group |grep group1)
mkdir -p /usr/data/websites #创建目录
ls -ld /usr/data/websites #查看目录信息
chmod 775 /usr/data/websites #修改目录权限
chgrp group1 /usr/data/websites #给group1组分配文件
chown -R :group1 /test/software && chmod 775 -R /test/software #给用户组group1赋予/test/software 目录775权限
vim /etc/group #查看并可修改用户组
以下命令查看相应权限
cat /etc/passwd #可以查看用户的pass
cat /etc/shadow #可以查看用户名
cat /etc/group #可以查看 组
#注 cat 仅显示, vim 是修改命令
乐意黎