linux 文件权限

1、/etc/passwd文件    

root@pts/0 # cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
tester:x:500:500::/home/tester:/bin/bash
td-agent:x:498:498:td-agent:/var/lib/td-agent:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
couchbase:x:497:497:couchbase system user:/opt/couchbase:/bin/sh
memcached:x:496:496:Memcached daemon:/var/run/memcached:/sbin/nologin
zabbix:x:201:201::/home/zabbix:/bin/bash
yunwei1:x:501:501::/home/yunwei1:/bin/bash
www:x:600:600::/home/www:/bin/bash

/etc/passwd文件的字段包含了如下信息:

登录用户名
用户密码
用户账户的UID
用户账户的GID
用户账户的文本描述(称为备注字段)
用户HOME目录的位置
用户的默认shell

Linux系统将用户密码保存在另一个单独的文件中(称为shadow,位置在/etc/shadow)

2、/etc/shadow文件

root@pts/0 # cat /etc/shadow
root:$6$wFUsWnCD$2yH6EDhoChJGmYf6OMMxrylWeIt07j.Fe1W3OpijeL6vXdBrKmZ.miXhXUiM7dcJtsui288fmOyoIqaSD0cno.:16584:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::

/etc/shadow文件的每条记录中有9个字段:

与/etc/passwd文件中的每个登录名对应的登录名
加密后的密码
自1970年1月1日(上次修改密码的日期)到当天的天数
多少天后才能更改密码
多少天后必须更改密码
密码过期前提前多少天提醒用户更改密码
密码过期后多少天禁用用户账户
用户账户被禁用的日期,用自1970年1月1日到当天的天数表示
预留字段,给将来使用

3、添加新用户useradd

useradd命令加-D参数查看Linux系统默认值

root@pts/0 # useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
新用户会被添加到GID为100的公共组
新用户的HOME目录将会位于/home/loginname
新用户账户密码在过期后不会被禁用
新用户账户未被设置为某个日期后就过期
新用户账户将bin bash作为默认shell
系统会将/etc/skel目录下的内容复制到用户的HOME目录下
系统为该用户账户在mail目录下创建一个用于接受邮件的文件

useradd命令行参数

参数 描述
-c comment 给新用户添加备注
-d home_dir 为主目录指定一个名字(如果不想用登录名做为主目录的话)
-e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期
-f inactive_days 指定这个账户密码过期后多少天这个账户被禁用;0表示密码一过期就立即被禁用;-1表示禁用这个功能
-g initial_group 指定用户登录组的GID或组名
-G group … 指定用户除登录组外所属的一个或多个附加组
-k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
-m 创建用户的HOME目录
-M 不创建用户的HOME目录(当默认设置里指定创建时,才用到)
-n 创建一个同用户登录名同名的新组
-r 创建系统账户
-p passwd 为用户账户指定默认密码
-s 指定默认的登录shell
-u uid 为用户指定一个唯一的UID

useradd –D 更改默认值的参数

参数 描述
-b default_home 更改默认的创建用户HOME目录的位置
-e expiration_date 更改默认的新用户的过期日期
-f inactive 更改默认的新用户从密码过期到账户被禁用的天数
-g group 更改默认的组名称或GID
-s shell 更改默认的登录shell

更改默认值非常简单

root@pts/0 # useradd -D -b /home/chai/
root@pts/0 # useradd -D
GROUP=100
HOME=/home/chai/
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

4、删除用户

默认情况下,userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户 的任何文件

加上 -r 参数,会删除用户HOME目录以及mail目录

Test_1 [/home] 2015-09-28 15:14:23
root@pts/0 # ll
总用量 4
drwx------. 3 chai chai 4096 9月  28 15:14 chai
Test_1 [/home] 2015-09-28 15:14:42
root@pts/0 # userdel -r chai
Test_1 [/home] 2015-09-28 15:14:52
root@pts/0 # ll 
总用量 0
Test_1 [/home] 2015-09-28 15:14:56
root@pts/0 #

5、修改用户

用户账户修改工具

命令 描述
usermod 修改用户账户的字段,并可以指定主要组以及附加组的所属关系
passwd 修改已有用户的密码
chpasswd 从文件中读取登录名密码对,并更新密码
chage
修改密码的过期日期
chfn 修改用户账户的备注信息
chsh 修改用户账户的默认登录shell


usermod用来修改/etc/passwd文件中大部分字段,参数大部分与useradd的命令参数一样

命令 描述
-c 修改备注字段
-e 修改过期日期
-g 修改默认的登录组
-l 修改用户账户的登录名
-L 锁定账户,这样用户就无法登录了
-p 修改账户的密码
-U 解除锁定,解除后用户就可以登录


passwd和chpasswd

root@pts/0 # passwd chai
Changing password for user chai.
New password: 
BAD PASSWORD: it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.

如果只用passwd命令,只会改变自己的密码,系统上的任何用户都可以改变自己的密码,但是只有root才可以改变别人的密码

-e 选项能强制用户下次登录时修改密码,你可以先给用户设置一个简单的密码,之后再强制他们在下次登录时改成他们能记住的更复杂的密码

root@pts/0 # passwd -e chai
Expiring password for user chai.
passwd: Success

如果需要为系统中的大量用户修改密码,chpasswd命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置,也可以用重定向命令来将含有  userid:passwd   对的文件重定向给命令

Test_2 [~] 2015-10-04 17:30:42
root@pts/0 # cat users.txt 
chai:123.abc
Test_2 [~] 2015-10-04 17:30:46
root@pts/0 # chpasswd < users.txt 
Test_2 [~] 2015-10-04 17:30:57
root@pts/0 #


chsh、chfn和chage

chsh命令用来快速修改默认的用户登录shell,使用时必须使用shell全路径名作为参数,不能只用shell名

root@pts/0 # grep chai /etc/passwd
chai:x:600:600:test:/home/chai:/bin/bash
Test_2 [~] 2015-10-04 17:43:43
root@pts/0 # chsh -s /bin/csh chai
Changing shell for chai.
Shell changed.
Test_2 [~] 2015-10-04 17:44:09
root@pts/0 # grep chai /etc/passwd
chai:x:600:600:test:/home/chai:/bin/csh


chfn命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法,chfn命令会将Unix的finger命令用到的信息存进备注字段,而不是简单的存入一些随机文本(比如昵称之类),或是将备注字段留空,finger(CentOS_6.3默认没有这个命令,需要安装yum -y install finger)命令可以用来简单的查看Linux系统上的用户信息:

root@pts/0 # finger chai
Login: chai                             Name: test
Directory: /home/chai                   Shell: /bin/csh
Last login Sun Oct  4 17:31 (GMT) on pts/1 from test1
No mail.
No Plan.

如在使用shfn命令时不加参数,它会向你询问要存进备注字段的恰当值:

root@pts/0 # chfn chai
Changing finger information for chai.
Name [test]: it's test    
Office []: dong san qi
Office Phone []: 13810015074
Home Phone []: 57643006

Finger information changed.

Test_2 [~] 2015-10-04 17:53:13
root@pts/0 # finger chai
Login: chai                             Name: it's test
Directory: /home/chai                   Shell: /bin/csh
Office: dong san qi, +1-381-001-5074    Home Phone: 57643006
Last login Sun Oct  4 17:31 (GMT) on pts/1 from test1
No mail.
No Plan.

root@pts/0 # grep chai /etc/passwd
chai:x:600:600:it's test,dong san qi,13810015074,57643006:/home/chai:/bin/csh


chage命令用来帮助管理用户账户的有效期,参数如下:

参数 描述
-d 设置上次修改密码到现在的天数
-E 设置密码过期的日期
-I 设置密码过期到锁定账户的天数
-m 设置修改密码之间最少要多少天
-W 设置密码过期前多久开始出现提醒信息

chage日期值有两种方式,可以用任意一种:

YYYY-MM-DD格式的日期;
代表从1970年1月1日起到该日期天数的数值。

6、/etc/group 文件

root@pts/0 # cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:mail,postfix
uucp:x:14:
man:x:15:
games:x:20:
gopher:x:30:
video:x:39:
dip:x:40:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
dbus:x:81:
utmp:x:22:
utempter:x:35:
rpc:x:32:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
floppy:x:19:
vcsa:x:69:
abrt:x:173:
cdrom:x:11:
tape:x:33:
dialout:x:18:
saslauth:x:76:
cgred:x:499:
postdrop:x:90:
postfix:x:89:
haldaemon:x:68:haldaemon
ntp:x:38:
rpcuser:x:29:
nfsnobody:x:65534:
sshd:x:74:
oprofile:x:16:
tcpdump:x:72:
slocate:x:21:
chai:x:600:

/etc/group 文件有4个字段:

组名;
组密码;
GID;
属于该组的用户列表。

组密码允许非组内成员通过它临时性的成为该组成员,这个功能并不是分常通用,但确实存在

千万不能直接修改/etc/group文件来添加用户到一个组,而是要用usermod命令

说明:用户账户列表某种意义上有些误导人,你会发现在列表中,有些组并没有列出用户,这并不是说,这些组没有成员,当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。

7、创建新组

root@pts/0 # groupadd test
Test_2 [~] 2015-10-04 18:31:32
root@pts/0 # tail /etc/group
haldaemon:x:68:haldaemon
ntp:x:38:
rpcuser:x:29:
nfsnobody:x:65534:
sshd:x:74:
oprofile:x:16:
tcpdump:x:72:
slocate:x:21:
chai:x:600:
test:x:601:

用usermod命令添加用户到组

root@pts/0 # usermod -G test chai
Test_2 [~] 2015-10-04 18:33:29
root@pts/0 # tail /etc/group
haldaemon:x:68:haldaemon
ntp:x:38:
rpcuser:x:29:
nfsnobody:x:65534:
sshd:x:74:
oprofile:x:16:
tcpdump:x:72:
slocate:x:21:
chai:x:600:
test:x:601:chai

说明:在将组添加到用户账户时要格外小心,如果加了-g 参数,指定的组名会替换掉该账户的默认组。-G 参数则将该组添加到用户的属组的列表里,而不会影响默认组

8、修改组

groupmod 命令可以修改已有组的GID(加-g 参数),或组名(加-n 参数)

root@pts/0 # groupmod -n www chai
Test_2 [~] 2015-10-04 18:43:08
root@pts/0 # tail /etc/group
haldaemon:x:68:haldaemon
ntp:x:38:
rpcuser:x:29:
nfsnobody:x:65534:
sshd:x:74:
oprofile:x:16:
tcpdump:x:72:
slocate:x:21:
test:x:601:chai
www:x:600:

修改组名时,GID和组成员不会变



你可能感兴趣的:(linux,文件权限)