建立一个新用户
修改用户的个人设置
文件目录的权限设置
两个重要文件:passwd与group
建立一个新用户
建立一个新的用户包括两个步骤,第一步是使用useradd命令完成一个新用户的初始化设置工作;第二步是用passwd为这个新用户设置密码。例如,我们要给系统添加一个用户叫platformuser,密码为platformuser,那相关的操作是:
useradd platformuser <回车>
这时候系统没有任何显示。接着:
passwd platformuser <回车>
系统显示:
Changing password for user platformuser
New UNIX password:
你输入:
platformuser<回车>
注意,由于linux并不采用类似windows的密码回显(显示为*号)——为避免你输入密码时被人注意到有多少位——所以,输入的这些字符你是看不见的。
系统显示:
Retype new UNIX password:
你再重新输入一次密码,然后回车确认,这时系统会显示:
passwd:all authentication tokens updated successfully
表示你修改密码成功了。
到这里,新用户的创建工作就算完成了。下面,我们再补充一些有关增加新用户的常识:
1、useradd所做的初始化操作已经包括在/home目录下为platformuser帐号建立一个名为platformuser的主目录。如果你不想使用这个缺省的目录,而希望把他的主目录放在/home/goal里(还放在/home下,只是一种良好的习惯,没有其他什么特别的要求),可以使用useradd的参数-d,命令如下:
useradd -d /home/goal platformuser
2、useradd的初始化操作还包括为用户单独建立一个与用户名同名的组(platformuser组)。这叫用户私有组的机制,与默认组机制相对应。对用户分组一是方便管理,二是可以明确权限。复杂的我们将在以后的深入内容中探讨。我们如果想让此用户加入一个已有的组的话,可以使用-g参数。例如我们想让platformuser加入webusers组,那么可以使用以下命令:
useradd -g webusers platformuser
同样的,我们还可以使用-G参数使他同时加入多个组,例如webusers和ftpusers:
useradd -G ftpusers,webusers platformuser
3、passwd命令为一个用户设置密码,但它实质上是一个修改密码的程序。只有超级用户和用户自己可以修改密码,其它的普通用户没有给他修改密码的 权利。用户密码的组成要尽量的复杂,最好包括字母、数字和特殊符号,而且最好设成6位以上。太短passwd程序不允许,只是单纯的字母或单纯的数 字,passwd也会有意见。你都会看见passwd出现的提示的,不要害怕,仔细看看到底它是怎么说的:)
4、你在增加一个新用户的时候,也可以设置用户登录的shell。缺省的,系统提供了/bin/bash。你如果非要指定的话,可以使用-s参数就可以了。例如
useradd -d /www -s /usr/bin/passwd platformuser
注意,这些参数是可以一块使用的,如上例所示,它表示增加新用户,并把其主目录路径设置在/www,登录的shell为/usr/bin/passwd。关于shell的更详细的说明,请参考下面的修改用户的个人设置相关内容。
5、删除一个用户可以使用userdel命令,直接带用户名做参数就可以了。
修改用户的设置
对现有用户的修改,比较常用的主要是修改密码(使用passwd就好了),修改用户的登录shell,修改用户所属的默认组,设置帐号有效期,修改用户的说明信息等等,偶尔也会用到修改用户主目录。
修改用户的登录shell
使用chsh命令可以修改自己的shell,只有超级用户才能用chsh username为其它用户修改shell设置。注意,指定的shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。
一般,比较常见的shells文件包括下面这些shell:
/bin/bash2
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
而网管们还喜欢在里面加上/usr/bin/passwd,这是为了不然用户通过控制台或telnet登录系统,却可以使用修改帐户密码(比如在FTP里 用)。以及/bin/false,也就是不让这个用户登录的意思喽^&^,连FTP也不能用。
你也可以使用usermod命令修改shell信息,如下所示:
usermod -s /bin/bash platformuser
其中/bin/bash和platformuser应取相应的shell路径文件名及用户名。
还有一种情况,就是你为用户设置了一个空的shell(就是""),也就是说,这个用户没有shell。呵呵,绝对没有在我还未曾见过,因为这种用户登录后,系统还是会给它一个shell用的。不信你试试:
usermod -s "" platformuser
这种用户根据系统的不同,会有一个sh或bash进行操作,我也没有看出功能上和其它普通用户登录有什么不同。
修改用户所属的默认组
这个功能也可以通过usermod命令来实现,使用-g参数,例如把platformuser的默认组改为nobody,可以使用如下命令:
usermod -g nobody platformuser
nobody在类UNIX系统中一般都意味着没有任何权限。
设置帐号有效期
如果使用了影子口令,则可以使用如下命令来修改一个帐号的有效期:
usermod -e MM/DD/YY username
例如把用户platformuser的有效期定为2001年12月31日:
usermod -e 12/31/01 platformuser
如果把该用户的有效期设为已经过去的时间,就可以暂时禁止该用户登录系统。
修改用户的说明信息
修改用户的说明信息,最简单的方法莫过于直接修改/etc/passwd文件,找到对应的用户记录行,例如下列行:
platformuser:x:503:503::/home/platformuser:/bin/bash
你可以直接在第四个冒号和第五个冒号之间插入该用户的说明就可以了。其实,很多用户设置都可以在这修改,比如该行最后一部分/bin/bash就是用户登录shell的设置。关于这个/etc/passwd文件,我们后面将进一步的深入探讨。
修改用户主目录
修改用户的主目录主要使用usermod命令的-d参数,例如:
usermod -d /www platformuser
这一行将platformuser的主目录改到/www。如果想将现有主目录的主要内容转移到新的目录,应该使用-m开关,如下所示:
usermod -d -m /www platformuser
文件目录的权限
linux下,每一个文件、每一个目录都有一个属主,并针对用户自己、用户所在组、其它所有帐号(组)分别设定读、写、执行三种权限。例如,我(假定是webusers组的platformuser帐户的拥有者)使用如下命令建立一个新的文件
touch mytestfile
然后我们使用ls -l mytestfile这一命令来查看这个文件的权限状态(关于ls命令,可以查阅本站的命令查询),可以得到如下的屏幕输出显示:
-rw-rw-r-- 1 platformuser webusers 0 Feb 6 21:37 mytestfile
输出由空格分为9个部分,我们比较关心第一、三、四个字段,分别表示文件权限属性、文件所有者帐户、文件所属组。
◆使用chown命令修改文件的主人
当你新建立一个文件的时候,文件的所有者当然就是你了。这一事实只有超级用户(比如说root)才可以通过chown命令改变(例如chown otheruser mytestfile,把mytestfile文件的属主改为otheruser)。普通用户不能把自己的文件“送”给别人,不然你把有特殊目的的程序给 了root怎么办?:)
chown命令的用法比较简单。这里我先假设你现在拥有超级用户权限,那么你就可以使用如下命令将一个文件“送给”platformuser了:
chown platformuser /home/platformuser/thefileisrootcreate.txt(假定该文件是由root创建的)
修改一个目录的所有者也是类似的:
chown platformuser /home/newboat
当然,如果这个目录还有子目录及文件需要同时送给platformuser,chown也是支持-R参数的:
chown -R platformuser /home/newboat
如果你同时想修改文件/目录所属的组的话,你可以使用以下命令方便的达到目的:
chown -R platformuser.ftpusers /home/newboat
这样,不但文件主人得到了修改,文件所属的组也变成了ftpusers
◆修改文件的组属性
文件所属组你倒是可以改变,前提是:
1、你的超级用户。
2、你同时属于两个或两个以上的组。
两个条件你至少具备一个,你才能够把文件所属旧组变为新组。使用如下的命令将当前目录下所有html文件所属的组改为httpd:
chgrp httpd *.html
和chown命令一样,chgrp也可以使用-R参数对一个目录内的所有文件和子目录进行递归的修改组属性。
<提示>:你可以使用不带参数的groups命令查看自己属于哪个组。
文件权限的设定是我们这一小节讨论的核心,我们主要介绍chmod命令的两种用法。
◆使用访问字符串设置文件目录权限
正如前面所说的,每一个文件、目录都针对用户自己、用户所在组、其它所有帐号(组)分别有读、写、执行三种权限及其组合。当一个普通用户新建一个文件 的时候,它默认的访问权限显示就如我们刚才所举例子的第一个字段所示。总共十位字符“-rw-rw-r--”,第一位是目录区分标志,如果是d的话,表示 这是一个目录。第二到四位分别表示文件所有者的读(r:read)、写(w:write)、执行(x:execute)属性,第五到七位是文件所属组的 读、写、执行权限,第八到第十位则是其它用户的读、写、执行权限。如果对应的位是相应的字母,就是有这相应权限,否则为“-”,表示没有获得这个许可。象
刚才例子中的文件就是自己可读写,本组可读写,其它用户可读,所有的用户(包括自己)都不能执行它。
我们的用u、g、o分别来指代用户(user)、组(group)、其它帐户(other),就可以方便的设置文件和目录的权限了。当然,我们也可以用a来表示所有的这三项。
例如,我们要对所有perl的脚本文件设定权限,对所有用户都可以读和执行,文件所有者还允许写许可,那么我们可以使用如下命令:
chmod a+rx,u+w *.pl
注意:如果要使用多个访问字符串,它们之间要用逗号隔开,各个许可字符串之间不允许有空格。正如上例所示。
如果要修改目录中所有文件和子目录的权限属性,可以使用chmod提供的-R参数来递归修改。例如,下列命令将/www/site1目录及其下面的子目录的权限属性设定为所有者和组可读、写、执行,其它用户不可访问:
chmod -R a+rwx,o-rwd /www/site1
注意,不要轻易使用-R选项,这可能会带来安全隐患。
使用字符串方便了理解,单输入那么多字母还是有点累,如果你对8进制有些概念的话,可以使用下面介绍的方法来做权限设置。
◆使用八进制数设置文件目录权限
我们知道,在ls -l的输出中,文件权限表示为“-rw-rw-r--”,前一位只和是否为目录有关,其它九位正好可以分成三段,每段三位,“rw-”、“rw-”和 “r--”,“-”代表无效“0”,其它字符代表有效“1”,那么这个文件的权限就是“110”、“110”、“100”,把这个2进制串转换成对应的8 进制数就是6、6、4,也就是说该文件的权限为664(三位八进制数)。我们也可以使用类似这种三位八进制数来设定文件授权,如上边两个例子,就也可以写 为:
chmod 755 *.pl
chmod -R 770 /www/site1
是不是很简洁?关键在于你能根据你需要设定的权限正确的选择八进制数(利用八进制数的二进制表示可以非常轻易的做到这一点)。
◆读、写、执行的权限说明
1、所谓写的权限,也就是对文件修改和删除的权限。如果目录的写权限也对你开放了,则可以创建、删除或修改该目录下的任何文件或自目录——即使该文件和子目录并不属于你。
2、对目录有只读许可的用户,不能用cd命令进入该目录;还必须同时有执行许可才可以进入该目录。
3、必须同时拥有读和执行权限才可以使用ls这样的程序列出目录内容清单。
4、只对目录有执行权限的用户,想访问该目录下的文件有读权限的文件,必须知道该文件名才可以访问。
两个重要文件:passwd与group
在linux的安全机制里,/etc/passwd与/etc/group这两个文件占着非常重要的地位。它们控制着linux的用户和组一些重要设置。
◆/etc/passwd文件说明
下面是一个RHlinux里普通的passwd文件的例子:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
……
operator:x:11:0perator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false
named:x:25:25:Named:/var/named:/bin/false
postgres:x:26:26ostgreSQL Server:/var/lib/pgsql:/bin/bash
lanf:x:500:500::/home/hujm:/bin/bash
mysql:x:101:101:MySQL server:/var/lib/mysql:/bin/bash
imnotroot:x:0:0::/home/imnotroot:/bin/bash
在这个文件里只有一个普通帐号lanf。其它都是系统或系统服务的进程需要的帐号,包括我们非常熟悉的root这个超级用户。在passwd的文件里,每一行被冒号(":")分成7个部分,分别是:
[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
其中:
⒈[用户名]是passwd文件里各记录行唯一的有"唯一性"要求的域。也就是说每一行的第一个区域的内容都不能相同,其它区域就无所谓了。
⒉[密码]区域在以前,保存着一个经过不可逆的哈希算法进行DES加密的13位字符,但不包括单引号和冒号。这13位字符中,前两位是密钥,在加密的 时候随机生成的。由于这个字符串不包括单引号,所以以前有一种不修改密码又禁止用户登录的方式就是在密码前面加一个单引号。值得注意的是,现在由于使用了 shadow口令,在密码区域只有一个x字符。
⒊[UID]虽然是系统用来标志文件归属,确定各种权限的标志,但这个区域的内容并不要求唯一的。比较常见而又与安全问题相关的一个例子是有多个 UID和GID均为0的用户帐号。注意到在该文件最后一行还有一个UID和GID为0的用户imnotroot,虽然它声称自己不是root,但是它却有 和root完全相同的权限,因为系统并非根据[用户名],而是根据UID和GID来分用户的权力的。所以,这种情况无疑为系统埋下了安全的。但是,当 imnorroot做锁定屏幕等操作的时候,如果它的密码和root的不一样,它将无法解锁,因为系统只是查到第一个UID为0的用户(自然是root)
后,就不在往下查找了——它当UID也是唯一的。
⒋[GID]用户默认的组ID,这个ID可以在文件/etc/group里查到对应的组名。
⒌[身份描述]:就是用户的身份说明,默认的是无任何说明,可人工添加。
⒍[主目录]:用户的主目录,可以使用前面介绍的命令修改。
⒎[登录shell]:用户登录时系统提供的shell,请参考前面的有关内容。
<注意>:[UID]和[GID]小于500的一般都是系统自己保留,不做普通用户和组的标识的,所以新增加的用户和组一般都是UID和GID大于500的。
◆/etc/group文件说明
下面是RH的一个group文件的例子:
root:x:0:root,hujm,hjm
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root
mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
……
hujm:x:503:root,mynoshell,hjm
mysql:x:101:
mynoshell:x:505:
ftpusers:x:506:
它总共分四个部分:
[组名]:[密码域]:[GID]:[组员列表]
意思非常明显,需要说明一下的是,由于组一般都不用密码保护,所以虽然看起来密码域有个X字符,其实那只表示使用了SHADOW(对应文件为 gshadow)。组员列表用逗号分隔各个帐号。另外,一个组的组员如果默认登录组就是它的话,那么在组员列表里将不显示这个组员的帐号,例如用如下命令 增加的用户:
useradd -g ftpusers platformuser
在/etc/group文件里ftpusers的组员列表将不显示这个组员(真是失败),而只是在passwd文件中的GID被设置为506。而使用如下命令:
usermod -G ftpusers,mysql,webusers platformuser
就可以看见相关的组后边加上了platformuser帐号。当然,你可以直接用vi来直接编辑这个文件。
group文件和passwd文件是通过GID联系在一起的,这有点象关系数据库。根据passwd文件中一个帐户的GID,可以在group文件中 找到对应的组名。如果采用了用户私有组机制的话,那么一般新增一个帐号,就会有对应的一个与帐号同名的组增加到group文件中。虽然这时passwd文 件中具有唯一性的[用户名]字段和group文件中具有唯一性的[组名]字段一样,并不代表着它们是通过这两个字段形成一一对应的关系的。千万别忘记,系 统对数字(UID,GID)更加敏感^_^。
分享到:
相关推荐
### Linux系统创建SFTP用户及权限限制实战步骤详解 #### 一、说明 本文将详细介绍如何在Linux系统中创建SFTP用户并实现权限限制。通过使用系统自带的internal-sftp功能,可以有效地限制用户只能在其home目录下进行...
在Linux系统中,管理和控制用户及目录权限是运维工作的重要组成部分。本文将深入探讨如何在Linux环境下创建用户、设置目录权限以及相关的命令和概念。 首先,我们来看用户账户的创建。`useradd`命令用于添加新用户...
* 用户名:指定新用户的登录名 例如: $ useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam。 四、删除帐号 如果一个用户的账号不再使用,可以从...
Linux 创建新用户和赋予权限 Linux 操作系统中,创建新用户是非常重要的一步,特别是对于初学者来说。这项操作可以帮助用户更好地管理系统权限和资源。本文将详细介绍如何创建新用户、初始化密码、赋予权限等知识点...
Linux 操作用户及权限分配 本资源将详细介绍 Linux 操作系统中的用户及权限分配,包括查看用户、用户管理、权限分配等内容。 一、查看用户 Linux 系统中有多种方式来查看当前用户的信息,常用的命令包括 whoami...
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。这几个文件的内容在后面会做详细介绍。 Linux提供了集成的系统管理工具userconf,它可以用来对...
在Linux操作系统中,创建新用户是管理系统的常见任务,这对于多用户环境或团队协作尤为重要。以下是如何在Linux中创建新用户的详细步骤: 1. **创建用户** 使用`sudo useradd`命令可以创建一个新用户。在命令行中...
### Linux赋予普通用户修改系统时间权限 在Linux环境中,为了保证系统的安全性,通常只有管理员(通常是root用户)具有修改系统时间的权限。然而,在某些情况下,我们可能需要让普通用户也能够修改系统时间,比如在...
在Linux系统中,创建新用户是一项常见的任务,尤其是在需要为新的系统管理员或应用程序创建用户账户时。 **步骤1:添加用户** 使用`useradd`命令来添加新用户。例如,要添加名为`testuser`的新用户,可以执行以下...
创建新用户通常使用`useradd`命令,例如`useradd test1`会按照一定的流程操作,包括在`/etc/passwd`中添加用户信息、创建家目录、复制`/etc/skel`下的文件到家目录、创建同名的主组并将用户加入其中。`useradd`命令...
以上就是在Linux系统中创建新用户、设置密码、修改用户属性及权限管理等相关操作的具体步骤。这些操作对于日常维护和管理Linux系统至关重要。通过合理地配置和管理用户及其权限,可以有效地保护系统的安全性和稳定性...
使用`adduser ftpuser`命令创建新用户,并设置密码。 3. **配置FTP权限**:修改vsftpd配置文件`/etc/vsftpd.conf`,设置用户隔离、禁止匿名登录、限制目录访问等。例如: - `anonymous_enable=NO` 禁止匿名访问 -...
在Linux中,只有具备root权限的用户才能创建新用户。root用户是系统的超级管理员,拥有对整个系统的所有权限。为了安全起见,通常不会直接以root用户登录系统。而是通过普通用户账号结合`sudouseradd`命令来实现用户...
`useradd`命令是用于创建新用户的工具。例如,要创建一个名为`tom`的新用户,管理员可以在终端输入`useradd tom`。这个命令将自动生成一个与用户名同名的家目录(例如`/home/tom`),并为用户分配一个唯一的UID,...
下面将详细介绍如何在CentOS 5.3环境中通过vsftpd创建新用户的步骤与注意事项。 ### 创建新用户 首先,你需要登录到你的CentOS 5.3系统,并使用`useradd`命令来添加一个新的系统用户。例如,在给定的示例中,我们...
这里我们将深入探讨如何创建一个新的系统用户,特别是根据给定的描述创建一个名为`admin`的新用户,指定其家目录为`/root`,用户ID为`6666`,并设置密码为`admin@123`。 首先,让我们了解几个关键的Linux命令: 1....
Linux 系统中创建用户组的命令是 groupadd 命令,该命令用于创建新的用户组。该命令的格式如下:`groupadd 选项 用户组`。其中,选项可以是 `-g` 或 `-o`,用于指定新用户组的组标识号(GID)或允许新用户组的 GID ...
总结来说,Linux权限设计是一项关键的系统管理任务,它涉及到对用户权限的精细控制,以保证系统的安全性和功能性。理解并熟练掌握权限设置和管理,是每个Linux用户和管理员必备的技能。通过实践练习和查阅相关资料,...