Re: add a transition rule

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vadym,

On 19/07/09 04:35, Vadym Chepkov wrote:
I have a script, executed by apache, which is running in httpd_svn_script_t domain. This script calls svn-mailer(bin_t) which in turns calls /usr/sbin/sendmail.sendmail(sendmail_exec_t) and since there is no transition defined, sendmail still runs in httpd_svn_script_t and I get humongous amount of avc's. What would be the proper rule to add to the local policy to make sendmail running in the proper domain, sendmail_t?
And for that matter if httpd_can_sendmail -->  on, shouldn't it be happening automatically? Thank you.

Sincerely yours,
   Vadym Chepkov

I'm just back off vacation and saw your email. Funnily enough I wrote an svnmailer policy a few weeks ago, so it would be interesting to compare notes:

I've actually split it into two modules, svnmailer for the policy itself, and svnmailer-extras for additional interfaces needed in other policy modules. I find this arrangement is easier to manage when getting policy merged upstream.

I made my hook scripts httpd_sys_script_exec_t and transition from there to httpd_svnmailer_script_t via a domtrans. The svn repository itself is httpd_sys_content_rw_t.

Paul.
/usr/bin/svn-mailer		--	gen_context(system_u:object_r:httpd_svnmailer_script_exec_t,s0)
/var/log/svnmailer(/.*)?		gen_context(system_u:object_r:svnmailer_log_t,s0)
## <summary>policy for svn-mailer</summary>

########################################
## <summary>
##	Execute a domain transition to run svn-mailer.
## </summary>
## <param name="domain">
## <summary>
##	Domain allowed to transition.
## </summary>
## </param>
#
interface(`svnmailer_domtrans',`
	gen_require(`
		type httpd_svnmailer_script_t, httpd_svnmailer_script_exec_t;
	')

	domain_auto_trans($1, httpd_svnmailer_script_exec_t, httpd_svnmailer_script_t)

	allow httpd_svnmailer_script_t $1:fd use;
	allow httpd_svnmailer_script_t $1:fifo_file rw_file_perms;
	allow httpd_svnmailer_script_t $1:process sigchld;
')

########################################
## <summary>
##	Allow the specified domain to manage
##	svnmailer log files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`svnmailer_manage_log',`
	gen_require(`
		type svnmailer_log_t;
	')

	logging_log_filetrans($1, svnmailer_log_t, { file dir })
	manage_dirs_pattern($1, svnmailer_log_t, svnmailer_log_t)
	manage_files_pattern($1, svnmailer_log_t, svnmailer_log_t)
')

policy_module(svnmailer,0.1.4)

########################################
#
# Declarations
#

# log files
type svnmailer_log_t;
logging_log_file(svnmailer_log_t)

# tmp files
type svnmailer_tmp_t;
files_tmp_file(svnmailer_tmp_t)

########################################
#
# svnmailer local policy
#

# Use of svnmailer requires httpd_enable_cgi to be set
#
# Underlying subversion repo is expected to be httpd_sys_content_rw_t
# (served via mod_dav_svn), with hooks directory and its contents
# labeled httpd_sys_script_exec_t
#
# svnmailer output should be redirected to svnmailer_log_t,
# e.g. in hooks/post-commit:
# /usr/bin/svn-mailer --commit --repository "${REPOS}" --revision "${REV}" \
#     --background 2>>/var/log/svnmailer/my-repo.log

apache_content_template(svnmailer)

# log files
manage_dirs_pattern(httpd_svnmailer_script_t, svnmailer_log_t, svnmailer_log_t)
manage_files_pattern(httpd_svnmailer_script_t, svnmailer_log_t, svnmailer_log_t)
logging_log_filetrans(httpd_svnmailer_script_t, svnmailer_log_t, { file dir })

# tmp files
manage_dirs_pattern(httpd_svnmailer_script_t, svnmailer_tmp_t, svnmailer_tmp_t)
manage_files_pattern(httpd_svnmailer_script_t, svnmailer_tmp_t, svnmailer_tmp_t)
files_tmp_filetrans(httpd_svnmailer_script_t, svnmailer_tmp_t, { file dir })

# repository data lives in httpd-writable files and dirs
apache_read_sys_content(httpd_svnmailer_script_t)
apache_read_sys_content_rw(httpd_svnmailer_script_t)
# leaked file descriptors again (we need read access but not write)
apache_dontaudit_rw_sys_content_rw_files(httpd_svnmailer_script_t)

# svn-mailer looks for and does getattr on locale (in /usr/bin when it finds it)
corecmd_getattr_bin_files(httpd_svnmailer_script_t)
corecmd_read_bin_symlinks(httpd_svnmailer_script_t)
corecmd_search_bin(httpd_svnmailer_script_t)

# svn-mailer can act as an SMTP client...
corenet_tcp_connect_smtp_port(httpd_svnmailer_script_t)
corenet_sendrecv_smtp_client_packets(httpd_svnmailer_script_t)

# ... or it can send mail using /usr/sbin/sendmail
mta_send_mail(httpd_svnmailer_script_t)

########################################
## <summary>
##	Read apache system read/write content.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`apache_read_sys_content_rw',`
	gen_require(`
		type httpd_sys_content_rw_t;
	')

	allow $1 httpd_sys_content_rw_t:dir list_dir_perms;
	read_files_pattern($1, httpd_sys_content_rw_t, httpd_sys_content_rw_t)
	read_lnk_files_pattern($1, httpd_sys_content_rw_t, httpd_sys_content_rw_t)
')

########################################
## <summary>
##      Do not audit attempts to read and write Apache
##      system read/write content files.
## </summary>
## <param name="domain">
##      <summary>
##      Domain allowed access.
##      </summary>
## </param>
#
interface(`apache_dontaudit_rw_sys_content_rw_files',`
	gen_require(`
		type httpd_sys_content_rw_t;
	')

	dontaudit $1 httpd_sys_content_rw_t:file { read write };
')

policy_module(svnmailer-extras, 0.0.9)

########################################
#
# svnmailer additional policy
# (for rules that should be in other modules)
#

require {
	type httpd_t;
	type httpd_sys_script_t;
}

# svnmailer is usually called from the post-commit hook of subversion
# using mod_dav_svn, which will be running in the httpd_sys_script_t domain
svnmailer_domtrans(httpd_sys_script_t)

# the log file can capture errors from httpd and svn-mailer
svnmailer_manage_log(httpd_sys_script_t)

--
fedora-selinux-list mailing list
fedora-selinux-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-selinux-list

[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux